Merge lp:~stewart/percona-server/5.6.10 into lp:percona-server/5.6

Proposed by Stewart Smith
Status: Merged
Approved by: Laurynas Biveinis
Approved revision: no longer in the source branch.
Merged at revision: 315
Proposed branch: lp:~stewart/percona-server/5.6.10
Merge into: lp:percona-server/5.6
Diff against target: 69681 lines (+23353/-12283)
871 files modified
Percona-Server/.bzrignore (+4/-0)
Percona-Server/BUILD/compile-dist (+1/-4)
Percona-Server/CMakeLists.txt (+2/-2)
Percona-Server/VERSION (+2/-2)
Percona-Server/client/client_priv.h (+1/-1)
Percona-Server/client/mysql.cc (+15/-4)
Percona-Server/client/mysql_config_editor.cc (+712/-291)
Percona-Server/client/mysql_plugin.c (+12/-7)
Percona-Server/client/mysql_upgrade.c (+2/-1)
Percona-Server/client/mysqladmin.cc (+9/-0)
Percona-Server/client/mysqlbinlog.cc (+63/-27)
Percona-Server/client/mysqlcheck.c (+2/-2)
Percona-Server/client/mysqldump.c (+191/-26)
Percona-Server/client/mysqltest.cc (+6/-1)
Percona-Server/client/sql_string.h (+3/-0)
Percona-Server/cmake/install_layout.cmake (+5/-2)
Percona-Server/cmake/mysql_version.cmake (+1/-1)
Percona-Server/cmake/package_name.cmake (+1/-1)
Percona-Server/cmake/plugin.cmake (+1/-0)
Percona-Server/cmd-line-utils/libedit/vi.c (+2/-1)
Percona-Server/configure.cmake (+3/-4)
Percona-Server/dbug/dbug.c (+3/-2)
Percona-Server/extra/yassl/include/yassl_int.hpp (+1/-0)
Percona-Server/extra/yassl/src/buffer.cpp (+2/-0)
Percona-Server/extra/yassl/src/handshake.cpp (+7/-1)
Percona-Server/extra/yassl/src/yassl_int.cpp (+76/-8)
Percona-Server/include/errmsg.h (+2/-1)
Percona-Server/include/m_ctype.h (+2/-0)
Percona-Server/include/my_atomic.h (+2/-0)
Percona-Server/include/my_base.h (+2/-1)
Percona-Server/include/my_getopt.h (+5/-0)
Percona-Server/include/my_pthread.h (+2/-4)
Percona-Server/include/my_sys.h (+26/-2)
Percona-Server/include/mysql.h (+2/-1)
Percona-Server/include/mysql.h.pp (+2/-1)
Percona-Server/include/mysql/plugin.h (+1/-1)
Percona-Server/include/mysql/psi/psi.h (+9/-2)
Percona-Server/include/mysql/psi/psi_abi_v1.h.pp (+4/-2)
Percona-Server/include/mysql/thread_pool_priv.h (+1/-0)
Percona-Server/include/mysql_com.h (+29/-24)
Percona-Server/include/welcome_copyright_notice.h (+1/-1)
Percona-Server/libmysql/errmsg.c (+2/-0)
Percona-Server/libmysql/libmysql.c (+18/-1)
Percona-Server/libmysqld/lib_sql.cc (+3/-0)
Percona-Server/mysql-test/CMakeLists.txt (+4/-2)
Percona-Server/mysql-test/collections/default.daily (+5/-5)
Percona-Server/mysql-test/collections/default.experimental (+0/-6)
Percona-Server/mysql-test/collections/default.push (+5/-5)
Percona-Server/mysql-test/collections/default.release.in (+5/-5)
Percona-Server/mysql-test/collections/default.weekly (+11/-11)
Percona-Server/mysql-test/collections/disabled-gtid-on.list (+1/-1)
Percona-Server/mysql-test/extra/rpl_tests/rpl_extra_col_master.test (+2/-2)
Percona-Server/mysql-test/extra/rpl_tests/rpl_mts_crash_safe.inc (+1/-1)
Percona-Server/mysql-test/extra/rpl_tests/rpl_mts_crash_safe.test (+13/-0)
Percona-Server/mysql-test/include/check-testcase.test (+1/-0)
Percona-Server/mysql-test/include/get_binlog_dump_thread_id.inc (+0/-22)
Percona-Server/mysql-test/include/have_null_audit_plugin.inc (+22/-0)
Percona-Server/mysql-test/include/have_sha256_rsa_auth.inc (+5/-0)
Percona-Server/mysql-test/include/index_merge1.inc (+20/-14)
Percona-Server/mysql-test/include/innodb_pk_extension.inc (+253/-0)
Percona-Server/mysql-test/include/master-slave.inc (+2/-1)
Percona-Server/mysql-test/include/mtr_check.sql (+1/-1)
Percona-Server/mysql-test/include/mtr_warnings.sql (+3/-2)
Percona-Server/mysql-test/include/mysqld--help.inc (+2/-2)
Percona-Server/mysql-test/include/not_ndb_default.inc (+6/-4)
Percona-Server/mysql-test/include/not_sha256_rsa_auth.inc (+5/-0)
Percona-Server/mysql-test/include/read_many_rows.inc (+1/-1)
Percona-Server/mysql-test/include/rpl_init.inc (+4/-0)
Percona-Server/mysql-test/include/rpl_start_server.inc (+2/-2)
Percona-Server/mysql-test/include/save_master_pos.inc (+1/-1)
Percona-Server/mysql-test/include/show_events.inc (+1/-1)
Percona-Server/mysql-test/include/show_rpl_debug_info.inc (+8/-2)
Percona-Server/mysql-test/include/stop_dump_threads.inc (+33/-0)
Percona-Server/mysql-test/include/subquery_sj.inc (+1/-1)
Percona-Server/mysql-test/include/sync_slave_sql.inc (+3/-3)
Percona-Server/mysql-test/include/wait_condition.inc (+3/-10)
Percona-Server/mysql-test/include/wait_time_until_connected_again.inc (+27/-0)
Percona-Server/mysql-test/include/write_result_to_file.inc (+15/-15)
Percona-Server/mysql-test/lib/My/SafeProcess/CMakeLists.txt (+1/-1)
Percona-Server/mysql-test/lib/My/SafeProcess/safe_process.cc (+12/-5)
Percona-Server/mysql-test/lib/My/SafeProcess/safe_process.pl (+0/-166)
Percona-Server/mysql-test/lib/mtr_cases.pm (+6/-12)
Percona-Server/mysql-test/lib/mtr_report.pm (+11/-1)
Percona-Server/mysql-test/mysql-test-run.pl (+94/-64)
Percona-Server/mysql-test/r/alter_table.result (+10/-7)
Percona-Server/mysql-test/r/connect.result (+22/-6)
Percona-Server/mysql-test/r/create.result (+2/-2)
Percona-Server/mysql-test/r/ctype_binary.result (+1/-1)
Percona-Server/mysql-test/r/ctype_cp1251.result (+1/-1)
Percona-Server/mysql-test/r/ctype_latin1.result (+1/-1)
Percona-Server/mysql-test/r/ctype_ucs.result (+1/-1)
Percona-Server/mysql-test/r/ctype_utf8.result (+1/-1)
Percona-Server/mysql-test/r/ddl_i18n_koi8r.result (+8/-8)
Percona-Server/mysql-test/r/ddl_i18n_utf8.result (+8/-8)
Percona-Server/mysql-test/r/derived.result (+6/-2)
Percona-Server/mysql-test/r/disabled_replication.result (+1/-1)
Percona-Server/mysql-test/r/disconnect_on_expired_password_default.result (+34/-0)
Percona-Server/mysql-test/r/disconnect_on_expired_password_off.result (+33/-0)
Percona-Server/mysql-test/r/distinct.result (+40/-3)
Percona-Server/mysql-test/r/explain.result (+3/-0)
Percona-Server/mysql-test/r/explain_json_all.result (+27/-6)
Percona-Server/mysql-test/r/explain_json_none.result (+35/-11)
Percona-Server/mysql-test/r/group_by.result (+2/-7)
Percona-Server/mysql-test/r/host_cache_size_functionality.result (+78/-0)
Percona-Server/mysql-test/r/index_merge_innodb.result (+31/-25)
Percona-Server/mysql-test/r/index_merge_myisam.result (+27/-21)
Percona-Server/mysql-test/r/information_schema.result (+5/-5)
Percona-Server/mysql-test/r/innodb_explain_json_non_select_all.result (+204/-32)
Percona-Server/mysql-test/r/innodb_explain_json_non_select_none.result (+209/-37)
Percona-Server/mysql-test/r/innodb_explain_non_select_all.result (+12/-16)
Percona-Server/mysql-test/r/innodb_explain_non_select_none.result (+12/-16)
Percona-Server/mysql-test/r/innodb_pk_extension_off.result (+395/-0)
Percona-Server/mysql-test/r/innodb_pk_extension_on.result (+395/-0)
Percona-Server/mysql-test/r/insert_update.result (+3/-3)
Percona-Server/mysql-test/r/log_state.result (+1/-1)
Percona-Server/mysql-test/r/log_tables.result (+125/-24)
Percona-Server/mysql-test/r/myisam_explain_json_non_select_all.result (+207/-32)
Percona-Server/mysql-test/r/myisam_explain_json_non_select_none.result (+212/-37)
Percona-Server/mysql-test/r/myisam_explain_non_select_all.result (+12/-16)
Percona-Server/mysql-test/r/myisam_explain_non_select_none.result (+12/-16)
Percona-Server/mysql-test/r/myisam_icp.result (+1/-1)
Percona-Server/mysql-test/r/myisam_icp_all.result (+1/-1)
Percona-Server/mysql-test/r/mysql_config_editor.result (+6/-20)
Percona-Server/mysql-test/r/mysqlbinlog.result (+34/-0)
Percona-Server/mysql-test/r/mysqld--help-notwin.result (+17/-10)
Percona-Server/mysql-test/r/mysqld--help-win.result (+17/-10)
Percona-Server/mysql-test/r/mysqldump.result (+16/-14)
Percona-Server/mysql-test/r/not_ndb_default.require (+0/-2)
Percona-Server/mysql-test/r/optimizer_switch.result (+9/-9)
Percona-Server/mysql-test/r/partition.result (+3/-0)
Percona-Server/mysql-test/r/partition_explicit_prune.result (+2/-2)
Percona-Server/mysql-test/r/partition_locking.result (+6/-6)
Percona-Server/mysql-test/r/plugin_auth.result (+14/-10)
Percona-Server/mysql-test/r/plugin_auth_sha256_server_default.result (+1/-0)
Percona-Server/mysql-test/r/plugin_auth_sha256_server_default_tls.result (+1/-0)
Percona-Server/mysql-test/r/plugin_auth_sha256_tls.result (+14/-0)
Percona-Server/mysql-test/r/ps_ddl1.result (+4/-6)
Percona-Server/mysql-test/r/rewrite_general_log.result (+31/-18)
Percona-Server/mysql-test/r/select_none.result (+2/-2)
Percona-Server/mysql-test/r/select_none_bka.result (+2/-2)
Percona-Server/mysql-test/r/select_none_bka_nixbnl.result (+2/-2)
Percona-Server/mysql-test/r/sort_buffer_size_functionality.result (+99/-83)
Percona-Server/mysql-test/r/sp_notembedded.result (+1/-1)
Percona-Server/mysql-test/r/subquery_sj_all.result (+32/-1)
Percona-Server/mysql-test/r/subquery_sj_all_bka.result (+32/-1)
Percona-Server/mysql-test/r/subquery_sj_all_bka_nixbnl.result (+32/-1)
Percona-Server/mysql-test/r/subquery_sj_all_bkaunique.result (+32/-1)
Percona-Server/mysql-test/r/subquery_sj_dupsweed.result (+35/-1)
Percona-Server/mysql-test/r/subquery_sj_dupsweed_bka.result (+35/-1)
Percona-Server/mysql-test/r/subquery_sj_dupsweed_bka_nixbnl.result (+38/-1)
Percona-Server/mysql-test/r/subquery_sj_dupsweed_bkaunique.result (+35/-1)
Percona-Server/mysql-test/r/subquery_sj_firstmatch.result (+35/-1)
Percona-Server/mysql-test/r/subquery_sj_firstmatch_bka.result (+35/-1)
Percona-Server/mysql-test/r/subquery_sj_firstmatch_bka_nixbnl.result (+38/-1)
Percona-Server/mysql-test/r/subquery_sj_firstmatch_bkaunique.result (+35/-1)
Percona-Server/mysql-test/r/subquery_sj_loosescan.result (+35/-1)
Percona-Server/mysql-test/r/subquery_sj_loosescan_bka.result (+35/-1)
Percona-Server/mysql-test/r/subquery_sj_loosescan_bka_nixbnl.result (+38/-1)
Percona-Server/mysql-test/r/subquery_sj_loosescan_bkaunique.result (+35/-1)
Percona-Server/mysql-test/r/subquery_sj_mat.result (+32/-1)
Percona-Server/mysql-test/r/subquery_sj_mat_bka.result (+32/-1)
Percona-Server/mysql-test/r/subquery_sj_mat_bka_nixbnl.result (+32/-1)
Percona-Server/mysql-test/r/subquery_sj_mat_bkaunique.result (+32/-1)
Percona-Server/mysql-test/r/subquery_sj_mat_nosj.result (+23/-10)
Percona-Server/mysql-test/r/subquery_sj_none.result (+30/-8)
Percona-Server/mysql-test/r/subquery_sj_none_bka.result (+30/-8)
Percona-Server/mysql-test/r/subquery_sj_none_bka_nixbnl.result (+30/-8)
Percona-Server/mysql-test/r/subquery_sj_none_bkaunique.result (+30/-8)
Percona-Server/mysql-test/r/symlink_windows.result (+14/-0)
Percona-Server/mysql-test/r/system_mysql_db.result (+2/-2)
Percona-Server/mysql-test/r/table_definition_cache_functionality.result (+146/-0)
Percona-Server/mysql-test/r/user_var-binlog.result (+2/-0)
Percona-Server/mysql-test/r/validate_password_plugin.result (+13/-6)
Percona-Server/mysql-test/r/wl6443_deprecation.result (+1/-0)
Percona-Server/mysql-test/suite/binlog/r/binlog_base64_flag.result (+2/-0)
Percona-Server/mysql-test/suite/binlog/r/binlog_enforce_gtid_consistency.result (+16/-17)
Percona-Server/mysql-test/suite/binlog/r/binlog_gtid_errors.result (+23/-25)
Percona-Server/mysql-test/suite/binlog/r/binlog_hexdump.result (+2/-0)
Percona-Server/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row.result (+2/-0)
Percona-Server/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_innodb.result (+8/-0)
Percona-Server/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_myisam.result (+8/-0)
Percona-Server/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_trans.result (+2/-0)
Percona-Server/mysql-test/suite/binlog/r/binlog_mysqlbinlog_start_stop.result (+66/-0)
Percona-Server/mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result (+2/-0)
Percona-Server/mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result (+2/-0)
Percona-Server/mysql-test/suite/binlog/r/binlog_stm_disable_gtid_unsafe_statements.result (+0/-109)
Percona-Server/mysql-test/suite/binlog/t/binlog_enforce_gtid_consistency.test (+11/-20)
Percona-Server/mysql-test/suite/binlog/t/binlog_gtid_cache-master.opt (+1/-1)
Percona-Server/mysql-test/suite/binlog/t/binlog_gtid_errors-master.opt (+1/-1)
Percona-Server/mysql-test/suite/binlog/t/binlog_gtid_errors.test (+14/-16)
Percona-Server/mysql-test/suite/binlog/t/binlog_mixed_row_disable_gtid_unsafe_statements.test (+0/-4)
Percona-Server/mysql-test/suite/binlog/t/binlog_mysqlbinlog_row_innodb.test (+1/-1)
Percona-Server/mysql-test/suite/binlog/t/binlog_mysqlbinlog_row_myisam.test (+1/-1)
Percona-Server/mysql-test/suite/binlog/t/binlog_stm_disable_gtid_unsafe_statements.test (+0/-4)
Percona-Server/mysql-test/suite/engines/funcs/r/crash_manytables_number.result (+1/-0)
Percona-Server/mysql-test/suite/engines/funcs/r/crash_manytables_string.result (+1/-0)
Percona-Server/mysql-test/suite/engines/funcs/r/rpl_row_until.result (+66/-212)
Percona-Server/mysql-test/suite/engines/funcs/t/crash_manytables_number.cnf (+4/-0)
Percona-Server/mysql-test/suite/engines/funcs/t/crash_manytables_number.test (+1/-1)
Percona-Server/mysql-test/suite/engines/funcs/t/crash_manytables_string.cnf (+4/-0)
Percona-Server/mysql-test/suite/engines/funcs/t/crash_manytables_string.test (+1/-1)
Percona-Server/mysql-test/suite/engines/funcs/t/disabled.def (+0/-1)
Percona-Server/mysql-test/suite/engines/funcs/t/rpl_row_until.test (+114/-78)
Percona-Server/mysql-test/suite/funcs_1/r/is_columns_is.result (+2/-2)
Percona-Server/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result (+2/-2)
Percona-Server/mysql-test/suite/funcs_1/r/is_columns_mysql.result (+4/-4)
Percona-Server/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result (+4/-4)
Percona-Server/mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result (+2/-2)
Percona-Server/mysql-test/suite/funcs_1/r/processlist_priv_ps.result (+2/-2)
Percona-Server/mysql-test/suite/funcs_1/r/processlist_val_no_prot.result (+1/-1)
Percona-Server/mysql-test/suite/funcs_1/r/processlist_val_ps.result (+1/-1)
Percona-Server/mysql-test/suite/innodb/r/innodb-alter-autoinc.result (+5/-4)
Percona-Server/mysql-test/suite/innodb/r/innodb-alter-nullable.result (+3/-0)
Percona-Server/mysql-test/suite/innodb/r/innodb-alter.result (+12/-23)
Percona-Server/mysql-test/suite/innodb/r/innodb-index-online-delete.result (+1/-0)
Percona-Server/mysql-test/suite/innodb/r/innodb-index-online-fk.result (+14/-5)
Percona-Server/mysql-test/suite/innodb/r/innodb-index-online.result (+6/-4)
Percona-Server/mysql-test/suite/innodb/r/innodb-index.result (+9/-1)
Percona-Server/mysql-test/suite/innodb/r/innodb-table-online.result (+6/-1)
Percona-Server/mysql-test/suite/innodb/r/innodb-wl5980-alter.result (+3/-8)
Percona-Server/mysql-test/suite/innodb/r/innodb-wl5980-discard.result (+60/-35)
Percona-Server/mysql-test/suite/innodb/r/innodb.result (+3/-0)
Percona-Server/mysql-test/suite/innodb/r/innodb_16k.result (+3/-0)
Percona-Server/mysql-test/suite/innodb/r/innodb_buffer_pool_load.result (+3/-3)
Percona-Server/mysql-test/suite/innodb/r/innodb_bug13867871.result (+0/-2)
Percona-Server/mysql-test/suite/innodb/r/innodb_bug14147491.result (+17/-0)
Percona-Server/mysql-test/suite/innodb/r/innodb_bug14676111.result (+64/-0)
Percona-Server/mysql-test/suite/innodb/r/innodb_bug14704286.result (+53/-0)
Percona-Server/mysql-test/suite/innodb/r/innodb_bug54044.result (+9/-4)
Percona-Server/mysql-test/suite/innodb/r/innodb_crash_recov_log_compressed_after_commit_0.result (+0/-48)
Percona-Server/mysql-test/suite/innodb/r/innodb_crash_recov_log_compressed_after_commit_1.result (+0/-48)
Percona-Server/mysql-test/suite/innodb/r/innodb_crash_recov_log_compressed_before_commit_0.result (+0/-52)
Percona-Server/mysql-test/suite/innodb/r/innodb_crash_recov_log_compressed_before_commit_1.result (+0/-51)
Percona-Server/mysql-test/suite/innodb/r/innodb_i_s_innodb_locks.result (+14/-14)
Percona-Server/mysql-test/suite/innodb/r/innodb_information_schema_buffer.result (+8/-8)
Percona-Server/mysql-test/suite/innodb/r/innodb_misc1.result (+3/-0)
Percona-Server/mysql-test/suite/innodb/r/innodb_monitor.result (+2/-0)
Percona-Server/mysql-test/suite/innodb/r/innodb_mysql.result (+1/-1)
Percona-Server/mysql-test/suite/innodb/r/innodb_wl6347_comp_indx_stat.result (+0/-8)
Percona-Server/mysql-test/suite/innodb/t/innodb-alter-autoinc.test (+6/-2)
Percona-Server/mysql-test/suite/innodb/t/innodb-alter-nullable.test (+8/-0)
Percona-Server/mysql-test/suite/innodb/t/innodb-alter.test (+12/-12)
Percona-Server/mysql-test/suite/innodb/t/innodb-index-online-delete.test (+1/-0)
Percona-Server/mysql-test/suite/innodb/t/innodb-index-online-fk.test (+19/-4)
Percona-Server/mysql-test/suite/innodb/t/innodb-index-online.test (+9/-5)
Percona-Server/mysql-test/suite/innodb/t/innodb-index.test (+20/-1)
Percona-Server/mysql-test/suite/innodb/t/innodb-table-online.test (+9/-1)
Percona-Server/mysql-test/suite/innodb/t/innodb-wl5522-debug.test (+3/-0)
Percona-Server/mysql-test/suite/innodb/t/innodb-wl5980-alter.test (+3/-3)
Percona-Server/mysql-test/suite/innodb/t/innodb-wl5980-discard.test (+45/-4)
Percona-Server/mysql-test/suite/innodb/t/innodb.test (+4/-0)
Percona-Server/mysql-test/suite/innodb/t/innodb_16k.test (+5/-0)
Percona-Server/mysql-test/suite/innodb/t/innodb_buffer_pool_load.test (+1/-1)
Percona-Server/mysql-test/suite/innodb/t/innodb_bug13867871.test (+1/-3)
Percona-Server/mysql-test/suite/innodb/t/innodb_bug14147491-master.opt (+1/-0)
Percona-Server/mysql-test/suite/innodb/t/innodb_bug14147491.test (+75/-0)
Percona-Server/mysql-test/suite/innodb/t/innodb_bug14676111.test (+145/-0)
Percona-Server/mysql-test/suite/innodb/t/innodb_bug14704286.test (+97/-0)
Percona-Server/mysql-test/suite/innodb/t/innodb_bug54044.test (+4/-4)
Percona-Server/mysql-test/suite/innodb/t/innodb_corrupt_bit.test (+1/-0)
Percona-Server/mysql-test/suite/innodb/t/innodb_crash_recov_log_compressed_after_commit_0.test (+0/-130)
Percona-Server/mysql-test/suite/innodb/t/innodb_crash_recov_log_compressed_after_commit_1.test (+0/-131)
Percona-Server/mysql-test/suite/innodb/t/innodb_crash_recov_log_compressed_before_commit_0.test (+0/-134)
Percona-Server/mysql-test/suite/innodb/t/innodb_crash_recov_log_compressed_before_commit_1.test (+0/-134)
Percona-Server/mysql-test/suite/innodb/t/innodb_information_schema_buffer.test (+5/-5)
Percona-Server/mysql-test/suite/innodb/t/innodb_misc1.test (+4/-0)
Percona-Server/mysql-test/suite/innodb/t/innodb_mysql.test (+2/-0)
Percona-Server/mysql-test/suite/innodb/t/innodb_wl6347_comp_indx_stat.test (+6/-12)
Percona-Server/mysql-test/suite/innodb_fts/r/innobase_drop_fts_index_table.result (+6/-0)
Percona-Server/mysql-test/suite/innodb_fts/r/innodb-fts-basic.result (+47/-41)
Percona-Server/mysql-test/suite/innodb_fts/r/innodb-fts-ddl.result (+2/-2)
Percona-Server/mysql-test/suite/innodb_fts/r/innodb_fts_large_records.result (+16/-16)
Percona-Server/mysql-test/suite/innodb_fts/r/innodb_fts_misc.result (+56/-39)
Percona-Server/mysql-test/suite/innodb_fts/r/innodb_fts_misc_1.result (+37/-31)
Percona-Server/mysql-test/suite/innodb_fts/r/innodb_fts_multiple_index.result (+44/-41)
Percona-Server/mysql-test/suite/innodb_fts/r/innodb_fts_opt.result (+28/-28)
Percona-Server/mysql-test/suite/innodb_fts/r/innodb_fts_proximity.result (+147/-11)
Percona-Server/mysql-test/suite/innodb_fts/t/innobase_drop_fts_index_table.test (+19/-0)
Percona-Server/mysql-test/suite/innodb_fts/t/innodb-fts-basic.test (+18/-18)
Percona-Server/mysql-test/suite/innodb_fts/t/innodb-fts-ddl.test (+2/-2)
Percona-Server/mysql-test/suite/innodb_fts/t/innodb_fts_large_records.test (+16/-16)
Percona-Server/mysql-test/suite/innodb_fts/t/innodb_fts_misc.test (+38/-22)
Percona-Server/mysql-test/suite/innodb_fts/t/innodb_fts_misc_1.test (+32/-33)
Percona-Server/mysql-test/suite/innodb_fts/t/innodb_fts_multiple_index.test (+19/-19)
Percona-Server/mysql-test/suite/innodb_fts/t/innodb_fts_opt.test (+26/-26)
Percona-Server/mysql-test/suite/innodb_fts/t/innodb_fts_proximity.test (+176/-20)
Percona-Server/mysql-test/suite/large_tests/r/rpl_slave_net_timeout.result (+0/-3)
Percona-Server/mysql-test/suite/large_tests/t/rpl_slave_net_timeout.test (+23/-12)
Percona-Server/mysql-test/suite/opt_trace/include/subquery.inc (+1/-1)
Percona-Server/mysql-test/suite/opt_trace/r/bugs_no_prot_all.result (+4/-1)
Percona-Server/mysql-test/suite/opt_trace/r/bugs_no_prot_none.result (+3/-1)
Percona-Server/mysql-test/suite/opt_trace/r/bugs_ps_prot_all.result (+4/-1)
Percona-Server/mysql-test/suite/opt_trace/r/bugs_ps_prot_none.result (+3/-1)
Percona-Server/mysql-test/suite/opt_trace/r/filesort_pq.result (+3/-4)
Percona-Server/mysql-test/suite/opt_trace/r/general2_no_prot.result (+2/-0)
Percona-Server/mysql-test/suite/opt_trace/r/general2_ps_prot.result (+2/-0)
Percona-Server/mysql-test/suite/opt_trace/r/range_no_prot.result (+59/-17)
Percona-Server/mysql-test/suite/opt_trace/r/range_ps_prot.result (+59/-17)
Percona-Server/mysql-test/suite/opt_trace/r/subquery_no_prot.result (+9/-9)
Percona-Server/mysql-test/suite/opt_trace/r/subquery_ps_prot.result (+9/-9)
Percona-Server/mysql-test/suite/parts/inc/partition_crash.inc (+2/-1)
Percona-Server/mysql-test/suite/parts/r/partition_alter4_innodb.result (+24/-24)
Percona-Server/mysql-test/suite/parts/r/partition_debug_innodb.result (+0/-71)
Percona-Server/mysql-test/suite/parts/t/partition_debug_innodb.test (+4/-0)
Percona-Server/mysql-test/suite/perfschema/include/binlog_common.inc (+0/-41)
Percona-Server/mysql-test/suite/perfschema/include/binlog_edge_common.inc (+188/-0)
Percona-Server/mysql-test/suite/perfschema/include/binlog_ok_common.inc (+146/-0)
Percona-Server/mysql-test/suite/perfschema/include/schema.inc (+1/-0)
Percona-Server/mysql-test/suite/perfschema/r/binlog_edge_mix.result (+178/-0)
Percona-Server/mysql-test/suite/perfschema/r/binlog_edge_row.result (+179/-0)
Percona-Server/mysql-test/suite/perfschema/r/binlog_edge_stmt.result (+258/-0)
Percona-Server/mysql-test/suite/perfschema/r/binlog_mix.result (+0/-50)
Percona-Server/mysql-test/suite/perfschema/r/binlog_ok_mix.result (+119/-0)
Percona-Server/mysql-test/suite/perfschema/r/binlog_ok_row.result (+119/-0)
Percona-Server/mysql-test/suite/perfschema/r/binlog_ok_stmt.result (+119/-0)
Percona-Server/mysql-test/suite/perfschema/r/binlog_row.result (+0/-50)
Percona-Server/mysql-test/suite/perfschema/r/binlog_stmt.result (+0/-63)
Percona-Server/mysql-test/suite/perfschema/r/digest_table_full.result (+4/-4)
Percona-Server/mysql-test/suite/perfschema/r/dml_esms_by_digest.result (+2/-2)
Percona-Server/mysql-test/suite/perfschema/r/pfs_upgrade_event.result (+4/-4)
Percona-Server/mysql-test/suite/perfschema/r/pfs_upgrade_func.result (+4/-4)
Percona-Server/mysql-test/suite/perfschema/r/pfs_upgrade_proc.result (+4/-4)
Percona-Server/mysql-test/suite/perfschema/r/pfs_upgrade_table.result (+4/-4)
Percona-Server/mysql-test/suite/perfschema/r/pfs_upgrade_view.result (+4/-4)
Percona-Server/mysql-test/suite/perfschema/r/rpl_gtid_func.result (+83/-0)
Percona-Server/mysql-test/suite/perfschema/r/schema.result (+51/-18)
Percona-Server/mysql-test/suite/perfschema/r/sizing_default.result (+4/-3)
Percona-Server/mysql-test/suite/perfschema/r/sizing_high.result (+4/-3)
Percona-Server/mysql-test/suite/perfschema/r/sizing_low.result (+4/-3)
Percona-Server/mysql-test/suite/perfschema/r/sizing_med.result (+4/-3)
Percona-Server/mysql-test/suite/perfschema/r/start_server_no_digests.result (+2/-2)
Percona-Server/mysql-test/suite/perfschema/r/start_server_off.result (+20/-19)
Percona-Server/mysql-test/suite/perfschema/r/statement_digest.result (+39/-39)
Percona-Server/mysql-test/suite/perfschema/r/statement_digest_charset.result (+1/-1)
Percona-Server/mysql-test/suite/perfschema/r/statement_digest_consumers.result (+39/-39)
Percona-Server/mysql-test/suite/perfschema/r/statement_digest_consumers2.result (+2/-2)
Percona-Server/mysql-test/suite/perfschema/r/statement_digest_long_query.result (+4/-4)
Percona-Server/mysql-test/suite/perfschema/r/table_schema.result (+47/-46)
Percona-Server/mysql-test/suite/perfschema/t/binlog_edge_mix-master.opt (+2/-0)
Percona-Server/mysql-test/suite/perfschema/t/binlog_edge_mix.test (+10/-0)
Percona-Server/mysql-test/suite/perfschema/t/binlog_edge_row-master.opt (+2/-0)
Percona-Server/mysql-test/suite/perfschema/t/binlog_edge_row.test (+10/-0)
Percona-Server/mysql-test/suite/perfschema/t/binlog_edge_stmt-master.opt (+2/-0)
Percona-Server/mysql-test/suite/perfschema/t/binlog_edge_stmt.test (+10/-0)
Percona-Server/mysql-test/suite/perfschema/t/binlog_mix.test (+0/-10)
Percona-Server/mysql-test/suite/perfschema/t/binlog_ok_mix-master.opt (+2/-0)
Percona-Server/mysql-test/suite/perfschema/t/binlog_ok_mix.test (+10/-0)
Percona-Server/mysql-test/suite/perfschema/t/binlog_ok_row-master.opt (+2/-0)
Percona-Server/mysql-test/suite/perfschema/t/binlog_ok_row.test (+10/-0)
Percona-Server/mysql-test/suite/perfschema/t/binlog_ok_stmt-master.opt (+2/-0)
Percona-Server/mysql-test/suite/perfschema/t/binlog_ok_stmt.test (+10/-0)
Percona-Server/mysql-test/suite/perfschema/t/binlog_row.test (+0/-10)
Percona-Server/mysql-test/suite/perfschema/t/binlog_stmt.test (+0/-11)
Percona-Server/mysql-test/suite/perfschema/t/digest_table_full.test (+1/-1)
Percona-Server/mysql-test/suite/perfschema/t/rpl_gtid_func.test (+91/-0)
Percona-Server/mysql-test/suite/perfschema/t/start_server_no_digests.test (+1/-1)
Percona-Server/mysql-test/suite/perfschema/t/start_server_off.test (+27/-0)
Percona-Server/mysql-test/suite/perfschema/t/statement_digest.test (+1/-1)
Percona-Server/mysql-test/suite/perfschema/t/statement_digest_consumers.test (+1/-1)
Percona-Server/mysql-test/suite/perfschema/t/statement_digest_consumers2.test (+1/-1)
Percona-Server/mysql-test/suite/perfschema/t/statement_digest_long_query.test (+1/-1)
Percona-Server/mysql-test/suite/rpl/r/rpl_bug31076.result (+2/-0)
Percona-Server/mysql-test/suite/rpl/r/rpl_check_gtid.result (+8/-8)
Percona-Server/mysql-test/suite/rpl/r/rpl_checksum.result (+1/-2)
Percona-Server/mysql-test/suite/rpl/r/rpl_do_grant.result (+1/-1)
Percona-Server/mysql-test/suite/rpl/r/rpl_extra_col_master_innodb.result (+2/-2)
Percona-Server/mysql-test/suite/rpl/r/rpl_extra_col_master_myisam.result (+2/-2)
Percona-Server/mysql-test/suite/rpl/r/rpl_gtid_execution.result (+332/-332)
Percona-Server/mysql-test/suite/rpl/r/rpl_gtid_mode.result (+2/-2)
Percona-Server/mysql-test/suite/rpl/r/rpl_gtid_parallel.result (+3/-3)
Percona-Server/mysql-test/suite/rpl/r/rpl_gtid_purged_fail_to_connect.result (+5/-2)
Percona-Server/mysql-test/suite/rpl/r/rpl_gtid_sql_until_before_after.result (+1/-1)
Percona-Server/mysql-test/suite/rpl/r/rpl_gtid_stress_failover.result (+1/-1)
Percona-Server/mysql-test/suite/rpl/r/rpl_mixed_implicit_commit_binlog.result (+1/-1)
Percona-Server/mysql-test/suite/rpl/r/rpl_mts_debug.result (+1/-1)
Percona-Server/mysql-test/suite/rpl/r/rpl_parallel_change_master.result (+1/-0)
Percona-Server/mysql-test/suite/rpl/r/rpl_report_port.result (+2/-0)
Percona-Server/mysql-test/suite/rpl/r/rpl_rotate_logs.result (+11/-23)
Percona-Server/mysql-test/suite/rpl/r/rpl_row_ignorable_event.result (+2/-0)
Percona-Server/mysql-test/suite/rpl/r/rpl_row_implicit_commit_binlog.result (+1/-1)
Percona-Server/mysql-test/suite/rpl/r/rpl_row_mts_show_relaylog_events.result (+204/-0)
Percona-Server/mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result (+10/-0)
Percona-Server/mysql-test/suite/rpl/r/rpl_row_until.result (+6/-0)
Percona-Server/mysql-test/suite/rpl/r/rpl_sp.result (+4/-2)
Percona-Server/mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result (+1/-1)
Percona-Server/mysql-test/suite/rpl/r/rpl_stm_mix_mts_show_relaylog_events.result (+183/-0)
Percona-Server/mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result (+1/-1)
Percona-Server/mysql-test/suite/rpl/r/rpl_user.result (+2/-2)
Percona-Server/mysql-test/suite/rpl/t/disabled.def (+0/-1)
Percona-Server/mysql-test/suite/rpl/t/rpl_bug31076.test (+2/-0)
Percona-Server/mysql-test/suite/rpl/t/rpl_check_gtid.test (+9/-6)
Percona-Server/mysql-test/suite/rpl/t/rpl_checksum.test (+3/-2)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_empty_group-master.opt (+1/-1)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_empty_group-slave.opt (+1/-1)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_execution-master.opt (+1/-1)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_execution-slave.opt (+1/-1)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_execution.test (+29/-29)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_failover.cnf (+3/-3)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_mode.test (+11/-11)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_parallel-master.opt (+1/-1)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_parallel-slave.opt (+1/-1)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_parallel.test (+6/-6)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_purged_fail_to_connect-master.opt (+1/-1)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_purged_fail_to_connect-slave.opt (+1/-1)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_purged_fail_to_connect.test (+18/-12)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_purged_maintained.test (+15/-12)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_sql_until_before_after.test (+1/-1)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_stress_failover.cnf (+9/-9)
Percona-Server/mysql-test/suite/rpl/t/rpl_gtid_stress_failover.test (+18/-8)
Percona-Server/mysql-test/suite/rpl/t/rpl_insert_id-master.opt (+1/-0)
Percona-Server/mysql-test/suite/rpl/t/rpl_insert_id-slave.opt (+1/-0)
Percona-Server/mysql-test/suite/rpl/t/rpl_mts_debug.test (+1/-1)
Percona-Server/mysql-test/suite/rpl/t/rpl_mysqlbinlog_gtid_on-master.opt (+1/-1)
Percona-Server/mysql-test/suite/rpl/t/rpl_mysqlbinlog_gtid_on-slave.opt (+1/-1)
Percona-Server/mysql-test/suite/rpl/t/rpl_parallel_change_master.test (+8/-1)
Percona-Server/mysql-test/suite/rpl/t/rpl_report_port.test (+6/-0)
Percona-Server/mysql-test/suite/rpl/t/rpl_rotate_logs.test (+57/-7)
Percona-Server/mysql-test/suite/rpl/t/rpl_row_mts_show_relaylog_events.test (+20/-0)
Percona-Server/mysql-test/suite/rpl/t/rpl_row_show_relaylog_events.test (+1/-0)
Percona-Server/mysql-test/suite/rpl/t/rpl_row_until.test (+1/-0)
Percona-Server/mysql-test/suite/rpl/t/rpl_semi_sync.test (+2/-0)
Percona-Server/mysql-test/suite/rpl/t/rpl_stm_mix_mts_show_relaylog_events.test (+20/-0)
Percona-Server/mysql-test/suite/rpl/t/rpl_stm_mix_show_relaylog_events.test (+1/-0)
Percona-Server/mysql-test/suite/rpl/t/rpl_switch_stm_row_mixed-master.opt (+1/-0)
Percona-Server/mysql-test/suite/sha256_auth/r/plugin_auth_sha256_tls.result (+0/-32)
Percona-Server/mysql-test/suite/sha256_auth/t/plugin_auth_sha256_tls.test (+0/-53)
Percona-Server/mysql-test/suite/sys_vars/r/disconnect_on_expired_password_basic.result (+25/-0)
Percona-Server/mysql-test/suite/sys_vars/r/enforce_gtid_consistency_basic.result (+27/-27)
Percona-Server/mysql-test/suite/sys_vars/r/gtid_executed_basic.result (+21/-21)
Percona-Server/mysql-test/suite/sys_vars/r/gtid_purged_basic.result (+21/-19)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_ft_cache_size_basic.result (+5/-5)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_limit_optimistic_insert_debug_basic.result (+58/-0)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_log_compressed_pages_basic.result (+0/-69)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_monitor_disable_basic.result (+2/-0)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_monitor_enable_basic.result (+2/-0)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_monitor_reset_all_basic.result (+2/-0)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_monitor_reset_basic.result (+2/-0)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_trx_purge_view_update_only_debug_basic.result (+61/-0)
Percona-Server/mysql-test/suite/sys_vars/r/ndb_log_update_as_write_basic.result (+0/-14)
Percona-Server/mysql-test/suite/sys_vars/r/ndb_log_updated_only_basic.result (+0/-14)
Percona-Server/mysql-test/suite/sys_vars/r/optimizer_switch_basic.result (+17/-17)
Percona-Server/mysql-test/suite/sys_vars/r/pseudo_slave_mode_basic.result (+119/-0)
Percona-Server/mysql-test/suite/sys_vars/r/slow_launch_time_func.result (+8/-3)
Percona-Server/mysql-test/suite/sys_vars/t/disconnect_on_expired_password_basic.test (+17/-0)
Percona-Server/mysql-test/suite/sys_vars/t/enforce_gtid_consistency_basic.test (+12/-12)
Percona-Server/mysql-test/suite/sys_vars/t/gtid_executed_basic.test (+8/-8)
Percona-Server/mysql-test/suite/sys_vars/t/gtid_purged_basic.test (+18/-16)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_file_per_table_basic-master.opt (+1/-0)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_limit_optimistic_insert_debug_basic.test (+50/-0)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_log_compressed_pages_basic.test (+0/-88)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_trx_purge_view_update_only_debug_basic.test (+53/-0)
Percona-Server/mysql-test/suite/sys_vars/t/ndb_log_update_as_write_basic.test (+0/-216)
Percona-Server/mysql-test/suite/sys_vars/t/ndb_log_updated_only_basic.test (+0/-216)
Percona-Server/mysql-test/suite/sys_vars/t/pseudo_slave_mode_basic.test (+168/-0)
Percona-Server/mysql-test/suite/sys_vars/t/slow_launch_time_func.test (+7/-5)
Percona-Server/mysql-test/t/alter_table.test (+15/-7)
Percona-Server/mysql-test/t/connect.test (+25/-5)
Percona-Server/mysql-test/t/derived.test (+4/-0)
Percona-Server/mysql-test/t/disconnect_on_expired_password_default.test (+50/-0)
Percona-Server/mysql-test/t/disconnect_on_expired_password_off-master.opt (+1/-0)
Percona-Server/mysql-test/t/disconnect_on_expired_password_off.test (+48/-0)
Percona-Server/mysql-test/t/distinct.test (+17/-8)
Percona-Server/mysql-test/t/group_by.test (+2/-2)
Percona-Server/mysql-test/t/host_cache_size_functionality.test (+183/-0)
Percona-Server/mysql-test/t/information_schema.test (+1/-1)
Percona-Server/mysql-test/t/innodb_pk_extension_off.test (+16/-0)
Percona-Server/mysql-test/t/innodb_pk_extension_on.test (+16/-0)
Percona-Server/mysql-test/t/log_tables.test (+8/-6)
Percona-Server/mysql-test/t/multi_update2.test (+1/-0)
Percona-Server/mysql-test/t/mysql_config_editor.test (+3/-3)
Percona-Server/mysql-test/t/mysql_plugin.test (+4/-4)
Percona-Server/mysql-test/t/mysqldump.test (+1/-0)
Percona-Server/mysql-test/t/plugin_auth.test (+1/-1)
Percona-Server/mysql-test/t/plugin_auth_sha256.test (+2/-0)
Percona-Server/mysql-test/t/plugin_auth_sha256_2-master.opt (+1/-1)
Percona-Server/mysql-test/t/plugin_auth_sha256_2.test (+2/-0)
Percona-Server/mysql-test/t/plugin_auth_sha256_server_default-master.opt (+3/-3)
Percona-Server/mysql-test/t/plugin_auth_sha256_server_default.test (+5/-0)
Percona-Server/mysql-test/t/plugin_auth_sha256_server_default_tls.test (+3/-0)
Percona-Server/mysql-test/t/plugin_auth_sha256_tls.test (+21/-0)
Percona-Server/mysql-test/t/ps_ddl1.test (+0/-2)
Percona-Server/mysql-test/t/query_cache_size_functionality.test (+1/-1)
Percona-Server/mysql-test/t/query_cache_type_functionality.test (+1/-1)
Percona-Server/mysql-test/t/rewrite_general_log.test (+12/-8)
Percona-Server/mysql-test/t/sort_buffer_size_functionality.test (+226/-0)
Percona-Server/mysql-test/t/sp_notembedded.test (+10/-8)
Percona-Server/mysql-test/t/subselect_notembedded-master.opt (+1/-0)
Percona-Server/mysql-test/t/symlink_windows.test (+58/-0)
Percona-Server/mysql-test/t/table_definition_cache_functionality.test (+207/-0)
Percona-Server/mysql-test/t/validate_password_plugin.test (+13/-6)
Percona-Server/mysql-test/t/variables_debug.test (+1/-1)
Percona-Server/mysql-test/t/wl6443_deprecation.test (+3/-0)
Percona-Server/mysql-test/valgrind.supp (+43/-0)
Percona-Server/mysys/mf_format.c (+3/-2)
Percona-Server/mysys/mf_iocache.c (+1/-1)
Percona-Server/mysys/mf_pack.c (+17/-8)
Percona-Server/mysys/my_access.c (+63/-0)
Percona-Server/mysys/my_handler_errors.h (+2/-1)
Percona-Server/mysys/my_lib.c (+3/-2)
Percona-Server/mysys/psi_noop.c (+2/-2)
Percona-Server/mysys_ssl/my_aes.cc (+19/-11)
Percona-Server/mysys_ssl/my_getopt.cc (+86/-25)
Percona-Server/packaging/WiX/CMakeLists.txt (+17/-0)
Percona-Server/packaging/WiX/mysql_server_extra.wxs.in (+9/-0)
Percona-Server/packaging/rpm-uln/CMakeLists.txt (+1/-1)
Percona-Server/packaging/rpm-uln/mysql-5.6-stack-guard.patch (+18/-15)
Percona-Server/packaging/rpm-uln/mysql-chain-certs.patch (+16/-12)
Percona-Server/packaging/rpm-uln/mysql.spec.sh (+50/-19)
Percona-Server/packaging/solaris/CMakeLists.txt (+32/-0)
Percona-Server/packaging/solaris/postinstall-solaris.sh (+124/-0)
Percona-Server/plugin/auth/test_plugin.c (+2/-2)
Percona-Server/plugin/password_validation/validate_password.cc (+89/-11)
Percona-Server/plugin/semisync/semisync_master.cc (+34/-4)
Percona-Server/plugin/semisync/semisync_master.h (+22/-3)
Percona-Server/plugin/semisync/semisync_master_plugin.cc (+19/-11)
Percona-Server/regex/my_regex.h (+1/-1)
Percona-Server/regex/regcomp.c (+1/-1)
Percona-Server/scripts/mysql_install_db.pl.in (+33/-16)
Percona-Server/scripts/mysql_system_tables.sql (+21/-20)
Percona-Server/scripts/mysql_system_tables_fix.sql (+4/-0)
Percona-Server/scripts/mysqld_multi.sh (+22/-0)
Percona-Server/scripts/mysqld_safe.sh (+34/-1)
Percona-Server/scripts/mysqldumpslow.sh (+1/-1)
Percona-Server/sql-common/client.c (+18/-11)
Percona-Server/sql-common/client_authentication.cc (+4/-1)
Percona-Server/sql-common/client_plugin.c (+17/-3)
Percona-Server/sql/CMakeLists.txt (+0/-1)
Percona-Server/sql/abstract_query_plan.cc (+4/-2)
Percona-Server/sql/binlog.cc (+235/-60)
Percona-Server/sql/binlog.h (+23/-0)
Percona-Server/sql/event_db_repository.cc (+1/-1)
Percona-Server/sql/gcalc_slicescan.cc (+3/-0)
Percona-Server/sql/gcalc_slicescan.h (+12/-0)
Percona-Server/sql/gcalc_tools.cc (+22/-74)
Percona-Server/sql/gcalc_tools.h (+65/-10)
Percona-Server/sql/global_threads.h (+2/-1)
Percona-Server/sql/ha_ndbcluster.cc (+38/-23)
Percona-Server/sql/ha_partition.cc (+40/-3)
Percona-Server/sql/handler.cc (+33/-16)
Percona-Server/sql/handler.h (+35/-4)
Percona-Server/sql/hash_filo.h (+51/-13)
Percona-Server/sql/item.cc (+70/-52)
Percona-Server/sql/item.h (+5/-7)
Percona-Server/sql/item_cmpfunc.cc (+14/-10)
Percona-Server/sql/item_cmpfunc.h (+8/-3)
Percona-Server/sql/item_create.cc (+1/-1)
Percona-Server/sql/item_func.cc (+8/-8)
Percona-Server/sql/item_func.h (+4/-3)
Percona-Server/sql/item_geofunc.cc (+7/-5)
Percona-Server/sql/item_row.cc (+2/-3)
Percona-Server/sql/item_row.h (+1/-1)
Percona-Server/sql/item_strfunc.cc (+9/-4)
Percona-Server/sql/item_subselect.cc (+30/-36)
Percona-Server/sql/item_subselect.h (+3/-4)
Percona-Server/sql/item_xmlfunc.cc (+24/-9)
Percona-Server/sql/item_xmlfunc.h (+12/-0)
Percona-Server/sql/key.cc (+4/-4)
Percona-Server/sql/lock.cc (+1/-1)
Percona-Server/sql/log.cc (+12/-12)
Percona-Server/sql/log.h (+4/-4)
Percona-Server/sql/log_event.cc (+114/-33)
Percona-Server/sql/log_event.h (+48/-7)
Percona-Server/sql/log_event_old.cc (+1/-1)
Percona-Server/sql/mdl.h (+10/-2)
Percona-Server/sql/mysqld.cc (+76/-22)
Percona-Server/sql/mysqld.h (+12/-2)
Percona-Server/sql/opt_explain.cc (+40/-14)
Percona-Server/sql/opt_explain_format.h (+3/-0)
Percona-Server/sql/opt_explain_json.cc (+5/-0)
Percona-Server/sql/opt_range.cc (+140/-48)
Percona-Server/sql/opt_range.h (+2/-16)
Percona-Server/sql/opt_sum.cc (+3/-1)
Percona-Server/sql/partition_info.cc (+11/-1)
Percona-Server/sql/partition_info.h (+5/-6)
Percona-Server/sql/records.cc (+1/-1)
Percona-Server/sql/replication.h (+16/-12)
Percona-Server/sql/rpl_constants.cc (+0/-33)
Percona-Server/sql/rpl_constants.h (+0/-14)
Percona-Server/sql/rpl_gtid.h (+47/-5)
Percona-Server/sql/rpl_gtid_cache.cc (+1/-0)
Percona-Server/sql/rpl_gtid_execution.cc (+34/-1)
Percona-Server/sql/rpl_gtid_owned.cc (+2/-2)
Percona-Server/sql/rpl_gtid_set.cc (+210/-83)
Percona-Server/sql/rpl_gtid_specification.cc (+6/-1)
Percona-Server/sql/rpl_gtid_state.cc (+30/-0)
Percona-Server/sql/rpl_handler.cc (+10/-10)
Percona-Server/sql/rpl_handler.h (+3/-2)
Percona-Server/sql/rpl_info_factory.cc (+33/-2)
Percona-Server/sql/rpl_info_factory.h (+1/-0)
Percona-Server/sql/rpl_info_file.cc (+9/-0)
Percona-Server/sql/rpl_info_file.h (+1/-1)
Percona-Server/sql/rpl_info_table_access.cc (+1/-1)
Percona-Server/sql/rpl_master.cc (+248/-88)
Percona-Server/sql/rpl_master.h (+52/-4)
Percona-Server/sql/rpl_rli.cc (+6/-6)
Percona-Server/sql/rpl_rli_pdb.cc (+109/-90)
Percona-Server/sql/rpl_rli_pdb.h (+12/-2)
Percona-Server/sql/rpl_slave.cc (+106/-47)
Percona-Server/sql/rpl_utility.cc (+7/-2)
Percona-Server/sql/set_var.h (+1/-0)
Percona-Server/sql/share/errmsg-utf8.txt (+110/-13)
Percona-Server/sql/sp_head.cc (+28/-24)
Percona-Server/sql/sp_rcontext.cc (+6/-0)
Percona-Server/sql/spatial.cc (+9/-1)
Percona-Server/sql/sql_acl.cc (+254/-48)
Percona-Server/sql/sql_acl.h (+2/-3)
Percona-Server/sql/sql_admin.cc (+23/-3)
Percona-Server/sql/sql_base.cc (+105/-126)
Percona-Server/sql/sql_base.h (+6/-0)
Percona-Server/sql/sql_cache.cc (+46/-37)
Percona-Server/sql/sql_cache.h (+1/-1)
Percona-Server/sql/sql_class.cc (+59/-3)
Percona-Server/sql/sql_class.h (+101/-15)
Percona-Server/sql/sql_cursor.cc (+1/-1)
Percona-Server/sql/sql_db.cc (+8/-1)
Percona-Server/sql/sql_derived.cc (+4/-3)
Percona-Server/sql/sql_error.cc (+2/-1)
Percona-Server/sql/sql_executor.cc (+33/-11)
Percona-Server/sql/sql_handler.cc (+2/-2)
Percona-Server/sql/sql_insert.cc (+0/-10)
Percona-Server/sql/sql_lex.cc (+5/-0)
Percona-Server/sql/sql_lex.h (+35/-0)
Percona-Server/sql/sql_load.cc (+5/-0)
Percona-Server/sql/sql_optimizer.cc (+169/-78)
Percona-Server/sql/sql_optimizer.h (+16/-1)
Percona-Server/sql/sql_parse.cc (+85/-21)
Percona-Server/sql/sql_partition.cc (+4/-4)
Percona-Server/sql/sql_partition.h (+1/-0)
Percona-Server/sql/sql_planner.cc (+29/-18)
Percona-Server/sql/sql_plugin.cc (+3/-2)
Percona-Server/sql/sql_priv.h (+41/-3)
Percona-Server/sql/sql_profile.cc (+19/-10)
Percona-Server/sql/sql_profile.h (+4/-2)
Percona-Server/sql/sql_resolver.cc (+52/-40)
Percona-Server/sql/sql_rewrite.cc (+195/-13)
Percona-Server/sql/sql_select.cc (+237/-134)
Percona-Server/sql/sql_select.h (+6/-2)
Percona-Server/sql/sql_show.cc (+30/-12)
Percona-Server/sql/sql_table.cc (+213/-74)
Percona-Server/sql/sql_table.h (+12/-1)
Percona-Server/sql/sql_tmp_table.cc (+30/-19)
Percona-Server/sql/sql_trigger.cc (+11/-1)
Percona-Server/sql/sql_truncate.cc (+1/-1)
Percona-Server/sql/sql_union.cc (+26/-14)
Percona-Server/sql/sql_update.cc (+2/-1)
Percona-Server/sql/sql_view.cc (+31/-18)
Percona-Server/sql/sql_yacc.yy (+81/-5)
Percona-Server/sql/structs.h (+25/-9)
Percona-Server/sql/sys_vars.cc (+168/-22)
Percona-Server/sql/sys_vars.h (+104/-10)
Percona-Server/sql/table.cc (+259/-53)
Percona-Server/sql/table.h (+36/-5)
Percona-Server/sql/transaction.cc (+17/-3)
Percona-Server/sql/unireg.cc (+15/-8)
Percona-Server/sql/uuid.cc (+1/-1)
Percona-Server/storage/archive/ha_archive.cc (+1/-1)
Percona-Server/storage/federated/ha_federated.cc (+1/-1)
Percona-Server/storage/heap/ha_heap.cc (+6/-6)
Percona-Server/storage/heap/hp_delete.c (+14/-4)
Percona-Server/storage/innobase/btr/btr0btr.cc (+34/-8)
Percona-Server/storage/innobase/btr/btr0cur.cc (+60/-31)
Percona-Server/storage/innobase/btr/btr0pcur.cc (+2/-1)
Percona-Server/storage/innobase/buf/buf0buf.cc (+87/-79)
Percona-Server/storage/innobase/buf/buf0dblwr.cc (+42/-27)
Percona-Server/storage/innobase/buf/buf0flu.cc (+35/-18)
Percona-Server/storage/innobase/buf/buf0lru.cc (+38/-3)
Percona-Server/storage/innobase/dict/dict0crea.cc (+8/-3)
Percona-Server/storage/innobase/dict/dict0dict.cc (+78/-45)
Percona-Server/storage/innobase/dict/dict0load.cc (+13/-8)
Percona-Server/storage/innobase/dict/dict0stats.cc (+89/-179)
Percona-Server/storage/innobase/dict/dict0stats_bg.cc (+8/-1)
Percona-Server/storage/innobase/fil/fil0fil.cc (+28/-2)
Percona-Server/storage/innobase/fts/fts0fts.cc (+58/-29)
Percona-Server/storage/innobase/fts/fts0opt.cc (+5/-4)
Percona-Server/storage/innobase/fts/fts0que.cc (+289/-76)
Percona-Server/storage/innobase/handler/ha_innodb.cc (+239/-256)
Percona-Server/storage/innobase/handler/ha_innodb.h (+10/-1)
Percona-Server/storage/innobase/handler/handler0alter.cc (+263/-105)
Percona-Server/storage/innobase/handler/i_s.cc (+98/-74)
Percona-Server/storage/innobase/ibuf/ibuf0ibuf.cc (+1/-1)
Percona-Server/storage/innobase/include/api0misc.h (+1/-1)
Percona-Server/storage/innobase/include/btr0cur.h (+15/-10)
Percona-Server/storage/innobase/include/btr0cur.ic (+13/-0)
Percona-Server/storage/innobase/include/btr0pcur.h (+9/-6)
Percona-Server/storage/innobase/include/btr0pcur.ic (+14/-16)
Percona-Server/storage/innobase/include/buf0buf.h (+22/-5)
Percona-Server/storage/innobase/include/buf0buf.ic (+4/-4)
Percona-Server/storage/innobase/include/buf0flu.h (+17/-0)
Percona-Server/storage/innobase/include/buf0lru.h (+4/-1)
Percona-Server/storage/innobase/include/data0type.ic (+7/-24)
Percona-Server/storage/innobase/include/db0err.h (+4/-0)
Percona-Server/storage/innobase/include/dict0dict.h (+3/-25)
Percona-Server/storage/innobase/include/dict0dict.ic (+0/-47)
Percona-Server/storage/innobase/include/dict0load.h (+1/-1)
Percona-Server/storage/innobase/include/dict0mem.h (+6/-0)
Percona-Server/storage/innobase/include/fil0fil.h (+16/-1)
Percona-Server/storage/innobase/include/fts0priv.h (+1/-1)
Percona-Server/storage/innobase/include/lock0lock.h (+10/-2)
Percona-Server/storage/innobase/include/log0recv.h (+3/-0)
Percona-Server/storage/innobase/include/os0sync.h (+2/-4)
Percona-Server/storage/innobase/include/rem0rec.h (+40/-47)
Percona-Server/storage/innobase/include/rem0rec.ic (+1/-2)
Percona-Server/storage/innobase/include/rem0types.h (+10/-1)
Percona-Server/storage/innobase/include/row0ftsort.h (+3/-0)
Percona-Server/storage/innobase/include/row0log.h (+24/-6)
Percona-Server/storage/innobase/include/row0log.ic (+84/-0)
Percona-Server/storage/innobase/include/row0merge.h (+8/-10)
Percona-Server/storage/innobase/include/row0mysql.h (+4/-6)
Percona-Server/storage/innobase/include/row0row.h (+1/-1)
Percona-Server/storage/innobase/include/row0sel.h (+0/-9)
Percona-Server/storage/innobase/include/row0types.h (+0/-14)
Percona-Server/storage/innobase/include/row0upd.h (+11/-1)
Percona-Server/storage/innobase/include/row0upd.ic (+10/-3)
Percona-Server/storage/innobase/include/row0vers.h (+7/-7)
Percona-Server/storage/innobase/include/srv0mon.h (+28/-8)
Percona-Server/storage/innobase/include/srv0srv.h (+12/-0)
Percona-Server/storage/innobase/include/sync0sync.h (+1/-0)
Percona-Server/storage/innobase/include/trx0purge.h (+6/-1)
Percona-Server/storage/innobase/include/trx0rec.h (+10/-9)
Percona-Server/storage/innobase/include/trx0sys.h (+4/-0)
Percona-Server/storage/innobase/lock/lock0lock.cc (+122/-29)
Percona-Server/storage/innobase/lock/lock0wait.cc (+1/-1)
Percona-Server/storage/innobase/log/log0log.cc (+4/-8)
Percona-Server/storage/innobase/log/log0recv.cc (+143/-10)
Percona-Server/storage/innobase/os/os0file.cc (+24/-14)
Percona-Server/storage/innobase/os/os0sync.cc (+4/-11)
Percona-Server/storage/innobase/page/page0cur.cc (+2/-2)
Percona-Server/storage/innobase/page/page0zip.cc (+2/-2)
Percona-Server/storage/innobase/rem/rem0rec.cc (+195/-80)
Percona-Server/storage/innobase/row/row0ext.cc (+2/-0)
Percona-Server/storage/innobase/row/row0ftsort.cc (+50/-27)
Percona-Server/storage/innobase/row/row0import.cc (+49/-30)
Percona-Server/storage/innobase/row/row0ins.cc (+181/-205)
Percona-Server/storage/innobase/row/row0log.cc (+121/-304)
Percona-Server/storage/innobase/row/row0merge.cc (+323/-203)
Percona-Server/storage/innobase/row/row0mysql.cc (+40/-22)
Percona-Server/storage/innobase/row/row0purge.cc (+193/-155)
Percona-Server/storage/innobase/row/row0sel.cc (+39/-72)
Percona-Server/storage/innobase/row/row0uins.cc (+18/-15)
Percona-Server/storage/innobase/row/row0umod.cc (+201/-64)
Percona-Server/storage/innobase/row/row0undo.cc (+1/-1)
Percona-Server/storage/innobase/row/row0upd.cc (+116/-79)
Percona-Server/storage/innobase/row/row0vers.cc (+26/-44)
Percona-Server/storage/innobase/srv/srv0conc.cc (+1/-1)
Percona-Server/storage/innobase/srv/srv0mon.cc (+33/-7)
Percona-Server/storage/innobase/srv/srv0srv.cc (+45/-18)
Percona-Server/storage/innobase/sync/sync0rw.cc (+2/-2)
Percona-Server/storage/innobase/sync/sync0sync.cc (+2/-2)
Percona-Server/storage/innobase/trx/trx0purge.cc (+41/-1)
Percona-Server/storage/innobase/trx/trx0rec.cc (+62/-47)
Percona-Server/storage/innobase/trx/trx0sys.cc (+2/-0)
Percona-Server/storage/innobase/trx/trx0trx.cc (+2/-0)
Percona-Server/storage/innobase/ut/ut0ut.cc (+17/-6)
Percona-Server/storage/innobase/ut/ut0wqueue.cc (+1/-1)
Percona-Server/storage/myisam/ha_myisam.cc (+4/-4)
Percona-Server/storage/myisam/mi_dynrec.c (+8/-0)
Percona-Server/storage/myisam/mi_open.c (+8/-1)
Percona-Server/storage/myisam/mi_search.c (+9/-6)
Percona-Server/storage/myisam/myisamchk.c (+8/-1)
Percona-Server/storage/myisam/myisampack.c (+1/-1)
Percona-Server/storage/perfschema/ha_perfschema.cc (+14/-4)
Percona-Server/storage/perfschema/ha_perfschema.h (+0/-1)
Percona-Server/storage/perfschema/pfs.cc (+22/-7)
Percona-Server/storage/perfschema/pfs_atomic.h (+79/-0)
Percona-Server/storage/perfschema/pfs_autosize.cc (+0/-22)
Percona-Server/storage/perfschema/pfs_digest.cc (+24/-14)
Percona-Server/storage/perfschema/pfs_digest.h (+8/-5)
Percona-Server/storage/perfschema/pfs_engine_table.cc (+14/-1)
Percona-Server/storage/perfschema/pfs_events.h (+1/-1)
Percona-Server/storage/perfschema/pfs_instr.cc (+6/-6)
Percona-Server/storage/perfschema/pfs_instr.h (+4/-4)
Percona-Server/storage/perfschema/pfs_visitor.cc (+1/-1)
Percona-Server/storage/perfschema/table_esgs_by_thread_by_event_name.cc (+2/-2)
Percona-Server/storage/perfschema/table_esgs_by_thread_by_event_name.h (+1/-1)
Percona-Server/storage/perfschema/table_esms_by_digest.cc (+15/-9)
Percona-Server/storage/perfschema/table_esms_by_thread_by_event_name.cc (+2/-2)
Percona-Server/storage/perfschema/table_esms_by_thread_by_event_name.h (+1/-1)
Percona-Server/storage/perfschema/table_events_stages.cc (+2/-2)
Percona-Server/storage/perfschema/table_events_stages.h (+1/-1)
Percona-Server/storage/perfschema/table_events_statements.cc (+3/-3)
Percona-Server/storage/perfschema/table_events_statements.h (+1/-1)
Percona-Server/storage/perfschema/table_events_waits.cc (+2/-2)
Percona-Server/storage/perfschema/table_events_waits.h (+1/-1)
Percona-Server/storage/perfschema/table_ews_by_thread_by_event_name.cc (+2/-2)
Percona-Server/storage/perfschema/table_ews_by_thread_by_event_name.h (+1/-1)
Percona-Server/storage/perfschema/table_helper.cc (+18/-7)
Percona-Server/storage/perfschema/table_helper.h (+4/-0)
Percona-Server/storage/perfschema/table_host_cache.cc (+0/-3)
Percona-Server/storage/perfschema/table_session_connect.cc (+2/-2)
Percona-Server/storage/perfschema/table_setup_actors.cc (+11/-34)
Percona-Server/storage/perfschema/table_setup_objects.cc (+8/-35)
Percona-Server/storage/perfschema/table_socket_instances.cc (+2/-2)
Percona-Server/storage/perfschema/table_socket_instances.h (+1/-1)
Percona-Server/storage/perfschema/table_sync_instances.cc (+4/-4)
Percona-Server/storage/perfschema/table_sync_instances.h (+2/-2)
Percona-Server/storage/perfschema/table_threads.cc (+13/-13)
Percona-Server/storage/perfschema/table_threads.h (+3/-3)
Percona-Server/storage/perfschema/unittest/CMakeLists.txt (+16/-5)
Percona-Server/strings/ctype-bin.c (+21/-7)
Percona-Server/strings/ctype-mb.c (+41/-11)
Percona-Server/strings/ctype-simple.c (+20/-7)
Percona-Server/strings/ctype-uca.c (+19/-7)
Percona-Server/strings/ctype-utf8.c (+26/-9)
Percona-Server/strings/ctype.c (+2/-0)
Percona-Server/strings/decimal.c (+28/-18)
Percona-Server/strings/xml.c (+11/-3)
Percona-Server/support-files/mysql.spec.sh (+19/-4)
Percona-Server/tests/mysql_client_test.c (+108/-6)
Percona-Server/unittest/gunit/CMakeLists.txt (+179/-171)
Percona-Server/unittest/gunit/FindGTest.cmake (+0/-219)
Percona-Server/unittest/gunit/alignment-t.cc (+2/-2)
Percona-Server/unittest/gunit/bounded_queue-t.cc (+2/-2)
Percona-Server/unittest/gunit/bounds_checked_array-t.cc (+8/-6)
Percona-Server/unittest/gunit/byteorder-t.cc (+1/-1)
Percona-Server/unittest/gunit/copy_info-t.cc (+36/-103)
Percona-Server/unittest/gunit/cost_estimate-t.cc (+1/-1)
Percona-Server/unittest/gunit/create_field-t.cc (+1/-1)
Percona-Server/unittest/gunit/dbug-t.cc (+1/-1)
Percona-Server/unittest/gunit/decimal-t.cc (+2/-2)
Percona-Server/unittest/gunit/dynarray-t.cc (+1/-9)
Percona-Server/unittest/gunit/field-t.cc (+8/-6)
Percona-Server/unittest/gunit/field_date-t.cc (+1/-1)
Percona-Server/unittest/gunit/field_datetime-t.cc (+1/-1)
Percona-Server/unittest/gunit/field_long-t.cc (+1/-2)
Percona-Server/unittest/gunit/field_newdecimal-t.cc (+2/-7)
Percona-Server/unittest/gunit/field_timestamp-t.cc (+1/-1)
Percona-Server/unittest/gunit/filesort_buffer-t.cc (+1/-1)
Percona-Server/unittest/gunit/filesort_compare-t.cc (+8/-8)
Percona-Server/unittest/gunit/get_diagnostics-t.cc (+1/-1)
Percona-Server/unittest/gunit/gunit_test_main.cc (+13/-0)
Percona-Server/unittest/gunit/gunit_test_main_server.cc (+2/-0)
Percona-Server/unittest/gunit/handler-t.cc (+5/-4)
Percona-Server/unittest/gunit/handler-t.h (+30/-57)
Percona-Server/unittest/gunit/item-t.cc (+15/-30)
Percona-Server/unittest/gunit/item_func_now_local-t.cc (+1/-1)
Percona-Server/unittest/gunit/join_tab_sort-t.cc (+1/-1)
Percona-Server/unittest/gunit/like_range-t.cc (+35/-30)
Percona-Server/unittest/gunit/make_sortkey-t.cc (+1/-1)
Percona-Server/unittest/gunit/mdl-t.cc (+81/-16)
Percona-Server/unittest/gunit/mdl_mytap-t.cc (+0/-762)
Percona-Server/unittest/gunit/my_bitmap-t.cc (+14/-2)
Percona-Server/unittest/gunit/my_decimal-t.cc (+26/-4)
Percona-Server/unittest/gunit/my_error-t.cc (+1/-1)
Percona-Server/unittest/gunit/my_regex-t.cc (+1/-1)
Percona-Server/unittest/gunit/mysys_base64-t.cc (+26/-20)
Percona-Server/unittest/gunit/mysys_lf-t.cc (+43/-17)
Percona-Server/unittest/gunit/mysys_my_atomic-t.cc (+34/-8)
Percona-Server/unittest/gunit/mysys_my_malloc-t.cc (+16/-15)
Percona-Server/unittest/gunit/mysys_my_rdtsc-t.cc (+74/-62)
Percona-Server/unittest/gunit/mysys_my_vsnprintf-t.cc (+12/-9)
Percona-Server/unittest/gunit/opt_range-t.cc (+1/-1)
Percona-Server/unittest/gunit/opt_trace-t.cc (+1/-1)
Percona-Server/unittest/gunit/segfault-t.cc (+33/-4)
Percona-Server/unittest/gunit/sql_list-t.cc (+3/-17)
Percona-Server/unittest/gunit/sql_plist-t.cc (+3/-9)
Percona-Server/unittest/gunit/sql_table-t.cc (+49/-1)
Percona-Server/unittest/gunit/stdcxx-t.cc (+2/-2)
Percona-Server/unittest/gunit/string-tests.cc (+19/-0)
Percona-Server/unittest/gunit/table_cache-t.cc (+1/-1)
Percona-Server/unittest/gunit/tap_event_listener.cc (+2/-2)
Percona-Server/unittest/gunit/test_utils.cc (+7/-0)
Percona-Server/unittest/gunit/test_utils.h (+14/-0)
Percona-Server/unittest/gunit/thr_template.cc (+9/-51)
Percona-Server/unittest/gunit/thread_utils-t.cc (+0/-8)
Percona-Server/unittest/gunit/yassl/CMakeLists.txt (+33/-0)
Percona-Server/unittest/gunit/yassl/yassl-t.cc (+112/-0)
Percona-Server/unittest/mysys/CMakeLists.txt (+0/-32)
Percona-Server/unittest/mysys/waiting_threads-t.c (+0/-340)
Percona-Server/vio/vio.c (+7/-1)
Percona-Server/vio/viosocket.c (+9/-2)
Percona-Server/zlib/inflate.c (+13/-1)
To merge this branch: bzr merge lp:~stewart/percona-server/5.6.10
Reviewer Review Type Date Requested Status
Laurynas Biveinis (community) Approve
Review via email: mp+148094@code.launchpad.net

Description of the change

Merge MySQL 5.6.10

http://jenkins.percona.com/view/PS%205.6/job/percona-server-5.6-param/38/

Mostly an automerge with two post merge fixups.

To post a comment you must log in.
Revision history for this message
Laurynas Biveinis (laurynas-biveinis) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'Percona-Server/.bzrignore'
--- Percona-Server/.bzrignore 2012-06-06 10:10:17 +0000
+++ Percona-Server/.bzrignore 2013-02-13 06:17:00 +0000
@@ -1316,6 +1316,7 @@
1316mysql-test/*.vcproj1316mysql-test/*.vcproj
1317mysql-test/.DS_Store1317mysql-test/.DS_Store
1318mysql-test/collections/default.release1318mysql-test/collections/default.release
1319mysql-test/collections/default.release.done
1319mysql-test/funcs_1.log1320mysql-test/funcs_1.log
1320mysql-test/funcs_1.tar1321mysql-test/funcs_1.tar
1321mysql-test/gmon.out1322mysql-test/gmon.out
@@ -2979,6 +2980,8 @@
2979unittest/examples/.deps/skip-t.Po2980unittest/examples/.deps/skip-t.Po
2980unittest/examples/.deps/skip_all-t.Po2981unittest/examples/.deps/skip_all-t.Po
2981unittest/examples/.deps/todo-t.Po2982unittest/examples/.deps/todo-t.Po
2983unittest/gunit/merge_large_tests.cc
2984unittest/gunit/merge_small_tests.cc
2982unittest/mysys/*.t2985unittest/mysys/*.t
2983unittest/mysys/.deps/base64-t.Po2986unittest/mysys/.deps/base64-t.Po
2984unittest/mysys/.deps/my_atomic-t.Po2987unittest/mysys/.deps/my_atomic-t.Po
@@ -3130,6 +3133,7 @@
3130Docs/INFO_BIN3133Docs/INFO_BIN
3131Docs/INFO_SRC3134Docs/INFO_SRC
3132Testing3135Testing
3136FilesCopied
3133source_downloads3137source_downloads
3134client/mysql_plugin3138client/mysql_plugin
3135support-files/plugins.files3139support-files/plugins.files
31363140
=== modified file 'Percona-Server/BUILD/compile-dist'
--- Percona-Server/BUILD/compile-dist 2012-08-22 01:40:20 +0000
+++ Percona-Server/BUILD/compile-dist 2013-02-13 06:17:00 +0000
@@ -27,8 +27,5 @@
2727
28# By default we get the "community" feature set from28# By default we get the "community" feature set from
29# cmake/build_configurations/feature_set.cmake29# cmake/build_configurations/feature_set.cmake
30# We include ndbcluster in the configuration, so that it is picked up
31# by 'make dist' in case someone wants a pushbuild tree for cluster.
32#30#
33./configure \31./configure
34 --with-ndbcluster
3532
=== modified file 'Percona-Server/CMakeLists.txt'
--- Percona-Server/CMakeLists.txt 2012-12-04 08:24:59 +0000
+++ Percona-Server/CMakeLists.txt 2013-02-13 06:17:00 +0000
@@ -374,7 +374,6 @@
374 ADD_SUBDIRECTORY(unittest/examples)374 ADD_SUBDIRECTORY(unittest/examples)
375 ADD_SUBDIRECTORY(unittest/mytap)375 ADD_SUBDIRECTORY(unittest/mytap)
376 ADD_SUBDIRECTORY(unittest/mytap/t)376 ADD_SUBDIRECTORY(unittest/mytap/t)
377 ADD_SUBDIRECTORY(unittest/mysys)
378 ADD_SUBDIRECTORY(unittest/gunit)377 ADD_SUBDIRECTORY(unittest/gunit)
379ENDIF()378ENDIF()
380379
@@ -402,7 +401,7 @@
402 IF(EXISTS ${CMAKE_SOURCE_DIR}/internal/CMakeLists.txt)401 IF(EXISTS ${CMAKE_SOURCE_DIR}/internal/CMakeLists.txt)
403 ADD_SUBDIRECTORY(internal)402 ADD_SUBDIRECTORY(internal)
404 ENDIF()403 ENDIF()
405 ADD_SUBDIRECTORY(SPECIFIC-ULN)404 ADD_SUBDIRECTORY(packaging/rpm-uln)
406ENDIF()405ENDIF()
407406
408INCLUDE(cmake/abi_check.cmake)407INCLUDE(cmake/abi_check.cmake)
@@ -440,6 +439,7 @@
440 SET(CPACK_GENERATOR "TGZ")439 SET(CPACK_GENERATOR "TGZ")
441ENDIF() 440ENDIF()
442ADD_SUBDIRECTORY(packaging/WiX)441ADD_SUBDIRECTORY(packaging/WiX)
442ADD_SUBDIRECTORY(packaging/solaris)
443443
444# Create a single package with "make package"444# Create a single package with "make package"
445# (see http://public.kitware.com/Bug/view.php?id=11452)445# (see http://public.kitware.com/Bug/view.php?id=11452)
446446
=== modified file 'Percona-Server/VERSION'
--- Percona-Server/VERSION 2012-12-04 08:24:59 +0000
+++ Percona-Server/VERSION 2013-02-13 06:17:00 +0000
@@ -1,4 +1,4 @@
1MYSQL_VERSION_MAJOR=51MYSQL_VERSION_MAJOR=5
2MYSQL_VERSION_MINOR=62MYSQL_VERSION_MINOR=6
3MYSQL_VERSION_PATCH=83MYSQL_VERSION_PATCH=10
4MYSQL_VERSION_EXTRA=-rc4MYSQL_VERSION_EXTRA=
55
=== modified file 'Percona-Server/client/client_priv.h'
--- Percona-Server/client/client_priv.h 2013-02-05 03:24:51 +0000
+++ Percona-Server/client/client_priv.h 2013-02-13 06:17:00 +0000
@@ -49,7 +49,7 @@
49 OPT_PROMPT, OPT_IGN_LINES,OPT_TRANSACTION,OPT_MYSQL_PROTOCOL,49 OPT_PROMPT, OPT_IGN_LINES,OPT_TRANSACTION,OPT_MYSQL_PROTOCOL,
50 OPT_SHARED_MEMORY_BASE_NAME, OPT_FRM, OPT_SKIP_OPTIMIZATION,50 OPT_SHARED_MEMORY_BASE_NAME, OPT_FRM, OPT_SKIP_OPTIMIZATION,
51 OPT_COMPATIBLE, OPT_RECONNECT, OPT_DELIMITER, OPT_SECURE_AUTH,51 OPT_COMPATIBLE, OPT_RECONNECT, OPT_DELIMITER, OPT_SECURE_AUTH,
52 OPT_OPEN_FILES_LIMIT, OPT_SET_CHARSET, OPT_SERVER_ARG,52 OPT_OPEN_FILES_LIMIT, OPT_SET_CHARSET, OPT_SET_GTID_PURGED, OPT_SERVER_ARG,
53 OPT_STOP_POSITION, OPT_START_DATETIME, OPT_STOP_DATETIME,53 OPT_STOP_POSITION, OPT_START_DATETIME, OPT_STOP_DATETIME,
54 OPT_SIGINT_IGNORE, OPT_HEXBLOB, OPT_ORDER_BY_PRIMARY, OPT_COUNT,54 OPT_SIGINT_IGNORE, OPT_HEXBLOB, OPT_ORDER_BY_PRIMARY, OPT_COUNT,
55 OPT_TRIGGERS,55 OPT_TRIGGERS,
5656
=== modified file 'Percona-Server/client/mysql.cc'
--- Percona-Server/client/mysql.cc 2012-12-04 08:24:59 +0000
+++ Percona-Server/client/mysql.cc 2013-02-13 06:17:00 +0000
@@ -62,6 +62,9 @@
62/* Array of options to pass to libemysqld */62/* Array of options to pass to libemysqld */
63#define MAX_SERVER_ARGS 6463#define MAX_SERVER_ARGS 64
6464
65/* Maximum memory limit that can be claimed by alloca(). */
66#define MAX_ALLOCA_SIZE 512
67
65#include "sql_string.h"68#include "sql_string.h"
6669
67extern "C" {70extern "C" {
@@ -2554,14 +2557,17 @@
2554 {2557 {
2555 uint length=(uint) (out-line);2558 uint length=(uint) (out-line);
25562559
2557 if (!truncated && !is_delimiter_command(line, length))2560 if (!truncated && (!is_delimiter_command(line, length) ||
2561 (*in_string || *ml_comment)))
2558 {2562 {
2559 /* 2563 /*
2560 Don't add a new line in case there's a DELIMITER command to be 2564 Don't add a new line in case there's a DELIMITER command to be
2561 added to the glob buffer (e.g. on processing a line like 2565 added to the glob buffer (e.g. on processing a line like
2562 "<command>;DELIMITER <non-eof>") : similar to how a new line is 2566 "<command>;DELIMITER <non-eof>") : similar to how a new line is
2563 not added in the case when the DELIMITER is the first command 2567 not added in the case when the DELIMITER is the first command
2564 entered with an empty glob buffer. 2568 entered with an empty glob buffer. However, if the delimiter is
2569 part of a string or a comment, the new line should be added. (e.g.
2570 SELECT '\ndelimiter\n';\n)
2565 */2571 */
2566 *out++='\n';2572 *out++='\n';
2567 length++;2573 length++;
@@ -3655,8 +3661,10 @@
3655 MYSQL_ROW cur;3661 MYSQL_ROW cur;
3656 MYSQL_FIELD *field;3662 MYSQL_FIELD *field;
3657 bool *num_flag;3663 bool *num_flag;
3664 size_t sz;
36583665
3659 num_flag=(bool*) my_alloca(sizeof(bool)*mysql_num_fields(result));3666 sz= sizeof(bool) * mysql_num_fields(result);
3667 num_flag= (bool *) my_safe_alloca(sz, MAX_ALLOCA_SIZE);
3660 if (column_types_flag)3668 if (column_types_flag)
3661 {3669 {
3662 print_field_types(result);3670 print_field_types(result);
@@ -3757,7 +3765,7 @@
3757 (void) tee_fputs("\n", PAGER);3765 (void) tee_fputs("\n", PAGER);
3758 }3766 }
3759 tee_puts((char*) separator.ptr(), PAGER);3767 tee_puts((char*) separator.ptr(), PAGER);
3760 my_afree((uchar*) num_flag);3768 my_safe_afree((bool *) num_flag, sz, MAX_ALLOCA_SIZE);
3761}3769}
37623770
3763/**3771/**
@@ -4677,6 +4685,8 @@
4677sql_real_connect(char *host,char *database,char *user,char *password,4685sql_real_connect(char *host,char *database,char *user,char *password,
4678 uint silent)4686 uint silent)
4679{4687{
4688 my_bool interactive= status.batch ? FALSE : TRUE;
4689
4680 if (connected)4690 if (connected)
4681 {4691 {
4682 connected= 0;4692 connected= 0;
@@ -4767,6 +4777,7 @@
4767 mysql_options(&mysql, MYSQL_OPT_CONNECT_ATTR_RESET, 0);4777 mysql_options(&mysql, MYSQL_OPT_CONNECT_ATTR_RESET, 0);
4768 mysql_options4(&mysql, MYSQL_OPT_CONNECT_ATTR_ADD, 4778 mysql_options4(&mysql, MYSQL_OPT_CONNECT_ATTR_ADD,
4769 "program_name", "mysql");4779 "program_name", "mysql");
4780 mysql_options(&mysql, MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, &interactive);
47704781
4771 if (!mysql_real_connect(&mysql, host, user, password,4782 if (!mysql_real_connect(&mysql, host, user, password,
4772 database, opt_mysql_port, opt_mysql_unix_port,4783 database, opt_mysql_port, opt_mysql_unix_port,
47734784
=== modified file 'Percona-Server/client/mysql_config_editor.cc'
--- Percona-Server/client/mysql_config_editor.cc 2012-08-30 18:29:28 +0000
+++ Percona-Server/client/mysql_config_editor.cc 2013-02-13 06:17:00 +0000
@@ -35,6 +35,7 @@
3535
36#define MYSQL_CONFIG_EDITOR_VERSION "1.0"36#define MYSQL_CONFIG_EDITOR_VERSION "1.0"
37#define MY_LINE_MAX 409637#define MY_LINE_MAX 4096
38#define MAX_COMMAND_LIMIT 100
38/*39/*
39 Header length for the login file.40 Header length for the login file.
40 4-byte (unused) + LOGIN_KEY_LEN41 4-byte (unused) + LOGIN_KEY_LEN
@@ -55,37 +56,41 @@
55static char my_key[LOGIN_KEY_LEN];56static char my_key[LOGIN_KEY_LEN];
5657
57static my_bool opt_verbose, opt_all, tty_password= 0, opt_warn,58static my_bool opt_verbose, opt_all, tty_password= 0, opt_warn,
58 login_path_specified= TRUE;59 opt_remove_host, opt_remove_pass, opt_remove_user,
60 login_path_specified= FALSE;
5961
60int execute_commands(int argc, char **argv);62static int execute_commands(int command);
63static int set_command(void);
64static int remove_command(void);
65static int print_command(void);
61static void print_login_path(DYNAMIC_STRING *file_buf, const char *path_name);66static void print_login_path(DYNAMIC_STRING *file_buf, const char *path_name);
62static void remove_login_path(DYNAMIC_STRING *file_buf, const char *path_name);67static void remove_login_path(DYNAMIC_STRING *file_buf, const char *path_name);
63static char* locate_login_path(DYNAMIC_STRING *file_buf, const char *path_name);68static char* locate_login_path(DYNAMIC_STRING *file_buf, const char *path_name);
64static my_bool check_and_create_login_file(void);69static my_bool check_and_create_login_file(void);
65static void mask_password_and_print(char *buf);70static void mask_password_and_print(char *buf);
66static void reset_login_file(bool gen_key);71static int reset_login_file(bool gen_key);
6772
68static int encrypt_buffer(const char *plain, int plain_len, char cipher[]);73static int encrypt_buffer(const char *plain, int plain_len, char cipher[]);
69static int decrypt_buffer(const char *cipher, int cipher_len, char plain[]);74static int decrypt_buffer(const char *cipher, int cipher_len, char plain[]);
70static int encrypt_and_write_file(DYNAMIC_STRING *file_buf);75static int encrypt_and_write_file(DYNAMIC_STRING *file_buf);
71static int read_and_decrypt_file(DYNAMIC_STRING *file_buf);76static int read_and_decrypt_file(DYNAMIC_STRING *file_buf);
77static int do_handle_options(int argc, char *argv[]);
78static void remove_options(DYNAMIC_STRING *file_buf, const char *path_name);
79static void remove_option(DYNAMIC_STRING *file_buf, const char *path_name,
80 const char* option_name);
72void generate_login_key(void);81void generate_login_key(void);
73int read_login_key(void);82static int read_login_key(void);
74int add_header(void);83static int add_header(void);
84static void my_perror(const char *msg);
7585
76static void verbose_msg(const char *fmt, ...);86static void verbose_msg(const char *fmt, ...);
77static void print_version(void);87static void print_version(void);
78static void usage(void);88static void usage_program(void);
89static void usage_command(int command);
79extern "C" my_bool get_one_option(int optid, const struct my_option *opt,90extern "C" my_bool get_one_option(int optid, const struct my_option *opt,
80 char *argument);91 char *argument);
8192
82
83/*
84 The order of commands must be the same as command_names,
85 except MY_CONFIG_ERROR.
86*/
87enum commands {93enum commands {
88 MY_CONFIG_ERROR,
89 MY_CONFIG_SET,94 MY_CONFIG_SET,
90 MY_CONFIG_REMOVE,95 MY_CONFIG_REMOVE,
91 MY_CONFIG_PRINT,96 MY_CONFIG_PRINT,
@@ -93,249 +98,563 @@
93 MY_CONFIG_HELP98 MY_CONFIG_HELP
94};99};
95100
96static const char *command_names[]= {101struct my_command_data {
97 "set",102 const int id;
98 "remove",103 const char *name;
99 "print",104 const char *description;
100 "reset",105 my_option *options;
101 "help",106 my_bool (*get_one_option_func)(int optid,
102 NullS107 const struct my_option *opt,
108 char *argument);
103};109};
104110
105static TYPELIB command_typelib=
106{ array_elements(command_names)-1, "commands", command_names, NULL};
107111
108static struct my_option my_long_options[] =112/* mysql_config_editor utility options. */
113static struct my_option my_program_long_options[]=
109{114{
110 {"all", OPT_CONFIG_ALL, "Used with print command to print all login paths.",
111 &opt_all, &opt_all, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
112#ifndef DBUG_OFF115#ifndef DBUG_OFF
113 {"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",116 {"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
114 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},117 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
115#endif118#endif
116 {"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG,119 {"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG,
117 NO_ARG, 0, 0, 0, 0, 0, 0},120 NO_ARG, 0, 0, 0, 0, 0, 0},
121 {"verbose", 'v', "Write more information.", &opt_verbose,
122 &opt_verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
123 {"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG,
124 NO_ARG, 0, 0, 0, 0, 0, 0},
125 {0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
126};
127
128/* Command-specific options. */
129
130/* SET command options. */
131static struct my_option my_set_command_options[]=
132{
133 {"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG,
134 NO_ARG, 0, 0, 0, 0, 0, 0},
118 {"host", 'h', "Host name to be entered into the login file.", &opt_host,135 {"host", 'h', "Host name to be entered into the login file.", &opt_host,
119 &opt_host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},136 &opt_host, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
120 {"login-path", 'G', "Name of the login path to use in the login file.",137 {"login-path", 'G', "Name of the login path to use in the login file. "
121 &opt_login_path, &opt_login_path, 0, GET_STR, REQUIRED_ARG, 0, 0, 0,138 "(Default : client)", &opt_login_path, &opt_login_path, 0, GET_STR,
122 0, 0, 0},139 REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
123 {"password", 'p', "Prompt for password to be entered into the login file.",140 {"password", 'p', "Prompt for password to be entered into the login file.",
124 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},141 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
125 {"user", 'u', "User name to be entered into the login file.", &opt_user,142 {"user", 'u', "User name to be entered into the login file.", &opt_user,
126 &opt_user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},143 &opt_user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
127 {"verbose", 'v', "Write more information.", &opt_verbose,
128 &opt_verbose, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
129 {"version", 'V', "Output version information and exit.", 0, 0, 0, GET_NO_ARG,
130 NO_ARG, 0, 0, 0, 0, 0, 0},
131 {"warn", 'w', "Warn and ask for confirmation if set command attempts to "144 {"warn", 'w', "Warn and ask for confirmation if set command attempts to "
132 "overwrite an existing login path (enabled by default).",145 "overwrite an existing login path (enabled by default).",
133 &opt_warn, &opt_warn, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},146 &opt_warn, &opt_warn, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
134 { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}147 {0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
135};148};
136149
150/* REMOVE command options. */
151static struct my_option my_remove_command_options[]=
152{
153 {"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG,
154 NO_ARG, 0, 0, 0, 0, 0, 0},
155 {"host", 'h', "Remove host name from the login path.",
156 &opt_remove_host, &opt_remove_host, 0, GET_BOOL, NO_ARG, 0, 0, 0,
157 0, 0, 0},
158 {"login-path", 'G', "Name of the login path from which options to "
159 "be removed (entire path would be removed if none of user, password, "
160 "or host options are specified). (Default : client)", &opt_login_path,
161 &opt_login_path, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
162 {"password", 'p', "Remove password from the login path.",
163 &opt_remove_pass, &opt_remove_pass, 0, GET_BOOL, NO_ARG, 0, 0, 0,
164 0, 0, 0},
165 {"user", 'u', "Remove user name from the login path.", &opt_remove_user,
166 &opt_remove_user, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
167 {"warn", 'w', "Warn and ask for confirmation if remove command attempts "
168 "to remove the default login path (client) if no login path is specified "
169 "(enabled by default).", &opt_warn, &opt_warn, 0, GET_BOOL, NO_ARG, 1,
170 0, 0, 0, 0, 0},
171 {0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
172};
173
174/* PRINT command options. */
175static struct my_option my_print_command_options[]=
176{
177 {"all", OPT_CONFIG_ALL, "Used with print command to print all login paths.",
178 &opt_all, &opt_all, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
179 {"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG,
180 NO_ARG, 0, 0, 0, 0, 0, 0},
181 {"login-path", 'G', "Name of the login path to use in the login file. "
182 "(Default : client)", &opt_login_path, &opt_login_path, 0, GET_STR,
183 REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
184 {0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
185};
186
187/* RESET command options. */
188static struct my_option my_reset_command_options[]=
189{
190 {"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG,
191 NO_ARG, 0, 0, 0, 0, 0, 0},
192 {0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
193};
194
195/* HELP command options. */
196static struct my_option my_help_command_options[]=
197{
198 {0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
199};
137200
138my_bool201my_bool
139get_one_option(int optid, const struct my_option *opt __attribute__((unused)),202my_program_get_one_option(int optid,
140 char *argument)203 const struct my_option *opt __attribute__((unused)),
204 char *argument)
141{205{
142 switch(optid) {206 switch(optid) {
143 case '#':207 case '#':
144 DBUG_PUSH(argument ? argument : "d:t:o,/tmp/mysql_config_editor.trace");208 DBUG_PUSH(argument ? argument : "d:t:o,/tmp/mysql_config_editor.trace");
145 break;209 break;
210 case 'V':
211 print_version();
212 exit(0);
213 break;
214 case '?':
215 usage_program();
216 exit(0);
217 break;
218 }
219 return 0;
220}
221
222my_bool
223my_set_command_get_one_option(int optid,
224 const struct my_option *opt __attribute__((unused)),
225 char *argument)
226{
227 switch(optid) {
146 case 'p':228 case 'p':
147 tty_password= 1;229 tty_password= 1;
148 break;230 break;
149 case 'V':231 case 'G':
150 print_version();232 login_path_specified= TRUE;
151 exit(0);233 break;
152 break;234 case '?':
153 case '?':235 usage_command(MY_CONFIG_SET);
154 usage();236 exit(0);
155 exit(0);237 break;
156 break;238 }
157 }239 return 0;
158 return 0;240}
159}241
242my_bool
243my_remove_command_get_one_option(int optid,
244 const struct my_option *opt __attribute__((unused)),
245 char *argument)
246{
247 switch(optid) {
248 case 'G':
249 login_path_specified= TRUE;
250 break;
251 case '?':
252 usage_command(MY_CONFIG_REMOVE);
253 exit(0);
254 break;
255 }
256 return 0;
257}
258
259my_bool
260my_print_command_get_one_option(int optid,
261 const struct my_option *opt __attribute__((unused)),
262 char *argument)
263{
264 switch(optid) {
265 case 'G':
266 login_path_specified= TRUE;
267 break;
268 case '?':
269 usage_command(MY_CONFIG_PRINT);
270 exit(0);
271 break;
272 }
273 return 0;
274}
275
276my_bool
277my_reset_command_get_one_option(int optid,
278 const struct my_option *opt __attribute__((unused)),
279 char *argument)
280{
281 switch(optid) {
282 case '?':
283 usage_command(MY_CONFIG_RESET);
284 exit(0);
285 break;
286 }
287 return 0;
288}
289
290static struct my_command_data command_data[]=
291{
292 {
293 MY_CONFIG_SET,
294 "set",
295 "Write a login path to the login file.",
296 my_set_command_options,
297 my_set_command_get_one_option
298 },
299 {
300 MY_CONFIG_REMOVE,
301 "remove",
302 "Remove a login path from the login file.",
303 my_remove_command_options,
304 my_remove_command_get_one_option
305 },
306 {
307 MY_CONFIG_PRINT,
308 "print",
309 "Print the contents of login file in unencrypted form.",
310 my_print_command_options,
311 my_print_command_get_one_option
312 },
313 {
314 MY_CONFIG_RESET,
315 "reset",
316 "Empty the contents of the login file. The file is created\n"
317 "if it does not exist.",
318 my_reset_command_options,
319 my_reset_command_get_one_option
320 },
321 {
322 MY_CONFIG_HELP,
323 "help",
324 "Display a help message and exit.",
325 my_help_command_options,
326 NULL
327 },
328 {
329 0, NULL, NULL, NULL, NULL
330 }
331};
160332
161333
162int main(int argc, char *argv[])334int main(int argc, char *argv[])
163{335{
336 MY_INIT(argv[0]);
164 DBUG_ENTER("main");337 DBUG_ENTER("main");
165 int error;338 int command, rc= 0;
166339
167 MY_INIT(argv[0]);340 command= do_handle_options(argc, argv);
168341
169 if ((error= handle_options(&argc, &argv, my_long_options, get_one_option)))342 if (command > -1)
343 rc= execute_commands(command);
344
345 if (rc == -1)
170 {346 {
171 exit(error);347 my_perror("operation failed.");
348 DBUG_RETURN(1);
172 }349 }
173350 DBUG_RETURN(0);
174 if (argc == 0)351}
352
353
354/**
355 Handle all the command line arguments.
356
357 program_name [program options] [command [command options]]
358
359*/
360static int do_handle_options(int argc, char *argv[])
361{
362 DBUG_ENTER("do_handle_options");
363
364 const char *command_list[MAX_COMMAND_LIMIT + 1];
365 char **saved_argv= argv;
366 char **argv_cmd;
367 char *ptr; /* for free. */
368 int argc_cmd;
369 int rc, i, command= -1;
370
371 if (argc < 2)
175 {372 {
176 usage();373 usage_program();
177 exit(1);374 exit(1);
178 }375 }
179376
180 if (tty_password)377 if (!(ptr= (char *) my_malloc((argc + 2) * sizeof(char *),
181 opt_password= get_tty_password(NullS);378 MYF(MY_WME))))
182379 goto error;
183 /* if not, set it to 'client' (default) */380
381 /* Handle program options. */
382
383 /* Prepare a list of supported commands to be used by my_handle_options(). */
384 for (i= 0; (command_data[i].name != NULL) && (i < MAX_COMMAND_LIMIT); i++)
385 command_list[i]= (char *) command_data[i].name;
386 command_list[i]= NULL;
387
388 if ((rc= my_handle_options(&argc, &argv, my_program_long_options,
389 my_program_get_one_option, command_list)))
390 exit(rc);
391
392 if (argc == 0) /* No command specified. */
393 goto done;
394
395 for (i= 0; command_data[i].name != NULL; i++)
396 {
397 if (!strcmp(command_data[i].name, argv[0]))
398 {
399 command= i;
400 break;
401 }
402 }
403
404 if (command == -1)
405 goto error;
406
407 /* Handle command options. */
408
409 argv_cmd= (char **)ptr;
410 argc_cmd= argc + 1;
411
412 /* Prepare a command line (argv) using the rest of the options. */
413 argv_cmd[0]= saved_argv[0];
414 memcpy((uchar *) (argv_cmd + 1), (uchar *) (argv),
415 (argc * sizeof(char *)));
416 argv_cmd[argc_cmd]= 0;
417
418 if ((rc= handle_options(&argc_cmd, &argv_cmd,
419 command_data[command].options,
420 command_data[command].get_one_option_func)))
421 exit(rc);
422
423 /* Do not allow multiple commands. */
424 if ( argc_cmd > 1)
425 goto error;
426
427 /* If NULL, set it to 'client' (default) */
184 if (!opt_login_path)428 if (!opt_login_path)
185 {
186 login_path_specified= FALSE;
187 opt_login_path= my_strdup("client", MYF(MY_WME));429 opt_login_path= my_strdup("client", MYF(MY_WME));
188 }430
189431done:
190 error= execute_commands(argc, argv);432 my_free(ptr);
191 exit(error ? 1 : 0);433 DBUG_RETURN(command);
192 DBUG_RETURN(0);434
435error:
436 my_free(ptr);
437 usage_program();
438 exit(1);
193}439}
194440
195441
196int execute_commands(int argc, char **argv)442static int execute_commands(int command)
197{443{
198 DBUG_ENTER("execute_commands");444 DBUG_ENTER("execute_commands");
199 DYNAMIC_STRING file_buf, path_buf;445 int rc= 0;
200 int error= 0;446
201447 if ((rc= check_and_create_login_file()))
202 init_dynamic_string(&path_buf, "", MY_LINE_MAX, MY_LINE_MAX);448 goto done;
203 init_dynamic_string(&file_buf, "", file_size, 3 * MY_LINE_MAX);449
204450 switch(command_data[command].id) {
205 for (; argc > 0; argv++, argc--)451 case MY_CONFIG_SET :
206 {452 verbose_msg("Executing set command.\n");
207 if ((error= check_and_create_login_file()))453 rc= set_command();
208 goto done;454 break;
209455
210 switch(find_type(argv[0], &command_typelib, FIND_TYPE_BASIC)) {456 case MY_CONFIG_REMOVE :
211 case MY_CONFIG_SET :457 verbose_msg("Executing remove command.\n");
212 verbose_msg("Executing set command.\n");458 rc= remove_command();
213 if (file_size)459 break;
214 {460
215 if (read_and_decrypt_file(&file_buf) == -1)461 case MY_CONFIG_PRINT :
216 goto done;462 verbose_msg("Executing print command.\n");
217 }463 rc= print_command();
218464 break;
219 dynstr_append(&path_buf, "["); /* --login=path */465
220 if (opt_login_path)466 case MY_CONFIG_RESET :
221 dynstr_append(&path_buf, opt_login_path);467 verbose_msg("Resetting login file.\n");
222 else468 rc= reset_login_file(1);
223 dynstr_append(&path_buf, "client");469 break;
224 dynstr_append(&path_buf, "]");470
225471 case MY_CONFIG_HELP :
226 if (opt_user) /* --user */472 verbose_msg("Printing usage info.\n");
227 {473 usage_program();
228 dynstr_append(&path_buf, "\nuser = ");474 break;
229 dynstr_append(&path_buf, opt_user);475
230 }476 default :
231477 my_perror("unknown command.");
232 if (opt_password) /* --password */478 exit(1);
233 {479 }
234 dynstr_append(&path_buf, "\npassword = ");480
235 dynstr_append(&path_buf, opt_password);481 my_close(g_fd, MYF(MY_WME));
236 }482
237483done:
238 if (opt_host) /* --host */484 DBUG_RETURN(rc);
239 {485}
240 dynstr_append(&path_buf, "\nhost = ");486
241 dynstr_append(&path_buf, opt_host);487
242 }488/**
243489 Execute 'set' command.
244 dynstr_append(&path_buf, "\n");490
245491 @param void
246 /* Warn if login path already exists */492
247 if (opt_warn && ((locate_login_path (&file_buf, opt_login_path))493 @return -1 Error
248 != NULL))494 0 Success
249 {495*/
250 int choice;496
251 printf ("WARNING : \'%s\' path already exists and will be "497static int set_command(void)
252 "overwritten. \n Continue? (Press y|Y for Yes, any "498{
253 "other key for No) : ",499 DBUG_ENTER("set_command");
254 opt_login_path);500
255 choice= getchar();501 DYNAMIC_STRING file_buf, path_buf;
256502
257 if (choice != (int) 'y' && choice != (int) 'Y')503 init_dynamic_string(&path_buf, "", MY_LINE_MAX, MY_LINE_MAX);
258 break; /* skip */504 init_dynamic_string(&file_buf, "", file_size, 3 * MY_LINE_MAX);
259 }505
260506 if (tty_password)
261 /* Remove the login path. */507 opt_password= get_tty_password(NullS);
262 remove_login_path(&file_buf, opt_login_path);508
263509 if (file_size)
264 /* Append the new login path to the file buffer. */510 {
265 dynstr_append(&file_buf, path_buf.str);511 if (read_and_decrypt_file(&file_buf) == -1)
266512 goto error;
267 encrypt_and_write_file(&file_buf);513 }
268 break;514
269515 dynstr_append(&path_buf, "["); /* --login=path */
270 case MY_CONFIG_REMOVE :516 if (opt_login_path)
271 verbose_msg("Executing remove command.\n");517 dynstr_append(&path_buf, opt_login_path);
272 if (file_size)518 else
273 {519 dynstr_append(&path_buf, "client");
274 if (read_and_decrypt_file(&file_buf) == -1)520 dynstr_append(&path_buf, "]");
275 goto done;521
276 }522 if (opt_user) /* --user */
277 else523 {
278 break; /* Nothing to remove, skip.. */524 dynstr_append(&path_buf, "\nuser = ");
279525 dynstr_append(&path_buf, opt_user);
280 /* Warn if no login path is specified. */526 }
281 if (opt_warn &&527
282 ((locate_login_path (&file_buf, opt_login_path)) != NULL) &&528 if (opt_password) /* --password */
283 (login_path_specified == FALSE)529 {
284 )530 dynstr_append(&path_buf, "\npassword = ");
285 {531 dynstr_append(&path_buf, opt_password);
286 int choice;532 }
287 printf ("WARNING : No login path specified, so default login path "533
288 "will be removed. \n Continue? (Press y|Y for Yes, any "534 if (opt_host) /* --host */
289 "other key for No) : ");535 {
290 choice= getchar();536 dynstr_append(&path_buf, "\nhost = ");
291537 dynstr_append(&path_buf, opt_host);
292 if (choice != (int) 'y' && choice != (int) 'Y')538 }
293 break; /* skip */539
294 }540 dynstr_append(&path_buf, "\n");
295541
296 remove_login_path(&file_buf, opt_login_path);542 /* Warn if login path already exists */
297543 if (opt_warn && ((locate_login_path (&file_buf, opt_login_path))
298 encrypt_and_write_file(&file_buf);544 != NULL))
299 break;545 {
300546 int choice;
301 case MY_CONFIG_PRINT :547 printf ("WARNING : \'%s\' path already exists and will be "
302 verbose_msg("Executing print command.\n");548 "overwritten. \n Continue? (Press y|Y for Yes, any "
303 if (file_size)549 "other key for No) : ",
304 {550 opt_login_path);
305 if (read_and_decrypt_file(&file_buf) == -1)551 choice= getchar();
306 goto done;552
307 }553 if (choice != (int) 'y' && choice != (int) 'Y')
308 else554 goto done; /* skip */
309 break; /* Nothing to print, skip..*/555 }
310556
311 print_login_path(&file_buf, opt_login_path);557 /* Remove the login path. */
312 break;558 remove_login_path(&file_buf, opt_login_path);
313559
314 case MY_CONFIG_RESET :560 /* Append the new login path to the file buffer. */
315 verbose_msg("Resetting login file.\n");561 dynstr_append(&file_buf, path_buf.str);
316 reset_login_file(1);562
317 break;563 if (encrypt_and_write_file(&file_buf) == -1)
318564 goto error;
319 case MY_CONFIG_HELP :565
320 verbose_msg("Printing usage info.\n");566done:
321 usage();567 dynstr_free(&file_buf);
322 break;568 dynstr_free(&path_buf);
323569 DBUG_RETURN(0);
324 default :570
325 printf("Error! Unknown command.\n");571error:
326 exit(1);572 dynstr_free(&file_buf);
327 }573 dynstr_free(&path_buf);
328 dynstr_trunc(&file_buf, 0);574 DBUG_RETURN(-1);
329 dynstr_trunc(&path_buf, 0);575}
330576
331 my_close(g_fd, MYF(MY_WME));577static int remove_command(void) {
332 }578 DBUG_ENTER("remove_command");
333579
334done:580 DYNAMIC_STRING file_buf, path_buf;
335 dynstr_free(&file_buf);581
336 dynstr_free(&path_buf);582 init_dynamic_string(&path_buf, "", MY_LINE_MAX, MY_LINE_MAX);
337583 init_dynamic_string(&file_buf, "", file_size, 3 * MY_LINE_MAX);
338 DBUG_RETURN(error);584
585 if (file_size)
586 {
587 if (read_and_decrypt_file(&file_buf) == -1)
588 goto error;
589 }
590 else
591 goto done; /* Nothing to remove, skip.. */
592
593 /* Warn if no login path is specified. */
594 if (opt_warn &&
595 ((locate_login_path (&file_buf, opt_login_path)) != NULL) &&
596 (login_path_specified == FALSE)
597 )
598 {
599 int choice;
600 printf ("WARNING : No login path specified, so options from the default "
601 "login path will be removed.\nContinue? (Press y|Y for Yes, "
602 "any other key for No) : ");
603 choice= getchar();
604
605 if (choice != (int) 'y' && choice != (int) 'Y')
606 goto done; /* skip */
607 }
608
609 remove_options(&file_buf, opt_login_path);
610
611 if (encrypt_and_write_file(&file_buf) == -1)
612 goto error;
613
614done:
615 dynstr_free(&file_buf);
616 dynstr_free(&path_buf);
617 DBUG_RETURN(0);
618
619error:
620 dynstr_free(&file_buf);
621 dynstr_free(&path_buf);
622 DBUG_RETURN(-1);
623}
624
625/**
626 Execute 'print' command.
627
628 @param void
629
630 @return -1 Error
631 0 Success
632*/
633
634static int print_command(void)
635{
636 DBUG_ENTER("print_command");
637 DYNAMIC_STRING file_buf;
638
639 init_dynamic_string(&file_buf, "", file_size, 3 * MY_LINE_MAX);
640
641 if (file_size)
642 {
643 if (read_and_decrypt_file(&file_buf) == -1)
644 goto error;
645 }
646 else
647 goto done; /* Nothing to print, skip..*/
648
649 print_login_path(&file_buf, opt_login_path);
650
651done:
652 dynstr_free(&file_buf);
653 DBUG_RETURN(0);
654
655error:
656 dynstr_free(&file_buf);
657 DBUG_RETURN(-1);
339}658}
340659
341660
@@ -345,8 +664,8 @@
345664
346 @param void665 @param void
347666
348 @return 1 error667 @return -1 Error
349 0 success668 0 Success
350*/669*/
351670
352static my_bool check_and_create_login_file(void)671static my_bool check_and_create_login_file(void)
@@ -370,7 +689,7 @@
370 /* Get the login file name. */689 /* Get the login file name. */
371 if (! my_default_get_login_file(my_login_file, sizeof(my_login_file)))690 if (! my_default_get_login_file(my_login_file, sizeof(my_login_file)))
372 {691 {
373 verbose_msg("Error! Failed to set login file name.\n");692 my_perror("failed to set login file name");
374 goto error;693 goto error;
375 }694 }
376695
@@ -402,7 +721,10 @@
402 /* Create the login directory. */721 /* Create the login directory. */
403 verbose_msg("%s directory doesn't exist, creating it.\n", login_dir);722 verbose_msg("%s directory doesn't exist, creating it.\n", login_dir);
404 if (my_mkdir(login_dir, 0, MYF(0)))723 if (my_mkdir(login_dir, 0, MYF(0)))
724 {
725 my_perror("failed to create the directory");
405 goto error;726 goto error;
727 }
406 }728 }
407 }729 }
408#endif730#endif
@@ -423,17 +745,16 @@
423 verbose_msg("File has the required permission.\nOpening the file.\n");745 verbose_msg("File has the required permission.\nOpening the file.\n");
424 if ((g_fd= my_open(my_login_file, access_flag, MYF(MY_WME))) == -1)746 if ((g_fd= my_open(my_login_file, access_flag, MYF(MY_WME))) == -1)
425 {747 {
426 verbose_msg("Error! Couldn't open the file.\n");748 my_perror("couldn't open the file");
427 goto error;749 goto error;
428 }750 }
429 }751 }
430 else752 else
431 {753 {
432 verbose_msg("File does not have the required permission.\n");754 verbose_msg("File does not have the required permission.\n");
433 if (opt_warn)755 printf ("WARNING : Login file does not have the required"
434 printf ("WARNING : Login file does not have the required"756 " file permissions.\nPlease set the mode to 600 &"
435 " file permissions.\nPlease set the mode to 600 &"757 " run the command again.\n");
436 " run the command again.\n");
437 goto error;758 goto error;
438 }759 }
439 }760 }
@@ -443,7 +764,7 @@
443 if ((g_fd= my_create(my_login_file, create_mode, access_flag,764 if ((g_fd= my_create(my_login_file, create_mode, access_flag,
444 MYF(MY_WME)) == -1))765 MYF(MY_WME)) == -1))
445 {766 {
446 verbose_msg("Error! Couldn't create the login file.\n");767 my_perror("couldn't create the login file");
447 goto error;768 goto error;
448 }769 }
449 else770 else
@@ -453,7 +774,7 @@
453774
454 if((g_fd= my_open(my_login_file, access_flag, MYF(MY_WME))) == -1)775 if((g_fd= my_open(my_login_file, access_flag, MYF(MY_WME))) == -1)
455 {776 {
456 verbose_msg("Error! couldn't open the file.\n");777 my_perror("couldn't open the file");
457 goto error;778 goto error;
458 }779 }
459 file_size= 0;780 file_size= 0;
@@ -475,7 +796,7 @@
475 DBUG_RETURN(0);796 DBUG_RETURN(0);
476797
477error:798error:
478 DBUG_RETURN(1);799 DBUG_RETURN(-1);
479}800}
480801
481802
@@ -575,6 +896,92 @@
575896
576897
577/**898/**
899 Remove multiple options from a login path.
900*/
901static void remove_options(DYNAMIC_STRING *file_buf, const char *path_name)
902{
903 /* If nope of the options are specified remove the entire path. */
904 if (!opt_remove_host && !opt_remove_pass && !opt_remove_user)
905 {
906 remove_login_path(file_buf, path_name);
907 return;
908 }
909
910 if (opt_remove_user)
911 remove_option(file_buf, path_name, "user");
912
913 if (opt_remove_pass)
914 remove_option(file_buf, path_name, "password");
915
916 if (opt_remove_host)
917 remove_option(file_buf, path_name, "host");
918}
919
920
921/**
922 Remove an option from a login path.
923*/
924static void remove_option(DYNAMIC_STRING *file_buf, const char *path_name,
925 const char* option_name)
926{
927 DBUG_ENTER("remove_option");
928
929 char *start= NULL, *end= NULL;
930 char *search_str;
931 int search_len, shift_len;
932 bool option_found= FALSE;
933
934 search_str= (char *) my_malloc((uint) strlen(option_name) + 2, MYF(MY_WME));
935 sprintf(search_str, "\n%s", option_name);
936
937 if ((start= locate_login_path(file_buf, path_name)) == NULL)
938 /* login path was not found, skip.. */
939 goto done;
940
941 end= strstr(start, "\n["); /* Next path. */
942
943 if (end)
944 search_len= end - start;
945 else
946 search_len= file_buf->length - (start - file_buf->str);
947
948 while(search_len > 1)
949 {
950 if (!strncmp(start, search_str, strlen(search_str)))
951 {
952 /* Option found. */
953 end= start;
954 while(*(++ end) != '\n')
955 {}
956 option_found= TRUE;
957 break;
958 }
959 else
960 {
961 /* Move to next line. */
962 while( (-- search_len > 1) && (*(++ start) != '\n'))
963 {}
964 }
965 }
966
967 if (option_found)
968 {
969 shift_len= file_buf->length - (end - file_buf->str);
970
971 file_buf->length -= (end - start);
972
973 while(shift_len --)
974 *(start ++)= *(end ++);
975 *start= '\0';
976 }
977
978done:
979 my_free(search_str);
980 DBUG_VOID_RETURN;
981}
982
983
984/**
578 Remove the specified login path from the login file.985 Remove the specified login path from the login file.
579986
580 @param file_buf [in] Buffer storing the unscrambled login987 @param file_buf [in] Buffer storing the unscrambled login
@@ -627,27 +1034,34 @@
627 @param gen_key [in] Flag to control the generation of1034 @param gen_key [in] Flag to control the generation of
628 a new key.1035 a new key.
6291036
630 @return void1037 @return -1 Error
1038 0 Success
631*/1039*/
6321040
633static void reset_login_file(bool gen_key)1041static int reset_login_file(bool gen_key)
634{1042{
635 DBUG_ENTER("reset_login_file");1043 DBUG_ENTER("reset_login_file");
6361044
637 if (my_chsize(g_fd, 0, 0, MYF(MY_WME)))1045 if (my_chsize(g_fd, 0, 0, MYF(MY_WME)))
1046 {
638 verbose_msg("Error while truncating the file.\n");1047 verbose_msg("Error while truncating the file.\n");
1048 goto error;
1049 }
6391050
640 /* Seek to the beginning of the file. */1051 /* Seek to the beginning of the file. */
641 my_seek(g_fd, 0L, SEEK_SET, MYF(MY_WME));1052 if (my_seek(g_fd, 0L, SEEK_SET, MYF(MY_WME) == MY_FILEPOS_ERROR))
1053 goto error; /* Error. */
6421054
643 if (gen_key)1055 if (gen_key)
644 generate_login_key(); /* Generate a new key. */1056 generate_login_key(); /* Generate a new key. */
6451057
646 add_header();1058 if (add_header() == -1)
6471059 goto error;
648 file_size= 0;1060
6491061 DBUG_RETURN(0);
650 DBUG_VOID_RETURN;1062
1063error:
1064 DBUG_RETURN(0);
651}1065}
6521066
6531067
@@ -698,8 +1112,8 @@
698 @param file_buf [in] Buffer storing the unscrambled login1112 @param file_buf [in] Buffer storing the unscrambled login
699 file contents.1113 file contents.
7001114
701 @return -1, if error encountered;1115 @return -1 Error
702 bytes written to the file, otherwise.1116 0 Success
7031117
704 @note The contents of the file buffer are encrypted1118 @note The contents of the file buffer are encrypted
705 on a line-by-line basis with each line having1119 on a line-by-line basis with each line having
@@ -717,12 +1131,13 @@
717 uint bytes_read=0, len= 0;1131 uint bytes_read=0, len= 0;
718 int enc_len= 0; // Can be negative.1132 int enc_len= 0; // Can be negative.
7191133
720 reset_login_file(0);1134 if (reset_login_file(0) == -1)
1135 goto error;
7211136
722 /* Move past key first. */1137 /* Move past key first. */
723 if (my_seek(g_fd, MY_LOGIN_HEADER_LEN, SEEK_SET, MYF(MY_WME))1138 if (my_seek(g_fd, MY_LOGIN_HEADER_LEN, SEEK_SET, MYF(MY_WME))
724 != (MY_LOGIN_HEADER_LEN))1139 != (MY_LOGIN_HEADER_LEN))
725 DBUG_RETURN(-1); /* Error while seeking. */1140 goto error; /* Error while seeking. */
7261141
7271142
728 tmp= &file_buf->str[bytes_read];1143 tmp= &file_buf->str[bytes_read];
@@ -745,10 +1160,7 @@
7451160
746 if ((enc_len= encrypt_buffer(&file_buf->str[bytes_read],1161 if ((enc_len= encrypt_buffer(&file_buf->str[bytes_read],
747 ++ len, cipher + MAX_CIPHER_STORE_LEN)) < 0)1162 ++ len, cipher + MAX_CIPHER_STORE_LEN)) < 0)
748 {
749 verbose_msg("Error! failed to encrypt the login file buffer.\n");
750 goto error;1163 goto error;
751 }
7521164
753 bytes_read += len;1165 bytes_read += len;
7541166
@@ -760,10 +1172,7 @@
7601172
761 if ((my_write(g_fd, (const uchar *)cipher, enc_len + MAX_CIPHER_STORE_LEN,1173 if ((my_write(g_fd, (const uchar *)cipher, enc_len + MAX_CIPHER_STORE_LEN,
762 MYF(MY_WME))) != (enc_len + MAX_CIPHER_STORE_LEN))1174 MYF(MY_WME))) != (enc_len + MAX_CIPHER_STORE_LEN))
763 {
764 verbose_msg("Error! couldn't write to the file.\n");
765 goto error;1175 goto error;
766 }
767 }1176 }
7681177
769 verbose_msg("Successfully written encrypted data to the login file.\n");1178 verbose_msg("Successfully written encrypted data to the login file.\n");
@@ -771,9 +1180,10 @@
771 /* Update file_size */1180 /* Update file_size */
772 file_size= bytes_read;1181 file_size= bytes_read;
7731182
774 DBUG_RETURN(file_size);1183 DBUG_RETURN(0);
7751184
776error:1185error:
1186 my_perror("couldn't encrypt the file");
777 DBUG_RETURN(-1);1187 DBUG_RETURN(-1);
778}1188}
7791189
@@ -785,10 +1195,8 @@
785 @param file_buf [in] Buffer for storing the unscrambled login1195 @param file_buf [in] Buffer for storing the unscrambled login
786 file contents.1196 file contents.
7871197
788 @return -1, if error encountered;1198 @return -1 Error
789 total length of plain content added to1199 0 Success
790 the file buffer, otherwise.
791
792*/1200*/
7931201
794static int read_and_decrypt_file(DYNAMIC_STRING *file_buf)1202static int read_and_decrypt_file(DYNAMIC_STRING *file_buf)
@@ -797,12 +1205,12 @@
7971205
798 char cipher[MY_LINE_MAX], plain[MY_LINE_MAX];1206 char cipher[MY_LINE_MAX], plain[MY_LINE_MAX];
799 uchar len_buf[MAX_CIPHER_STORE_LEN];1207 uchar len_buf[MAX_CIPHER_STORE_LEN];
800 int cipher_len= 0, dec_len= 0, total_len= 0;1208 int cipher_len= 0, dec_len= 0;
8011209
802 /* Move past key first. */1210 /* Move past key first. */
803 if (my_seek(g_fd, MY_LOGIN_HEADER_LEN, SEEK_SET, MYF(MY_WME))1211 if (my_seek(g_fd, MY_LOGIN_HEADER_LEN, SEEK_SET, MYF(MY_WME))
804 != (MY_LOGIN_HEADER_LEN))1212 != (MY_LOGIN_HEADER_LEN))
805 DBUG_RETURN(-1); /* Error while seeking. */1213 goto error; /* Error while seeking. */
8061214
807 /* First read the length of the cipher. */1215 /* First read the length of the cipher. */
808 while (my_read(g_fd, len_buf, MAX_CIPHER_STORE_LEN,1216 while (my_read(g_fd, len_buf, MAX_CIPHER_STORE_LEN,
@@ -811,25 +1219,25 @@
811 cipher_len= sint4korr(len_buf);1219 cipher_len= sint4korr(len_buf);
8121220
813 if (cipher_len > MY_LINE_MAX)1221 if (cipher_len > MY_LINE_MAX)
814 DBUG_RETURN(-1);1222 goto error;
8151223
816 /* Now read 'cipher_len' bytes from the file. */1224 /* Now read 'cipher_len' bytes from the file. */
817 if ((int) my_read(g_fd, (uchar *) cipher, cipher_len, MYF(MY_WME)) == cipher_len)1225 if ((int) my_read(g_fd, (uchar *) cipher, cipher_len, MYF(MY_WME)) == cipher_len)
818 {1226 {
819 if ((dec_len= decrypt_buffer(cipher, cipher_len, plain)) < 0)1227 if ((dec_len= decrypt_buffer(cipher, cipher_len, plain)) < 0)
820 {1228 goto error;
821 verbose_msg("Error! failed to decrypt the file.\n");
822 DBUG_RETURN(-1);
823 }
8241229
825 total_len += dec_len;
826 plain[dec_len]= 0;1230 plain[dec_len]= 0;
827 dynstr_append(file_buf, plain);1231 dynstr_append(file_buf, plain);
828 }1232 }
829 }1233 }
8301234
831 verbose_msg("Successfully decrypted the login file.\n");1235 verbose_msg("Successfully decrypted the login file.\n");
832 DBUG_RETURN(total_len);1236 DBUG_RETURN(0);
1237
1238error:
1239 my_perror("couldn't decrypt the file");
1240 DBUG_RETURN(-1);
833}1241}
8341242
8351243
@@ -852,13 +1260,9 @@
852 aes_len= my_aes_get_size(plain_len);1260 aes_len= my_aes_get_size(plain_len);
8531261
854 if (my_aes_encrypt(plain, plain_len, cipher, my_key, LOGIN_KEY_LEN) == aes_len)1262 if (my_aes_encrypt(plain, plain_len, cipher, my_key, LOGIN_KEY_LEN) == aes_len)
855 {
856 DBUG_RETURN(aes_len);1263 DBUG_RETURN(aes_len);
857 }1264
858 else1265 verbose_msg("Error! Couldn't encrypt the buffer.\n");
859 {
860 fprintf(stderr, "Error! failed to encrypt.\n");
861 }
862 DBUG_RETURN(-1); /* Error */1266 DBUG_RETURN(-1); /* Error */
863}1267}
8641268
@@ -881,14 +1285,9 @@
8811285
882 if ((aes_length= my_aes_decrypt(cipher, cipher_len, (char *) plain,1286 if ((aes_length= my_aes_decrypt(cipher, cipher_len, (char *) plain,
883 my_key, LOGIN_KEY_LEN)) > 0)1287 my_key, LOGIN_KEY_LEN)) > 0)
884 {
885 DBUG_RETURN(aes_length);1288 DBUG_RETURN(aes_length);
886 }
887 else
888 {
889 fprintf(stderr, "Error! failed to decrypt.\n");
890 }
8911289
1290 verbose_msg("Error! Couldn't decrypt the buffer.\n");
892 DBUG_RETURN(-1); /* Error */1291 DBUG_RETURN(-1); /* Error */
893}1292}
8941293
@@ -901,7 +1300,7 @@
901 length written, otherwise.1300 length written, otherwise.
902*/1301*/
9031302
904int add_header(void)1303static int add_header(void)
905{1304{
906 DBUG_ENTER("add_header");1305 DBUG_ENTER("add_header");
9071306
@@ -910,23 +1309,18 @@
9101309
911 /* Write 'unused' bytes first. */1310 /* Write 'unused' bytes first. */
912 if ((my_write(g_fd, (const uchar *) unused, 4, MYF(MY_WME))) != 4)1311 if ((my_write(g_fd, (const uchar *) unused, 4, MYF(MY_WME))) != 4)
913 {
914 verbose_msg("Error! couldn't write to the file.\n");
915 goto error;1312 goto error;
916 }
9171313
918 /* Write the login key. */1314 /* Write the login key. */
919 if ((my_write(g_fd, (const uchar *)my_key, LOGIN_KEY_LEN, MYF(MY_WME)))1315 if ((my_write(g_fd, (const uchar *)my_key, LOGIN_KEY_LEN, MYF(MY_WME)))
920 != LOGIN_KEY_LEN)1316 != LOGIN_KEY_LEN)
921 {
922 verbose_msg("Error! couldn't write to the file.\n");
923 goto error;1317 goto error;
924 }
9251318
926 verbose_msg("Key successfully written to the file.\n");1319 verbose_msg("Key successfully written to the file.\n");
927 DBUG_RETURN(MY_LOGIN_HEADER_LEN);1320 DBUG_RETURN(MY_LOGIN_HEADER_LEN);
9281321
929error:1322error:
1323 my_perror("file write operation failed");
930 DBUG_RETURN(-1);1324 DBUG_RETURN(-1);
931}1325}
9321326
@@ -955,24 +1349,25 @@
955 0 Success1349 0 Success
956*/1350*/
9571351
958int read_login_key(void)1352static int read_login_key(void)
959{1353{
960 DBUG_ENTER("read_login_key");1354 DBUG_ENTER("read_login_key");
9611355
962 verbose_msg("Reading the login key.\n");1356 verbose_msg("Reading the login key.\n");
963 /* Move past the unused buffer. */1357 /* Move past the unused buffer. */
964 if (my_seek(g_fd, 4, SEEK_SET, MYF(MY_WME)) != 4)1358 if (my_seek(g_fd, 4, SEEK_SET, MYF(MY_WME)) != 4)
965 DBUG_RETURN(-1); /* Error while seeking. */1359 goto error; /* Error while seeking. */
9661360
967 if (my_read(g_fd, (uchar *)my_key, LOGIN_KEY_LEN, MYF(MY_WME))1361 if (my_read(g_fd, (uchar *)my_key, LOGIN_KEY_LEN, MYF(MY_WME))
968 != LOGIN_KEY_LEN)1362 != LOGIN_KEY_LEN)
969 {1363 goto error; /* Error while reading. */
970 verbose_msg("Failed to read login key.\n");
971 DBUG_RETURN(-1);
972 }
9731364
974 verbose_msg("Login key read successfully.\n");1365 verbose_msg("Login key read successfully.\n");
975 DBUG_RETURN(0);1366 DBUG_RETURN(0);
1367
1368error:
1369 my_perror("file read operation failed");
1370 DBUG_RETURN(-1);
976}1371}
9771372
9781373
@@ -992,22 +1387,48 @@
992 DBUG_VOID_RETURN;1387 DBUG_VOID_RETURN;
993}1388}
9941389
9951390static void my_perror(const char *msg)
996static void usage(void)1391{
997{1392 char errbuf[MYSYS_STRERROR_SIZE];
998 print_version();1393
999 puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2012"));1394 if (errno == 0)
1000 puts("MySQL Configuration Utility.");1395 fprintf(stderr, "%s\n", (msg) ? msg : "");
1001 printf("Usage: %s command [options] \n", my_progname);1396 else
1002 my_print_help(my_long_options);1397 fprintf(stderr, "%s : %s\n", (msg) ? msg : "",
1003 my_print_variables(my_long_options);1398 my_strerror(errbuf, sizeof(errbuf), errno));
1399 // reset errno
1400 errno= 0;
1401}
1402
1403static void usage_command(int command)
1404{
1405 print_version();
1406 puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2012"));
1407 puts("MySQL Configuration Utility.");
1408 printf("\nDescription: %s\n", command_data[command].description);
1409 printf("Usage: %s [program options] [%s [command options]]\n",
1410 my_progname, command_data[command].name);
1411 my_print_help(command_data[command].options);
1412 my_print_variables(command_data[command].options);
1413}
1414
1415
1416static void usage_program(void)
1417{
1418 print_version();
1419 puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2012"));
1420 puts("MySQL Configuration Utility.");
1421 printf("Usage: %s [program options] [command [command options]]\n",
1422 my_progname);
1423 my_print_help(my_program_long_options);
1424 my_print_variables(my_program_long_options);
1004 puts("\nWhere command can be any one of the following :\n\1425 puts("\nWhere command can be any one of the following :\n\
1005 set [options] Sets user name/password/host name for a\n\1426 set [command options] Sets user name/password/host name for a\n\
1006 given login path (section).\n\1427 given login path (section).\n\
1007 remove [options] Remove a login path from the login file.\n\1428 remove [command options] Remove a login path from the login file.\n\
1008 print [options] Print all the options for a specified\n\1429 print [command options] Print all the options for a specified\n\
1009 login path.\n\1430 login path.\n\
1010 reset Deletes the contents of the login file.\n\1431 reset [command options] Deletes the contents of the login file.\n\
1011 help Display this usage/help information.\n");1432 help Display this usage/help information.\n");
1012}1433}
10131434
10141435
=== modified file 'Percona-Server/client/mysql_plugin.c'
--- Percona-Server/client/mysql_plugin.c 2012-10-03 06:13:53 +0000
+++ Percona-Server/client/mysql_plugin.c 2013-02-13 06:17:00 +0000
@@ -558,13 +558,18 @@
558 const char *last_fn_libchar;558 const char *last_fn_libchar;
559#endif559#endif
560560
561 if ((strlen(base_path) + strlen(subdir) + 1) > FN_REFLEN)
562 {
563 fprintf(stderr, "WARNING: Search path is too long\n");
564 return 1;
565 }
561 strcpy(source_path, base_path);566 strcpy(source_path, base_path);
562 strcat(source_path, subdir);567 strcat(source_path, subdir);
563 fn_format(new_path, tool_name, source_path, "", MY_UNPACK_FILENAME);568 fn_format(new_path, tool_name, source_path, "", MY_UNPACK_FILENAME);
564 if (file_exists(new_path))569 if (file_exists(new_path))
565 {570 {
566 strcpy(tool_path, new_path);571 strcpy(tool_path, new_path);
567 return 1;572 return 0;
568 } 573 }
569574
570#if __WIN__575#if __WIN__
@@ -588,11 +593,11 @@
588 if (file_exists(win_abs_path))593 if (file_exists(win_abs_path))
589 {594 {
590 strcpy(tool_path, win_abs_path);595 strcpy(tool_path, win_abs_path);
591 return 1;596 return 0;
592 }597 }
593 }598 }
594#endif599#endif
595 return 0;600 return 1;
596}601}
597602
598603
@@ -617,12 +622,12 @@
617 };622 };
618 for (i = 0 ; i < (int)array_elements(paths); i++)623 for (i = 0 ; i < (int)array_elements(paths); i++)
619 {624 {
620 if (search_dir(base_path, tool_name, paths[i], tool_path))625 if (!search_dir(base_path, tool_name, paths[i], tool_path))
621 {626 {
622 return 1;627 return 0;
623 }628 }
624 }629 }
625 return 0;630 return 1;
626}631}
627632
628633
@@ -1006,7 +1011,7 @@
1006 };1011 };
1007 for (i= 0; i < (int)array_elements(paths); i++)1012 for (i= 0; i < (int)array_elements(paths); i++)
1008 {1013 {
1009 if (paths[i] && (search_paths(paths[i], tool_name, tool_path)))1014 if (paths[i] && !(search_paths(paths[i], tool_name, tool_path)))
1010 goto found;1015 goto found;
1011 }1016 }
1012 fprintf(stderr, "WARNING: Cannot find %s.\n", tool_name);1017 fprintf(stderr, "WARNING: Cannot find %s.\n", tool_name);
10131018
=== modified file 'Percona-Server/client/mysql_upgrade.c'
--- Percona-Server/client/mysql_upgrade.c 2012-10-16 06:21:51 +0000
+++ Percona-Server/client/mysql_upgrade.c 2013-02-13 06:17:00 +0000
@@ -178,6 +178,7 @@
178 }178 }
179 va_end(args);179 va_end(args);
180180
181 DBUG_LEAVE;
181 free_used_memory();182 free_used_memory();
182 my_end(my_end_arg);183 my_end(my_end_arg);
183 exit(1);184 exit(1);
@@ -837,7 +838,7 @@
837838
838 dynstr_free(&ds_result);839 dynstr_free(&ds_result);
839 dynstr_free(&ds_script);840 dynstr_free(&ds_script);
840 return found_real_errors;841 DBUG_RETURN(found_real_errors);
841}842}
842843
843844
844845
=== modified file 'Percona-Server/client/mysqladmin.cc'
--- Percona-Server/client/mysqladmin.cc 2012-12-04 08:24:59 +0000
+++ Percona-Server/client/mysqladmin.cc 2013-02-13 06:17:00 +0000
@@ -312,6 +312,8 @@
312int main(int argc,char *argv[])312int main(int argc,char *argv[])
313{313{
314 int error= 0, ho_error;314 int error= 0, ho_error;
315 int first_command;
316 my_bool can_handle_passwords;
315 MYSQL mysql;317 MYSQL mysql;
316 char **commands, **save_argv;318 char **commands, **save_argv;
317319
@@ -387,6 +389,13 @@
387 mysql_options(&mysql, MYSQL_ENABLE_CLEARTEXT_PLUGIN, 389 mysql_options(&mysql, MYSQL_ENABLE_CLEARTEXT_PLUGIN,
388 (char*) &opt_enable_cleartext_plugin);390 (char*) &opt_enable_cleartext_plugin);
389391
392 first_command= find_type(argv[0], &command_typelib, FIND_TYPE_BASIC);
393 can_handle_passwords=
394 (first_command == ADMIN_PASSWORD || first_command == ADMIN_OLD_PASSWORD) ?
395 TRUE : FALSE;
396 mysql_options(&mysql, MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS,
397 &can_handle_passwords);
398
390 if (sql_connect(&mysql, option_wait))399 if (sql_connect(&mysql, option_wait))
391 {400 {
392 /*401 /*
393402
=== modified file 'Percona-Server/client/mysqlbinlog.cc'
--- Percona-Server/client/mysqlbinlog.cc 2012-10-16 06:21:51 +0000
+++ Percona-Server/client/mysqlbinlog.cc 2013-02-13 06:17:00 +0000
@@ -858,7 +858,20 @@
858 reset_dynamic(&buff_ev);858 reset_dynamic(&buff_ev);
859859
860 if (parent_query_skips)860 if (parent_query_skips)
861 {
862 /*
863 Even though there would be no need to set the flag here,
864 since parent_query_skips is never true when handling "COMMIT"
865 statements in the Query_log_event, we still need to handle DDL,
866 which causes a commit itself.
867 */
868 print_event_info->skipped_event_in_transaction= true;
861 goto end;869 goto end;
870 }
871
872 if (((Query_log_event*) ev)->ends_group())
873 print_event_info->skipped_event_in_transaction= false;
874
862 ev->print(result_file, print_event_info);875 ev->print(result_file, print_event_info);
863 if (head->error == -1)876 if (head->error == -1)
864 goto err;877 goto err;
@@ -905,7 +918,10 @@
905 Note that Load event from 3.23 is not tested.918 Note that Load event from 3.23 is not tested.
906 */919 */
907 if (shall_skip_database(ce->db))920 if (shall_skip_database(ce->db))
921 {
922 print_event_info->skipped_event_in_transaction= true;
908 goto end; // Next event923 goto end; // Next event
924 }
909 /*925 /*
910 We print the event, but with a leading '#': this is just to inform 926 We print the event, but with a leading '#': this is just to inform
911 the user of the original command; the command we want to execute 927 the user of the original command; the command we want to execute
@@ -1024,7 +1040,9 @@
1024 Execute_load_query_log_event *exlq= (Execute_load_query_log_event*)ev;1040 Execute_load_query_log_event *exlq= (Execute_load_query_log_event*)ev;
1025 char *fname= load_processor.grab_fname(exlq->file_id);1041 char *fname= load_processor.grab_fname(exlq->file_id);
10261042
1027 if (!shall_skip_database(exlq->db))1043 if (shall_skip_database(exlq->db))
1044 print_event_info->skipped_event_in_transaction= true;
1045 else
1028 {1046 {
1029 if (fname)1047 if (fname)
1030 {1048 {
@@ -1051,6 +1069,7 @@
1051 Table_map_log_event *map= ((Table_map_log_event *)ev);1069 Table_map_log_event *map= ((Table_map_log_event *)ev);
1052 if (shall_skip_database(map->get_db_name()))1070 if (shall_skip_database(map->get_db_name()))
1053 {1071 {
1072 print_event_info->skipped_event_in_transaction= true;
1054 print_event_info->m_table_map_ignored.set_table(map->get_table_id(), map);1073 print_event_info->m_table_map_ignored.set_table(map->get_table_id(), map);
1055 destroy_evt= FALSE;1074 destroy_evt= FALSE;
1056 goto end;1075 goto end;
@@ -1122,7 +1141,10 @@
11221141
1123 /* skip the event check */1142 /* skip the event check */
1124 if (skip_event)1143 if (skip_event)
1144 {
1145 print_event_info->skipped_event_in_transaction= true;
1125 goto end;1146 goto end;
1147 }
11261148
1127 /*1149 /*
1128 These events must be printed in base64 format, if printed.1150 These events must be printed in base64 format, if printed.
@@ -1162,6 +1184,33 @@
1162 }1184 }
1163 break;1185 break;
1164 }1186 }
1187 case GTID_LOG_EVENT:
1188 {
1189 if (print_event_info->skipped_event_in_transaction == true)
1190 fprintf(result_file, "COMMIT /* added by mysqlbinlog */%s\n", print_event_info->delimiter);
1191 print_event_info->skipped_event_in_transaction= false;
1192
1193 ev->print(result_file, print_event_info);
1194 if (head->error == -1)
1195 goto err;
1196 break;
1197 }
1198 case XID_EVENT:
1199 {
1200 print_event_info->skipped_event_in_transaction= false;
1201 ev->print(result_file, print_event_info);
1202 if (head->error == -1)
1203 goto err;
1204 break;
1205 }
1206 case PREVIOUS_GTIDS_LOG_EVENT:
1207 if (one_database && !opt_skip_gtids)
1208 warning("The option --database has been used. It may filter "
1209 "parts of transactions, but will include the GTIDs in "
1210 "any case. If you want to exclude or include transactions, "
1211 "you should use the options --exclude-gtids or "
1212 "--include-gtids, respectively, instead.");
1213 /* fall through */
1165 default:1214 default:
1166 ev->print(result_file, print_event_info);1215 ev->print(result_file, print_event_info);
1167 if (head->error == -1)1216 if (head->error == -1)
@@ -1745,6 +1794,9 @@
1745 /* Set delimiter back to semicolon */1794 /* Set delimiter back to semicolon */
1746 if (!raw_mode)1795 if (!raw_mode)
1747 {1796 {
1797 if (print_event_info.skipped_event_in_transaction)
1798 fprintf(result_file, "COMMIT /* added by mysqlbinlog */%s\n", print_event_info.delimiter);
1799
1748 fprintf(result_file, "DELIMITER ;\n");1800 fprintf(result_file, "DELIMITER ;\n");
1749 strmov(print_event_info.delimiter, ";");1801 strmov(print_event_info.delimiter, ";");
1750 }1802 }
@@ -1929,14 +1981,10 @@
1929 {1981 {
1930 command= COM_BINLOG_DUMP_GTID;1982 command= COM_BINLOG_DUMP_GTID;
19311983
1932 Gtid_set gtid_set(global_sid_map);
1933 global_sid_lock->rdlock();1984 global_sid_lock->rdlock();
19341985
1935 gtid_set.add_gtid_set(gtid_set_excluded);
1936
1937 // allocate buffer1986 // allocate buffer
1938 size_t unused_size= 0;1987 size_t encoded_data_size= gtid_set_excluded->get_encoded_length();
1939 size_t encoded_data_size= gtid_set.get_encoded_length();
1940 size_t allocation_size=1988 size_t allocation_size=
1941 ::BINLOG_FLAGS_INFO_SIZE + ::BINLOG_SERVER_ID_INFO_SIZE +1989 ::BINLOG_FLAGS_INFO_SIZE + ::BINLOG_SERVER_ID_INFO_SIZE +
1942 ::BINLOG_NAME_SIZE_INFO_SIZE + BINLOG_NAME_INFO_SIZE +1990 ::BINLOG_NAME_SIZE_INFO_SIZE + BINLOG_NAME_INFO_SIZE +
@@ -1950,13 +1998,6 @@
1950 }1998 }
1951 uchar* ptr_buffer= command_buffer;1999 uchar* ptr_buffer= command_buffer;
19522000
1953 /*
1954 The current implementation decides whether the Gtid must be
1955 used based on option --exclude-gtids.
1956 */
1957 add_master_slave_proto(&binlog_flags,
1958 opt_exclude_gtids_str != NULL ?
1959 BINLOG_THROUGH_GTID : BINLOG_THROUGH_POSITION);
1960 int2store(ptr_buffer, binlog_flags);2001 int2store(ptr_buffer, binlog_flags);
1961 ptr_buffer+= ::BINLOG_FLAGS_INFO_SIZE;2002 ptr_buffer+= ::BINLOG_FLAGS_INFO_SIZE;
1962 int4store(ptr_buffer, server_id);2003 int4store(ptr_buffer, server_id);
@@ -1967,23 +2008,15 @@
1967 ptr_buffer+= BINLOG_NAME_INFO_SIZE;2008 ptr_buffer+= BINLOG_NAME_INFO_SIZE;
1968 int8store(ptr_buffer, start_position);2009 int8store(ptr_buffer, start_position);
1969 ptr_buffer+= ::BINLOG_POS_INFO_SIZE;2010 ptr_buffer+= ::BINLOG_POS_INFO_SIZE;
19702011 int4store(ptr_buffer, encoded_data_size);
1971 if (is_master_slave_proto(binlog_flags, BINLOG_THROUGH_GTID))2012 ptr_buffer+= ::BINLOG_DATA_SIZE_INFO_SIZE;
1972 {2013 gtid_set_excluded->encode(ptr_buffer);
1973 int4store(ptr_buffer, encoded_data_size);2014 ptr_buffer+= encoded_data_size;
1974 ptr_buffer+= ::BINLOG_DATA_SIZE_INFO_SIZE;
1975 gtid_set.encode(ptr_buffer);
1976 ptr_buffer+= encoded_data_size;
1977 }
1978 else
1979 {
1980 unused_size= ::BINLOG_DATA_SIZE_INFO_SIZE + encoded_data_size;
1981 }
19822015
1983 global_sid_lock->unlock();2016 global_sid_lock->unlock();
19842017
1985 command_size= ptr_buffer - command_buffer;2018 command_size= ptr_buffer - command_buffer;
1986 DBUG_ASSERT(command_size == (allocation_size - unused_size - 1));2019 DBUG_ASSERT(command_size == (allocation_size - 1));
1987 }2020 }
19882021
1989 if (simple_command(mysql, command, command_buffer, command_size, 1))2022 if (simple_command(mysql, command, command_buffer, command_size, 1))
@@ -2701,6 +2734,8 @@
27012734
2702 if (!raw_mode)2735 if (!raw_mode)
2703 {2736 {
2737 fprintf(result_file, "/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;\n");
2738
2704 fprintf(result_file,2739 fprintf(result_file,
2705 "/*!40019 SET @@session.max_insert_delayed_threads=0*/;\n");2740 "/*!40019 SET @@session.max_insert_delayed_threads=0*/;\n");
27062741
@@ -2753,6 +2788,8 @@
2753 "/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n"2788 "/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n"
2754 "/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n"2789 "/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n"
2755 "/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n");2790 "/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n");
2791
2792 fprintf(result_file, "/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;\n");
2756 }2793 }
27572794
2758 if (tmpdir.list)2795 if (tmpdir.list)
@@ -2789,4 +2826,3 @@
2789#include "uuid.cc"2826#include "uuid.cc"
2790#include "rpl_gtid_set.cc"2827#include "rpl_gtid_set.cc"
2791#include "rpl_gtid_specification.cc"2828#include "rpl_gtid_specification.cc"
2792#include "rpl_constants.cc"
27932829
=== modified file 'Percona-Server/client/mysqlcheck.c'
--- Percona-Server/client/mysqlcheck.c 2012-10-16 06:21:51 +0000
+++ Percona-Server/client/mysqlcheck.c 2013-02-13 06:17:00 +0000
@@ -870,10 +870,10 @@
870 NULL, opt_mysql_port, opt_mysql_unix_port, 0)))870 NULL, opt_mysql_port, opt_mysql_unix_port, 0)))
871 {871 {
872 DBerror(&mysql_connection, "when trying to connect");872 DBerror(&mysql_connection, "when trying to connect");
873 return 1;873 DBUG_RETURN(1);
874 }874 }
875 mysql_connection.reconnect= 1;875 mysql_connection.reconnect= 1;
876 return 0;876 DBUG_RETURN(0);
877} /* dbConnect */877} /* dbConnect */
878878
879879
880880
=== modified file 'Percona-Server/client/mysqldump.c'
--- Percona-Server/client/mysqldump.c 2013-01-25 11:46:09 +0000
+++ Percona-Server/client/mysqldump.c 2013-02-13 06:17:00 +0000
@@ -157,6 +157,17 @@
157FILE *md_result_file= 0;157FILE *md_result_file= 0;
158FILE *stderror_file=0;158FILE *stderror_file=0;
159159
160const char *set_gtid_purged_mode_names[]=
161{"OFF", "AUTO", "ON", NullS};
162static TYPELIB set_gtid_purged_mode_typelib=
163 {array_elements(set_gtid_purged_mode_names) -1, "",
164 set_gtid_purged_mode_names, NULL};
165static enum enum_set_gtid_purged_mode {
166 SET_GTID_PURGED_OFF= 0,
167 SET_GTID_PURGED_AUTO =1,
168 SET_GTID_PURGED_ON=2
169} opt_set_gtid_purged_mode= SET_GTID_PURGED_AUTO;
170
160#ifdef HAVE_SMEM171#ifdef HAVE_SMEM
161static char *shared_memory_base_name=0;172static char *shared_memory_base_name=0;
162#endif173#endif
@@ -484,6 +495,15 @@
484 "Add 'SET NAMES default_character_set' to the output.",495 "Add 'SET NAMES default_character_set' to the output.",
485 &opt_set_charset, &opt_set_charset, 0, GET_BOOL, NO_ARG, 1,496 &opt_set_charset, &opt_set_charset, 0, GET_BOOL, NO_ARG, 1,
486 0, 0, 0, 0, 0},497 0, 0, 0, 0, 0},
498 {"set-gtid-purged", OPT_SET_GTID_PURGED,
499 "Add 'SET @@GLOBAL.GTID_PURGED' to the output. Possible values for "
500 "this option are ON, OFF and AUTO. If ON is used and GTIDs "
501 "are not enabled on the server, an error is generated. If OFF is "
502 "used, this option does nothing. If AUTO is used and GTIDs are enabled "
503 "on the server, 'SET @@GLOBAL.GTID_PURGED' is added to the output. "
504 "If GTIDs are disabled, AUTO does nothing. Default is AUTO.",
505 0, 0, 0, GET_STR, OPT_ARG,
506 0, 0, 0, 0, 0, 0},
487#ifdef HAVE_SMEM507#ifdef HAVE_SMEM
488 {"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME,508 {"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME,
489 "Base name of shared memory.", &shared_memory_base_name, &shared_memory_base_name,509 "Base name of shared memory.", &shared_memory_base_name, &shared_memory_base_name,
@@ -923,6 +943,13 @@
923 opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,943 opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
924 opt->name);944 opt->name);
925 break;945 break;
946 case (int) OPT_SET_GTID_PURGED:
947 {
948 opt_set_gtid_purged_mode= find_type_or_exit(argument,
949 &set_gtid_purged_mode_typelib,
950 opt->name)-1;
951 break;
952 }
926 }953 }
927 return 0;954 return 0;
928}955}
@@ -2280,7 +2307,6 @@
2280 const char *routine_type[]= {"FUNCTION", "PROCEDURE"};2307 const char *routine_type[]= {"FUNCTION", "PROCEDURE"};
2281 char db_name_buff[NAME_LEN*2+3], name_buff[NAME_LEN*2+3];2308 char db_name_buff[NAME_LEN*2+3], name_buff[NAME_LEN*2+3];
2282 char *routine_name;2309 char *routine_name;
2283 char *query_str;
2284 int i;2310 int i;
2285 FILE *sql_file= md_result_file;2311 FILE *sql_file= md_result_file;
2286 MYSQL_RES *routine_res, *routine_list_res;2312 MYSQL_RES *routine_res, *routine_list_res;
@@ -2374,17 +2400,6 @@
2374 fprintf(sql_file, "/*!50003 DROP %s IF EXISTS %s */;\n",2400 fprintf(sql_file, "/*!50003 DROP %s IF EXISTS %s */;\n",
2375 routine_type[i], routine_name);2401 routine_type[i], routine_name);
23762402
2377 query_str= cover_definer_clause(row[2], strlen(row[2]),
2378 C_STRING_WITH_LEN("50020"),
2379 C_STRING_WITH_LEN("50003"),
2380 C_STRING_WITH_LEN(" FUNCTION"));
2381
2382 if (!query_str)
2383 query_str= cover_definer_clause(row[2], strlen(row[2]),
2384 C_STRING_WITH_LEN("50020"),
2385 C_STRING_WITH_LEN("50003"),
2386 C_STRING_WITH_LEN(" PROCEDURE"));
2387
2388 if (mysql_num_fields(routine_res) >= 6)2403 if (mysql_num_fields(routine_res) >= 6)
2389 {2404 {
2390 if (switch_db_collation(sql_file, db_name_buff, ";",2405 if (switch_db_collation(sql_file, db_name_buff, ";",
@@ -2422,9 +2437,9 @@
24222437
2423 fprintf(sql_file,2438 fprintf(sql_file,
2424 "DELIMITER ;;\n"2439 "DELIMITER ;;\n"
2425 "/*!50003 %s */;;\n"2440 "%s ;;\n"
2426 "DELIMITER ;\n",2441 "DELIMITER ;\n",
2427 (const char *) (query_str != NULL ? query_str : row[2]));2442 (const char *) row[2]);
24282443
2429 restore_sql_mode(sql_file, ";");2444 restore_sql_mode(sql_file, ";");
24302445
@@ -2439,7 +2454,6 @@
2439 }2454 }
2440 }2455 }
24412456
2442 my_free(query_str);
2443 }2457 }
2444 } /* end of routine printing */2458 } /* end of routine printing */
2445 mysql_free_result(routine_res);2459 mysql_free_result(routine_res);
@@ -3743,17 +3757,8 @@
3743 DBUG_VOID_RETURN;3757 DBUG_VOID_RETURN;
3744 }3758 }
37453759
3746 /*3760 result_table= quote_name(table,table_buff, 1);
3747 Check --skip-events flag: it is not enough to skip creation of events3761 opt_quoted_table= quote_name(table, table_buff2, 0);
3748 discarding SHOW CREATE EVENT statements generation. The myslq.event
3749 table data should be skipped too.
3750 */
3751 if (!opt_events && !my_strcasecmp(&my_charset_latin1, db, "mysql") &&
3752 !my_strcasecmp(&my_charset_latin1, table, "event"))
3753 {
3754 verbose_msg("-- Skipping data table mysql.event, --skip-events was used\n");
3755 DBUG_VOID_RETURN;
3756 }
37573762
3758 verbose_msg("-- Sending SELECT query...\n");3763 verbose_msg("-- Sending SELECT query...\n");
37593764
@@ -5578,6 +5583,153 @@
5578}5583}
55795584
55805585
5586/**
5587 This function sets the session binlog in the dump file.
5588 When --set-gtid-purged is used, this function is called to
5589 disable the session binlog and at the end of the dump, to restore
5590 the session binlog.
5591
5592 @note: md_result_file should have been opened, before
5593 this function is called.
5594
5595 @param[in] flag If FALSE, disable binlog.
5596 If TRUE and binlog disabled previously,
5597 restore the session binlog.
5598*/
5599
5600static void set_session_binlog(my_bool flag)
5601{
5602 static my_bool is_binlog_disabled= FALSE;
5603
5604 if (!flag && !is_binlog_disabled)
5605 {
5606 fprintf(md_result_file,
5607 "SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;\n");
5608 fprintf(md_result_file, "SET @@SESSION.SQL_LOG_BIN= 0;\n");
5609 is_binlog_disabled= 1;
5610 }
5611 else if (flag && is_binlog_disabled)
5612 {
5613 fprintf(md_result_file,
5614 "SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;\n");
5615 is_binlog_disabled= 0;
5616 }
5617}
5618
5619
5620/**
5621 This function gets the GTID_EXECUTED sets from the
5622 server and assigns those sets to GTID_PURGED in the
5623 dump file.
5624
5625 @param[in] mysql_con connection to the server
5626
5627 @retval FALSE succesfully printed GTID_PURGED sets
5628 in the dump file.
5629 @retval TRUE failed.
5630
5631*/
5632
5633static my_bool add_set_gtid_purged(MYSQL *mysql_con)
5634{
5635 MYSQL_RES *gtid_purged_res;
5636 MYSQL_ROW gtid_set;
5637 ulong num_sets, idx;
5638
5639 /* query to get the GTID_EXECUTED */
5640 if (mysql_query_with_error_report(mysql_con, &gtid_purged_res,
5641 "SELECT @@GLOBAL.GTID_EXECUTED"))
5642 return TRUE;
5643
5644 /* Proceed only if gtid_purged_res is non empty */
5645 if ((num_sets= mysql_num_rows(gtid_purged_res)) > 0)
5646 {
5647 if (opt_comments)
5648 fprintf(md_result_file,
5649 "\n--\n-- GTID state at the beginning of the backup \n--\n\n");
5650
5651 fprintf(md_result_file,"SET @@GLOBAL.GTID_PURGED='");
5652
5653 /* formatting is not required, even for multiple gtid sets */
5654 for (idx= 0; idx< num_sets-1; idx++)
5655 {
5656 gtid_set= mysql_fetch_row(gtid_purged_res);
5657 fprintf(md_result_file,"%s,", (char*)gtid_set[0]);
5658 }
5659 /* for the last set */
5660 gtid_set= mysql_fetch_row(gtid_purged_res);
5661 /* close the SET expression */
5662 fprintf(md_result_file,"%s';\n", (char*)gtid_set[0]);
5663 }
5664
5665 return FALSE; /*success */
5666}
5667
5668
5669/**
5670 This function processes the opt_set_gtid_purged option.
5671 This function also calls set_session_binlog() function before
5672 setting the SET @@GLOBAL.GTID_PURGED in the output.
5673
5674 @param[in] mysql_con the connection to the server
5675
5676 @retval FALSE successful according to the value
5677 of opt_set_gtid_purged.
5678 @retval TRUE fail.
5679*/
5680
5681static my_bool process_set_gtid_purged(MYSQL* mysql_con)
5682{
5683 MYSQL_RES *gtid_mode_res;
5684 MYSQL_ROW gtid_mode_row;
5685 char *gtid_mode_val= 0;
5686
5687 if (opt_set_gtid_purged_mode == SET_GTID_PURGED_OFF)
5688 return FALSE; /* nothing to be done */
5689
5690
5691 /* check if gtid_mode is ON or OFF */
5692 if (mysql_query_with_error_report(mysql_con, &gtid_mode_res,
5693 "SELECT @@GTID_MODE"))
5694 return TRUE;
5695
5696 gtid_mode_row = mysql_fetch_row(gtid_mode_res);
5697 gtid_mode_val = (char*)gtid_mode_row[0];
5698
5699 if (gtid_mode_val && strcmp(gtid_mode_val, "OFF"))
5700 {
5701 /*
5702 For any gtid_mode !=OFF and irrespective of --set-gtid-purged
5703 being AUTO or ON, add GTID_PURGED in the output.
5704 */
5705 if (opt_databases || !opt_alldbs || !opt_dump_triggers
5706 || !opt_routines || !opt_events)
5707 {
5708 fprintf(stderr,"Warning: A partial dump from a server that has GTIDs will "
5709 "by default include the GTIDs of all transactions, even "
5710 "those that changed suppressed parts of the database. If "
5711 "you don't want to restore GTIDs, pass "
5712 "--set-gtid-purged=OFF. To make a complete dump, pass "
5713 "--all-databases --triggers --routines --events. \n");
5714 }
5715
5716 set_session_binlog(FALSE);
5717 if (add_set_gtid_purged(mysql_con))
5718 return TRUE;
5719 }
5720 else /* gtid_mode is off */
5721 {
5722 if (opt_set_gtid_purged_mode == SET_GTID_PURGED_ON)
5723 {
5724 fprintf(stderr, "Error: Server has GTIDs disabled.\n");
5725 return TRUE;
5726 }
5727 }
5728
5729 return FALSE;
5730}
5731
5732
5581/*5733/*
5582 Getting VIEW structure5734 Getting VIEW structure
55835735
@@ -5907,6 +6059,13 @@
5907 /* Add 'STOP SLAVE to beginning of dump */6059 /* Add 'STOP SLAVE to beginning of dump */
5908 if (opt_slave_apply && add_stop_slave())6060 if (opt_slave_apply && add_stop_slave())
5909 goto err;6061 goto err;
6062
6063
6064 /* Process opt_set_gtid_purged and add SET @@GLOBAL.GTID_PURGED if required. */
6065 if (process_set_gtid_purged(mysql))
6066 goto err;
6067
6068
5910 if (opt_master_data && do_show_master_status(mysql))6069 if (opt_master_data && do_show_master_status(mysql))
5911 goto err;6070 goto err;
5912 if (opt_slave_data && do_show_slave_status(mysql))6071 if (opt_slave_data && do_show_slave_status(mysql))
@@ -5942,6 +6101,12 @@
5942 if (opt_slave_data && do_start_slave_sql(mysql))6101 if (opt_slave_data && do_start_slave_sql(mysql))
5943 goto err;6102 goto err;
59446103
6104 /*
6105 if --set-gtid-purged, restore binlog at the end of the session
6106 if required.
6107 */
6108 set_session_binlog(TRUE);
6109
5945 /* add 'START SLAVE' to end of dump */6110 /* add 'START SLAVE' to end of dump */
5946 if (opt_slave_apply && add_slave_statements())6111 if (opt_slave_apply && add_slave_statements())
5947 goto err;6112 goto err;
59486113
=== modified file 'Percona-Server/client/mysqltest.cc'
--- Percona-Server/client/mysqltest.cc 2012-12-04 08:24:59 +0000
+++ Percona-Server/client/mysqltest.cc 2013-02-13 06:17:00 +0000
@@ -130,6 +130,7 @@
130#if !defined(HAVE_YASSL)130#if !defined(HAVE_YASSL)
131static const char *opt_server_public_key= 0;131static const char *opt_server_public_key= 0;
132#endif132#endif
133static my_bool can_handle_expired_passwords= TRUE;
133134
134/* Info on properties that can be set with --enable_X and --disable_X */135/* Info on properties that can be set with --enable_X and --disable_X */
135136
@@ -1426,7 +1427,6 @@
1426{1427{
1427 static int dying= 0;1428 static int dying= 0;
1428 va_list args;1429 va_list args;
1429 DBUG_ENTER("die");
1430 DBUG_PRINT("enter", ("start_lineno: %d", start_lineno));1430 DBUG_PRINT("enter", ("start_lineno: %d", start_lineno));
14311431
1432 /*1432 /*
@@ -2571,6 +2571,7 @@
2571 dynstr_append_mem(&ds_res, ds_version.str, ds_version.length);2571 dynstr_append_mem(&ds_res, ds_version.str, ds_version.length);
2572 dynstr_append(&ds_res, "\n");2572 dynstr_append(&ds_res, "\n");
2573 dynstr_free(&ds_version);2573 dynstr_free(&ds_version);
2574 DBUG_VOID_RETURN;
2574}2575}
25752576
2576/* List of error names to error codes */2577/* List of error names to error codes */
@@ -5314,6 +5315,8 @@
5314 mysql_options(mysql, MYSQL_OPT_CONNECT_ATTR_RESET, 0);5315 mysql_options(mysql, MYSQL_OPT_CONNECT_ATTR_RESET, 0);
5315 mysql_options4(mysql, MYSQL_OPT_CONNECT_ATTR_ADD,5316 mysql_options4(mysql, MYSQL_OPT_CONNECT_ATTR_ADD,
5316 "program_name", "mysqltest");5317 "program_name", "mysqltest");
5318 mysql_options(mysql, MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS,
5319 &can_handle_expired_passwords);
5317 while(!mysql_real_connect(mysql, host,user, pass, db, port, sock,5320 while(!mysql_real_connect(mysql, host,user, pass, db, port, sock,
5318 CLIENT_MULTI_STATEMENTS | CLIENT_REMEMBER_OPTIONS))5321 CLIENT_MULTI_STATEMENTS | CLIENT_REMEMBER_OPTIONS))
5319 {5322 {
@@ -5417,6 +5420,8 @@
5417 5420
5418 mysql_options(con, MYSQL_OPT_CONNECT_ATTR_RESET, 0);5421 mysql_options(con, MYSQL_OPT_CONNECT_ATTR_RESET, 0);
5419 mysql_options4(con, MYSQL_OPT_CONNECT_ATTR_ADD, "program_name", "mysqltest");5422 mysql_options4(con, MYSQL_OPT_CONNECT_ATTR_ADD, "program_name", "mysqltest");
5423 mysql_options(con, MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS,
5424 &can_handle_expired_passwords);
5420 while (!mysql_real_connect(con, host, user, pass, db, port, sock ? sock: 0,5425 while (!mysql_real_connect(con, host, user, pass, db, port, sock ? sock: 0,
5421 CLIENT_MULTI_STATEMENTS))5426 CLIENT_MULTI_STATEMENTS))
5422 {5427 {
54235428
=== modified file 'Percona-Server/client/sql_string.h'
--- Percona-Server/client/sql_string.h 2012-10-16 06:21:51 +0000
+++ Percona-Server/client/sql_string.h 2013-02-13 06:17:00 +0000
@@ -94,6 +94,9 @@
94 inline const char *ptr() const { return Ptr; }94 inline const char *ptr() const { return Ptr; }
95 inline char *c_ptr()95 inline char *c_ptr()
96 {96 {
97 DBUG_ASSERT(!alloced || !Ptr || !Alloced_length ||
98 (Alloced_length >= (str_length + 1)));
99
97 if (!Ptr || Ptr[str_length]) /* Should be safe */100 if (!Ptr || Ptr[str_length]) /* Should be safe */
98 (void) realloc(str_length);101 (void) realloc(str_length);
99 return Ptr;102 return Ptr;
100103
=== modified file 'Percona-Server/cmake/install_layout.cmake'
--- Percona-Server/cmake/install_layout.cmake 2012-09-21 17:15:31 +0000
+++ Percona-Server/cmake/install_layout.cmake 2013-02-13 06:17:00 +0000
@@ -104,7 +104,10 @@
104# just use if(INSTALL_PLUGINTESTDIR).104# just use if(INSTALL_PLUGINTESTDIR).
105# The plugin must set its own install path for tests105# The plugin must set its own install path for tests
106#106#
107FILE(GLOB plugin_tests ${CMAKE_SOURCE_DIR}/plugin/*/tests)107FILE(GLOB plugin_tests
108 ${CMAKE_SOURCE_DIR}/plugin/*/tests
109 ${CMAKE_SOURCE_DIR}/internal/plugin/*/tests
110)
108111
109#112#
110# STANDALONE layout113# STANDALONE layout
@@ -135,7 +138,7 @@
135#138#
136# RPM layout139# RPM layout
137#140#
138# See "SPECIFIC-ULN/mysql-5.5-libdir.patch" for the differences141# See "packaging/rpm-uln/mysql-5.5-libdir.patch" for the differences
139# which apply to RPMs in ULN (Oracle Linux), that patch file will142# which apply to RPMs in ULN (Oracle Linux), that patch file will
140# be applied at build time via "rpmbuild".143# be applied at build time via "rpmbuild".
141#144#
142145
=== modified file 'Percona-Server/cmake/mysql_version.cmake'
--- Percona-Server/cmake/mysql_version.cmake 2012-08-22 01:40:20 +0000
+++ Percona-Server/cmake/mysql_version.cmake 2013-02-13 06:17:00 +0000
@@ -54,7 +54,7 @@
54 ENDIF()54 ENDIF()
5555
56 SET(VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}${EXTRA_VERSION}")56 SET(VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}${EXTRA_VERSION}")
57 MESSAGE("-- MySQL ${VERSION}")57 MESSAGE(STATUS "MySQL ${VERSION}")
58 SET(MYSQL_BASE_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}" CACHE INTERNAL "MySQL Base version")58 SET(MYSQL_BASE_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}" CACHE INTERNAL "MySQL Base version")
59 SET(MYSQL_NO_DASH_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}")59 SET(MYSQL_NO_DASH_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}")
60 # Use NDBVERSION irregardless of whether this is Cluster or not, if not60 # Use NDBVERSION irregardless of whether this is Cluster or not, if not
6161
=== modified file 'Percona-Server/cmake/package_name.cmake'
--- Percona-Server/cmake/package_name.cmake 2012-08-22 01:40:20 +0000
+++ Percona-Server/cmake/package_name.cmake 2013-02-13 06:17:00 +0000
@@ -122,7 +122,7 @@
122 SET(package_name "mysql${PRODUCT_TAG}-${VERSION}-${SYSTEM_NAME_AND_PROCESSOR}")122 SET(package_name "mysql${PRODUCT_TAG}-${VERSION}-${SYSTEM_NAME_AND_PROCESSOR}")
123 ENDIF()123 ENDIF()
124124
125 MESSAGE("-- Packaging as: ${package_name}")125 MESSAGE(STATUS "Packaging as: ${package_name}")
126126
127 # Sometimes package suffix is added (something like "-icc-glibc23")127 # Sometimes package suffix is added (something like "-icc-glibc23")
128 IF(PACKAGE_SUFFIX)128 IF(PACKAGE_SUFFIX)
129129
=== modified file 'Percona-Server/cmake/plugin.cmake'
--- Percona-Server/cmake/plugin.cmake 2011-09-21 11:01:41 +0000
+++ Percona-Server/cmake/plugin.cmake 2013-02-13 06:17:00 +0000
@@ -39,6 +39,7 @@
39 GET_FILENAME_COMPONENT(fname ${cfile} NAME)39 GET_FILENAME_COMPONENT(fname ${cfile} NAME)
40 FILE(APPEND ${CMAKE_SOURCE_DIR}/mysql-test/collections/${fname} "${contents}")40 FILE(APPEND ${CMAKE_SOURCE_DIR}/mysql-test/collections/${fname} "${contents}")
41 FILE(APPEND ${fcopied} "${fname}\n")41 FILE(APPEND ${fcopied} "${fname}\n")
42 MESSAGE(STATUS "Appended ${cfile}")
42 ENDFOREACH()43 ENDFOREACH()
43 ENDIF()44 ENDIF()
44ENDMACRO()45ENDMACRO()
4546
=== modified file 'Percona-Server/cmd-line-utils/libedit/vi.c'
--- Percona-Server/cmd-line-utils/libedit/vi.c 2011-10-13 19:47:46 +0000
+++ Percona-Server/cmd-line-utils/libedit/vi.c 2013-02-13 06:17:00 +0000
@@ -1028,7 +1028,8 @@
1028 close(fd);1028 close(fd);
1029 return CC_ERROR;1029 return CC_ERROR;
1030 }1030 }
1031 line = el_malloc(len * sizeof(*line));1031 /* XXXMYSQL: Make static analyzer happy */
1032 line = el_malloc((len+1) * sizeof(*line));
1032 if (line == NULL) {1033 if (line == NULL) {
1033 el_free(cp);1034 el_free(cp);
1034 return CC_ERROR;1035 return CC_ERROR;
10351036
=== modified file 'Percona-Server/configure.cmake'
--- Percona-Server/configure.cmake 2012-08-22 01:40:20 +0000
+++ Percona-Server/configure.cmake 2013-02-13 06:17:00 +0000
@@ -323,15 +323,14 @@
323ENDIF()323ENDIF()
324324
325# Figure out threading library325# Figure out threading library
326#326# Defines CMAKE_USE_PTHREADS_INIT and CMAKE_THREAD_LIBS_INIT.
327FIND_PACKAGE (Threads)327FIND_PACKAGE (Threads)
328328
329FUNCTION(MY_CHECK_PTHREAD_ONCE_INIT)329FUNCTION(MY_CHECK_PTHREAD_ONCE_INIT)
330 CHECK_C_COMPILER_FLAG("-Werror" HAVE_WERROR_FLAG)330 CHECK_C_COMPILER_FLAG("-Werror" HAVE_WERROR_FLAG)
331 IF(NOT HAVE_WERROR_FLAG)331 IF(HAVE_WERROR_FLAG)
332 RETURN()332 SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Werror")
333 ENDIF()333 ENDIF()
334 SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Werror")
335 CHECK_C_SOURCE_COMPILES("334 CHECK_C_SOURCE_COMPILES("
336 #include <pthread.h>335 #include <pthread.h>
337 void foo(void) {}336 void foo(void) {}
338337
=== modified file 'Percona-Server/dbug/dbug.c'
--- Percona-Server/dbug/dbug.c 2012-12-04 08:24:59 +0000
+++ Percona-Server/dbug/dbug.c 2013-02-13 06:17:00 +0000
@@ -667,10 +667,11 @@
667 /* fall through */667 /* fall through */
668 case 'a':668 case 'a':
669 case 'o':669 case 'o':
670 /* In case we already have an open file. */
671 if (!is_shared(stack, out_file))
672 DBUGCloseFile(cs, stack->out_file);
670 if (sign < 0)673 if (sign < 0)
671 {674 {
672 if (!is_shared(stack, out_file))
673 DBUGCloseFile(cs, stack->out_file);
674 stack->flags &= ~FLUSH_ON_WRITE;675 stack->flags &= ~FLUSH_ON_WRITE;
675 stack->out_file= stderr;676 stack->out_file= stderr;
676 break;677 break;
677678
=== modified file 'Percona-Server/extra/yassl/include/yassl_int.hpp'
--- Percona-Server/extra/yassl/include/yassl_int.hpp 2012-10-16 06:21:51 +0000
+++ Percona-Server/extra/yassl/include/yassl_int.hpp 2013-02-13 06:17:00 +0000
@@ -278,6 +278,7 @@
278278
279 ~Sessions();279 ~Sessions();
280280
281 friend void Session_initialize();
281 friend Sessions& GetSessions(); // singleton creator282 friend Sessions& GetSessions(); // singleton creator
282private:283private:
283 Sessions(const Sessions&); // hide copy284 Sessions(const Sessions&); // hide copy
284285
=== modified file 'Percona-Server/extra/yassl/src/buffer.cpp'
--- Percona-Server/extra/yassl/src/buffer.cpp 2012-10-16 06:21:51 +0000
+++ Percona-Server/extra/yassl/src/buffer.cpp 2013-02-13 06:17:00 +0000
@@ -23,6 +23,8 @@
23 */23 */
2424
2525
26// First include (the generated) my_config.h, to get correct platform defines.
27#include "my_config.h"
26#include <string.h> // memcpy28#include <string.h> // memcpy
27#include "runtime.hpp"29#include "runtime.hpp"
28#include "buffer.hpp"30#include "buffer.hpp"
2931
=== modified file 'Percona-Server/extra/yassl/src/handshake.cpp'
--- Percona-Server/extra/yassl/src/handshake.cpp 2012-10-16 06:21:51 +0000
+++ Percona-Server/extra/yassl/src/handshake.cpp 2013-02-13 06:17:00 +0000
@@ -762,8 +762,14 @@
762762
763 while (buffer.get_current() < hdr.length_ + RECORD_HEADER + offset) {763 while (buffer.get_current() < hdr.length_ + RECORD_HEADER + offset) {
764 // each message in record, can be more than 1 if not encrypted764 // each message in record, can be more than 1 if not encrypted
765 if (ssl.getSecurity().get_parms().pending_ == false) // cipher on765 if (ssl.getSecurity().get_parms().pending_ == false) { // cipher on
766 // sanity check for malicious/corrupted/illegal input
767 if (buffer.get_remaining() < hdr.length_) {
768 ssl.SetError(bad_input);
769 return 0;
770 }
766 decrypt_message(ssl, buffer, hdr.length_);771 decrypt_message(ssl, buffer, hdr.length_);
772 }
767 773
768 mySTL::auto_ptr<Message> msg(mf.CreateObject(hdr.type_));774 mySTL::auto_ptr<Message> msg(mf.CreateObject(hdr.type_));
769 if (!msg.get()) {775 if (!msg.get()) {
770776
=== modified file 'Percona-Server/extra/yassl/src/yassl_int.cpp'
--- Percona-Server/extra/yassl/src/yassl_int.cpp 2012-10-16 06:21:51 +0000
+++ Percona-Server/extra/yassl/src/yassl_int.cpp 2013-02-13 06:17:00 +0000
@@ -17,16 +17,19 @@
17 * draft along with type conversion functions.17 * draft along with type conversion functions.
18 */18 */
1919
20// First include (the generated) my_config.h, to get correct platform defines.
21#include "my_config.h"
22#ifdef __WIN__
23#include<Windows.h>
24#else
25#include <pthread.h>
26#endif
27
20#include "runtime.hpp"28#include "runtime.hpp"
21#include "yassl_int.hpp"29#include "yassl_int.hpp"
22#include "handshake.hpp"30#include "handshake.hpp"
23#include "timer.hpp"31#include "timer.hpp"
2432
25#ifdef _POSIX_THREADS
26 #include "pthread.h"
27#endif
28
29
30#ifdef HAVE_LIBZ33#ifdef HAVE_LIBZ
31 #include "zlib.h"34 #include "zlib.h"
32#endif35#endif
@@ -719,6 +722,58 @@
719 }722 }
720}723}
721724
725#ifdef __WIN__
726typedef volatile LONG yassl_pthread_once_t;
727#define YASSL_PTHREAD_ONCE_INIT 0
728#define YASSL_PTHREAD_ONCE_INPROGRESS 1
729#define YASSL_PTHREAD_ONCE_DONE 2
730
731int yassl_pthread_once(yassl_pthread_once_t *once_control,
732 void (*init_routine)(void))
733{
734 LONG state;
735
736 /*
737 Do "dirty" read to find out if initialization is already done, to
738 save an interlocked operation in common case. Memory barriers are ensured by
739 Visual C++ volatile implementation.
740 */
741 if (*once_control == YASSL_PTHREAD_ONCE_DONE)
742 return 0;
743
744 state= InterlockedCompareExchange(once_control, YASSL_PTHREAD_ONCE_INPROGRESS,
745 YASSL_PTHREAD_ONCE_INIT);
746
747 switch(state)
748 {
749 case YASSL_PTHREAD_ONCE_INIT:
750 /* This is initializer thread */
751 (*init_routine)();
752 *once_control= YASSL_PTHREAD_ONCE_DONE;
753 break;
754
755 case YASSL_PTHREAD_ONCE_INPROGRESS:
756 /* init_routine in progress. Wait for its completion */
757 while(*once_control == YASSL_PTHREAD_ONCE_INPROGRESS)
758 {
759 Sleep(1);
760 }
761 break;
762 case YASSL_PTHREAD_ONCE_DONE:
763 /* Nothing to do */
764 break;
765 }
766 return 0;
767}
768#else
769#define yassl_pthread_once_t pthread_once_t
770#if defined(PTHREAD_ONCE_INITIALIZER)
771#define YASSL_PTHREAD_ONCE_INIT PTHREAD_ONCE_INITIALIZER
772#else
773#define YASSL_PTHREAD_ONCE_INIT PTHREAD_ONCE_INIT
774#endif
775#define yassl_pthread_once(C,F) pthread_once(C,F)
776#endif // __WIN__
722777
723// store peer's random778// store peer's random
724void SSL::set_random(const opaque* random, ConnectionEnd sender)779void SSL::set_random(const opaque* random, ConnectionEnd sender)
@@ -1566,11 +1621,22 @@
15661621
15671622
1568static Sessions* sessionsInstance = 0;1623static Sessions* sessionsInstance = 0;
1624static yassl_pthread_once_t session_created= YASSL_PTHREAD_ONCE_INIT;
1625
1626void Session_initialize()
1627{
1628 sessionsInstance = NEW_YS Sessions;
1629}
1630
1631extern "C"
1632{
1633 static void c_session_initialize() { Session_initialize(); }
1634}
1635
15691636
1570Sessions& GetSessions()1637Sessions& GetSessions()
1571{1638{
1572 if (!sessionsInstance)1639 yassl_pthread_once(&session_created, c_session_initialize);
1573 sessionsInstance = NEW_YS Sessions;
1574 return *sessionsInstance;1640 return *sessionsInstance;
1575}1641}
15761642
@@ -1826,6 +1892,8 @@
1826}1892}
18271893
18281894
1895extern "C"
1896{
1829static int1897static int
1830default_password_callback(char * buffer, int size_arg, int rwflag,1898default_password_callback(char * buffer, int size_arg, int rwflag,
1831 void * /* unused: callback_data */)1899 void * /* unused: callback_data */)
@@ -1854,7 +1922,7 @@
1854 free(passwd);1922 free(passwd);
1855 return passwd_len;1923 return passwd_len;
1856}1924}
18571925}
18581926
1859SSL_CTX::SSL_CTX(SSL_METHOD* meth) 1927SSL_CTX::SSL_CTX(SSL_METHOD* meth)
1860 : method_(meth), certificate_(0), privateKey_(0), 1928 : method_(meth), certificate_(0), privateKey_(0),
18611929
=== modified file 'Percona-Server/include/errmsg.h'
--- Percona-Server/include/errmsg.h 2012-08-22 01:40:20 +0000
+++ Percona-Server/include/errmsg.h 2013-02-13 06:17:00 +0000
@@ -103,7 +103,8 @@
103#define CR_ALREADY_CONNECTED 2058103#define CR_ALREADY_CONNECTED 2058
104#define CR_AUTH_PLUGIN_CANNOT_LOAD 2059104#define CR_AUTH_PLUGIN_CANNOT_LOAD 2059
105#define CR_DUPLICATE_CONNECTION_ATTR 2060105#define CR_DUPLICATE_CONNECTION_ATTR 2060
106#define CR_ERROR_LAST /*Copy last error nr:*/ 2060106#define CR_AUTH_PLUGIN_ERR 2061
107#define CR_ERROR_LAST /*Copy last error nr:*/ 2061
107/* Add error numbers before CR_ERROR_LAST and change it accordingly. */108/* Add error numbers before CR_ERROR_LAST and change it accordingly. */
108109
109#endif /* ERRMSG_INCLUDED */110#endif /* ERRMSG_INCLUDED */
110111
=== modified file 'Percona-Server/include/m_ctype.h'
--- Percona-Server/include/m_ctype.h 2012-08-22 01:40:20 +0000
+++ Percona-Server/include/m_ctype.h 2013-02-13 06:17:00 +0000
@@ -263,6 +263,8 @@
263} MY_CHARSET_LOADER;263} MY_CHARSET_LOADER;
264264
265265
266extern int (*my_string_stack_guard)(int);
267
266/* See strings/CHARSET_INFO.txt for information about this structure */268/* See strings/CHARSET_INFO.txt for information about this structure */
267typedef struct my_collation_handler_st269typedef struct my_collation_handler_st
268{270{
269271
=== modified file 'Percona-Server/include/my_atomic.h'
--- Percona-Server/include/my_atomic.h 2011-06-30 15:46:53 +0000
+++ Percona-Server/include/my_atomic.h 2013-02-13 06:17:00 +0000
@@ -280,7 +280,9 @@
280280
281#define MY_ATOMIC_OK 0281#define MY_ATOMIC_OK 0
282#define MY_ATOMIC_NOT_1CPU 1282#define MY_ATOMIC_NOT_1CPU 1
283C_MODE_START
283extern int my_atomic_initialize();284extern int my_atomic_initialize();
285C_MODE_END
284286
285#endif287#endif
286288
287289
=== modified file 'Percona-Server/include/my_base.h'
--- Percona-Server/include/my_base.h 2012-10-16 06:21:51 +0000
+++ Percona-Server/include/my_base.h 2013-02-13 06:17:00 +0000
@@ -477,7 +477,8 @@
477#define HA_FTS_INVALID_DOCID 182 /* Invalid InnoDB Doc ID */477#define HA_FTS_INVALID_DOCID 182 /* Invalid InnoDB Doc ID */
478#define HA_ERR_TABLE_IN_FK_CHECK 183 /* Table being used in foreign key check */478#define HA_ERR_TABLE_IN_FK_CHECK 183 /* Table being used in foreign key check */
479#define HA_ERR_TABLESPACE_EXISTS 184 /* The tablespace existed in storage engine */479#define HA_ERR_TABLESPACE_EXISTS 184 /* The tablespace existed in storage engine */
480#define HA_ERR_LAST 184 /* Copy of last error nr */480#define HA_ERR_TOO_MANY_FIELDS 185 /* Table has too many columns */
481#define HA_ERR_LAST 185 /* Copy of last error nr */
481482
482/* Number of different errors */483/* Number of different errors */
483#define HA_ERR_ERRORS (HA_ERR_LAST - HA_ERR_FIRST + 1)484#define HA_ERR_ERRORS (HA_ERR_LAST - HA_ERR_FIRST + 1)
484485
=== modified file 'Percona-Server/include/my_getopt.h'
--- Percona-Server/include/my_getopt.h 2012-08-31 20:51:54 +0000
+++ Percona-Server/include/my_getopt.h 2013-02-13 06:17:00 +0000
@@ -109,6 +109,11 @@
109109
110extern int handle_options (int *argc, char ***argv, 110extern int handle_options (int *argc, char ***argv,
111 const struct my_option *longopts, my_get_one_option);111 const struct my_option *longopts, my_get_one_option);
112extern int my_handle_options (int *argc, char ***argv,
113 const struct my_option *longopts,
114 my_get_one_option,
115 const char **command_list);
116extern void my_cleanup_options(const struct my_option *options);
112extern void my_cleanup_options(const struct my_option *options);117extern void my_cleanup_options(const struct my_option *options);
113extern void my_print_help(const struct my_option *options);118extern void my_print_help(const struct my_option *options);
114extern void my_print_variables(const struct my_option *options);119extern void my_print_variables(const struct my_option *options);
115120
=== modified file 'Percona-Server/include/my_pthread.h'
--- Percona-Server/include/my_pthread.h 2012-08-22 01:40:20 +0000
+++ Percona-Server/include/my_pthread.h 2013-02-13 06:17:00 +0000
@@ -462,14 +462,12 @@
462#ifdef HAVE_TIMESPEC_TS_SEC462#ifdef HAVE_TIMESPEC_TS_SEC
463#ifndef diff_timespec463#ifndef diff_timespec
464#define diff_timespec(TS1, TS2) \464#define diff_timespec(TS1, TS2) \
465 (((TS1.ts_sec * 1000000000) + TS1.ts_nsec) - \465 ((TS1.ts_sec - TS2.ts_sec) * 1000000000ULL + TS1.ts_nsec - TS2.ts_nsec)
466 ((TS2.ts_sec * 1000000000) + TS2.ts_nsec))
467#endif /* !diff_timespec */466#endif /* !diff_timespec */
468#else467#else
469#ifndef diff_timespec468#ifndef diff_timespec
470#define diff_timespec(TS1, TS2) \469#define diff_timespec(TS1, TS2) \
471 (((TS1.tv_sec * 1000000000) + TS1.tv_nsec) - \470 ((TS1.tv_sec - TS2.tv_sec) * 1000000000ULL + TS1.tv_nsec - TS2.tv_nsec)
472 ((TS2.tv_sec * 1000000000) + TS2.tv_nsec))
473#endif /* !diff_timespec */471#endif /* !diff_timespec */
474#endif /* HAVE_TIMESPEC_TS_SEC */472#endif /* HAVE_TIMESPEC_TS_SEC */
475473
476474
=== modified file 'Percona-Server/include/my_sys.h'
--- Percona-Server/include/my_sys.h 2013-01-21 13:20:09 +0000
+++ Percona-Server/include/my_sys.h 2013-02-13 06:17:00 +0000
@@ -159,6 +159,22 @@
159extern char *my_strdup(const char *from,myf MyFlags);159extern char *my_strdup(const char *from,myf MyFlags);
160extern char *my_strndup(const char *from, size_t length,160extern char *my_strndup(const char *from, size_t length,
161 myf MyFlags);161 myf MyFlags);
162
163/*
164 Switch to my_malloc() if the memory block to be allocated is bigger than
165 max_alloca_sz.
166*/
167#ifndef HAVE_ALLOCA
168#define my_safe_alloca(size, max_alloca_sz) my_alloca(size)
169#define my_safe_afree(ptr, size, max_alloca_sz) my_afree(ptr)
170#else
171#define my_safe_alloca(size, max_alloca_sz) ((size <= max_alloca_sz) ? \
172 my_alloca(size) : \
173 my_malloc(size, MYF(0)))
174#define my_safe_afree(ptr, size, max_alloca_sz) if (size > max_alloca_sz) \
175 my_free(ptr)
176#endif /* #ifndef HAVE_ALLOCA */
177
162#if !defined(DBUG_OFF) || defined(HAVE_VALGRIND)178#if !defined(DBUG_OFF) || defined(HAVE_VALGRIND)
163/**179/**
164 Put bad content in memory to be sure it will segfault if dereferenced.180 Put bad content in memory to be sure it will segfault if dereferenced.
@@ -616,6 +632,13 @@
616extern int check_if_legal_filename(const char *path);632extern int check_if_legal_filename(const char *path);
617extern int check_if_legal_tablename(const char *path);633extern int check_if_legal_tablename(const char *path);
618634
635#ifdef __WIN__
636extern my_bool is_filename_allowed(const char *name, size_t length,
637 my_bool allow_current_dir);
638#else /* __WIN__ */
639# define is_filename_allowed(name, length, allow_cwd) (TRUE)
640#endif /* __WIN__ */
641
619#ifdef _WIN32642#ifdef _WIN32
620extern int nt_share_delete(const char *name,myf MyFlags);643extern int nt_share_delete(const char *name,myf MyFlags);
621#define my_delete_allow_opened(fname,flags) nt_share_delete((fname),(flags))644#define my_delete_allow_opened(fname,flags) nt_share_delete((fname),(flags))
@@ -687,7 +710,7 @@
687extern size_t strlength(const char *str);710extern size_t strlength(const char *str);
688extern void pack_dirname(char * to,const char *from);711extern void pack_dirname(char * to,const char *from);
689extern size_t normalize_dirname(char * to, const char *from);712extern size_t normalize_dirname(char * to, const char *from);
690extern size_t unpack_dirname(char * to,const char *from);713extern size_t unpack_dirname(char * to,const char *from, my_bool *is_symdir);
691extern size_t cleanup_dirname(char * to,const char *from);714extern size_t cleanup_dirname(char * to,const char *from);
692extern size_t system_filename(char * to,const char *from);715extern size_t system_filename(char * to,const char *from);
693extern size_t unpack_filename(char * to,const char *from);716extern size_t unpack_filename(char * to,const char *from);
@@ -758,7 +781,8 @@
758extern void my_b_seek(IO_CACHE *info,my_off_t pos);781extern void my_b_seek(IO_CACHE *info,my_off_t pos);
759extern size_t my_b_gets(IO_CACHE *info, char *to, size_t max_length);782extern size_t my_b_gets(IO_CACHE *info, char *to, size_t max_length);
760extern my_off_t my_b_filelength(IO_CACHE *info);783extern my_off_t my_b_filelength(IO_CACHE *info);
761extern size_t my_b_printf(IO_CACHE *info, const char* fmt, ...);784extern size_t my_b_printf(IO_CACHE *info, const char* fmt, ...)
785 ATTRIBUTE_FORMAT(printf, 2, 3);
762extern size_t my_b_vprintf(IO_CACHE *info, const char* fmt, va_list ap);786extern size_t my_b_vprintf(IO_CACHE *info, const char* fmt, va_list ap);
763extern my_bool open_cached_file(IO_CACHE *cache,const char *dir,787extern my_bool open_cached_file(IO_CACHE *cache,const char *dir,
764 const char *prefix, size_t cache_size,788 const char *prefix, size_t cache_size,
765789
=== modified file 'Percona-Server/include/mysql.h'
--- Percona-Server/include/mysql.h 2012-10-16 06:21:51 +0000
+++ Percona-Server/include/mysql.h 2013-02-13 06:17:00 +0000
@@ -174,7 +174,8 @@
174 MYSQL_OPT_CONNECT_ATTR_RESET, MYSQL_OPT_CONNECT_ATTR_ADD,174 MYSQL_OPT_CONNECT_ATTR_RESET, MYSQL_OPT_CONNECT_ATTR_ADD,
175 MYSQL_OPT_CONNECT_ATTR_DELETE,175 MYSQL_OPT_CONNECT_ATTR_DELETE,
176 MYSQL_SERVER_PUBLIC_KEY,176 MYSQL_SERVER_PUBLIC_KEY,
177 MYSQL_ENABLE_CLEARTEXT_PLUGIN177 MYSQL_ENABLE_CLEARTEXT_PLUGIN,
178 MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS
178};179};
179180
180/**181/**
181182
=== modified file 'Percona-Server/include/mysql.h.pp'
--- Percona-Server/include/mysql.h.pp 2012-10-16 06:21:51 +0000
+++ Percona-Server/include/mysql.h.pp 2013-02-13 06:17:00 +0000
@@ -271,7 +271,8 @@
271 MYSQL_OPT_CONNECT_ATTR_RESET, MYSQL_OPT_CONNECT_ATTR_ADD,271 MYSQL_OPT_CONNECT_ATTR_RESET, MYSQL_OPT_CONNECT_ATTR_ADD,
272 MYSQL_OPT_CONNECT_ATTR_DELETE,272 MYSQL_OPT_CONNECT_ATTR_DELETE,
273 MYSQL_SERVER_PUBLIC_KEY,273 MYSQL_SERVER_PUBLIC_KEY,
274 MYSQL_ENABLE_CLEARTEXT_PLUGIN274 MYSQL_ENABLE_CLEARTEXT_PLUGIN,
275 MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS
275};276};
276struct st_mysql_options_extention;277struct st_mysql_options_extention;
277struct st_mysql_options {278struct st_mysql_options {
278279
=== modified file 'Percona-Server/include/mysql/plugin.h'
--- Percona-Server/include/mysql/plugin.h 2012-08-22 01:40:20 +0000
+++ Percona-Server/include/mysql/plugin.h 2013-02-13 06:17:00 +0000
@@ -497,7 +497,7 @@
497/*497/*
498 API for Replication plugin. (MYSQL_REPLICATION_PLUGIN)498 API for Replication plugin. (MYSQL_REPLICATION_PLUGIN)
499*/499*/
500 #define MYSQL_REPLICATION_INTERFACE_VERSION 0x0100500 #define MYSQL_REPLICATION_INTERFACE_VERSION 0x0200
501 501
502 /**502 /**
503 Replication plugin descriptor503 Replication plugin descriptor
504504
=== modified file 'Percona-Server/include/mysql/psi/psi.h'
--- Percona-Server/include/mysql/psi/psi.h 2012-10-16 06:21:51 +0000
+++ Percona-Server/include/mysql/psi/psi.h 2013-02-13 06:17:00 +0000
@@ -975,6 +975,9 @@
975};975};
976typedef struct PSI_digest_locker_state PSI_digest_locker_state;976typedef struct PSI_digest_locker_state PSI_digest_locker_state;
977977
978/* Duplicate of NAME_LEN, to avoid dependency on mysql_com.h */
979#define PSI_SCHEMA_NAME_LEN (64 * 3)
980
978/**981/**
979 State data storage for @c get_thread_statement_locker_v1_t,982 State data storage for @c get_thread_statement_locker_v1_t,
980 @c get_thread_statement_locker_v1_t.983 @c get_thread_statement_locker_v1_t.
@@ -1035,6 +1038,10 @@
1035 ulong m_sort_scan;1038 ulong m_sort_scan;
1036 /** Statement digest. */1039 /** Statement digest. */
1037 PSI_digest_locker_state m_digest_state;1040 PSI_digest_locker_state m_digest_state;
1041 /** Current schema name. */
1042 char m_schema_name[PSI_SCHEMA_NAME_LEN];
1043 /** Length in bytes of @c m_schema_name. */
1044 uint m_schema_name_length;
1038};1045};
10391046
1040/**1047/**
@@ -1299,7 +1306,7 @@
1299 @return an instrumented thread1306 @return an instrumented thread
1300*/1307*/
1301typedef struct PSI_thread* (*new_thread_v1_t)1308typedef struct PSI_thread* (*new_thread_v1_t)
1302 (PSI_thread_key key, const void *identity, ulong thread_id);1309 (PSI_thread_key key, const void *identity, ulonglong thread_id);
13031310
1304/**1311/**
1305 Assign an id to an instrumented thread.1312 Assign an id to an instrumented thread.
@@ -1307,7 +1314,7 @@
1307 @param id the id to assign1314 @param id the id to assign
1308*/1315*/
1309typedef void (*set_thread_id_v1_t)(struct PSI_thread *thread,1316typedef void (*set_thread_id_v1_t)(struct PSI_thread *thread,
1310 unsigned long id);1317 ulonglong id);
13111318
1312/**1319/**
1313 Get the instrumentation for the running thread.1320 Get the instrumentation for the running thread.
13141321
=== modified file 'Percona-Server/include/mysql/psi/psi_abi_v1.h.pp'
--- Percona-Server/include/mysql/psi/psi_abi_v1.h.pp 2012-10-16 06:21:51 +0000
+++ Percona-Server/include/mysql/psi/psi_abi_v1.h.pp 2013-02-13 06:17:00 +0000
@@ -281,6 +281,8 @@
281 ulong m_sort_rows;281 ulong m_sort_rows;
282 ulong m_sort_scan;282 ulong m_sort_scan;
283 PSI_digest_locker_state m_digest_state;283 PSI_digest_locker_state m_digest_state;
284 char m_schema_name[(64 * 3)];
285 uint m_schema_name_length;
284};286};
285struct PSI_socket_locker_state_v1287struct PSI_socket_locker_state_v1
286{288{
@@ -344,9 +346,9 @@
344 const pthread_attr_t *attr,346 const pthread_attr_t *attr,
345 void *(*start_routine)(void*), void *arg);347 void *(*start_routine)(void*), void *arg);
346typedef struct PSI_thread* (*new_thread_v1_t)348typedef struct PSI_thread* (*new_thread_v1_t)
347 (PSI_thread_key key, const void *identity, ulong thread_id);349 (PSI_thread_key key, const void *identity, ulonglong thread_id);
348typedef void (*set_thread_id_v1_t)(struct PSI_thread *thread,350typedef void (*set_thread_id_v1_t)(struct PSI_thread *thread,
349 unsigned long id);351 ulonglong id);
350typedef struct PSI_thread* (*get_thread_v1_t)(void);352typedef struct PSI_thread* (*get_thread_v1_t)(void);
351typedef void (*set_thread_user_v1_t)(const char *user, int user_len);353typedef void (*set_thread_user_v1_t)(const char *user, int user_len);
352typedef void (*set_thread_user_host_v1_t)(const char *user, int user_len,354typedef void (*set_thread_user_host_v1_t)(const char *user, int user_len,
353355
=== modified file 'Percona-Server/include/mysql/thread_pool_priv.h'
--- Percona-Server/include/mysql/thread_pool_priv.h 2012-10-16 06:21:51 +0000
+++ Percona-Server/include/mysql/thread_pool_priv.h 2013-02-13 06:17:00 +0000
@@ -62,6 +62,7 @@
62void thd_set_mysys_var(THD *thd, st_my_thread_var *mysys_var);62void thd_set_mysys_var(THD *thd, st_my_thread_var *mysys_var);
63ulong thd_get_net_wait_timeout(THD *thd);63ulong thd_get_net_wait_timeout(THD *thd);
64my_socket thd_get_fd(THD *thd);64my_socket thd_get_fd(THD *thd);
65int thd_store_globals(THD* thd);
6566
66/* Interface to global thread list iterator functions */67/* Interface to global thread list iterator functions */
67Thread_iterator thd_get_global_thread_list_begin();68Thread_iterator thd_get_global_thread_list_begin();
6869
=== modified file 'Percona-Server/include/mysql_com.h'
--- Percona-Server/include/mysql_com.h 2012-10-16 06:21:51 +0000
+++ Percona-Server/include/mysql_com.h 2013-02-13 06:17:00 +0000
@@ -180,6 +180,9 @@
180/* Enable authentication response packet to be larger than 255 bytes. */180/* Enable authentication response packet to be larger than 255 bytes. */
181#define CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA (1UL << 21)181#define CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA (1UL << 21)
182182
183/* Don't close the connection for a connection with expired password. */
184#define CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS (1UL << 22)
185
183#define CLIENT_SSL_VERIFY_SERVER_CERT (1UL << 30)186#define CLIENT_SSL_VERIFY_SERVER_CERT (1UL << 30)
184#define CLIENT_REMEMBER_OPTIONS (1UL << 31)187#define CLIENT_REMEMBER_OPTIONS (1UL << 31)
185188
@@ -190,30 +193,32 @@
190#endif193#endif
191194
192/* Gather all possible capabilites (flags) supported by the server */195/* Gather all possible capabilites (flags) supported by the server */
193#define CLIENT_ALL_FLAGS (CLIENT_LONG_PASSWORD | \196#define CLIENT_ALL_FLAGS (CLIENT_LONG_PASSWORD \
194 CLIENT_FOUND_ROWS | \197 | CLIENT_FOUND_ROWS \
195 CLIENT_LONG_FLAG | \198 | CLIENT_LONG_FLAG \
196 CLIENT_CONNECT_WITH_DB | \199 | CLIENT_CONNECT_WITH_DB \
197 CLIENT_NO_SCHEMA | \200 | CLIENT_NO_SCHEMA \
198 CLIENT_COMPRESS | \201 | CLIENT_COMPRESS \
199 CLIENT_ODBC | \202 | CLIENT_ODBC \
200 CLIENT_LOCAL_FILES | \203 | CLIENT_LOCAL_FILES \
201 CLIENT_IGNORE_SPACE | \204 | CLIENT_IGNORE_SPACE \
202 CLIENT_PROTOCOL_41 | \205 | CLIENT_PROTOCOL_41 \
203 CLIENT_INTERACTIVE | \206 | CLIENT_INTERACTIVE \
204 CLIENT_SSL | \207 | CLIENT_SSL \
205 CLIENT_IGNORE_SIGPIPE | \208 | CLIENT_IGNORE_SIGPIPE \
206 CLIENT_TRANSACTIONS | \209 | CLIENT_TRANSACTIONS \
207 CLIENT_RESERVED | \210 | CLIENT_RESERVED \
208 CLIENT_SECURE_CONNECTION | \211 | CLIENT_SECURE_CONNECTION \
209 CLIENT_MULTI_STATEMENTS | \212 | CLIENT_MULTI_STATEMENTS \
210 CLIENT_MULTI_RESULTS | \213 | CLIENT_MULTI_RESULTS \
211 CLIENT_PS_MULTI_RESULTS | \214 | CLIENT_PS_MULTI_RESULTS \
212 CLIENT_SSL_VERIFY_SERVER_CERT | \215 | CLIENT_SSL_VERIFY_SERVER_CERT \
213 CLIENT_REMEMBER_OPTIONS | \216 | CLIENT_REMEMBER_OPTIONS \
214 CLIENT_PLUGIN_AUTH | \217 | CLIENT_PLUGIN_AUTH \
215 CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA | \218 | CLIENT_CONNECT_ATTRS \
216 CLIENT_CONNECT_ATTRS)219 | CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA \
220 | CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS \
221)
217222
218/*223/*
219 Switch off the flags that are optional and depending on build flags224 Switch off the flags that are optional and depending on build flags
220225
=== modified file 'Percona-Server/include/welcome_copyright_notice.h'
--- Percona-Server/include/welcome_copyright_notice.h 2012-08-07 13:56:51 +0000
+++ Percona-Server/include/welcome_copyright_notice.h 2013-02-13 06:17:00 +0000
@@ -16,7 +16,7 @@
16#ifndef _welcome_copyright_notice_h_16#ifndef _welcome_copyright_notice_h_
17#define _welcome_copyright_notice_h_17#define _welcome_copyright_notice_h_
1818
19#define COPYRIGHT_NOTICE_CURRENT_YEAR "2012"19#define COPYRIGHT_NOTICE_CURRENT_YEAR "2013"
2020
21/*21/*
22 This define specifies copyright notice which is displayed by every MySQL22 This define specifies copyright notice which is displayed by every MySQL
2323
=== modified file 'Percona-Server/libmysql/errmsg.c'
--- Percona-Server/libmysql/errmsg.c 2011-09-07 10:08:09 +0000
+++ Percona-Server/libmysql/errmsg.c 2013-02-13 06:17:00 +0000
@@ -85,6 +85,8 @@
85 "The number of columns in the result set differs from the number of bound buffers. You must reset the statement, rebind the result set columns, and execute the statement again",85 "The number of columns in the result set differs from the number of bound buffers. You must reset the statement, rebind the result set columns, and execute the statement again",
86 "This handle is already connected. Use a separate handle for each connection.",86 "This handle is already connected. Use a separate handle for each connection.",
87 "Authentication plugin '%s' cannot be loaded: %s",87 "Authentication plugin '%s' cannot be loaded: %s",
88 "There is an attribute with the same name already",
89 "Authentication plugin '%s' reported error: %s",
88 ""90 ""
89};91};
9092
9193
=== modified file 'Percona-Server/libmysql/libmysql.c'
--- Percona-Server/libmysql/libmysql.c 2012-06-29 14:03:28 +0000
+++ Percona-Server/libmysql/libmysql.c 2013-02-13 06:17:00 +0000
@@ -912,6 +912,16 @@
912{912{
913 uchar buff[4];913 uchar buff[4];
914 DBUG_ENTER("mysql_kill");914 DBUG_ENTER("mysql_kill");
915 /*
916 Sanity check: if ulong is 64-bits, user can submit a PID here that
917 overflows our 32-bit parameter to the somewhat obsolete COM_PROCESS_KILL.
918 If this is the case, we'll flag an error here.
919 The SQL statement KILL CONNECTION is the safer option here.
920 There is an analog of this failsafe in the server as we might see old
921 libmysql connection to a new server as well as the other way around.
922 */
923 if (pid & (~0xfffffffful))
924 DBUG_RETURN(CR_INVALID_CONN_HANDLE);
915 int4store(buff,pid);925 int4store(buff,pid);
916 DBUG_RETURN(simple_command(mysql,COM_PROCESS_KILL,buff,sizeof(buff),0));926 DBUG_RETURN(simple_command(mysql,COM_PROCESS_KILL,buff,sizeof(buff),0));
917}927}
@@ -1059,6 +1069,12 @@
10591069
1060ulong STDCALL mysql_thread_id(MYSQL *mysql)1070ulong STDCALL mysql_thread_id(MYSQL *mysql)
1061{1071{
1072 /*
1073 ulong may be 64-bit, but we currently only transmit 32-bit.
1074 mysql_thread_id() is usually used in conjunction with mysql_kill()
1075 which is similarly limited (and obsolete).
1076 SELECTION CONNECTION_ID() / KILL CONNECTION avoid this issue.
1077 */
1062 return (mysql)->thread_id;1078 return (mysql)->thread_id;
1063}1079}
10641080
@@ -4050,6 +4066,7 @@
4050 stmt->bind was initialized in mysql_stmt_prepare4066 stmt->bind was initialized in mysql_stmt_prepare
4051 stmt->bind overlaps with bind if mysql_stmt_bind_param4067 stmt->bind overlaps with bind if mysql_stmt_bind_param
4052 is called from mysql_stmt_store_result.4068 is called from mysql_stmt_store_result.
4069 BEWARE of buffer overwrite ...
4053 */4070 */
40544071
4055 if (stmt->bind != my_bind)4072 if (stmt->bind != my_bind)
@@ -4222,7 +4239,7 @@
4222 if ((int) stmt->state < (int) MYSQL_STMT_FETCH_DONE)4239 if ((int) stmt->state < (int) MYSQL_STMT_FETCH_DONE)
4223 {4240 {
4224 set_stmt_error(stmt, CR_NO_DATA, unknown_sqlstate, NULL);4241 set_stmt_error(stmt, CR_NO_DATA, unknown_sqlstate, NULL);
4225 return 1;4242 DBUG_RETURN(1);
4226 }4243 }
4227 if (column >= stmt->field_count)4244 if (column >= stmt->field_count)
4228 {4245 {
42294246
=== modified file 'Percona-Server/libmysqld/lib_sql.cc'
--- Percona-Server/libmysqld/lib_sql.cc 2012-10-16 06:21:51 +0000
+++ Percona-Server/libmysqld/lib_sql.cc 2013-02-13 06:17:00 +0000
@@ -626,6 +626,9 @@
626 init_max_user_conn();626 init_max_user_conn();
627 init_update_queries();627 init_update_queries();
628628
629 if (!opt_bootstrap)
630 servers_init(0);
631
629#ifdef HAVE_DLOPEN632#ifdef HAVE_DLOPEN
630#ifndef NO_EMBEDDED_ACCESS_CHECKS633#ifndef NO_EMBEDDED_ACCESS_CHECKS
631 if (!opt_noacl)634 if (!opt_noacl)
632635
=== modified file 'Percona-Server/mysql-test/CMakeLists.txt'
--- Percona-Server/mysql-test/CMakeLists.txt 2012-02-16 09:51:14 +0000
+++ Percona-Server/mysql-test/CMakeLists.txt 2013-02-13 06:17:00 +0000
@@ -1,4 +1,4 @@
1# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.1# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
2# 2#
3# This program is free software; you can redistribute it and/or modify3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by4# it under the terms of the GNU General Public License as published by
@@ -113,8 +113,10 @@
113FILE(GLOB infiles "collections/*.in")113FILE(GLOB infiles "collections/*.in")
114FOREACH(collin ${infiles})114FOREACH(collin ${infiles})
115 STRING(REPLACE ".in" "" collection ${collin})115 STRING(REPLACE ".in" "" collection ${collin})
116 STRING(REPLACE ".in" ".done" colldone ${collin})
116 # Only generate file once117 # Only generate file once
117 IF(NOT EXISTS ${collection})118 IF(NOT EXISTS ${colldone})
118 PROCESS_COLLECTION_INCLUDE(${collin} ${collection})119 PROCESS_COLLECTION_INCLUDE(${collin} ${collection})
120 FILE(APPEND ${colldone} "${collin}\n")
119 ENDIF()121 ENDIF()
120ENDFOREACH()122ENDFOREACH()
121123
=== modified file 'Percona-Server/mysql-test/collections/default.daily'
--- Percona-Server/mysql-test/collections/default.daily 2012-12-04 08:24:59 +0000
+++ Percona-Server/mysql-test/collections/default.daily 2013-02-13 06:17:00 +0000
@@ -1,6 +1,6 @@
1# Default suites in modes normal(which includes binlog format stmt/mixed/row, parts), embedded and ps-protocol1# Default suites in modes normal(which includes binlog format stmt/mixed/row, parts), embedded and ps-protocol
2# Adding "--big-test" option to the default suite, normal(which includes binlog format stmt/mixed/row, parts), embedded and ps-protocol2# Adding "--big-test" option to the default suite, normal(which includes binlog format stmt/mixed/row, parts), embedded and ps-protocol
3perl mysql-test-run.pl --force --timer --big-test --testcase-timeout=90 --debug-server --parallel=auto --experimental=collections/default.experimental --comment=normal-debug-big --vardir=var-normal-debug-big --report-features --skip-test-list=collections/disabled-daily.list --unit-tests3perl mysql-test-run.pl --force --timer --big-test --testcase-timeout=90 --debug-server --parallel=auto --experimental=collections/default.experimental --comment=normal-debug-big --vardir=var-normal-debug-big --report-features --skip-test-list=collections/disabled-daily.list
4perl mysql-test-run.pl --force --timer --big-test --testcase-timeout=60 --debug-server --parallel=auto --experimental=collections/default.experimental --comment=embedded-debug-big --vardir=var-embedded-debug-big --embedded4perl mysql-test-run.pl --force --timer --big-test --testcase-timeout=60 --debug-server --parallel=auto --experimental=collections/default.experimental --comment=embedded-debug-big --vardir=var-embedded-debug-big --embedded
5perl mysql-test-run.pl --force --timer --big-test --testcase-timeout=60 --debug-server --parallel=auto --experimental=collections/default.experimental --comment=ps-debug-big --vardir=var-ps-debug-big --ps-protocol --skip-test-list=collections/disabled-daily.list 5perl mysql-test-run.pl --force --timer --big-test --testcase-timeout=60 --debug-server --parallel=auto --experimental=collections/default.experimental --comment=ps-debug-big --vardir=var-ps-debug-big --ps-protocol --skip-test-list=collections/disabled-daily.list
6# Run the suites that are not part of the default - funcs_2, stress, jp, nist6# Run the suites that are not part of the default - funcs_2, stress, jp, nist
@@ -16,11 +16,11 @@
16perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=rpl_crash_safe_master-debug --vardir=var-rpl_crash_safe_master-debug --suite=rpl --mysqld=--master-info-repository=TABLE --skip-test-list=collections/disabled-daily.list16perl mysql-test-run.pl --force --timer --debug-server --parallel=auto --experimental=collections/default.experimental --comment=rpl_crash_safe_master-debug --vardir=var-rpl_crash_safe_master-debug --suite=rpl --mysqld=--master-info-repository=TABLE --skip-test-list=collections/disabled-daily.list
1717
18# Additional modes for rpl. Multi-Threaded Slave18# Additional modes for rpl. Multi-Threaded Slave
19perl mysql-test-run.pl --timer --debug-server --force --parallel=auto --comment=rpl_MTS-debug --vardir=var-mts-rpl-debug --experimental=collections/default.experimental --skip-ndb --unit-tests --mysqld=--slave-parallel-workers=4 --mysqld=--slave-transaction-retries=0 --suite=rpl19perl mysql-test-run.pl --timer --debug-server --force --parallel=auto --comment=rpl_MTS-debug --vardir=var-mts-rpl-debug --experimental=collections/default.experimental --mysqld=--slave-parallel-workers=4 --mysqld=--slave-transaction-retries=0 --suite=rpl
2020
21# Additional runs for innodb-page-size=4k and 8k21# Additional runs for innodb-page-size=4k and 8k
22perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=n_mix_4k_size --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list --mysqld=--innodb-page-size=4k --skip-test=innodb_ignore_builtin22perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=n_mix_4k_size --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-test-list=collections/disabled-per-push.list --mysqld=--innodb-page-size=4k --skip-test=innodb_ignore_builtin
23perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=n_mix_8k_size --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list --mysqld=--innodb-page-size=8k --skip-test=innodb_ignore_builtin23perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=n_mix_8k_size --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-test-list=collections/disabled-per-push.list --mysqld=--innodb-page-size=8k --skip-test=innodb_ignore_builtin
2424
25#Engine independent tests25#Engine independent tests
26perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-rpl-binlog-row-tests-myisam-engine-debug --experimental=collections/default.experimental --vardir=var-binlog-row-eits-tests-myisam-engine-debug --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=myisam --do-test=rpl --mysqld=--binlog-format=row --skip-test-list=collections/disabled-daily.list26perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-rpl-binlog-row-tests-myisam-engine-debug --experimental=collections/default.experimental --vardir=var-binlog-row-eits-tests-myisam-engine-debug --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=myisam --do-test=rpl --mysqld=--binlog-format=row --skip-test-list=collections/disabled-daily.list
@@ -31,5 +31,5 @@
31perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-tests-innodb-engine-debug --experimental=collections/default.experimental --vardir=var-stmt-eits-tests-innodb-engine-debug --suite=engines/iuds,engines/funcs --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=innodb --mysqld=--innodb --skip-test-list=collections/disabled-daily.list31perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-tests-innodb-engine-debug --experimental=collections/default.experimental --vardir=var-stmt-eits-tests-innodb-engine-debug --suite=engines/iuds,engines/funcs --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=innodb --mysqld=--innodb --skip-test-list=collections/disabled-daily.list
3232
33#Memcached tests33#Memcached tests
34perl mysql-test-run.pl --timer --force --debug-server --comment=memcached-debug --vardir=var-debug-memcached --experimental=collections/default.experimental --skip-ndb --parallel=1 --retry=0 --suite=memcached --mysqld=--innodb-page-size=4k --skip-test-list=collections/disabled-daily.list34perl mysql-test-run.pl --timer --force --debug-server --comment=memcached-debug --vardir=var-debug-memcached --experimental=collections/default.experimental --parallel=1 --retry=0 --suite=memcached --mysqld=--innodb-page-size=4k --skip-test-list=collections/disabled-daily.list
3535
3636
=== modified file 'Percona-Server/mysql-test/collections/default.experimental'
--- Percona-Server/mysql-test/collections/default.experimental 2012-12-04 08:24:59 +0000
+++ Percona-Server/mysql-test/collections/default.experimental 2013-02-13 06:17:00 +0000
@@ -18,13 +18,7 @@
18rpl.rpl_innodb_bug28430 # Bug#1175442518rpl.rpl_innodb_bug28430 # Bug#11754425
19rpl.rpl_show_slave_running # BUG#12346048 2011-04-11 sven fails sporadically on pb219rpl.rpl_show_slave_running # BUG#12346048 2011-04-11 sven fails sporadically on pb2
20rpl.rpl_parallel_switch_sequential # BUG#13626976 2012-02-07 dlenev Fails sporadically on pb220rpl.rpl_parallel_switch_sequential # BUG#13626976 2012-02-07 dlenev Fails sporadically on pb2
21rpl.rpl_report_port # BUG#13812374 2012-05-10 Hemant Fails after the post fix for bug#13812374
2221
23# BUG #59055 : All ndb tests should be removed from the repository
24# Leaving the sys_vars tests for now. sys_vars.all_vars.test fails on removing ndb tests
25sys_vars.ndb_log_update_as_write_basic
26sys_vars.have_ndbcluster_basic
27sys_vars.ndb_log_updated_only_basic
28sys_vars.rpl_init_slave_func # Bug#12535301 2011-05-09 andrei sys_vars.rpl_init_slave_func mismatches in daily-5.522sys_vars.rpl_init_slave_func # Bug#12535301 2011-05-09 andrei sys_vars.rpl_init_slave_func mismatches in daily-5.5
2923
30rpl.rpl_mixed_mts_rec_crash_safe @solaris # Bug#12902514 2011-08-19 andrei mts recovery tests are slow24rpl.rpl_mixed_mts_rec_crash_safe @solaris # Bug#12902514 2011-08-19 andrei mts recovery tests are slow
3125
=== modified file 'Percona-Server/mysql-test/collections/default.push'
--- Percona-Server/mysql-test/collections/default.push 2012-10-16 06:21:51 +0000
+++ Percona-Server/mysql-test/collections/default.push 2013-02-13 06:17:00 +0000
@@ -1,5 +1,5 @@
1perl mysql-test-run.pl --timer --debug-server --force --parallel=auto --comment=n_mix-debug --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list --unit-tests1perl mysql-test-run.pl --timer --debug-server --force --parallel=auto --comment=n_mix-debug --vardir=var-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-test-list=collections/disabled-per-push.list
2perl mysql-test-run.pl --timer --debug-server --force --parallel=auto --comment=main_ps_row-debug --vardir=var-main-ps_row --suite=main --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list2perl mysql-test-run.pl --timer --debug-server --force --parallel=auto --comment=main_ps_row-debug --vardir=var-main-ps_row --suite=main --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental --skip-test-list=collections/disabled-per-push.list
3perl mysql-test-run.pl --timer --debug-server --force --parallel=auto --comment=main_embedded-debug --vardir=var-main_emebbed --suite=main --embedded --experimental=collections/default.experimental --skip-ndb3perl mysql-test-run.pl --timer --debug-server --force --parallel=auto --comment=main_embedded-debug --vardir=var-main_emebbed --suite=main --embedded --experimental=collections/default.experimental
4perl mysql-test-run.pl --timer --debug-server --force --parallel=auto --comment=innodb_4k_size-debug --vardir=var-innodb-4k --experimental=collections/default.experimental --skip-ndb --suite=innodb --mysqld=--innodb-page-size=4k4perl mysql-test-run.pl --timer --debug-server --force --parallel=auto --comment=innodb_4k_size-debug --vardir=var-innodb-4k --experimental=collections/default.experimental --suite=innodb --mysqld=--innodb-page-size=4k
5perl mysql-test-run.pl --timer --debug-server --force --parallel=auto --comment=rpl_binlog_n_mix_MTS-debug --vardir=var-mts-rpl-binlog-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-ndb --unit-tests --mysqld=--slave-parallel-workers=4 --mysqld=--slave-transaction-retries=0 --suite=rpl 5perl mysql-test-run.pl --timer --debug-server --force --parallel=auto --comment=rpl_binlog_n_mix_MTS-debug --vardir=var-mts-rpl-binlog-n_mix --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --mysqld=--slave-parallel-workers=4 --mysqld=--slave-transaction-retries=0 --suite=rpl
66
=== modified file 'Percona-Server/mysql-test/collections/default.release.in'
--- Percona-Server/mysql-test/collections/default.release.in 2012-08-22 01:40:20 +0000
+++ Percona-Server/mysql-test/collections/default.release.in 2013-02-13 06:17:00 +0000
@@ -4,15 +4,15 @@
4# include default.daily4# include default.daily
5# include default.weekly5# include default.weekly
66
7perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=debug --vardir=var-debug --skip-ndbcluster --skip-rpl --report-features --debug-server7perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=debug --vardir=var-debug --skip-rpl --report-features --debug-server
8perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=normal --vardir=var-normal --skip-ndbcluster --report-features8perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=normal --vardir=var-normal --report-features
9perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=ps --vardir=var-ps --skip-ndbcluster --ps-protocol9perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=ps --vardir=var-ps --ps-protocol
10perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=funcs1+ps --vardir=var-funcs_1_ps --suite=funcs_1 --ps-protocol10perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=funcs1+ps --vardir=var-funcs_1_ps --suite=funcs_1 --ps-protocol
11perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=funcs2 --vardir=var-funcs2 --suite=funcs_211perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=funcs2 --vardir=var-funcs2 --suite=funcs_2
12perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=partitions --vardir=var-parts --suite=parts12perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=partitions --vardir=var-parts --suite=parts
13perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=stress --vardir=var-stress --suite=stress13perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=stress --vardir=var-stress --suite=stress
14perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=jp --vardir=var-jp --suite=jp14perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=jp --vardir=var-jp --suite=jp
15perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=embedded --vardir=var-embedded --embedded-server --skip-rpl --skip-ndbcluster15perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=embedded --vardir=var-embedded --embedded-server --skip-rpl
16perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=nist --vardir=var-nist --suite=nist16perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=nist --vardir=var-nist --suite=nist
17perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=nist+ps --vardir=var-nist_ps --suite=nist --ps-protocol17perl mysql-test-run.pl --force --timer --parallel=auto --experimental=collections/default.experimental --comment=nist+ps --vardir=var-nist_ps --suite=nist --ps-protocol
18perl mysql-test-run.pl --timer --force --comment=memcached --vardir=var-memcached --experimental=collections/default.experimental --skip-ndb --parallel=auto --retry=0 --suite=memcached --mysqld=--innodb-page-size=4k18perl mysql-test-run.pl --timer --force --comment=memcached --vardir=var-memcached --experimental=collections/default.experimental --parallel=auto --retry=0 --suite=memcached --mysqld=--innodb-page-size=4k
1919
=== modified file 'Percona-Server/mysql-test/collections/default.weekly'
--- Percona-Server/mysql-test/collections/default.weekly 2012-12-04 08:24:59 +0000
+++ Percona-Server/mysql-test/collections/default.weekly 2013-02-13 06:17:00 +0000
@@ -11,7 +11,7 @@
11# Repeat daily run11# Repeat daily run
12# big-test option for normal runs 12# big-test option for normal runs
13# Default suites (in modes binlog format stmt/mixed/row, parts), embedded and ps-protocol13# Default suites (in modes binlog format stmt/mixed/row, parts), embedded and ps-protocol
14perl mysql-test-run.pl --force --timer --big-test --testcase-timeout=90 --debug-server --parallel=auto --experimental=collections/default.experimental --comment=normal-debug-big --vardir=var-normal-debug-big --report-features --skip-test-list=collections/disabled-daily.list --unit-tests --mysqld=--innodb_autoextend_increment=6414perl mysql-test-run.pl --force --timer --big-test --testcase-timeout=90 --debug-server --parallel=auto --experimental=collections/default.experimental --comment=normal-debug-big --vardir=var-normal-debug-big --report-features --skip-test-list=collections/disabled-daily.list --mysqld=--innodb_autoextend_increment=64
15perl mysql-test-run.pl --force --timer --big-test --testcase-timeout=60 --debug-server --parallel=auto --experimental=collections/default.experimental --comment=embedded-debug-big --vardir=var-embedded-debug-big --embedded15perl mysql-test-run.pl --force --timer --big-test --testcase-timeout=60 --debug-server --parallel=auto --experimental=collections/default.experimental --comment=embedded-debug-big --vardir=var-embedded-debug-big --embedded
16perl mysql-test-run.pl --force --timer --big-test --testcase-timeout=90 --debug-server --parallel=auto --experimental=collections/default.experimental --comment=ps-debug-big --vardir=var-ps-debug-big --ps-protocol --skip-test-list=collections/disabled-daily.list16perl mysql-test-run.pl --force --timer --big-test --testcase-timeout=90 --debug-server --parallel=auto --experimental=collections/default.experimental --comment=ps-debug-big --vardir=var-ps-debug-big --ps-protocol --skip-test-list=collections/disabled-daily.list
1717
@@ -39,28 +39,28 @@
39perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-rpl-binlog-mixed-tests-innodb-engine-debug --experimental=collections/default.experimental --vardir=var-binlog-mixed-eits-tests-innodb-engine-debug --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=innodb --mysqld=--innodb --do-test=rpl --mysqld=--binlog-format=mixed --skip-test-list=collections/disabled-weekly.list39perl mysql-test-run.pl --timer --force --debug-server --parallel=auto --comment=eits-rpl-binlog-mixed-tests-innodb-engine-debug --experimental=collections/default.experimental --vardir=var-binlog-mixed-eits-tests-innodb-engine-debug --suite=engines/iuds,engines/funcs --suite-timeout=500 --max-test-fail=0 --retry-failure=0 --mysqld=--default-storage-engine=innodb --mysqld=--innodb --do-test=rpl --mysqld=--binlog-format=mixed --skip-test-list=collections/disabled-weekly.list
4040
41#Memcached tests41#Memcached tests
42perl mysql-test-run.pl --timer --force --debug-server --comment=memcached-debug --vardir=var-debug-memcached --experimental=collections/default.experimental --skip-ndb --parallel=1 --retry=0 --suite=memcached --skip-test-list=collections/disabled-weekly.list42perl mysql-test-run.pl --timer --force --debug-server --comment=memcached-debug --vardir=var-debug-memcached --experimental=collections/default.experimental --parallel=1 --retry=0 --suite=memcached --skip-test-list=collections/disabled-weekly.list
4343
44# Non debug runs of default suites in normal and embedded modes44# Non debug runs of default suites in normal and embedded modes
45perl mysql-test-run.pl --force --debug-server --timer --parallel=auto --experimental=collections/default.experimental --comment=normal-non-debug --vardir=var-normal-non-debug --report-features --skip-test-list=collections/disabled-daily.list --unit-tests45perl mysql-test-run.pl --force --debug-server --timer --parallel=auto --experimental=collections/default.experimental --comment=normal-non-debug --vardir=var-normal-non-debug --report-features --skip-test-list=collections/disabled-daily.list
46perl mysql-test-run.pl --force --debug-server --timer --parallel=auto --experimental=collections/default.experimental --comment=embedded-non-debug --vardir=var-embedded-non-debug --embedded46perl mysql-test-run.pl --force --debug-server --timer --parallel=auto --experimental=collections/default.experimental --comment=embedded-non-debug --vardir=var-embedded-non-debug --embedded
4747
4848
4949
50# Multi-Thread Slave50# Multi-Thread Slave
51perl mysql-test-run.pl --timer --force --big-test --testcase-timeout=60 --debug-server --parallel=auto --comment=MTS-debug-big --vardir=var-MTS-debug-big --suite=rpl --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list --unit-tests --mysqld=--slave-parallel-workers=4 --mysqld=--slave-transaction-retries=051perl mysql-test-run.pl --timer --force --big-test --testcase-timeout=60 --debug-server --parallel=auto --comment=MTS-debug-big --vardir=var-MTS-debug-big --suite=rpl --experimental=collections/default.experimental --skip-test-list=collections/disabled-per-push.list --mysqld=--slave-parallel-workers=4 --mysqld=--slave-transaction-retries=0
5252
53# Run with 4K page size53# Run with 4K page size
54perl mysql-test-run.pl --debug-server --timer --force --parallel=auto --comment=n_mix_4k_size --vardir=var-n_mix_4k_size --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list --unit-tests --mysqld=--innodb-page-size=4k --skip-test=innodb_ignore_builtin54perl mysql-test-run.pl --debug-server --timer --force --parallel=auto --comment=n_mix_4k_size --vardir=var-n_mix_4k_size --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-test-list=collections/disabled-per-push.list --mysqld=--innodb-page-size=4k --skip-test=innodb_ignore_builtin
55perl mysql-test-run.pl --debug-server --timer --force --parallel=auto --comment=main_ps_row_4k_size --vardir=var-main-ps_row --suite=main --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list --mysqld=--innodb-page-size=4k --skip-test=innodb_ignore_builtin55perl mysql-test-run.pl --debug-server --timer --force --parallel=auto --comment=main_ps_row_4k_size --vardir=var-main-ps_row --suite=main --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental --skip-test-list=collections/disabled-per-push.list --mysqld=--innodb-page-size=4k --skip-test=innodb_ignore_builtin
56perl mysql-test-run.pl --debug-server --timer --force --parallel=auto --comment=main_embedded_4k_size --vardir=var-main_emebbed --suite=main --embedded --experimental=collections/default.experimental --skip-ndb --mysqld=--innodb-page-size=4k --skip-test=innodb_ignore_builtin56perl mysql-test-run.pl --debug-server --timer --force --parallel=auto --comment=main_embedded_4k_size --vardir=var-main_emebbed --suite=main --embedded --experimental=collections/default.experimental --mysqld=--innodb-page-size=4k --skip-test=innodb_ignore_builtin
5757
58# Run with 8K page size58# Run with 8K page size
59perl mysql-test-run.pl --debug-server --timer --force --parallel=auto --comment=n_mix_8k_size --vardir=var-n_mix_8k_size --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list --unit-tests --mysqld=--innodb-page-size=8k --skip-test=innodb_ignore_builtin59perl mysql-test-run.pl --debug-server --timer --force --parallel=auto --comment=n_mix_8k_size --vardir=var-n_mix_8k_size --mysqld=--binlog-format=mixed --experimental=collections/default.experimental --skip-test-list=collections/disabled-per-push.list --mysqld=--innodb-page-size=8k --skip-test=innodb_ignore_builtin
60perl mysql-test-run.pl --debug-server --timer --force --parallel=auto --comment=main_ps_row_8k_size --vardir=var-main-ps_row --suite=main --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental --skip-ndb --skip-test-list=collections/disabled-per-push.list --mysqld=--innodb-page-size=8k --skip-test=innodb_ignore_builtin60perl mysql-test-run.pl --debug-server --timer --force --parallel=auto --comment=main_ps_row_8k_size --vardir=var-main-ps_row --suite=main --ps-protocol --mysqld=--binlog-format=row --experimental=collections/default.experimental --skip-test-list=collections/disabled-per-push.list --mysqld=--innodb-page-size=8k --skip-test=innodb_ignore_builtin
61perl mysql-test-run.pl --debug-server --timer --force --parallel=auto --comment=main_embedded_8k_size --vardir=var-main_emebbed --suite=main --embedded --experimental=collections/default.experimental --skip-ndb --mysqld=--innodb-page-size=8k --skip-test=innodb_ignore_builtin61perl mysql-test-run.pl --debug-server --timer --force --parallel=auto --comment=main_embedded_8k_size --vardir=var-main_emebbed --suite=main --embedded --experimental=collections/default.experimental --mysqld=--innodb-page-size=8k --skip-test=innodb_ignore_builtin
6262
6363
64# Additional run to test rpl HASH_SCAN & INDEX_SCAN64# Additional run to test rpl HASH_SCAN & INDEX_SCAN
65perl mysql-test-run.pl --force --debug-server --timer --parallel=auto --experimental=collections/default.experimental --comment=binlog_rpl_row_hash_scan --vardir=var-binlog_rpl_row_hash_scan --mysqld=--binlog-format=row --suite=binlog,rpl --mysqld=--slave-rows-search-algorithms=HASH_SCAN,INDEX_SCAN --big-test --testcase-timeout=6065perl mysql-test-run.pl --force --debug-server --timer --parallel=auto --experimental=collections/default.experimental --comment=binlog_rpl_row_hash_scan --vardir=var-binlog_rpl_row_hash_scan --mysqld=--binlog-format=row --suite=binlog,rpl --mysqld=--slave-rows-search-algorithms=HASH_SCAN,INDEX_SCAN --big-test --testcase-timeout=60
66perl mysql-test-run.pl --debug-server --timer --force --parallel=auto --comment=rpl_binlog_row_hash_MTS --vardir=var-mts-rpl-binlog-hash-n_mix --mysqld=--binlog-format=row --experimental=collections/default.experimental --skip-ndb --unit-tests --mysqld=--slave-parallel-workers=4 --mysqld=--slave-transaction-retries=0 --suite=rpl,binlog -mysqld=--slave-rows-search-algorithms=HASH_SCAN,INDEX_SCAN66perl mysql-test-run.pl --debug-server --timer --force --parallel=auto --comment=rpl_binlog_row_hash_MTS --vardir=var-mts-rpl-binlog-hash-n_mix --mysqld=--binlog-format=row --experimental=collections/default.experimental --mysqld=--slave-parallel-workers=4 --mysqld=--slave-transaction-retries=0 --suite=rpl,binlog -mysqld=--slave-rows-search-algorithms=HASH_SCAN,INDEX_SCAN
6767
=== modified file 'Percona-Server/mysql-test/collections/disabled-gtid-on.list'
--- Percona-Server/mysql-test/collections/disabled-gtid-on.list 2012-02-16 10:44:49 +0000
+++ Percona-Server/mysql-test/collections/disabled-gtid-on.list 2013-02-13 06:17:00 +0000
@@ -40,7 +40,7 @@
4040
41rpl_gtid_mode : Skipped due to problems in the test.41rpl_gtid_mode : Skipped due to problems in the test.
42binlog_gtid_errors : Skipped due to problems in the test.42binlog_gtid_errors : Skipped due to problems in the test.
43binlog_disable_gtid_unsafe_statements : Skipped due to problems in the test.43binlog_enforce_gtid_consistency : Skipped due to problems in the test.
44rpl_gtid_execution : Skipped due to problems in the test.44rpl_gtid_execution : Skipped due to problems in the test.
4545
4646
4747
=== renamed file 'Percona-Server/mysql-test/include/mysqlbinlog_row_engine.inc' => 'Percona-Server/mysql-test/extra/binlog_tests/mysqlbinlog_row_engine.inc'
=== modified file 'Percona-Server/mysql-test/extra/rpl_tests/rpl_extra_col_master.test'
--- Percona-Server/mysql-test/extra/rpl_tests/rpl_extra_col_master.test 2012-08-22 01:40:20 +0000
+++ Percona-Server/mysql-test/extra/rpl_tests/rpl_extra_col_master.test 2013-02-13 06:17:00 +0000
@@ -1053,9 +1053,9 @@
1053INSERT INTO t1 VALUES (1, @text);1053INSERT INTO t1 VALUES (1, @text);
1054-- enable_warnings1054-- enable_warnings
10551055
1056SELECT * FROM t1; 1056SELECT * FROM t1 ORDER BY c1;
1057-- sync_slave_with_master1057-- sync_slave_with_master
1058SELECT * FROM t1; 1058SELECT * FROM t1 ORDER BY c1;
10591059
1060# clean up1060# clean up
1061-- connection master1061-- connection master
10621062
=== modified file 'Percona-Server/mysql-test/extra/rpl_tests/rpl_mts_crash_safe.inc'
--- Percona-Server/mysql-test/extra/rpl_tests/rpl_mts_crash_safe.inc 2012-08-22 01:40:20 +0000
+++ Percona-Server/mysql-test/extra/rpl_tests/rpl_mts_crash_safe.inc 2013-02-13 06:17:00 +0000
@@ -94,7 +94,7 @@
94 SET GLOBAL debug="d,rotate_slave_debug_group";94 SET GLOBAL debug="d,rotate_slave_debug_group";
95 --source include/start_slave_io.inc95 --source include/start_slave_io.inc
96 let $wait_condition=SELECT Master_log_pos = $m_before_master_pos AND Master_log_name = "$m_before_master_file" FROM mysql.slave_master_info;96 let $wait_condition=SELECT Master_log_pos = $m_before_master_pos AND Master_log_name = "$m_before_master_file" FROM mysql.slave_master_info;
97 let $slave_failure_printout= 1;97 let $show_rpl_debug_info= 1;
98 --source include/wait_condition.inc98 --source include/wait_condition.inc
9999
100 #### Crashing server after assigning and processing jobs ######100 #### Crashing server after assigning and processing jobs ######
101101
=== modified file 'Percona-Server/mysql-test/extra/rpl_tests/rpl_mts_crash_safe.test'
--- Percona-Server/mysql-test/extra/rpl_tests/rpl_mts_crash_safe.test 2012-02-14 22:25:30 +0000
+++ Percona-Server/mysql-test/extra/rpl_tests/rpl_mts_crash_safe.test 2013-02-13 06:17:00 +0000
@@ -114,6 +114,19 @@
114--echo # CLEAN UP114--echo # CLEAN UP
115--echo ########################################################################115--echo ########################################################################
116--connection master116--connection master
117# Resetting the slave's info repository type to its default (FILE)
118# should be done to any tests that starts the server with non-default (TABLE).
119# That prevents the following tests in a suite execution to hit
120# Bug #14827923 RPL TEST RPL_PARALLEL_CHANGE_MASTER FAILS WITH WARNING
121# Technically resetting of the repo type is implemented through
122# one to slave_parallel_workers. Having it zero in the info table
123# at the following restart makes the slave server to quietly migrate
124# the repository to the requested type.
125# Notice that Bug#15858271 of mtr does not allow effectiveness of
126# zeroing.
127# TODO: run the combination described on Bug#15858271 after it's fixed.
128
129--let $saved_workers= 0
117--let $commands= clean130--let $commands= clean
118--source extra/rpl_tests/rpl_mts_crash_safe.inc131--source extra/rpl_tests/rpl_mts_crash_safe.inc
119132
120133
=== modified file 'Percona-Server/mysql-test/include/check-testcase.test'
--- Percona-Server/mysql-test/include/check-testcase.test 2012-08-22 01:40:20 +0000
+++ Percona-Server/mysql-test/include/check-testcase.test 2013-02-13 06:17:00 +0000
@@ -77,6 +77,7 @@
77 --echo Master_SSL_Crlpath 77 --echo Master_SSL_Crlpath
78 --echo Retrieved_Gtid_Set #78 --echo Retrieved_Gtid_Set #
79 --echo Executed_Gtid_Set #79 --echo Executed_Gtid_Set #
80 --echo Auto_Position 0
80}81}
81if (!$tmp) {82if (!$tmp) {
82 # Note: after WL#5177, fields 13-18 shall not be filtered-out.83 # Note: after WL#5177, fields 13-18 shall not be filtered-out.
8384
=== removed file 'Percona-Server/mysql-test/include/get_binlog_dump_thread_id.inc'
--- Percona-Server/mysql-test/include/get_binlog_dump_thread_id.inc 2007-02-26 08:16:22 +0000
+++ Percona-Server/mysql-test/include/get_binlog_dump_thread_id.inc 1970-01-01 00:00:00 +0000
@@ -1,22 +0,0 @@
1--exec $MYSQL test -e "show processlist" > $MYSQLTEST_VARDIR/tmp/bl_dump_thread_id
2--disable_warnings
3drop table if exists t999;
4--enable_warnings
5# Create a table to hold the process list
6create temporary table t999(
7 id int,
8 user char(255),
9 host char(255),
10 db char(255),
11 Command char(255),
12 time int,
13 State char(255),
14 info char(255)
15);
16# Load processlist into table, headers will create seom warnings
17--disable_warnings
18--replace_result $MYSQLTEST_VARDIR "."
19eval LOAD DATA INFILE "$MYSQLTEST_VARDIR/tmp/bl_dump_thread_id" into table t999;
20--enable_warnings
21let $id = `select Id from t999 where Command="Binlog Dump"`;
22drop table t999;
230
=== added file 'Percona-Server/mysql-test/include/have_null_audit_plugin.inc'
--- Percona-Server/mysql-test/include/have_null_audit_plugin.inc 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/include/have_null_audit_plugin.inc 2013-02-13 06:17:00 +0000
@@ -0,0 +1,22 @@
1disable_query_log;
2#
3# Check if server has support for loading plugins
4#
5if (`SELECT @@have_dynamic_loading != 'YES'`) {
6 --skip Null audit plugin requires dynamic loading
7}
8
9#
10# Check if the variable AUDIT_NULL is set
11#
12if (!$AUDIT_NULL) {
13 --skip Audit_null plugin requires the environment variable \$AUDIT_NULL to be set (normally done by mtr)
14}
15
16#
17# Check if --plugin-dir was setup for null_audit db
18#
19if (`SELECT CONCAT('--plugin-dir=', REPLACE(@@plugin_dir, '\\\\', '/')) != '$AUDIT_NULL_OPT/'`) {
20 --skip null audit plugin requires that --plugin-dir is set to the null audit plugin dir (either the .opt file does not contain \$AUDIT_NULL_OPT or another plugin is in use)
21}
22enable_query_log;
023
=== added file 'Percona-Server/mysql-test/include/have_sha256_rsa_auth.inc'
--- Percona-Server/mysql-test/include/have_sha256_rsa_auth.inc 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/include/have_sha256_rsa_auth.inc 2013-02-13 06:17:00 +0000
@@ -0,0 +1,5 @@
1# Only run this test if SHA256/RSA authentication are supported
2let $shavars= query_get_value("SELECT COUNT(*) as shavars FROM information_schema.session_variables WHERE variable_name = 'sha256_password_private_key_path'", shavars, 1);
3if ($shavars == 0){
4 skip Need SHA256/RSA authentication support;
5}
06
=== modified file 'Percona-Server/mysql-test/include/index_merge1.inc'
--- Percona-Server/mysql-test/include/index_merge1.inc 2012-08-22 01:40:20 +0000
+++ Percona-Server/mysql-test/include/index_merge1.inc 2013-02-13 06:17:00 +0000
@@ -29,31 +29,37 @@
29create table t029create table t0
30(30(
31 key1 int not null,31 key1 int not null,
32 INDEX i1(key1)32 key2 int not null,
33 key3 int not null,
34 key4 int not null,
35 key5 int not null,
36 key6 int not null,
37 key7 int not null,
38 key8 int not null,
39 INDEX i1(key1),
40 INDEX i2(key2),
41 INDEX i3(key3),
42 INDEX i4(key4),
43 INDEX i5(key5),
44 INDEX i6(key6),
45 INDEX i7(key7),
46 INDEX i8(key8)
33);47);
3448
35--disable_query_log49--disable_query_log
36insert into t0 values (1),(2),(3),(4),(5),(6),(7),(8);50insert into t0 values (1,1,1,1,1,1,1,1023),(2,2,2,2,2,2,2,1022);
3751
38let $1=7;52let $1=9;
39set @d=8;53set @d=2;
40while ($1)54while ($1)
41{55{
42 eval insert into t0 select key1+@d from t0;56 eval insert into t0 select key1+@d, key2+@d, key3+@d, key4+@d, key5+@d,
57 key6+@d, key7+@d, key8-@d from t0;
43 eval set @d=@d*2;58 eval set @d=@d*2;
44 dec $1;59 dec $1;
45}60}
46--enable_query_log61--enable_query_log
4762
48alter table t0 add key2 int not null, add index i2(key2);
49alter table t0 add key3 int not null, add index i3(key3);
50alter table t0 add key4 int not null, add index i4(key4);
51alter table t0 add key5 int not null, add index i5(key5);
52alter table t0 add key6 int not null, add index i6(key6);
53alter table t0 add key7 int not null, add index i7(key7);
54alter table t0 add key8 int not null, add index i8(key8);
55
56update t0 set key2=key1,key3=key1,key4=key1,key5=key1,key6=key1,key7=key1,key8=1024-key1;
57analyze table t0;63analyze table t0;
5864
59# 1. One index65# 1. One index
6066
=== added file 'Percona-Server/mysql-test/include/innodb_pk_extension.inc'
--- Percona-Server/mysql-test/include/innodb_pk_extension.inc 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/include/innodb_pk_extension.inc 2013-02-13 06:17:00 +0000
@@ -0,0 +1,253 @@
1--source include/have_innodb.inc
2
3CREATE TABLE t1
4(
5 pk_1 INT,
6 pk_2 INT,
7 f1 DATETIME,
8 f2 INT,
9 PRIMARY KEY(pk_1, pk_2),
10 KEY k1(f1),
11 KEY k2(f2)
12) ENGINE = InnoDB;
13
14INSERT INTO t1 VALUES
15(1, 1, '2000-01-01', 1), (1, 2, '2000-01-02', 2), (1, 3, '2000-01-03', 3), (1, 4, '2000-01-04', 4), (1, 5, '2000-01-05', 5),
16(2, 1, '2000-01-01', 6), (2, 2, '2000-01-02', 7), (2, 3, '2000-01-03', 8), (2, 4, '2000-01-04', 9), (2, 5, '2000-01-05', 10),
17(3, 1, '2000-01-01', 11), (3, 2, '2000-01-02', 12), (3, 3, '2000-01-03', 13), (3, 4, '2000-01-04', 14), (3, 5, '2000-01-05', 15),
18(4, 1, '2000-01-01', 16), (4, 2, '2000-01-02', 17), (4, 3, '2000-01-03', 18), (4, 4, '2000-01-04', 19), (4, 5, '2000-01-05', 20),
19(5, 1, '2000-01-01', 21), (5, 2, '2000-01-02', 22), (5, 3, '2000-01-03', 23), (5, 4, '2000-01-04', 24), (5, 5, '2000-01-05', 25),
20(6, 1, '2000-01-06', 26), (6, 2, '2000-01-06', 27), (6, 3, '2000-01-03', 28), (6, 4, '2000-01-06', 29), (6, 5, '2000-01-06', 30),
21(7, 1, '2000-01-06', 31), (7, 2, '2000-01-06', 32), (7, 3, '2000-01-03', 33), (7, 4, '2000-01-06', 34), (7, 5, '2000-01-06', 35),
22(8, 1, '2000-01-06', 36), (8, 2, '2000-01-06', 37), (8, 3, '2000-01-03', 38), (8, 4, '2000-01-06', 39), (8, 5, '2000-01-06', 40),
23(9, 1, '2000-01-06', 41), (9, 2, '2000-01-06', 42), (9, 3, '2000-01-03', 43), (9, 4, '2000-01-06', 44), (9, 5, '2000-01-06', 45);
24
25INSERT INTO t1 VALUES
26(11, 1, '2000-01-01', 1), (11, 2, '2000-01-02', 2), (11, 3, '2000-01-03', 3), (11, 4, '2000-01-04', 4), (11, 5, '2000-01-05', 5),
27(12, 1, '2000-01-01', 6), (12, 2, '2000-01-02', 7), (12, 3, '2000-01-03', 8), (12, 4, '2000-01-04', 9), (12, 5, '2000-01-05', 10),
28(13, 1, '2000-01-01', 11), (13, 2, '2000-01-02', 12), (13, 3, '2000-01-03', 13), (13, 4, '2000-01-04', 14), (13, 5, '2000-01-05', 15),
29(14, 1, '2000-01-01', 16), (14, 2, '2000-01-02', 17), (14, 3, '2000-01-03', 18), (14, 4, '2000-01-04', 19), (14, 5, '2000-01-05', 20),
30(15, 1, '2000-01-01', 1), (15, 2, '2000-01-02', 2), (15, 3, '2000-01-03', 3), (15, 4, '2000-01-04', 4), (15, 5, '2000-01-05', 5),
31(16, 1, '2000-01-06', 6), (16, 2, '2000-01-06', 7), (16, 3, '2000-01-03', 8), (16, 4, '2000-01-06', 9), (16, 5, '2000-01-06', 10),
32(17, 1, '2000-01-06', 31), (17, 2, '2000-01-06', 32), (17, 3, '2000-01-03', 33), (17, 4, '2000-01-06', 34), (17, 5, '2000-01-06', 35),
33(18, 1, '2000-01-06', 36), (18, 2, '2000-01-06', 37), (18, 3, '2000-01-03', 38), (18, 4, '2000-01-06', 39), (18, 5, '2000-01-06', 40),
34(19, 1, '2000-01-06', 1), (19, 2, '2000-01-06', 2), (19, 3, '2000-01-03', 3), (19, 4, '2000-01-06', 4), (19, 5, '2000-01-06', 5);
35
36
37INSERT INTO t1 VALUES
38(21, 1, '2000-01-01', 1), (21, 2, '2000-01-02', 2), (31, 3, '2000-01-03', 3), (41, 4, '2000-01-04', 4), (51, 5, '2000-01-05', 5),
39(22, 1, '2000-01-01', 6), (22, 2, '2000-01-02', 7), (32, 3, '2000-01-03', 8), (42, 4, '2000-01-04', 9), (52, 5, '2000-01-05', 10),
40(23, 1, '2000-01-01', 11), (23, 2, '2000-01-02', 12), (33, 3, '2000-01-03', 13), (43, 4, '2000-01-04', 14), (53, 5, '2000-01-05', 15),
41(24, 1, '2000-01-01', 16), (24, 2, '2000-01-02', 17), (34, 3, '2000-01-03', 18), (44, 4, '2000-01-04', 19), (54, 5, '2000-01-05', 20),
42(25, 1, '2000-01-01', 1), (25, 2, '2000-01-02', 2), (35, 3, '2000-01-03', 3), (45, 4, '2000-01-04', 4), (55, 5, '2000-01-05', 5),
43(26, 1, '2000-01-06', 6), (26, 2, '2000-01-06', 7), (36, 3, '2000-01-03', 8), (46, 4, '2000-01-06', 9), (56, 5, '2000-01-06', 10),
44(27, 1, '2000-01-06', 31), (27, 2, '2000-01-06', 32), (37, 3, '2000-01-03', 33), (47, 4, '2000-01-06', 34), (57, 5, '2000-01-06', 35),
45(28, 1, '2000-01-06', 36), (28, 2, '2000-01-06', 37), (38, 3, '2000-01-03', 38), (48, 4, '2000-01-06', 39), (58, 5, '2000-01-06', 40),
46(29, 1, '2000-01-06', 1), (29, 2, '2000-01-06', 2), (39, 3, '2000-01-03', 3), (49, 4, '2000-01-06', 4), (59, 5, '2000-01-06', 5);
47
48INSERT INTO t1 SELECT pk_1 + 60, pk_2, f1, f2 FROM t1;
49INSERT INTO t1 SELECT pk_1 + 120, pk_2, f1, f2 FROM t1;
50INSERT INTO t1 SELECT pk_1 + 240, pk_2, f1, f2 FROM t1;
51INSERT INTO t1 SELECT pk_1, pk_2 + 10, f1, f2 FROM t1;
52
53ANALYZE TABLE t1;
54
55--echo #
56--echo # REF access optimization
57--echo #
58
59--replace_column 9 #
60EXPLAIN SELECT count(*) FROM t1 WHERE pk_1 = 3 and f1 = '2000-01-03';
61FLUSH STATUS;
62SELECT count(*) FROM t1 WHERE pk_1 = 3 and f1 = '2000-01-03';
63SHOW STATUS LIKE 'handler_read%';
64
65--replace_column 9 #
66EXPLAIN SELECT pk_2 FROM t1 WHERE pk_1 = 3 and f1 = '2000-01-03';
67FLUSH STATUS;
68SELECT pk_2 FROM t1 WHERE pk_1 = 3 and f1 = '2000-01-03';
69SHOW STATUS LIKE 'handler_read%';
70
71--echo #
72--echo # RANGE access optimization
73--echo #
74
75--replace_column 9 #
76EXPLAIN SELECT count(*) FROM t1 WHERE pk_1 BETWEEN 3 AND 5 AND f1 = '2000-01-03';
77FLUSH STATUS;
78SELECT count(*) FROM t1 WHERE pk_1 BETWEEN 3 AND 5 AND f1 = '2000-01-03';
79SHOW STATUS LIKE 'handler_read%';
80
81--replace_column 9 #
82EXPLAIN SELECT pk_1, pk_2 FROM t1 WHERE pk_1 BETWEEN 3 AND 5 AND f1 = '2000-01-03';
83FLUSH STATUS;
84SELECT pk_1, pk_2 FROM t1 WHERE pk_1 BETWEEN 3 AND 5 AND f1 = '2000-01-03';
85SHOW STATUS LIKE 'handler_read%';
86
87--echo #
88--echo # MAX/MIN optimization
89--echo #
90
91--replace_column 9 #
92EXPLAIN SELECT MIN(pk_1) FROM t1 WHERE f1 = '2000-01-03';
93FLUSH STATUS;
94SELECT MIN(pk_1) FROM t1 WHERE f1 = '2000-01-03';
95SHOW STATUS LIKE 'handler_read%';
96
97--replace_column 9 #
98EXPLAIN SELECT MIN(pk_1) FROM t1 WHERE pk_1 BETWEEN 3 AND 5 AND f1 = '2000-01-03';
99FLUSH STATUS;
100SELECT MIN(pk_1) FROM t1 WHERE pk_1 BETWEEN 3 AND 5 AND f1 = '2000-01-03';
101SHOW STATUS LIKE 'handler_read%';
102
103--replace_column 9 #
104EXPLAIN SELECT MAX(pk_1) FROM t1 WHERE f1 = '2000-01-03';
105FLUSH STATUS;
106SELECT MAX(pk_1) FROM t1 WHERE f1 = '2000-01-03';
107SHOW STATUS LIKE 'handler_read%';
108
109--replace_column 9 #
110EXPLAIN SELECT MAX(pk_1) FROM t1 WHERE pk_1 BETWEEN 3 AND 5 AND f1 = '2000-01-03';
111FLUSH STATUS;
112SELECT MAX(pk_1) FROM t1 WHERE pk_1 BETWEEN 3 AND 5 AND f1 = '2000-01-03';
113SHOW STATUS LIKE 'handler_read%';
114
115--echo #
116--echo # Loose index scan
117--echo #
118
119--replace_column 9 #
120EXPLAIN SELECT MIN(pk_1) FROM t1 WHERE f2 BETWEEN 13 AND 14 GROUP BY f2;
121FLUSH STATUS;
122SELECT MIN(pk_1) FROM t1 WHERE f2 BETWEEN 13 AND 14 GROUP BY f2;
123SHOW STATUS LIKE 'handler_read%';
124
125--replace_column 9 #
126EXPLAIN SELECT MIN(pk_1) FROM t1 WHERE f2 IN (1, 2) GROUP BY f2;
127FLUSH STATUS;
128SELECT MIN(pk_1) FROM t1 WHERE f2 IN (1, 2) GROUP BY f2;
129SHOW STATUS LIKE 'handler_read%';
130
131--echo #
132--echo # JOIN optimization
133--echo #
134
135--replace_column 9 #
136EXPLAIN SELECT count(*) FROM t1 AS t1 JOIN t1 AS t2
137ON t2.pk_1 = t1.pk_1 WHERE t1.f1 = '2000-01-03' AND t2.f1 = '2000-01-03';
138FLUSH STATUS;
139SELECT count(*) FROM t1 AS t1 JOIN t1 AS t2
140ON t2.pk_1 = t1.pk_1 WHERE t1.f1 = '2000-01-03' AND t2.f1 = '2000-01-03';
141SHOW STATUS LIKE 'handler_read%';
142
143--echo #
144--echo # Optimization of sorting
145--echo #
146
147--replace_column 9 #
148EXPLAIN SELECT f1, pk_1, pk_2 FROM t1 WHERE pk_1 = 3 AND f1 = '2000-01-03'
149ORDER BY pk_2 DESC LIMIT 5;
150FLUSH STATUS;
151SELECT f1, pk_1, pk_2 FROM t1 WHERE pk_1 = 3 AND f1 = '2000-01-03'
152ORDER BY pk_2 DESC LIMIT 5;
153SHOW STATUS LIKE 'handler_read%';
154
155--replace_column 9 #
156EXPLAIN SELECT f1, pk_1, pk_2 FROM t1 WHERE pk_1 BETWEEN 3 AND 5 AND f1 = '2000-01-03'
157ORDER BY pk_2 DESC LIMIT 5;
158FLUSH STATUS;
159SELECT f1, pk_1, pk_2 FROM t1 WHERE pk_1 BETWEEN 3 AND 5 AND f1 = '2000-01-03'
160ORDER BY pk_2 DESC LIMIT 5;
161SHOW STATUS LIKE 'handler_read%';
162
163DROP TABLE t1;
164
165--echo #
166--echo # Max key part limitation
167--echo #
168
169CREATE TABLE t1
170(
171 f1 INT, f2 INT, f3 INT, f4 INT, f5 INT, f6 INT, f7 INT, f8 INT, f9 INT, f10 INT,
172 f11 INT, f12 INT, f13 INT, f14 INT, f15 INT, f16 INT, f17 INT, f18 INT,
173 PRIMARY KEY (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10),
174 KEY k1 (f11, f12, f13, f14, f15, f16, f17)
175) ENGINE = InnoDB;
176
177--replace_column 9 #
178EXPLAIN SELECT f17 FROM t1 FORCE INDEX (k1) WHERE
179f1 = 0 AND f2 = 0 AND f3 = 0 AND f4 = 0 AND f5 = 0 AND
180f6 = 0 AND f7 = 0 AND f8 = 0 AND f9 = 0 AND f10 = 0 AND
181f11 = 0 AND f12 = 0 AND f13 = 0 AND f14 = 0 AND
182f15 = 0 AND f16 = 0 AND f17 = 0;
183
184--replace_column 9 #
185EXPLAIN SELECT f17 FROM t1 FORCE INDEX (k1) WHERE
186f1 = 0 AND f2 = 0 AND f3 = 0 AND f4 = 0 AND f5 = 0 AND
187f6 = 0 AND f7 = 0 AND f8 = 0 AND f9 = 0 AND
188f11 = 0 AND f12 = 0 AND f13 = 0 AND f14 = 0 AND
189f15 = 0 AND f16 = 0 AND f17 = 0;
190
191DROP TABLE t1;
192
193--echo #
194--echo # Max key length limitation
195--echo #
196
197CREATE TABLE t1
198(
199 f1 VARCHAR(500), f2 VARCHAR(500), f3 VARCHAR(500),
200 f4 VARCHAR(500), f5 VARCHAR(500), f6 VARCHAR(500),
201 f7 VARCHAR(500),
202 PRIMARY KEY (f1, f2, f3, f4),
203 KEY k1 (f5, f6, f7)
204) ENGINE = InnoDB;
205
206--replace_column 9 #
207EXPLAIN SELECT f5 FROM t1 FORCE INDEX (k1) WHERE
208f1 = 'a' AND f2 = 'a' AND f3 = 'a' AND f4 = 'a' AND
209f5 = 'a' AND f6 = 'a' AND f7 = 'a';
210
211--replace_column 9 #
212EXPLAIN SELECT f5 FROM t1 FORCE INDEX (k1) WHERE
213f1 = 'a' AND f2 = 'a' AND f3 = 'a' AND
214f5 = 'a' AND f6 = 'a' AND f7 = 'a';
215
216--replace_column 9 #
217EXPLAIN SELECT f5 FROM t1 FORCE INDEX (k1) WHERE
218f1 = 'a' AND f2 = 'a' AND f4 = 'a' AND
219f5 = 'a' AND f6 = 'a' AND f7 = 'a';
220
221DROP TABLE t1;
222
223--echo #
224--echo # Unique extended key
225--echo #
226
227CREATE TABLE t1
228(
229 pk INT NOT NULL auto_increment,
230 f1 INT NOT NULL,
231 KEY (f1),
232 PRIMARY KEY (pk)
233) ENGINE = INNODB;
234
235CREATE TABLE t2
236(
237 f1 INT,
238 f2 INT
239) ENGINE = INNODB;
240
241INSERT INTO t1(f1) VALUES (1),(2);
242INSERT INTO t1(f1) SELECT f1 + 2 FROM t1;
243INSERT INTO t1(f1) SELECT f1 + 4 FROM t1;
244ANALYZE TABLE t1;
245
246INSERT INTO t2 VALUES (1,1), (2,2);
247
248EXPLAIN SELECT t2.f1 FROM t2 JOIN t1 IGNORE INDEX(primary) ON t2.f1 = t1.pk and t2.f2 = t1.f1;
249FLUSH STATUS;
250SELECT t2.f1 FROM t2 JOIN t1 IGNORE INDEX(primary) ON t2.f1 = t1.pk and t2.f2 = t1.f1;
251SHOW STATUS LIKE 'Handler_read%';
252
253DROP TABLE t1, t2;
0254
=== modified file 'Percona-Server/mysql-test/include/master-slave.inc'
--- Percona-Server/mysql-test/include/master-slave.inc 2012-03-06 14:29:42 +0000
+++ Percona-Server/mysql-test/include/master-slave.inc 2013-02-13 06:17:00 +0000
@@ -11,12 +11,13 @@
11# [--let $rpl_skip_start_slave= 1]11# [--let $rpl_skip_start_slave= 1]
12# [--let $rpl_debug= 1]12# [--let $rpl_debug= 1]
13# [--let $slave_timeout= NUMBER]13# [--let $slave_timeout= NUMBER]
14# [--let $use_gtids= 1]
14# --source include/master-slave.inc15# --source include/master-slave.inc
15#16#
16# Parameters:17# Parameters:
17# $rpl_check_server_ids, $rpl_skip_reset_master_and_slave,18# $rpl_check_server_ids, $rpl_skip_reset_master_and_slave,
18# $rpl_skip_change_master, $rpl_skip_start_slave, $rpl_debug,19# $rpl_skip_change_master, $rpl_skip_start_slave, $rpl_debug,
19# $slave_timeout20# $slave_timeout, $use_gtids
20# See include/rpl_init.inc21# See include/rpl_init.inc
21#22#
22# $rpl_server_count23# $rpl_server_count
2324
=== modified file 'Percona-Server/mysql-test/include/mtr_check.sql'
--- Percona-Server/mysql-test/include/mtr_check.sql 2012-03-06 14:29:42 +0000
+++ Percona-Server/mysql-test/include/mtr_check.sql 2013-02-13 06:17:00 +0000
@@ -63,7 +63,7 @@
63 SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES63 SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
64 WHERE variable_name NOT IN ('timestamp', 'server_uuid',64 WHERE variable_name NOT IN ('timestamp', 'server_uuid',
65 'innodb_file_format_max',65 'innodb_file_format_max',
66 'gtid_done', 'gtid_lost')66 'gtid_executed', 'gtid_purged')
67 ORDER BY VARIABLE_NAME;67 ORDER BY VARIABLE_NAME;
6868
69 -- Dump all databases, there should be none69 -- Dump all databases, there should be none
7070
=== modified file 'Percona-Server/mysql-test/include/mtr_warnings.sql'
--- Percona-Server/mysql-test/include/mtr_warnings.sql 2012-12-04 08:24:59 +0000
+++ Percona-Server/mysql-test/include/mtr_warnings.sql 2013-02-13 06:17:00 +0000
@@ -88,7 +88,7 @@
88INSERT INTO global_suppressions VALUES88INSERT INTO global_suppressions VALUES
89 (".SELECT UNIX_TIMESTAMP... failed on master"),89 (".SELECT UNIX_TIMESTAMP... failed on master"),
90 ("Aborted connection"),90 ("Aborted connection"),
91 ("Client requested master to start replication from impossible position"),91 ("Client requested master to start replication from position"),
92 ("Could not find first log file name in binary log"),92 ("Could not find first log file name in binary log"),
93 ("Enabling keys got errno"),93 ("Enabling keys got errno"),
94 ("Error reading master configuration"),94 ("Error reading master configuration"),
@@ -178,7 +178,8 @@
178178
179 /* Added 2009-08-XX after fixing Bug #42408 */179 /* Added 2009-08-XX after fixing Bug #42408 */
180180
181 ("Although a path was specified for the .* option, log tables are used"),181 ("Although a path was specified for the --general-log-file option, log tables are used"),
182 ("Although a path was specified for the --slow-query-log-file option, log tables are used"),
182 ("Backup: Operation aborted"),183 ("Backup: Operation aborted"),
183 ("Restore: Operation aborted"),184 ("Restore: Operation aborted"),
184 ("Restore: The grant .* was skipped because the user does not exist"),185 ("Restore: The grant .* was skipped because the user does not exist"),
185186
=== modified file 'Percona-Server/mysql-test/include/mysqld--help.inc'
--- Percona-Server/mysql-test/include/mysqld--help.inc 2013-01-21 13:20:09 +0000
+++ Percona-Server/mysql-test/include/mysqld--help.inc 2013-02-13 06:17:00 +0000
@@ -16,8 +16,8 @@
16perl;16perl;
17 # Variables which we don't want to display in the result file since17 # Variables which we don't want to display in the result file since
18 # their paths may vary:18 # their paths may vary:
19 @skipvars=qw/basedir open-files-limit general-log-file log plugin-dir19 @skipvars=qw/basedir open-files-limit general-log-file plugin-dir
20 log-slow-queries pid-file slow-query-log-file20 pid-file slow-query-log-file
21 datadir slave-load-tmpdir tmpdir socket table-definition-cache table-open-cache/;21 datadir slave-load-tmpdir tmpdir socket table-definition-cache table-open-cache/;
2222
23 # Plugins which may or may not be there:23 # Plugins which may or may not be there:
2424
=== modified file 'Percona-Server/mysql-test/include/not_ndb_default.inc'
--- Percona-Server/mysql-test/include/not_ndb_default.inc 2011-04-15 08:55:50 +0000
+++ Percona-Server/mysql-test/include/not_ndb_default.inc 2013-02-13 06:17:00 +0000
@@ -1,4 +1,6 @@
1--require r/not_ndb_default.require1# Skip the test in case the default storage engine is NDB.
2disable_query_log;2
3select convert(@@storage_engine using latin1) NOT IN ("ndbcluster","NDBCLUSTER") as "TRUE";3if (`SELECT CONVERT(@@default_storage_engine USING latin1) IN ('ndbcluster','NDBCLUSTER')`)
4enable_query_log;4{
5 --skip Test requires default storage engine (@@default_storage_engine) != NDB
6}
57
=== added file 'Percona-Server/mysql-test/include/not_sha256_rsa_auth.inc'
--- Percona-Server/mysql-test/include/not_sha256_rsa_auth.inc 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/include/not_sha256_rsa_auth.inc 2013-02-13 06:17:00 +0000
@@ -0,0 +1,5 @@
1# Only run this test if YaSSL is supported
2let $shavars= query_get_value("SELECT COUNT(*) as shavars FROM information_schema.session_variables WHERE variable_name = 'sha256_password_private_key_path'", shavars, 1);
3if ($shavars != 0){
4 skip Need YaSSL support;
5}
06
=== modified file 'Percona-Server/mysql-test/include/read_many_rows.inc'
--- Percona-Server/mysql-test/include/read_many_rows.inc 2010-10-25 09:20:53 +0000
+++ Percona-Server/mysql-test/include/read_many_rows.inc 2013-02-13 06:17:00 +0000
@@ -112,7 +112,7 @@
112insert into t1 values(1);112insert into t1 values(1);
113113
114connection con2;114connection con2;
115--error 1213115--error 1213,1205
116reap;116reap;
117select @a;117select @a;
118# check that the whole transaction was rolled back118# check that the whole transaction was rolled back
119119
=== modified file 'Percona-Server/mysql-test/include/rpl_init.inc'
--- Percona-Server/mysql-test/include/rpl_init.inc 2012-01-30 19:56:21 +0000
+++ Percona-Server/mysql-test/include/rpl_init.inc 2013-02-13 06:17:00 +0000
@@ -51,6 +51,7 @@
51# [--let $rpl_skip_reset_master_and_slave= 1]51# [--let $rpl_skip_reset_master_and_slave= 1]
52# [--let $rpl_debug= 1]52# [--let $rpl_debug= 1]
53# [--let $slave_timeout= NUMBER]53# [--let $slave_timeout= NUMBER]
54# [--let $use_gtids= 1]
54# --source include/rpl_init.inc55# --source include/rpl_init.inc
55#56#
56# Parameters:57# Parameters:
@@ -104,6 +105,9 @@
104# Timeout used when waiting for the slave threads to start.105# Timeout used when waiting for the slave threads to start.
105# See include/wait_for_slave_param.inc106# See include/wait_for_slave_param.inc
106#107#
108# $use_gtids
109# Use option MASTER_AUTO_POSITION = 1 to CHANGE MASTER.
110#
107#111#
108# ==== Side effects ====112# ==== Side effects ====
109#113#
110114
=== modified file 'Percona-Server/mysql-test/include/rpl_start_server.inc'
--- Percona-Server/mysql-test/include/rpl_start_server.inc 2012-12-04 08:24:59 +0000
+++ Percona-Server/mysql-test/include/rpl_start_server.inc 2013-02-13 06:17:00 +0000
@@ -23,7 +23,7 @@
23#23#
24# $rpl_start_with_gtids24# $rpl_start_with_gtids
25# If set, the server will start with GTIDs on, i.e.:25# If set, the server will start with GTIDs on, i.e.:
26# --gtid-mode=on --disable-gtid-unsafe-statements26# --gtid-mode=on --enforce-gtid-consistency
27# --log-bin --log-slave-updates27# --log-bin --log-slave-updates
28# --default-storage-engine=InnoDB --default-tmp-storage-engine=InnoDB28# --default-storage-engine=InnoDB --default-tmp-storage-engine=InnoDB
29#29#
@@ -61,7 +61,7 @@
61if ($rpl_start_with_gtids)61if ($rpl_start_with_gtids)
62{62{
63 --let $_rpl_start_server_info= $_rpl_start_server_info gtids=on63 --let $_rpl_start_server_info= $_rpl_start_server_info gtids=on
64 --let _RPL_START_SERVER_PARAMETERS= $_RPL_START_SERVER_PARAMETERS --log-bin --log-slave-updates --disable-gtid-unsafe-statements --gtid-mode=on --default-storage-engine=InnoDB --default-tmp-storage-engine=InnoDB64 --let _RPL_START_SERVER_PARAMETERS= $_RPL_START_SERVER_PARAMETERS --log-bin --log-slave-updates --enforce-gtid-consistency --gtid-mode=on --default-storage-engine=InnoDB --default-tmp-storage-engine=InnoDB
65}65}
66if ($rpl_server_parameters != '')66if ($rpl_server_parameters != '')
67{67{
6868
=== modified file 'Percona-Server/mysql-test/include/save_master_pos.inc'
--- Percona-Server/mysql-test/include/save_master_pos.inc 2012-02-17 19:46:49 +0000
+++ Percona-Server/mysql-test/include/save_master_pos.inc 2013-02-13 06:17:00 +0000
@@ -29,7 +29,7 @@
2929
30if ($use_gtids)30if ($use_gtids)
31{31{
32 --let $_saved_gtids= `SELECT @@global.gtid_done`32 --let $_saved_gtids= `SELECT @@global.gtid_executed`
33 if ($rpl_debug)33 if ($rpl_debug)
34 {34 {
35 --echo save_master_pos saved gtid='$_saved_gtids'35 --echo save_master_pos saved gtid='$_saved_gtids'
3636
=== modified file 'Percona-Server/mysql-test/include/show_events.inc'
--- Percona-Server/mysql-test/include/show_events.inc 2012-08-22 01:40:20 +0000
+++ Percona-Server/mysql-test/include/show_events.inc 2013-02-13 06:17:00 +0000
@@ -79,7 +79,7 @@
79if ($keep_gtid_events)79if ($keep_gtid_events)
80{80{
81 let $pre_script= $pre_script81 let $pre_script= $pre_script
82 my DOLLARuuid_regex = '[0-9A-F]{8}-(?:[0-9A-F]{4}-){3}[0-9A-F]{12}';82 my DOLLARuuid_regex = '[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}';
83 my DOLLARuuid_sidno_regex = DOLLARuuid_regex.'(?::[0-9]+(?:-[0-9]+)?)+';83 my DOLLARuuid_sidno_regex = DOLLARuuid_regex.'(?::[0-9]+(?:-[0-9]+)?)+';
84 ||84 ||
85 --let $script= $script s{DOLLARuuid_sidno_regex(?:,DOLLARuuid_sidno_regex)*}{Gtid_set};85 --let $script= $script s{DOLLARuuid_sidno_regex(?:,DOLLARuuid_sidno_regex)*}{Gtid_set};
8686
=== modified file 'Percona-Server/mysql-test/include/show_rpl_debug_info.inc'
--- Percona-Server/mysql-test/include/show_rpl_debug_info.inc 2012-02-17 19:46:49 +0000
+++ Percona-Server/mysql-test/include/show_rpl_debug_info.inc 2013-02-13 06:17:00 +0000
@@ -42,6 +42,7 @@
42--enable_query_log42--enable_query_log
43--enable_result_log43--enable_result_log
44--enable_warnings44--enable_warnings
45--enable_connect_log
45--disable_abort_on_error46--disable_abort_on_error
46--horizontal_results47--horizontal_results
4748
@@ -71,7 +72,7 @@
71 --echo72 --echo
72 --echo **** GTID_* on $CURRENT_CONNECTION ****73 --echo **** GTID_* on $CURRENT_CONNECTION ****
73 query_vertical74 query_vertical
74 SELECT @@GLOBAL.GTID_DONE, @@GLOBAL.GTID_LOST, @@GLOBAL.GTID_OWNED, @@SESSION.GTID_DONE, @@SESSION.GTID_OWNED;75 SELECT @@GLOBAL.GTID_EXECUTED, @@GLOBAL.GTID_PURGED, @@GLOBAL.GTID_OWNED, @@SESSION.GTID_EXECUTED, @@SESSION.GTID_OWNED;
75 --echo76 --echo
76 --echo **** SHOW SLAVE STATUS on $CURRENT_CONNECTION ****77 --echo **** SHOW SLAVE STATUS on $CURRENT_CONNECTION ****
77 query_vertical SHOW SLAVE STATUS;78 query_vertical SHOW SLAVE STATUS;
@@ -97,7 +98,12 @@
97 let $relaylog_name= query_get_value(SHOW SLAVE STATUS, Relay_Log_File, 1);98 let $relaylog_name= query_get_value(SHOW SLAVE STATUS, Relay_Log_File, 1);
98 --echo relaylog_name = '$relaylog_name'99 --echo relaylog_name = '$relaylog_name'
99 eval SHOW RELAYLOG EVENTS IN '$relaylog_name';100 eval SHOW RELAYLOG EVENTS IN '$relaylog_name';
100101 --echo
102 --echo **** slave_relay_info on $CURRENT_CONNECTION ****
103 SELECT * FROM mysql.slave_relay_log_info;
104 --echo
105 --echo **** slave_master_info on $CURRENT_CONNECTION ****
106 SELECT * FROM mysql.slave_master_info;
101107
102 --let $_rpl_is_first_server= 0108 --let $_rpl_is_first_server= 0
103 --dec $_rpl_server109 --dec $_rpl_server
104110
=== added file 'Percona-Server/mysql-test/include/stop_dump_threads.inc'
--- Percona-Server/mysql-test/include/stop_dump_threads.inc 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/include/stop_dump_threads.inc 2013-02-13 06:17:00 +0000
@@ -0,0 +1,33 @@
1# ==== Purpose ====
2#
3# Stop all dump threads on the server of the current connection.
4#
5# ==== Usage ====
6#
7# --source include/stop_dump_threads.inc
8
9--let $include_filename= stop_dump_threads.inc
10--source include/begin_include_file.inc
11
12
13--let $_sdt_show_rpl_debug_info_old= $show_rpl_debug_info
14--let $show_rpl_debug_info= 1
15--disable_query_log
16--disable_result_log
17
18--let $_sdt_dump_thread_id= `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND = 'Binlog dump'`
19
20while ($_sdt_dump_thread_id != '')
21{
22 eval KILL $_sdt_dump_thread_id;
23 --let $wait_condition= SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE ID = $_sdt_dump_thread_id
24 --source include/wait_condition.inc
25
26 --let $_sdt_dump_thread_id= `SELECT ID FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND = 'Binlog dump'`
27}
28
29
30--let $show_rpl_debug_info= $_sdt_show_rpl_debug_info_old
31
32--let $include_filename= stop_dump_threads.inc
33--source include/end_include_file.inc
034
=== modified file 'Percona-Server/mysql-test/include/subquery_sj.inc'
--- Percona-Server/mysql-test/include/subquery_sj.inc 2012-12-04 08:24:59 +0000
+++ Percona-Server/mysql-test/include/subquery_sj.inc 2013-02-13 06:17:00 +0000
@@ -2545,7 +2545,7 @@
2545 varchar_nokey varchar(1) NOT NULL2545 varchar_nokey varchar(1) NOT NULL
2546);2546);
2547INSERT INTO BB VALUES ('i'),('t');2547INSERT INTO BB VALUES ('i'),('t');
2548-- error ER_OPERAND_COLUMNS2548-- error ER_BAD_FIELD_ERROR
2549SELECT varchar_nokey FROM C2549SELECT varchar_nokey FROM C
2550WHERE (varchar_nokey, OUTR) IN (SELECT varchar_nokey2550WHERE (varchar_nokey, OUTR) IN (SELECT varchar_nokey
2551 FROM BB);2551 FROM BB);
25522552
=== modified file 'Percona-Server/mysql-test/include/sync_slave_sql.inc'
--- Percona-Server/mysql-test/include/sync_slave_sql.inc 2012-02-17 19:46:49 +0000
+++ Percona-Server/mysql-test/include/sync_slave_sql.inc 2013-02-13 06:17:00 +0000
@@ -3,7 +3,7 @@
3# This file does the same as the built-in command sync_with_master,3# This file does the same as the built-in command sync_with_master,
4# but more flexible. In particular:4# but more flexible. In particular:
5# - Can use a custom timeout.5# - Can use a custom timeout.
6# - Can use SQL_THREAD_WAIT_AFTER_GTIDS instead of MASTER_POS_WAIT.6# - Can use WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS instead of MASTER_POS_WAIT.
7# - The position can be set by the user, it is not restricted to7# - The position can be set by the user, it is not restricted to
8# save_master_pos8# save_master_pos
9#9#
@@ -41,9 +41,9 @@
41{41{
42 if ($rpl_debug)42 if ($rpl_debug)
43 {43 {
44 --echo debug: SQL_THREAD_WAIT_AFTER_GTIDS('$_saved_gtids', $_sss_slave_timeout)44 --echo debug: WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS('$_saved_gtids', $_sss_slave_timeout)
45 }45 }
46 --let $_sss_result= `SELECT SQL_THREAD_WAIT_AFTER_GTIDS('$_saved_gtids', $_sss_slave_timeout)`46 --let $_sss_result= `SELECT WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS('$_saved_gtids', $_sss_slave_timeout)`
47}47}
48if (!$use_gtids)48if (!$use_gtids)
49{49{
5050
=== modified file 'Percona-Server/mysql-test/include/wait_condition.inc'
--- Percona-Server/mysql-test/include/wait_condition.inc 2012-08-22 01:40:20 +0000
+++ Percona-Server/mysql-test/include/wait_condition.inc 2013-02-13 06:17:00 +0000
@@ -13,7 +13,7 @@
13#13#
14# OR14# OR
15#15#
16# let $slave_failure_printout= 1; # to force post-failure printout16# let $show_rpl_debug_info= 1; # to force post-failure printout
17# let $wait_timeout= 60; # Override default 30 seconds with 60.17# let $wait_timeout= 60; # Override default 30 seconds with 60.
18# let $wait_condition=18# let $wait_condition=
19# SELECT c = 3 FROM t;19# SELECT c = 3 FROM t;
@@ -53,16 +53,9 @@
53}53}
54if (!$success)54if (!$success)
55{55{
56 if ($slave_failure_printout)56 if ($show_rpl_debug_info)
57 {57 {
58 --connection slave58 --source include/show_rpl_debug_info.inc
59 --echo
60 --echo *** Slave server status: ***
61 --echo
62 --query_vertical show slave status
63 --query_vertical show processlist
64 --query_vertical select * from mysql.slave_relay_log_info
65 --query_vertical select * from mysql.slave_master_info
66 }59 }
67 die Timeout in wait_condition.inc for $wait_condition;60 die Timeout in wait_condition.inc for $wait_condition;
68}61}
6962
=== added file 'Percona-Server/mysql-test/include/wait_time_until_connected_again.inc'
--- Percona-Server/mysql-test/include/wait_time_until_connected_again.inc 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/include/wait_time_until_connected_again.inc 2013-02-13 06:17:00 +0000
@@ -0,0 +1,27 @@
1#
2# Include this script to wait until the connection to the
3# server has been restored or timeout occurs
4# Unlike wait_until_connected_again the variable counter must be set outside as var.
5# set WAIT_COUNT before executinmg this include file.
6--disable_result_log
7--disable_query_log
8let $counter= $WAIT_COUNT;
9let $mysql_errno= 9999;
10while ($mysql_errno)
11{
12 # Strangely enough, the server might return "Too many connections"
13 # while being shutdown, thus 1040 is an "allowed" error
14 # See BUG#36228
15 --error 0,1040,1053,2002,2003,2006,2013
16 show status;
17
18 dec $counter;
19 if (!$counter)
20 {
21 --echo Waited $WAIT_COUNT * 0.5 sec.
22 --die Server failed to restart
23 }
24 --sleep 0.5
25}
26--enable_query_log
27--enable_result_log
028
=== modified file 'Percona-Server/mysql-test/include/write_result_to_file.inc'
--- Percona-Server/mysql-test/include/write_result_to_file.inc 2012-02-08 13:28:38 +0000
+++ Percona-Server/mysql-test/include/write_result_to_file.inc 2013-02-13 06:17:00 +0000
@@ -4,11 +4,13 @@
4# if the output needs more advanced parsing than can be done by4# if the output needs more advanced parsing than can be done by
5# mysqltest commands.5# mysqltest commands.
6#6#
7# The statement is sent to mysqld on current connection using
8# the mysql command line client.
9#
7# ==== Usage ====10# ==== Usage ====
8#11#
9# --let $statement= <STATEMENT>12# --let $statement= <STATEMENT>
10# --let $output_file= {<FILE>|GENERATE}13# --let $output_file= {<FILE>|GENERATE}
11# [--let $server_number= <NUMBER>]
12# [--let $dont_print_statement= 1]14# [--let $dont_print_statement= 1]
13# --source include/write_result_to_file.inc15# --source include/write_result_to_file.inc
14#16#
@@ -16,10 +18,6 @@
16# $statement18# $statement
17# The statement to execute.19# The statement to execute.
18#20#
19# $server_number
20# 1 for the master, 2 for the slave, 3 for next server, etc.
21# If omitted, uses current connection.
22#
23# $output_file21# $output_file
24# Name of file to write. If omitted, generates a new filename and22# Name of file to write. If omitted, generates a new filename and
25# stores the name both in the mysqltest variable $output_file and23# stores the name both in the mysqltest variable $output_file and
@@ -30,16 +28,14 @@
30# statement contains non-deterministic output, set this variable28# statement contains non-deterministic output, set this variable
31# to suppress it.29# to suppress it.
3230
33--let _WRTF_SERVER_NUMBER= $server_number31# Get the port and socket used by mysqld on current connection
34if (!$server_number)32--let _WRTF_SERVER_PORT= `SELECT @@PORT`
35{33--let _WRTF_SERVER_SOCKET= `SELECT @@SOCKET`
36 --let _WRTF_SERVER_NUMBER= `SELECT 1 + @@PORT - $MASTER_MYPORT`
37}
3834
39--let $_write_result_msg= [server=$_WRTF_SERVER_NUMBER]35--let $_write_result_msg= [connection=$CURRENT_CONNECTION]
40if (!$dont_print_statement)36if (!$dont_print_statement)
41{37{
42 --let $_write_result_msg= [server=$_WRTF_SERVER_NUMBER statement=$statement]38 --let $_write_result_msg= [connection=$CURRENT_CONNECTION statement=$statement]
43}39}
4440
45--let $include_filename= write_result_to_file.inc $_write_result_msg41--let $include_filename= write_result_to_file.inc $_write_result_msg
@@ -63,12 +59,16 @@
63--let _WRTF_OUTPUT_FILE= $output_file59--let _WRTF_OUTPUT_FILE= $output_file
6460
65perl;61perl;
62 use strict;
66 my $stmt= $ENV{'_WRTF_STATEMENT'};63 my $stmt= $ENV{'_WRTF_STATEMENT'};
67 my $server_number= $ENV{'_WRTF_SERVER_NUMBER'};64 # Connecting mysql to same mysqld as current connectiona
65 # by overriding port and socket
68 my $mysql = $ENV{'MYSQL'};66 my $mysql = $ENV{'MYSQL'};
69 $mysql =~ s/( --|$)/ --defaults-group-suffix=.$server_number$1/;67 my $server_port= $ENV{'_WRTF_SERVER_PORT'};
68 my $server_socket= $ENV{'_WRTF_SERVER_SOCKET'};
69 $mysql .= " --port=$server_port --socket=$server_socket";
70 my $outfile = $ENV{'_WRTF_OUTPUT_FILE'};70 my $outfile = $ENV{'_WRTF_OUTPUT_FILE'};
71 open MYSQL, "| $mysql > $outfile" or die "Failed to open pipe to client on server '$server_number': $!";71 open MYSQL, "| $mysql > $outfile" or die "Failed to open MYSQL pipe: '$mysql > $outfile'";
72 print MYSQL $stmt, ';' or die "Error printing statement to MYSQL pipe: $!";72 print MYSQL $stmt, ';' or die "Error printing statement to MYSQL pipe: $!";
73 close MYSQL or die "Error closing MYSQL pipe: $!";73 close MYSQL or die "Error closing MYSQL pipe: $!";
74EOF74EOF
7575
=== modified file 'Percona-Server/mysql-test/lib/My/SafeProcess/CMakeLists.txt'
--- Percona-Server/mysql-test/lib/My/SafeProcess/CMakeLists.txt 2011-05-20 11:50:50 +0000
+++ Percona-Server/mysql-test/lib/My/SafeProcess/CMakeLists.txt 2013-02-13 06:17:00 +0000
@@ -29,4 +29,4 @@
29IF(WIN32)29IF(WIN32)
30 INSTALL(TARGETS my_safe_kill DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess" COMPONENT Test)30 INSTALL(TARGETS my_safe_kill DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess" COMPONENT Test)
31ENDIF()31ENDIF()
32INSTALL(FILES safe_process.pl Base.pm DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess" COMPONENT Test)32INSTALL(FILES Base.pm DESTINATION "${INSTALL_MYSQLTESTDIR}/lib/My/SafeProcess" COMPONENT Test)
3333
=== modified file 'Percona-Server/mysql-test/lib/My/SafeProcess/safe_process.cc'
--- Percona-Server/mysql-test/lib/My/SafeProcess/safe_process.cc 2011-09-07 10:08:09 +0000
+++ Percona-Server/mysql-test/lib/My/SafeProcess/safe_process.cc 2013-02-13 06:17:00 +0000
@@ -152,12 +152,19 @@
152 pid_t own_pid= getpid();152 pid_t own_pid= getpid();
153 pid_t parent_pid= getppid();153 pid_t parent_pid= getppid();
154 bool nocore = false;154 bool nocore = false;
155155 struct sigaction sa,sa_abort;
156
157 sa.sa_handler= handle_signal;
158 sa.sa_flags= SA_NOCLDSTOP;
159 sigemptyset(&sa.sa_mask);
160
161 sa_abort.sa_handler= handle_abort;
162 sigemptyset(&sa_abort.sa_mask);
156 /* Install signal handlers */163 /* Install signal handlers */
157 signal(SIGTERM, handle_signal);164 sigaction(SIGTERM, &sa,NULL);
158 signal(SIGINT, handle_signal);165 sigaction(SIGINT, &sa,NULL);
159 signal(SIGCHLD, handle_signal);166 sigaction(SIGCHLD, &sa,NULL);
160 signal(SIGABRT, handle_abort);167 sigaction(SIGABRT, &sa_abort,NULL);
161168
162 sprintf(safe_process_name, "safe_process[%ld]", (long) own_pid);169 sprintf(safe_process_name, "safe_process[%ld]", (long) own_pid);
163170
164171
=== removed file 'Percona-Server/mysql-test/lib/My/SafeProcess/safe_process.pl'
--- Percona-Server/mysql-test/lib/My/SafeProcess/safe_process.pl 2011-09-07 10:08:09 +0000
+++ Percona-Server/mysql-test/lib/My/SafeProcess/safe_process.pl 1970-01-01 00:00:00 +0000
@@ -1,166 +0,0 @@
1#!/usr/bin/perl
2# -*- cperl -*-
3
4# Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
5#
6# This program is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation; version 2 of the License.
9#
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13# GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program; if not, write to the Free Software
17# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19use strict;
20use warnings;
21
22use lib 'lib';
23use My::SafeProcess::Base;
24use POSIX qw(WNOHANG);
25
26###########################################################################
27# Util functions
28###########################################################################
29
30#
31#Print message to stderr
32#
33my $verbose= 0;
34sub message {
35 if ($verbose > 0){
36 use Time::localtime;
37 my $tm= localtime();
38 my $timestamp= sprintf("%02d%02d%02d %2d:%02d:%02d",
39 $tm->year % 100, $tm->mon+1, $tm->mday,
40 $tm->hour, $tm->min, $tm->sec);
41 print STDERR $timestamp, " monitor[$$]: ", @_, "\n";
42 }
43}
44
45
46###########################################################################
47# Main program
48###########################################################################
49
50my $terminated= 0;
51
52# Protect against being killed in the middle
53# of child creation, just set the terminated flag
54# to make sure the child will be killed off
55# when program is ready to do that
56$SIG{TERM}= sub { message("!Got signal @_"); $terminated= 1; };
57$SIG{INT}= sub { message("!Got signal @_"); $terminated= 1; };
58
59my $parent_pid= getppid();
60
61my $found_double_dash= 0;
62while (my $arg= shift(@ARGV)){
63
64 if ($arg =~ /^--$/){
65 $found_double_dash= 1;
66 last;
67 }
68 elsif ($arg =~ /^--verbose$/){
69 $verbose= 1;
70 }
71 else {
72 die "Unknown option: $arg";
73 }
74}
75
76my $path= shift(@ARGV); # Executable
77
78die "usage:\n" .
79 " safe_process.pl [opts] -- <path> [<args> [...<args_n>]]"
80 unless defined $path || $found_double_dash;
81
82
83message("started");
84#message("path: '$path'");
85message("parent: $parent_pid");
86
87# Start process to monitor
88my $child_pid=
89 create_process(
90 path => $path,
91 args => \@ARGV,
92 setpgrp => 1,
93 );
94message("Started child $child_pid");
95
96eval {
97 sub handle_signal {
98 $terminated= 1;
99 message("Got signal @_");
100
101 # Ignore all signals
102 foreach my $name (keys %SIG){
103 $SIG{$name}= 'IGNORE';
104 }
105
106 die "signaled\n";
107 };
108 local $SIG{TERM}= \&handle_signal;
109 local $SIG{INT}= \&handle_signal;
110 local $SIG{CHLD}= sub {
111 message("Got signal @_");
112 kill('KILL', -$child_pid);
113 my $ret= waitpid($child_pid, 0);
114 if ($? & 127){
115 exit(65); # Killed by signal
116 }
117 exit($? >> 8);
118 };
119
120 # Monitoring loop
121 while(!$terminated) {
122
123 # Check if parent is still alive
124 if (kill(0, $parent_pid) < 1){
125 message("Parent is not alive anymore");
126 last;
127 }
128
129 # Wait for child to terminate but wakeup every
130 # second to also check that parent is still alive
131 my $ret_pid;
132 $ret_pid= waitpid($child_pid, &WNOHANG);
133 if ($ret_pid == $child_pid) {
134 # Process has exited, collect return status
135 my $ret_code= $? >> 8;
136 message("Child exit: $ret_code");
137 # Exit with exit status of the child
138 exit ($ret_code);
139 }
140 sleep(1);
141 }
142};
143if ( $@ ) {
144 # The monitoring loop should have been
145 # broken by handle_signal
146 warn "Unexpected: $@" unless ( $@ =~ /signaled/ );
147}
148
149# Use negative pid in order to kill the whole
150# process group
151#
152my $ret= kill('KILL', -$child_pid);
153message("Killed child: $child_pid, ret: $ret");
154if ($ret > 0) {
155 message("Killed child: $child_pid");
156 # Wait blocking for the child to return
157 my $ret_pid= waitpid($child_pid, 0);
158 if ($ret_pid != $child_pid){
159 message("unexpected pid $ret_pid returned from waitpid($child_pid)");
160 }
161}
162
163message("DONE!");
164exit (1);
165
166
1670
=== modified file 'Percona-Server/mysql-test/lib/mtr_cases.pm'
--- Percona-Server/mysql-test/lib/mtr_cases.pm 2012-10-16 06:21:51 +0000
+++ Percona-Server/mysql-test/lib/mtr_cases.pm 2013-02-13 06:17:00 +0000
@@ -295,6 +295,7 @@
295 "storage/*/mtr",295 "storage/*/mtr",
296 # Look in plugin specific suite dir296 # Look in plugin specific suite dir
297 "plugin/$suite/tests",297 "plugin/$suite/tests",
298 "internal/plugin/$suite/tests",
298 ],299 ],
299 [$suite, "mtr"], ($suite =~ /^i_/));300 [$suite, "mtr"], ($suite =~ /^i_/));
300 return unless $suitedir;301 return unless $suitedir;
@@ -986,18 +987,11 @@
986 if ( $tinfo->{'ndb_test'} )987 if ( $tinfo->{'ndb_test'} )
987 {988 {
988 # This is a NDB test989 # This is a NDB test
989 if ( $::opt_skip_ndbcluster == 2 )990 if ( $::ndbcluster_enabled == 0)
990 {991 {
991 # Ndb is not supported, skip it992 # ndbcluster is disabled
992 $tinfo->{'skip'}= 1;993 $tinfo->{'skip'}= 1;
993 $tinfo->{'comment'}= "No ndbcluster support or ndb tests not enabled";994 $tinfo->{'comment'}= "ndbcluster disabled";
994 return $tinfo;
995 }
996 elsif ( $::opt_skip_ndbcluster )
997 {
998 # All ndb test's should be skipped
999 $tinfo->{'skip'}= 1;
1000 $tinfo->{'comment'}= "No ndbcluster tests(--skip-ndbcluster)";
1001 return $tinfo;995 return $tinfo;
1002 }996 }
1003 }997 }
1004998
=== modified file 'Percona-Server/mysql-test/lib/mtr_report.pm'
--- Percona-Server/mysql-test/lib/mtr_report.pm 2012-08-22 04:47:43 +0000
+++ Percona-Server/mysql-test/lib/mtr_report.pm 2013-02-13 06:17:00 +0000
@@ -28,7 +28,7 @@
28 mtr_verbose_restart mtr_report_test_passed28 mtr_verbose_restart mtr_report_test_passed
29 mtr_report_test_skipped mtr_print29 mtr_report_test_skipped mtr_print
30 mtr_report_test_subunit30 mtr_report_test_subunit
31 mtr_report_test);31 mtr_report_test isotime);
3232
33use mtr_match;33use mtr_match;
34use Subunit;34use Subunit;
@@ -111,6 +111,8 @@
111 $tinfo->{'result'}= 'MTR_RES_PASSED';111 $tinfo->{'result'}= 'MTR_RES_PASSED';
112112
113 mtr_report_test($tinfo);113 mtr_report_test($tinfo);
114
115 resfile_global("endtime ", isotime (time));
114}116}
115117
116118
@@ -598,4 +600,12 @@
598}600}
599601
600602
603# Used by --result-file for for formatting times
604
605sub isotime($) {
606 my ($sec,$min,$hr,$day,$mon,$yr)= gmtime($_[0]);
607 return sprintf "%d-%02d-%02dT%02d:%02d:%02dZ",
608 $yr+1900, $mon+1, $day, $hr, $min, $sec;
609}
610
6011;6111;
602612
=== modified file 'Percona-Server/mysql-test/mysql-test-run.pl'
--- Percona-Server/mysql-test/mysql-test-run.pl 2012-12-04 08:24:59 +0000
+++ Percona-Server/mysql-test/mysql-test-run.pl 2013-02-13 06:17:00 +0000
@@ -164,7 +164,7 @@
164164
165# If you add a new suite, please check TEST_DIRS in Makefile.am.165# If you add a new suite, please check TEST_DIRS in Makefile.am.
166#166#
167my $DEFAULT_SUITES= "main,sys_vars,binlog,federated,rpl,innodb,innodb_fts,perfschema,funcs_1,opt_trace";167my $DEFAULT_SUITES= "main,sys_vars,binlog,federated,rpl,innodb,innodb_fts,perfschema,funcs_1,opt_trace,parts";
168my $opt_suites;168my $opt_suites;
169169
170our $opt_verbose= 0; # Verbose output, enable with --verbose170our $opt_verbose= 0; # Verbose output, enable with --verbose
@@ -315,8 +315,9 @@
315315
316our $opt_warnings= 1;316our $opt_warnings= 1;
317317
318our $opt_include_ndbcluster= 0;318our $ndbcluster_enabled= 0;
319our $opt_skip_ndbcluster= 1;319my $opt_include_ndbcluster= 0;
320my $opt_skip_ndbcluster= 0;
320321
321my $exe_ndbd;322my $exe_ndbd;
322my $exe_ndbmtd;323my $exe_ndbmtd;
@@ -339,14 +340,6 @@
339select(STDOUT);340select(STDOUT);
340$| = 1; # Automatically flush STDOUT341$| = 1; # Automatically flush STDOUT
341342
342# Used by --result-file for for formatting times
343
344sub isotime($) {
345 my ($sec,$min,$hr,$day,$mon,$yr)= gmtime($_[0]);
346 return sprintf "%d-%02d-%02dT%02d:%02d:%02dZ",
347 $yr+1900, $mon+1, $day, $hr, $min, $sec;
348}
349
350main();343main();
351344
352345
@@ -370,26 +363,6 @@
370363
371 if (!$opt_suites) {364 if (!$opt_suites) {
372 $opt_suites= $DEFAULT_SUITES;365 $opt_suites= $DEFAULT_SUITES;
373
374 # Check for any extra suites to enable based on the path name
375 my %extra_suites=
376 (
377 "mysql-5.1-new-ndb" => "ndb_team",
378 "mysql-5.1-new-ndb-merge" => "ndb_team",
379 "mysql-5.1-telco-6.2" => "ndb_team",
380 "mysql-5.1-telco-6.2-merge" => "ndb_team",
381 "mysql-5.1-telco-6.3" => "ndb_team",
382 "mysql-6.0-ndb" => "ndb_team",
383 );
384
385 foreach my $dir ( reverse splitdir($basedir) ) {
386 my $extra_suite= $extra_suites{$dir};
387 if (defined $extra_suite) {
388 mtr_report("Found extra suite: $extra_suite");
389 $opt_suites= "$extra_suite,$opt_suites";
390 last;
391 }
392 }
393 }366 }
394 mtr_report("Using suites: $opt_suites") unless @opt_cases;367 mtr_report("Using suites: $opt_suites") unless @opt_cases;
395368
@@ -463,6 +436,7 @@
463436
464 # Also read from any plugin local or suite specific plugin.defs437 # Also read from any plugin local or suite specific plugin.defs
465 for (glob "$basedir/plugin/*/tests/mtr/plugin.defs".438 for (glob "$basedir/plugin/*/tests/mtr/plugin.defs".
439 " $basedir/internal/plugin/*/tests/mtr/plugin.defs".
466 " suite/*/plugin.defs") {440 " suite/*/plugin.defs") {
467 read_plugin_defs($_);441 read_plugin_defs($_);
468 }442 }
@@ -730,6 +704,10 @@
730 else {704 else {
731 mtr_report("\nRetrying test $tname, ".705 mtr_report("\nRetrying test $tname, ".
732 "attempt($retries/$opt_retry)...\n");706 "attempt($retries/$opt_retry)...\n");
707 #saving the log file as filename.failed in case of retry
708 my $worker_logdir= $result->{savedir};
709 my $log_file_name=dirname($worker_logdir)."/".$result->{shortname}.".log";
710 rename $log_file_name,$log_file_name.".failed";
733 delete($result->{result});711 delete($result->{result});
734 $result->{retries}= $retries+1;712 $result->{retries}= $retries+1;
735 $result->write_test($sock, 'TESTCASE');713 $result->write_test($sock, 'TESTCASE');
@@ -1079,7 +1057,7 @@
1079 # Control what test suites or cases to run1057 # Control what test suites or cases to run
1080 'force' => \$opt_force,1058 'force' => \$opt_force,
1081 'with-ndbcluster-only' => \&collect_option,1059 'with-ndbcluster-only' => \&collect_option,
1082 'include-ndbcluster' => \$opt_include_ndbcluster,1060 'ndb|include-ndbcluster' => \$opt_include_ndbcluster,
1083 'skip-ndbcluster|skip-ndb' => \$opt_skip_ndbcluster,1061 'skip-ndbcluster|skip-ndb' => \$opt_skip_ndbcluster,
1084 'suite|suites=s' => \$opt_suites,1062 'suite|suites=s' => \$opt_suites,
1085 'skip-rpl' => \&collect_option,1063 'skip-rpl' => \&collect_option,
@@ -1535,7 +1513,6 @@
1535 }1513 }
1536 $ENV{'PATH'}= "$ENV{'PATH'}".$separator.$lib_mysqld;1514 $ENV{'PATH'}= "$ENV{'PATH'}".$separator.$lib_mysqld;
1537 }1515 }
1538 $opt_skip_ndbcluster= 1; # Turn off use of NDB cluster
1539 $opt_skip_ssl= 1; # Turn off use of SSL1516 $opt_skip_ssl= 1; # Turn off use of SSL
15401517
1541 # Turn off use of bin log1518 # Turn off use of bin log
@@ -2036,7 +2013,7 @@
2036 "$bindir/libmysqld/examples/mysql_embedded",2013 "$bindir/libmysqld/examples/mysql_embedded",
2037 "$bindir/bin/mysql_embedded");2014 "$bindir/bin/mysql_embedded");
20382015
2039 if ( ! $opt_skip_ndbcluster )2016 if ( $ndbcluster_enabled )
2040 {2017 {
2041 # Look for single threaded NDB2018 # Look for single threaded NDB
2042 $exe_ndbd=2019 $exe_ndbd=
@@ -2312,7 +2289,7 @@
2312 # --------------------------------------------------------------------------2289 # --------------------------------------------------------------------------
2313 # Add the path where libndbclient can be found2290 # Add the path where libndbclient can be found
2314 # --------------------------------------------------------------------------2291 # --------------------------------------------------------------------------
2315 if ( !$opt_skip_ndbcluster )2292 if ( $ndbcluster_enabled )
2316 {2293 {
2317 push(@ld_library_paths, 2294 push(@ld_library_paths,
2318 "$basedir/storage/ndb/src/.libs",2295 "$basedir/storage/ndb/src/.libs",
@@ -2406,7 +2383,7 @@
2406 # ----------------------------------------------------2383 # ----------------------------------------------------
2407 # Setup env for NDB2384 # Setup env for NDB
2408 # ----------------------------------------------------2385 # ----------------------------------------------------
2409 if ( ! $opt_skip_ndbcluster )2386 if ( $ndbcluster_enabled )
2410 {2387 {
2411 $ENV{'NDB_MGM'}=2388 $ENV{'NDB_MGM'}=
2412 my_find_bin($bindir,2389 my_find_bin($bindir,
@@ -2838,37 +2815,87 @@
2838sub check_ndbcluster_support ($) {2815sub check_ndbcluster_support ($) {
2839 my $mysqld_variables= shift;2816 my $mysqld_variables= shift;
28402817
2818 my $ndbcluster_supported = 0;
2819 if ($mysqld_variables{'ndb-connectstring'})
2820 {
2821 $ndbcluster_supported = 1;
2822 }
2823
2824 if ($opt_skip_ndbcluster && $opt_include_ndbcluster)
2825 {
2826 # User is ambivalent. Theoretically the arg which was
2827 # given last on command line should win, but that order is
2828 # unknown at this time.
2829 mtr_error("Ambigous command, both --include-ndbcluster " .
2830 " and --skip-ndbcluster was specified");
2831 }
2832
2841 # Check if this is MySQL Cluster, ie. mysql version string ends2833 # Check if this is MySQL Cluster, ie. mysql version string ends
2842 # with -ndb-Y.Y.Y[-status]2834 # with -ndb-Y.Y.Y[-status]
2843 if ( defined $mysql_version_extra &&2835 if ( defined $mysql_version_extra &&
2844 $mysql_version_extra =~ /^-ndb-/ )2836 $mysql_version_extra =~ /-ndb-([0-9]*)\.([0-9]*)\.([0-9]*)/ )
2845 {2837 {
2846 mtr_report(" - MySQL Cluster");2838 # MySQL Cluster tree
2847 # Enable ndb engine and add more test suites2839 mtr_report(" - MySQL Cluster detected");
2848 $opt_include_ndbcluster = 1;2840
2849 $DEFAULT_SUITES.=",ndb,ndb_binlog,rpl_ndb,ndb_rpl,ndb_memcache";2841 if ($opt_skip_ndbcluster)
2850 }2842 {
28512843 mtr_report(" - skipping ndbcluster(--skip-ndbcluster)");
2852 if ($opt_include_ndbcluster)2844 return;
2853 {2845 }
2854 $opt_skip_ndbcluster= 0;2846
2855 }2847 if (!$ndbcluster_supported)
28562848 {
2857 if ($opt_skip_ndbcluster)2849 # MySQL Cluster tree, but mysqld was not compiled with
2858 {2850 # ndbcluster -> fail unless --skip-ndbcluster was used
2859 mtr_report(" - skipping ndbcluster");2851 mtr_error("This is MySQL Cluster but mysqld does not " .
2860 return;2852 "support ndbcluster. Use --skip-ndbcluster to " .
2861 }2853 "force mtr to run without it.");
28622854 }
2863 if ( ! $mysqld_variables{'ndb-connectstring'} )2855
2864 {2856 # mysqld was compiled with ndbcluster -> auto enable
2865 mtr_report(" - skipping ndbcluster, mysqld not compiled with ndbcluster");2857 }
2866 $opt_skip_ndbcluster= 2;2858 else
2867 return;2859 {
2868 }2860 # Not a MySQL Cluster tree
28692861 if (!$ndbcluster_supported)
2870 mtr_report(" - using ndbcluster when necessary, mysqld supports it");2862 {
28712863 if ($opt_include_ndbcluster)
2864 {
2865 mtr_error("Could not detect ndbcluster support ".
2866 "requested with --include-ndbcluster");
2867 }
2868
2869 # Silently skip, mysqld was compiled without ndbcluster
2870 # which is the default case
2871 return;
2872 }
2873
2874 if ($opt_skip_ndbcluster)
2875 {
2876 # Compiled with ndbcluster but ndbcluster skipped
2877 mtr_report(" - skipping ndbcluster(--skip-ndbcluster)");
2878 return;
2879 }
2880
2881
2882 # Not a MySQL Cluster tree, enable ndbcluster
2883 # if --include-ndbcluster was used
2884 if ($opt_include_ndbcluster)
2885 {
2886 # enable ndbcluster
2887 }
2888 else
2889 {
2890 mtr_report(" - skipping ndbcluster(disabled by default)");
2891 return;
2892 }
2893 }
2894
2895 mtr_report(" - enabling ndbcluster");
2896 $ndbcluster_enabled= 1;
2897 # Add MySQL Cluster test suites
2898 $DEFAULT_SUITES.=",ndb,ndb_binlog,rpl_ndb,ndb_rpl,ndb_memcache";
2872 return;2899 return;
2873}2900}
28742901
@@ -6257,6 +6284,7 @@
6257 $err_in_report= 1 if $line =~ /ERROR SUMMARY: [1-9]/;6284 $err_in_report= 1 if $line =~ /ERROR SUMMARY: [1-9]/;
6258 $err_in_report= 1 if $line =~ /definitely lost: [1-9]/;6285 $err_in_report= 1 if $line =~ /definitely lost: [1-9]/;
6259 $err_in_report= 1 if $line =~ /possibly lost: [1-9]/;6286 $err_in_report= 1 if $line =~ /possibly lost: [1-9]/;
6287 $err_in_report= 1 if $line =~ /still reachable: [1-9]/;
6260 }6288 }
6261 }6289 }
62626290
@@ -6282,6 +6310,7 @@
62826310
6283 # Just ignore if not configured/built to run ctest6311 # Just ignore if not configured/built to run ctest
6284 if (! -f "CTestTestfile.cmake") {6312 if (! -f "CTestTestfile.cmake") {
6313 mtr_report("No unit tests found.");
6285 chdir($olddir);6314 chdir($olddir);
6286 return;6315 return;
6287 }6316 }
@@ -6292,6 +6321,7 @@
6292 # Also silently ignore if we don't have ctest and didn't insist6321 # Also silently ignore if we don't have ctest and didn't insist
6293 # Special override: also ignore in Pushbuild, some platforms may not have it6322 # Special override: also ignore in Pushbuild, some platforms may not have it
6294 # Now, run ctest and collect output6323 # Now, run ctest and collect output
6324 $ENV{CTEST_OUTPUT_ON_FAILURE} = 1;
6295 my $ctest_out= `ctest $ctest_vs 2>&1`;6325 my $ctest_out= `ctest $ctest_vs 2>&1`;
6296 if ($? == $no_ctest && $opt_ctest == -1 && ! defined $ENV{PB2WORKDIR}) {6326 if ($? == $no_ctest && $opt_ctest == -1 && ! defined $ENV{PB2WORKDIR}) {
6297 chdir($olddir);6327 chdir($olddir);
62986328
=== modified file 'Percona-Server/mysql-test/r/alter_table.result'
--- Percona-Server/mysql-test/r/alter_table.result 2012-12-04 08:24:59 +0000
+++ Percona-Server/mysql-test/r/alter_table.result 2013-02-13 06:17:00 +0000
@@ -1581,9 +1581,9 @@
1581ERROR HY000: Unknown LOCK type 'INVALID'1581ERROR HY000: Unknown LOCK type 'INVALID'
1582ALTER TABLE m1 ENABLE KEYS, LOCK= DEFAULT;1582ALTER TABLE m1 ENABLE KEYS, LOCK= DEFAULT;
1583ALTER TABLE m1 ENABLE KEYS, LOCK= NONE;1583ALTER TABLE m1 ENABLE KEYS, LOCK= NONE;
1584ERROR 42000: This version of MySQL doesn't yet support 'ALTER TABLE m1 ENABLE KEYS, LOCK= NONE'1584ERROR 0A000: LOCK=NONE/SHARED is not supported for this operation. Try LOCK=EXCLUSIVE.
1585ALTER TABLE m1 ENABLE KEYS, LOCK= SHARED;1585ALTER TABLE m1 ENABLE KEYS, LOCK= SHARED;
1586ERROR 42000: This version of MySQL doesn't yet support 'ALTER TABLE m1 ENABLE KEYS, LOCK= SHARED'1586ERROR 0A000: LOCK=NONE/SHARED is not supported for this operation. Try LOCK=EXCLUSIVE.
1587ALTER TABLE m1 ENABLE KEYS, LOCK= EXCLUSIVE;1587ALTER TABLE m1 ENABLE KEYS, LOCK= EXCLUSIVE;
1588ALTER TABLE t1 DROP INDEX i1, DROP INDEX i2, DROP INDEX i3, DROP INDEX i4;1588ALTER TABLE t1 DROP INDEX i1, DROP INDEX i2, DROP INDEX i3, DROP INDEX i4;
1589#1589#
@@ -1603,7 +1603,7 @@
1603Warnings:1603Warnings:
1604Note 1831 Duplicate index 'i3' defined on the table 'test.t1'. This is deprecated and will be disallowed in a future release.1604Note 1831 Duplicate index 'i3' defined on the table 'test.t1'. This is deprecated and will be disallowed in a future release.
1605ALTER TABLE t1 ADD INDEX i4(b), ALGORITHM= COPY, LOCK= NONE;1605ALTER TABLE t1 ADD INDEX i4(b), ALGORITHM= COPY, LOCK= NONE;
1606ERROR 42000: This version of MySQL doesn't yet support 'ALTER TABLE t1 ADD INDEX i4(b), ALGORITHM= COPY, LOCK= NONE'1606ERROR 0A000: LOCK=NONE is not supported. Reason: COPY algorithm requires a lock. Try LOCK=SHARED.
1607ALTER TABLE t1 ADD INDEX i5(b), ALGORITHM= COPY, LOCK= SHARED;1607ALTER TABLE t1 ADD INDEX i5(b), ALGORITHM= COPY, LOCK= SHARED;
1608affected rows: 21608affected rows: 2
1609info: Records: 2 Duplicates: 0 Warnings: 11609info: Records: 2 Duplicates: 0 Warnings: 1
@@ -1615,13 +1615,13 @@
1615Warnings:1615Warnings:
1616Note 1831 Duplicate index 'i6' defined on the table 'test.t1'. This is deprecated and will be disallowed in a future release.1616Note 1831 Duplicate index 'i6' defined on the table 'test.t1'. This is deprecated and will be disallowed in a future release.
1617ALTER TABLE m1 ENABLE KEYS, ALGORITHM= INPLACE, LOCK= NONE;1617ALTER TABLE m1 ENABLE KEYS, ALGORITHM= INPLACE, LOCK= NONE;
1618ERROR 42000: This version of MySQL doesn't yet support 'ALTER TABLE m1 ENABLE KEYS, ALGORITHM= INPLACE, LOCK= NONE'1618ERROR 0A000: LOCK=NONE/SHARED is not supported for this operation. Try LOCK=EXCLUSIVE.
1619ALTER TABLE m1 ENABLE KEYS, ALGORITHM= INPLACE, LOCK= SHARED;1619ALTER TABLE m1 ENABLE KEYS, ALGORITHM= INPLACE, LOCK= SHARED;
1620ERROR 42000: This version of MySQL doesn't yet support 'ALTER TABLE m1 ENABLE KEYS, ALGORITHM= INPLACE, LOCK= SHARED'1620ERROR 0A000: LOCK=NONE/SHARED is not supported for this operation. Try LOCK=EXCLUSIVE.
1621ALTER TABLE m1 ENABLE KEYS, ALGORITHM= INPLACE, LOCK= EXCLUSIVE;1621ALTER TABLE m1 ENABLE KEYS, ALGORITHM= INPLACE, LOCK= EXCLUSIVE;
1622affected rows: 01622affected rows: 0
1623ALTER TABLE m1 ENABLE KEYS, ALGORITHM= COPY, LOCK= NONE;1623ALTER TABLE m1 ENABLE KEYS, ALGORITHM= COPY, LOCK= NONE;
1624ERROR 42000: This version of MySQL doesn't yet support 'ALTER TABLE m1 ENABLE KEYS, ALGORITHM= COPY, LOCK= NONE'1624ERROR 0A000: LOCK=NONE is not supported. Reason: COPY algorithm requires a lock. Try LOCK=SHARED.
1625ALTER TABLE m1 ENABLE KEYS, ALGORITHM= COPY, LOCK= SHARED;1625ALTER TABLE m1 ENABLE KEYS, ALGORITHM= COPY, LOCK= SHARED;
1626affected rows: 21626affected rows: 2
1627info: Records: 2 Duplicates: 0 Warnings: 01627info: Records: 2 Duplicates: 0 Warnings: 0
@@ -1721,7 +1721,7 @@
1721affected rows: 21721affected rows: 2
1722info: Records: 2 Duplicates: 0 Warnings: 01722info: Records: 2 Duplicates: 0 Warnings: 0
1723ALTER TABLE ti1 ADD PRIMARY KEY(a), ALGORITHM=INPLACE;1723ALTER TABLE ti1 ADD PRIMARY KEY(a), ALGORITHM=INPLACE;
1724ERROR 42000: This version of MySQL doesn't yet support 'ALTER TABLE ti1 ADD PRIMARY KEY(a), ALGORITHM=INPLACE'1724ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: InnoDB presently supports one FULLTEXT index creation at a time. Try ALGORITHM=COPY.
1725ALTER TABLE ti1 ADD PRIMARY KEY(a);1725ALTER TABLE ti1 ADD PRIMARY KEY(a);
1726affected rows: 21726affected rows: 2
1727info: Records: 2 Duplicates: 0 Warnings: 01727info: Records: 2 Duplicates: 0 Warnings: 0
@@ -1794,9 +1794,12 @@
1794ALTER TABLE tm1 MODIFY COLUMN e INT FIRST;1794ALTER TABLE tm1 MODIFY COLUMN e INT FIRST;
1795affected rows: 21795affected rows: 2
1796info: Records: 2 Duplicates: 0 Warnings: 01796info: Records: 2 Duplicates: 0 Warnings: 0
1797SET @orig_sql_mode = @@sql_mode;
1798SET @@sql_mode = 'STRICT_TRANS_TABLES';
1797ALTER TABLE ti1 MODIFY COLUMN c INT NOT NULL;1799ALTER TABLE ti1 MODIFY COLUMN c INT NOT NULL;
1798affected rows: 01800affected rows: 0
1799info: Records: 0 Duplicates: 0 Warnings: 01801info: Records: 0 Duplicates: 0 Warnings: 0
1802SET @@sql_mode = @orig_sql_mode;
1800ALTER TABLE tm1 MODIFY COLUMN c INT NOT NULL;1803ALTER TABLE tm1 MODIFY COLUMN c INT NOT NULL;
1801affected rows: 21804affected rows: 2
1802info: Records: 2 Duplicates: 0 Warnings: 01805info: Records: 2 Duplicates: 0 Warnings: 0
18031806
=== modified file 'Percona-Server/mysql-test/r/connect.result'
--- Percona-Server/mysql-test/r/connect.result 2012-10-16 06:21:51 +0000
+++ Percona-Server/mysql-test/r/connect.result 2013-02-13 06:17:00 +0000
@@ -340,15 +340,16 @@
340ERROR HY000: You must SET PASSWORD before executing this statement340ERROR HY000: You must SET PASSWORD before executing this statement
341CALL test_t1(last_t1() + 1);341CALL test_t1(last_t1() + 1);
342ERROR HY000: You must SET PASSWORD before executing this statement342ERROR HY000: You must SET PASSWORD before executing this statement
343# setting a password with a user name is no good343# setting a password with a user name is ok if it exactly matches the
344# authenticated user.
344SET PASSWORD FOR must_change@localhost = PASSWORD('aha3');345SET PASSWORD FOR must_change@localhost = PASSWORD('aha3');
345ERROR HY000: You must SET PASSWORD before executing this statement
346SELECT USER();346SELECT USER();
347ERROR HY000: You must SET PASSWORD before executing this statement347USER()
348must_change@localhost
348SELECT last_t1();349SELECT last_t1();
349ERROR HY000: You must SET PASSWORD before executing this statement350last_t1()
3514
350CALL test_t1(last_t1() + 1);352CALL test_t1(last_t1() + 1);
351ERROR HY000: You must SET PASSWORD before executing this statement
352# setting a password for the current user works353# setting a password for the current user works
353SET PASSWORD FOR CURRENT_USER() = PASSWORD('aha3');354SET PASSWORD FOR CURRENT_USER() = PASSWORD('aha3');
354SELECT USER();355SELECT USER();
@@ -356,7 +357,7 @@
356must_change@localhost357must_change@localhost
357SELECT last_t1();358SELECT last_t1();
358last_t1()359last_t1()
35943605
360CALL test_t1(last_t1() + 1);361CALL test_t1(last_t1() + 1);
361# testing the ALTER USER command362# testing the ALTER USER command
362# try a single user363# try a single user
@@ -392,6 +393,21 @@
392DROP FUNCTION last_t1;393DROP FUNCTION last_t1;
393DROP TABLE t1;394DROP TABLE t1;
394DROP USER must_change@localhost;395DROP USER must_change@localhost;
396#
397# WL#6587: Protocol support for password expiration
398#
399CREATE USER wl6587@localhost IDENTIFIED BY 'wl6587';
400ALTER USER wl6587@localhost PASSWORD EXPIRE;
401# non-interactive mysql should fail
402Warning: Using a password on the command line interface can be insecure.
403ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
404# mysqladmin non-password should fail
405Warning: Using a password on the command line interface can be insecure.
406mysqladmin: connect to server at 'localhost' failed
407error: 'You must SET PASSWORD before executing this statement'
408# mysqladmin password should work
409Warning: Using a password on the command line interface can be insecure.
410DROP USER wl6587@localhost;
395# ------------------------------------------------------------------411# ------------------------------------------------------------------
396# -- End of 5.6 tests412# -- End of 5.6 tests
397# ------------------------------------------------------------------413# ------------------------------------------------------------------
398414
=== modified file 'Percona-Server/mysql-test/r/create.result'
--- Percona-Server/mysql-test/r/create.result 2012-10-16 06:21:51 +0000
+++ Percona-Server/mysql-test/r/create.result 2013-02-13 06:17:00 +0000
@@ -1889,7 +1889,7 @@
1889show create table t1;1889show create table t1;
1890Table Create Table1890Table Create Table
1891t1 CREATE TABLE `t1` (1891t1 CREATE TABLE `t1` (
1892 `ID` bigint(4) NOT NULL DEFAULT '0',1892 `ID` bigint(21) unsigned NOT NULL DEFAULT '0',
1893 `USER` varchar(16) NOT NULL DEFAULT '',1893 `USER` varchar(16) NOT NULL DEFAULT '',
1894 `HOST` varchar(64) NOT NULL DEFAULT '',1894 `HOST` varchar(64) NOT NULL DEFAULT '',
1895 `DB` varchar(64) DEFAULT NULL,1895 `DB` varchar(64) DEFAULT NULL,
@@ -1904,7 +1904,7 @@
1904show create table t1;1904show create table t1;
1905Table Create Table1905Table Create Table
1906t1 CREATE TEMPORARY TABLE `t1` (1906t1 CREATE TEMPORARY TABLE `t1` (
1907 `ID` bigint(4) NOT NULL DEFAULT '0',1907 `ID` bigint(21) unsigned NOT NULL DEFAULT '0',
1908 `USER` varchar(16) NOT NULL DEFAULT '',1908 `USER` varchar(16) NOT NULL DEFAULT '',
1909 `HOST` varchar(64) NOT NULL DEFAULT '',1909 `HOST` varchar(64) NOT NULL DEFAULT '',
1910 `DB` varchar(64) DEFAULT NULL,1910 `DB` varchar(64) DEFAULT NULL,
19111911
=== modified file 'Percona-Server/mysql-test/r/ctype_binary.result'
--- Percona-Server/mysql-test/r/ctype_binary.result 2012-10-16 06:21:51 +0000
+++ Percona-Server/mysql-test/r/ctype_binary.result 2013-02-13 06:17:00 +0000
@@ -746,7 +746,7 @@
746show create table t1;746show create table t1;
747Table Create Table747Table Create Table
748t1 CREATE TABLE `t1` (748t1 CREATE TABLE `t1` (
749 `c1` varbinary(10) NOT NULL DEFAULT ''749 `c1` varbinary(21) NOT NULL DEFAULT ''
750) ENGINE=MyISAM DEFAULT CHARSET=latin1750) ENGINE=MyISAM DEFAULT CHARSET=latin1
751drop table t1;751drop table t1;
752select hex(concat(inet_aton('127.1.1.1')));752select hex(concat(inet_aton('127.1.1.1')));
753753
=== modified file 'Percona-Server/mysql-test/r/ctype_cp1251.result'
--- Percona-Server/mysql-test/r/ctype_cp1251.result 2012-10-16 06:21:51 +0000
+++ Percona-Server/mysql-test/r/ctype_cp1251.result 2013-02-13 06:17:00 +0000
@@ -1138,7 +1138,7 @@
1138show create table t1;1138show create table t1;
1139Table Create Table1139Table Create Table
1140t1 CREATE TABLE `t1` (1140t1 CREATE TABLE `t1` (
1141 `c1` varchar(10) CHARACTER SET cp1251 NOT NULL DEFAULT ''1141 `c1` varchar(21) CHARACTER SET cp1251 NOT NULL DEFAULT ''
1142) ENGINE=MyISAM DEFAULT CHARSET=latin11142) ENGINE=MyISAM DEFAULT CHARSET=latin1
1143drop table t1;1143drop table t1;
1144select hex(concat(inet_aton('127.1.1.1')));1144select hex(concat(inet_aton('127.1.1.1')));
11451145
=== modified file 'Percona-Server/mysql-test/r/ctype_latin1.result'
--- Percona-Server/mysql-test/r/ctype_latin1.result 2012-10-16 06:21:51 +0000
+++ Percona-Server/mysql-test/r/ctype_latin1.result 2013-02-13 06:17:00 +0000
@@ -1165,7 +1165,7 @@
1165show create table t1;1165show create table t1;
1166Table Create Table1166Table Create Table
1167t1 CREATE TABLE `t1` (1167t1 CREATE TABLE `t1` (
1168 `c1` varchar(10) NOT NULL DEFAULT ''1168 `c1` varchar(21) NOT NULL DEFAULT ''
1169) ENGINE=MyISAM DEFAULT CHARSET=latin11169) ENGINE=MyISAM DEFAULT CHARSET=latin1
1170drop table t1;1170drop table t1;
1171select hex(concat(inet_aton('127.1.1.1')));1171select hex(concat(inet_aton('127.1.1.1')));
11721172
=== modified file 'Percona-Server/mysql-test/r/ctype_ucs.result'
--- Percona-Server/mysql-test/r/ctype_ucs.result 2012-12-04 08:24:59 +0000
+++ Percona-Server/mysql-test/r/ctype_ucs.result 2013-02-13 06:17:00 +0000
@@ -2083,7 +2083,7 @@
2083show create table t1;2083show create table t1;
2084Table Create Table2084Table Create Table
2085t1 CREATE TABLE `t1` (2085t1 CREATE TABLE `t1` (
2086 `c1` varchar(10) CHARACTER SET ucs2 NOT NULL DEFAULT ''2086 `c1` varchar(21) CHARACTER SET ucs2 NOT NULL DEFAULT ''
2087) ENGINE=MyISAM DEFAULT CHARSET=latin12087) ENGINE=MyISAM DEFAULT CHARSET=latin1
2088drop table t1;2088drop table t1;
2089select hex(concat(inet_aton('127.1.1.1')));2089select hex(concat(inet_aton('127.1.1.1')));
20902090
=== modified file 'Percona-Server/mysql-test/r/ctype_utf8.result'
--- Percona-Server/mysql-test/r/ctype_utf8.result 2012-10-16 06:21:51 +0000
+++ Percona-Server/mysql-test/r/ctype_utf8.result 2013-02-13 06:17:00 +0000
@@ -2992,7 +2992,7 @@
2992show create table t1;2992show create table t1;
2993Table Create Table2993Table Create Table
2994t1 CREATE TABLE `t1` (2994t1 CREATE TABLE `t1` (
2995 `c1` varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT ''2995 `c1` varchar(21) CHARACTER SET utf8 NOT NULL DEFAULT ''
2996) ENGINE=MyISAM DEFAULT CHARSET=latin12996) ENGINE=MyISAM DEFAULT CHARSET=latin1
2997drop table t1;2997drop table t1;
2998select hex(concat(inet_aton('127.1.1.1')));2998select hex(concat(inet_aton('127.1.1.1')));
29992999
=== modified file 'Percona-Server/mysql-test/r/ddl_i18n_koi8r.result'
--- Percona-Server/mysql-test/r/ddl_i18n_koi8r.result 2011-10-25 10:23:23 +0000
+++ Percona-Server/mysql-test/r/ddl_i18n_koi8r.result 2013-02-13 06:17:00 +0000
@@ -734,7 +734,7 @@
734/*!50003 SET @saved_sql_mode = @@sql_mode */ ;734/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
735/*!50003 SET sql_mode = '' */ ;735/*!50003 SET sql_mode = '' */ ;
736DELIMITER ;;736DELIMITER ;;
737/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 PROCEDURE `p1`(737CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`(
738INOUT ÐÁÒÁÍ1 CHAR(10),738INOUT ÐÁÒÁÍ1 CHAR(10),
739OUT ÐÁÒÁÍ2 CHAR(10))739OUT ÐÁÒÁÍ2 CHAR(10))
740BEGIN740BEGIN
@@ -751,7 +751,7 @@
751@@character_set_client AS c8;751@@character_set_client AS c8;
752SET ÐÁÒÁÍ1 = 'a';752SET ÐÁÒÁÍ1 = 'a';
753SET ÐÁÒÁÍ2 = 'b';753SET ÐÁÒÁÍ2 = 'b';
754END */;;754END ;;
755DELIMITER ;755DELIMITER ;
756/*!50003 SET sql_mode = @saved_sql_mode */ ;756/*!50003 SET sql_mode = @saved_sql_mode */ ;
757/*!50003 SET character_set_client = @saved_cs_client */ ;757/*!50003 SET character_set_client = @saved_cs_client */ ;
@@ -768,7 +768,7 @@
768/*!50003 SET @saved_sql_mode = @@sql_mode */ ;768/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
769/*!50003 SET sql_mode = '' */ ;769/*!50003 SET sql_mode = '' */ ;
770DELIMITER ;;770DELIMITER ;;
771/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 PROCEDURE `p2`(771CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`(
772INOUT ÐÁÒÁÍ1 CHAR(10) CHARACTER SET utf8,772INOUT ÐÁÒÁÍ1 CHAR(10) CHARACTER SET utf8,
773OUT ÐÁÒÁÍ2 CHAR(10) CHARACTER SET utf8)773OUT ÐÁÒÁÍ2 CHAR(10) CHARACTER SET utf8)
774BEGIN774BEGIN
@@ -785,7 +785,7 @@
785@@character_set_client AS c8;785@@character_set_client AS c8;
786SET ÐÁÒÁÍ1 = 'a';786SET ÐÁÒÁÍ1 = 'a';
787SET ÐÁÒÁÍ2 = 'b';787SET ÐÁÒÁÍ2 = 'b';
788END */;;788END ;;
789DELIMITER ;789DELIMITER ;
790/*!50003 SET sql_mode = @saved_sql_mode */ ;790/*!50003 SET sql_mode = @saved_sql_mode */ ;
791/*!50003 SET character_set_client = @saved_cs_client */ ;791/*!50003 SET character_set_client = @saved_cs_client */ ;
@@ -810,7 +810,7 @@
810/*!50003 SET @saved_sql_mode = @@sql_mode */ ;810/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
811/*!50003 SET sql_mode = '' */ ;811/*!50003 SET sql_mode = '' */ ;
812DELIMITER ;;812DELIMITER ;;
813/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 PROCEDURE `p3`(813CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`(
814INOUT ÐÁÒÁÍ1 CHAR(10),814INOUT ÐÁÒÁÍ1 CHAR(10),
815OUT ÐÁÒÁÍ2 CHAR(10))815OUT ÐÁÒÁÍ2 CHAR(10))
816BEGIN816BEGIN
@@ -827,7 +827,7 @@
827@@character_set_client AS c8;827@@character_set_client AS c8;
828SET ÐÁÒÁÍ1 = 'a';828SET ÐÁÒÁÍ1 = 'a';
829SET ÐÁÒÁÍ2 = 'b';829SET ÐÁÒÁÍ2 = 'b';
830END */;;830END ;;
831DELIMITER ;831DELIMITER ;
832/*!50003 SET sql_mode = @saved_sql_mode */ ;832/*!50003 SET sql_mode = @saved_sql_mode */ ;
833/*!50003 SET character_set_client = @saved_cs_client */ ;833/*!50003 SET character_set_client = @saved_cs_client */ ;
@@ -844,7 +844,7 @@
844/*!50003 SET @saved_sql_mode = @@sql_mode */ ;844/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
845/*!50003 SET sql_mode = '' */ ;845/*!50003 SET sql_mode = '' */ ;
846DELIMITER ;;846DELIMITER ;;
847/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 PROCEDURE `p4`(847CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`(
848INOUT ÐÁÒÁÍ1 CHAR(10) CHARACTER SET utf8,848INOUT ÐÁÒÁÍ1 CHAR(10) CHARACTER SET utf8,
849OUT ÐÁÒÁÍ2 CHAR(10) CHARACTER SET utf8)849OUT ÐÁÒÁÍ2 CHAR(10) CHARACTER SET utf8)
850BEGIN850BEGIN
@@ -861,7 +861,7 @@
861@@character_set_client AS c8;861@@character_set_client AS c8;
862SET ÐÁÒÁÍ1 = 'a';862SET ÐÁÒÁÍ1 = 'a';
863SET ÐÁÒÁÍ2 = 'b';863SET ÐÁÒÁÍ2 = 'b';
864END */;;864END ;;
865DELIMITER ;865DELIMITER ;
866/*!50003 SET sql_mode = @saved_sql_mode */ ;866/*!50003 SET sql_mode = @saved_sql_mode */ ;
867/*!50003 SET character_set_client = @saved_cs_client */ ;867/*!50003 SET character_set_client = @saved_cs_client */ ;
868868
=== modified file 'Percona-Server/mysql-test/r/ddl_i18n_utf8.result'
--- Percona-Server/mysql-test/r/ddl_i18n_utf8.result 2011-10-25 10:23:23 +0000
+++ Percona-Server/mysql-test/r/ddl_i18n_utf8.result 2013-02-13 06:17:00 +0000
@@ -734,7 +734,7 @@
734/*!50003 SET @saved_sql_mode = @@sql_mode */ ;734/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
735/*!50003 SET sql_mode = '' */ ;735/*!50003 SET sql_mode = '' */ ;
736DELIMITER ;;736DELIMITER ;;
737/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 PROCEDURE `p1`(737CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`(
738INOUT парам1 CHAR(10),738INOUT парам1 CHAR(10),
739OUT парам2 CHAR(10))739OUT парам2 CHAR(10))
740BEGIN740BEGIN
@@ -751,7 +751,7 @@
751@@character_set_client AS c8;751@@character_set_client AS c8;
752SET парам1 = 'a';752SET парам1 = 'a';
753SET парам2 = 'b';753SET парам2 = 'b';
754END */;;754END ;;
755DELIMITER ;755DELIMITER ;
756/*!50003 SET sql_mode = @saved_sql_mode */ ;756/*!50003 SET sql_mode = @saved_sql_mode */ ;
757/*!50003 SET character_set_client = @saved_cs_client */ ;757/*!50003 SET character_set_client = @saved_cs_client */ ;
@@ -768,7 +768,7 @@
768/*!50003 SET @saved_sql_mode = @@sql_mode */ ;768/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
769/*!50003 SET sql_mode = '' */ ;769/*!50003 SET sql_mode = '' */ ;
770DELIMITER ;;770DELIMITER ;;
771/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 PROCEDURE `p2`(771CREATE DEFINER=`root`@`localhost` PROCEDURE `p2`(
772INOUT парам1 CHAR(10) CHARACTER SET utf8,772INOUT парам1 CHAR(10) CHARACTER SET utf8,
773OUT парам2 CHAR(10) CHARACTER SET utf8)773OUT парам2 CHAR(10) CHARACTER SET utf8)
774BEGIN774BEGIN
@@ -785,7 +785,7 @@
785@@character_set_client AS c8;785@@character_set_client AS c8;
786SET парам1 = 'a';786SET парам1 = 'a';
787SET парам2 = 'b';787SET парам2 = 'b';
788END */;;788END ;;
789DELIMITER ;789DELIMITER ;
790/*!50003 SET sql_mode = @saved_sql_mode */ ;790/*!50003 SET sql_mode = @saved_sql_mode */ ;
791/*!50003 SET character_set_client = @saved_cs_client */ ;791/*!50003 SET character_set_client = @saved_cs_client */ ;
@@ -810,7 +810,7 @@
810/*!50003 SET @saved_sql_mode = @@sql_mode */ ;810/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
811/*!50003 SET sql_mode = '' */ ;811/*!50003 SET sql_mode = '' */ ;
812DELIMITER ;;812DELIMITER ;;
813/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 PROCEDURE `p3`(813CREATE DEFINER=`root`@`localhost` PROCEDURE `p3`(
814INOUT парам1 CHAR(10),814INOUT парам1 CHAR(10),
815OUT парам2 CHAR(10))815OUT парам2 CHAR(10))
816BEGIN816BEGIN
@@ -827,7 +827,7 @@
827@@character_set_client AS c8;827@@character_set_client AS c8;
828SET парам1 = 'a';828SET парам1 = 'a';
829SET парам2 = 'b';829SET парам2 = 'b';
830END */;;830END ;;
831DELIMITER ;831DELIMITER ;
832/*!50003 SET sql_mode = @saved_sql_mode */ ;832/*!50003 SET sql_mode = @saved_sql_mode */ ;
833/*!50003 SET character_set_client = @saved_cs_client */ ;833/*!50003 SET character_set_client = @saved_cs_client */ ;
@@ -844,7 +844,7 @@
844/*!50003 SET @saved_sql_mode = @@sql_mode */ ;844/*!50003 SET @saved_sql_mode = @@sql_mode */ ;
845/*!50003 SET sql_mode = '' */ ;845/*!50003 SET sql_mode = '' */ ;
846DELIMITER ;;846DELIMITER ;;
847/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 PROCEDURE `p4`(847CREATE DEFINER=`root`@`localhost` PROCEDURE `p4`(
848INOUT парам1 CHAR(10) CHARACTER SET utf8,848INOUT парам1 CHAR(10) CHARACTER SET utf8,
849OUT парам2 CHAR(10) CHARACTER SET utf8)849OUT парам2 CHAR(10) CHARACTER SET utf8)
850BEGIN850BEGIN
@@ -861,7 +861,7 @@
861@@character_set_client AS c8;861@@character_set_client AS c8;
862SET парам1 = 'a';862SET парам1 = 'a';
863SET парам2 = 'b';863SET парам2 = 'b';
864END */;;864END ;;
865DELIMITER ;865DELIMITER ;
866/*!50003 SET sql_mode = @saved_sql_mode */ ;866/*!50003 SET sql_mode = @saved_sql_mode */ ;
867/*!50003 SET character_set_client = @saved_cs_client */ ;867/*!50003 SET character_set_client = @saved_cs_client */ ;
868868
=== modified file 'Percona-Server/mysql-test/r/derived.result'
--- Percona-Server/mysql-test/r/derived.result 2012-10-16 06:21:51 +0000
+++ Percona-Server/mysql-test/r/derived.result 2013-02-13 06:17:00 +0000
@@ -171,6 +171,10 @@
171create table t2 (mat_id MEDIUMINT UNSIGNED NOT NULL, pla_id MEDIUMINT UNSIGNED NOT NULL);171create table t2 (mat_id MEDIUMINT UNSIGNED NOT NULL, pla_id MEDIUMINT UNSIGNED NOT NULL);
172insert into t1 values (NULL, 'a', 1), (NULL, 'b', 2), (NULL, 'c', 3), (NULL, 'd', 4), (NULL, 'e', 5), (NULL, 'f', 6), (NULL, 'g', 7), (NULL, 'h', 8), (NULL, 'i', 9);172insert into t1 values (NULL, 'a', 1), (NULL, 'b', 2), (NULL, 'c', 3), (NULL, 'd', 4), (NULL, 'e', 5), (NULL, 'f', 6), (NULL, 'g', 7), (NULL, 'h', 8), (NULL, 'i', 9);
173insert into t2 values (1, 100), (1, 101), (1, 102), (2, 100), (2, 103), (2, 104), (3, 101), (3, 102), (3, 105);173insert into t2 values (1, 100), (1, 101), (1, 102), (2, 100), (2, 103), (2, 104), (3, 101), (3, 102), (3, 105);
174analyze table t1, t2;
175Table Op Msg_type Msg_text
176test.t1 analyze status OK
177test.t2 analyze status OK
174SELECT STRAIGHT_JOIN d.pla_id, m2.mat_id FROM t1 m2 INNER JOIN (SELECT mp.pla_id, MIN(m1.matintnum) AS matintnum FROM t2 mp INNER JOIN t1 m1 ON mp.mat_id=m1.mat_id GROUP BY mp.pla_id) d ON d.matintnum=m2.matintnum;178SELECT STRAIGHT_JOIN d.pla_id, m2.mat_id FROM t1 m2 INNER JOIN (SELECT mp.pla_id, MIN(m1.matintnum) AS matintnum FROM t2 mp INNER JOIN t1 m1 ON mp.mat_id=m1.mat_id GROUP BY mp.pla_id) d ON d.matintnum=m2.matintnum;
175pla_id mat_id179pla_id mat_id
176100 1180100 1
@@ -190,13 +194,13 @@
190explain SELECT STRAIGHT_JOIN d.pla_id, m2.mat_id FROM t1 m2 INNER JOIN (SELECT mp.pla_id, MIN(m1.matintnum) AS matintnum FROM t2 mp INNER JOIN t1 m1 ON mp.mat_id=m1.mat_id GROUP BY mp.pla_id) d ON d.matintnum=m2.matintnum;194explain SELECT STRAIGHT_JOIN d.pla_id, m2.mat_id FROM t1 m2 INNER JOIN (SELECT mp.pla_id, MIN(m1.matintnum) AS matintnum FROM t2 mp INNER JOIN t1 m1 ON mp.mat_id=m1.mat_id GROUP BY mp.pla_id) d ON d.matintnum=m2.matintnum;
191id select_type table type possible_keys key key_len ref rows Extra195id select_type table type possible_keys key key_len ref rows Extra
1921 PRIMARY m2 ALL NULL NULL NULL NULL 9 NULL1961 PRIMARY m2 ALL NULL NULL NULL NULL 9 NULL
1931 PRIMARY <derived2> ALL NULL NULL NULL NULL 9 Using where; Using join buffer (Block Nested Loop)1971 PRIMARY <derived2> ref <auto_key0> <auto_key0> 7 test.m2.matintnum 2 NULL
1942 DERIVED mp ALL NULL NULL NULL NULL 9 Using temporary; Using filesort1982 DERIVED mp ALL NULL NULL NULL NULL 9 Using temporary; Using filesort
1952 DERIVED m1 eq_ref PRIMARY PRIMARY 3 test.mp.mat_id 1 NULL1992 DERIVED m1 eq_ref PRIMARY PRIMARY 3 test.mp.mat_id 1 NULL
196explain SELECT STRAIGHT_JOIN d.pla_id, m2.test FROM t1 m2 INNER JOIN (SELECT mp.pla_id, MIN(m1.matintnum) AS matintnum FROM t2 mp INNER JOIN t1 m1 ON mp.mat_id=m1.mat_id GROUP BY mp.pla_id) d ON d.matintnum=m2.matintnum;200explain SELECT STRAIGHT_JOIN d.pla_id, m2.test FROM t1 m2 INNER JOIN (SELECT mp.pla_id, MIN(m1.matintnum) AS matintnum FROM t2 mp INNER JOIN t1 m1 ON mp.mat_id=m1.mat_id GROUP BY mp.pla_id) d ON d.matintnum=m2.matintnum;
197id select_type table type possible_keys key key_len ref rows Extra201id select_type table type possible_keys key key_len ref rows Extra
1981 PRIMARY m2 ALL NULL NULL NULL NULL 9 NULL2021 PRIMARY m2 ALL NULL NULL NULL NULL 9 NULL
1991 PRIMARY <derived2> ALL NULL NULL NULL NULL 9 Using where; Using join buffer (Block Nested Loop)2031 PRIMARY <derived2> ref <auto_key0> <auto_key0> 7 test.m2.matintnum 2 NULL
2002 DERIVED mp ALL NULL NULL NULL NULL 9 Using temporary; Using filesort2042 DERIVED mp ALL NULL NULL NULL NULL 9 Using temporary; Using filesort
2012 DERIVED m1 eq_ref PRIMARY PRIMARY 3 test.mp.mat_id 1 NULL2052 DERIVED m1 eq_ref PRIMARY PRIMARY 3 test.mp.mat_id 1 NULL
202drop table t1,t2;206drop table t1,t2;
203207
=== modified file 'Percona-Server/mysql-test/r/disabled_replication.result'
--- Percona-Server/mysql-test/r/disabled_replication.result 2012-03-14 12:38:08 +0000
+++ Percona-Server/mysql-test/r/disabled_replication.result 2013-02-13 06:17:00 +0000
@@ -1,5 +1,5 @@
1SHOW SLAVE STATUS;1SHOW SLAVE STATUS;
2Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error Replicate_Ignore_Server_Ids Master_Server_Id Master_UUID Master_Info_File SQL_Delay SQL_Remaining_Delay Slave_SQL_Running_State Master_Retry_Count Master_Bind Last_IO_Error_Timestamp Last_SQL_Error_Timestamp Master_SSL_Crl Master_SSL_Crlpath Retrieved_Gtid_Set Executed_Gtid_Set2Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error Replicate_Ignore_Server_Ids Master_Server_Id Master_UUID Master_Info_File SQL_Delay SQL_Remaining_Delay Slave_SQL_Running_State Master_Retry_Count Master_Bind Last_IO_Error_Timestamp Last_SQL_Error_Timestamp Master_SSL_Crl Master_SSL_Crlpath Retrieved_Gtid_Set Executed_Gtid_Set Auto_Position
3RESET SLAVE;3RESET SLAVE;
4ERROR HY000: Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.4ERROR HY000: Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.
5SHOW RELAYLOG EVENTS;5SHOW RELAYLOG EVENTS;
66
=== added file 'Percona-Server/mysql-test/r/disconnect_on_expired_password_default.result'
--- Percona-Server/mysql-test/r/disconnect_on_expired_password_default.result 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/r/disconnect_on_expired_password_default.result 2013-02-13 06:17:00 +0000
@@ -0,0 +1,34 @@
1SHOW VARIABLES LIKE 'disconnect_on_expired_password';
2Variable_name Value
3disconnect_on_expired_password ON
4## Test mysql client in non-interactrive mode
5CREATE USER 'bernt';
6SET PASSWORD FOR 'bernt' = PASSWORD('secret');
7ALTER USER 'bernt' PASSWORD EXPIRE;
8# Attempt to login should fail
9Warning: Using a password on the command line interface can be insecure.
10ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
11DROP USER 'bernt';
12## Test mysqltest
13CREATE USER 'bernt';
14SET PASSWORD FOR 'bernt' = PASSWORD('secret');
15ALTER USER 'bernt' PASSWORD EXPIRE;
16# Login with mysqltest should work
17# But doing something should fail
18SELECT 1;
19ERROR HY000: You must SET PASSWORD before executing this statement
20# Setting password should work
21SET PASSWORD = PASSWORD('newsecret');
22DROP USER 'bernt';
23## Test mysqladmin
24CREATE USER 'bernt';
25SET PASSWORD FOR 'bernt' = PASSWORD('secret');
26GRANT ALL ON *.* TO 'bernt' WITH GRANT OPTION;
27ALTER USER 'bernt' PASSWORD EXPIRE;
28# Doing something should not connect
29Warning: Using a password on the command line interface can be insecure.
30MYSQLADMIN: connect to server at 'localhost' failed
31error: 'You must SET PASSWORD before executing this statement'
32# Setting password should succeed
33Warning: Using a password on the command line interface can be insecure.
34DROP USER 'bernt';
035
=== added file 'Percona-Server/mysql-test/r/disconnect_on_expired_password_off.result'
--- Percona-Server/mysql-test/r/disconnect_on_expired_password_off.result 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/r/disconnect_on_expired_password_off.result 2013-02-13 06:17:00 +0000
@@ -0,0 +1,33 @@
1SHOW VARIABLES LIKE 'disconnect_on_expired_password';
2Variable_name Value
3disconnect_on_expired_password OFF
4## Test mysql client in non-interactive mode
5CREATE USER 'bernt';
6SET PASSWORD FOR 'bernt' = PASSWORD('secret');
7ALTER USER 'bernt' PASSWORD EXPIRE;
8# Should connect, but doing something should fail
9Warning: Using a password on the command line interface can be insecure.
10ERROR 1820 (HY000) at line 1: You must SET PASSWORD before executing this statement
11# Login and set password should succeed
12Warning: Using a password on the command line interface can be insecure.
13DROP USER 'bernt';
14## Test mysqltest login
15CREATE USER 'bernt';
16SET PASSWORD FOR 'bernt' = PASSWORD('secret');
17ALTER USER 'bernt' PASSWORD EXPIRE;
18# Login with mysqltest should work
19# But doing something should fail
20SELECT 1;
21ERROR HY000: You must SET PASSWORD before executing this statement
22DROP USER 'bernt';
23## Test mysqladmin
24CREATE USER 'bernt';
25SET PASSWORD FOR 'bernt' = PASSWORD('secret');
26GRANT ALL ON *.* TO 'bernt' WITH GRANT OPTION;
27ALTER USER 'bernt' PASSWORD EXPIRE;
28# Doing something should connect but fail
29Warning: Using a password on the command line interface can be insecure.
30MYSQLADMIN: reload failed; error: 'You must SET PASSWORD before executing this statement'
31# Setting password should succeed
32Warning: Using a password on the command line interface can be insecure.
33DROP USER 'bernt';
034
=== modified file 'Percona-Server/mysql-test/r/distinct.result'
--- Percona-Server/mysql-test/r/distinct.result 2012-10-16 06:21:51 +0000
+++ Percona-Server/mysql-test/r/distinct.result 2013-02-13 06:17:00 +0000
@@ -232,7 +232,7 @@
2321 SIMPLE t1 index NULL PRIMARY 4 NULL 1 Using index2321 SIMPLE t1 index NULL PRIMARY 4 NULL 1 Using index
233explain SELECT distinct a from t3 order by a desc limit 2;233explain SELECT distinct a from t3 order by a desc limit 2;
234id select_type table type possible_keys key key_len ref rows Extra234id select_type table type possible_keys key key_len ref rows Extra
2351 SIMPLE t3 index NULL a 5 NULL 40 Using index2351 SIMPLE t3 range NULL a 5 NULL 10 Using index for group-by; Using temporary; Using filesort
236explain SELECT distinct a,b from t3 order by a+1;236explain SELECT distinct a,b from t3 order by a+1;
237id select_type table type possible_keys key key_len ref rows Extra237id select_type table type possible_keys key key_len ref rows Extra
2381 SIMPLE t3 ALL NULL NULL NULL NULL 204 Using temporary; Using filesort2381 SIMPLE t3 ALL NULL NULL NULL NULL 204 Using temporary; Using filesort
@@ -242,6 +242,43 @@
242explain SELECT a,b from t3 group by a,b order by a+1;242explain SELECT a,b from t3 group by a,b order by a+1;
243id select_type table type possible_keys key key_len ref rows Extra243id select_type table type possible_keys key key_len ref rows Extra
2441 SIMPLE t3 ALL NULL NULL NULL NULL 204 Using temporary; Using filesort2441 SIMPLE t3 ALL NULL NULL NULL NULL 204 Using temporary; Using filesort
245 SELECT distinct t1.a from t1;
246a
2471
2482
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches