3445 Christopher Powers 2011-11-21 [merge]
local merge
added:
mysql-test/suite/binlog/r/binlog_hexdump.result
mysql-test/suite/binlog/std_data/bug11747887-bin.000003
mysql-test/suite/binlog/t/binlog_hexdump.test
mysql-test/suite/rpl/r/rpl_parallel_load_data.result
mysql-test/suite/rpl/t/rpl_parallel_load_data-slave.opt
mysql-test/suite/rpl/t/rpl_parallel_load_data.test
modified:
mysql-test/r/create-big.result
mysql-test/suite/federated/federated.test
mysql-test/suite/federated/federated_plugin.test
mysql-test/suite/innodb_fts/r/innodb_fts_misc.result
mysql-test/suite/innodb_fts/r/innodb_fts_misc_1.result
mysql-test/suite/innodb_fts/t/innodb_fts_misc.test
mysql-test/suite/innodb_fts/t/innodb_fts_misc_1.test
mysql-test/suite/rpl/r/rpl_parallel_ddl.result
mysql-test/suite/rpl/t/rpl_parallel_ddl.test
mysql-test/t/create-big.test
mysql-test/t/disabled.def
sql/log_event.cc
sql/log_event.h
sql/rpl_rli.h
sql/rpl_rli_pdb.cc
sql/rpl_rli_pdb.h
sql/sql_insert.cc
sql/sql_table.cc
storage/innobase/fts/fts0que.c
storage/innobase/row/row0ftsort.c
storage/innobase/row/row0merge.c
storage/innobase/srv/srv0start.c
3444 Christopher Powers 2011-11-21
WL#5461 PERFORMANCE_SCHEMA MY.CNF Defaults Setup
Disallow SELECT @@ of performance_schema_instrument and
performance_schema_consumer option settings.
modified:
sql/set_var.cc
3443 Marc Alff 2011-11-21 [merge]
Merge mysql-trunk --> mysql-trunk-wl5461
removed:
mysql-test/suite/rpl/r/rpl_parallel_benchmark.result
added:
mysql-test/include/have_innodb_16k.inc
mysql-test/include/have_innodb_4k.inc
mysql-test/include/have_innodb_8k.inc
mysql-test/suite/innodb/r/innodb-ac-non-locking-select.result
mysql-test/suite/innodb/r/innodb_16k.result
mysql-test/suite/innodb/r/innodb_4k.result
mysql-test/suite/innodb/r/innodb_8k.result
mysql-test/suite/innodb/r/innodb_bug12661768.result
mysql-test/suite/innodb/r/innodb_cmp_drop_table.result
mysql-test/suite/innodb/r/innodb_index_large_prefix_4k.result
mysql-test/suite/innodb/r/innodb_index_large_prefix_8k.result
mysql-test/suite/innodb/r/innodb_misc1.result
mysql-test/suite/innodb/t/innodb-ac-non-locking-select.test
mysql-test/suite/innodb/t/innodb_16k.test
mysql-test/suite/innodb/t/innodb_4k.test
mysql-test/suite/innodb/t/innodb_8k.test
mysql-test/suite/innodb/t/innodb_bug12661768.test
mysql-test/suite/innodb/t/innodb_cmp_drop_table-master.opt
mysql-test/suite/innodb/t/innodb_cmp_drop_table.test
mysql-test/suite/innodb/t/innodb_index_large_prefix_4k.test
mysql-test/suite/innodb/t/innodb_index_large_prefix_8k.test
mysql-test/suite/innodb/t/innodb_misc1-master.opt
mysql-test/suite/innodb/t/innodb_misc1.test
mysql-test/suite/sys_vars/r/innodb_page_size_basic.result
mysql-test/suite/sys_vars/t/innodb_page_size_basic.test
modified:
cmd-line-utils/libedit/histedit.h
cmd-line-utils/libedit/np/unvis.c
cmd-line-utils/libedit/np/vis.c
cmd-line-utils/libedit/read.c
extra/CMakeLists.txt
extra/innochecksum.c
mysql-test/collections/default.daily
mysql-test/collections/default.experimental
mysql-test/collections/default.push
mysql-test/collections/default.weekly
mysql-test/include/index_merge_ror_cpk.inc
mysql-test/include/mix2.inc
mysql-test/include/mrr_tests.inc
mysql-test/r/auth_rpl.result
mysql-test/r/derived.result
mysql-test/r/func_misc.result
mysql-test/r/func_str.result
mysql-test/r/group_min_max_innodb.result
mysql-test/r/index_merge_innodb.result
mysql-test/r/index_merge_myisam.result
mysql-test/r/innodb_mrr.result
mysql-test/r/innodb_mrr_cost.result
mysql-test/r/innodb_mrr_cost_icp.result
mysql-test/r/innodb_mrr_icp.result
mysql-test/r/innodb_mrr_none.result
mysql-test/r/innodb_mysql_lock.result
mysql-test/r/metadata.result
mysql-test/r/partition_innodb.result
mysql-test/r/partition_innodb_plugin.result
mysql-test/r/plugin_auth.result
mysql-test/r/ps_1general.result
mysql-test/r/rpl_mysqldump_slave.result
mysql-test/r/sp.result
mysql-test/r/type_newdecimal.result
mysql-test/r/view_grant.result
mysql-test/suite/binlog/r/binlog_rewrite.result
mysql-test/suite/innodb/r/innodb-create-options.result
mysql-test/suite/innodb/r/innodb-index.result
mysql-test/suite/innodb/r/innodb-system-table-view.result
mysql-test/suite/innodb/r/innodb-zip.result
mysql-test/suite/innodb/r/innodb.result
mysql-test/suite/innodb/r/innodb_buffer_pool_load.result
mysql-test/suite/innodb/r/innodb_bug30423.result
mysql-test/suite/innodb/r/innodb_bug53591.result
mysql-test/suite/innodb/r/innodb_bug53592.result
mysql-test/suite/innodb/r/innodb_index_large_prefix.result
mysql-test/suite/innodb/r/innodb_information_schema.result
mysql-test/suite/innodb/r/innodb_monitor.result
mysql-test/suite/innodb/r/innodb_mysql.result
mysql-test/suite/innodb/t/innodb-create-options.test
mysql-test/suite/innodb/t/innodb-index.test
mysql-test/suite/innodb/t/innodb-system-table-view.test
mysql-test/suite/innodb/t/innodb-zip.test
mysql-test/suite/innodb/t/innodb.test
mysql-test/suite/innodb/t/innodb_buffer_pool_load.test
mysql-test/suite/innodb/t/innodb_bug30423.test
mysql-test/suite/innodb/t/innodb_bug34300.test
mysql-test/suite/innodb/t/innodb_bug36172.test
mysql-test/suite/innodb/t/innodb_bug53591.test
mysql-test/suite/innodb/t/innodb_bug53592.test
mysql-test/suite/innodb/t/innodb_bug60049.test
mysql-test/suite/innodb/t/innodb_corrupt_bit.test
mysql-test/suite/innodb/t/innodb_index_large_prefix.test
mysql-test/suite/innodb/t/innodb_information_schema.test
mysql-test/suite/innodb/t/innodb_mysql.test
mysql-test/suite/innodb/t/innodb_prefix_index_liftedlimit.test
mysql-test/suite/innodb/t/innodb_prefix_index_restart_server.test
mysql-test/suite/innodb/t/innodb_trx_weight.test
mysql-test/suite/innodb_fts/r/innodb_fts_misc_1.result
mysql-test/suite/innodb_fts/t/fulltext.test
mysql-test/suite/innodb_fts/t/fulltext_misc.test
mysql-test/suite/innodb_fts/t/innodb_fts_misc_1.test
mysql-test/suite/large_tests/r/rpl_slave_net_timeout.result
mysql-test/suite/opt_trace/include/range.inc
mysql-test/suite/opt_trace/r/filesort_pq.result
mysql-test/suite/opt_trace/r/general2_no_prot.result
mysql-test/suite/opt_trace/r/general2_ps_prot.result
mysql-test/suite/opt_trace/r/general_no_prot_none.result
mysql-test/suite/opt_trace/r/general_ps_prot_none.result
mysql-test/suite/opt_trace/r/range_no_prot.result
mysql-test/suite/opt_trace/r/range_ps_prot.result
mysql-test/suite/opt_trace/r/security_no_prot.result
mysql-test/suite/opt_trace/r/security_ps_prot.result
mysql-test/suite/opt_trace/r/subquery_no_prot.result
mysql-test/suite/opt_trace/r/subquery_ps_prot.result
mysql-test/suite/opt_trace/r/temp_table.result
mysql-test/suite/parts/r/partition_debug_innodb.result
mysql-test/suite/parts/r/rpl-partition-dml-1-1-innodb.result
mysql-test/suite/parts/r/rpl-partition-dml-1-1-myisam.result
mysql-test/suite/parts/r/rpl_partition.result
mysql-test/suite/parts/t/partition_debug_innodb.test
mysql-test/suite/perfschema/r/relaylog.result
mysql-test/suite/rpl/r/rpl_000010.result
mysql-test/suite/rpl/r/rpl_000011.result
mysql-test/suite/rpl/r/rpl_000013.result
mysql-test/suite/rpl/r/rpl_000017.result
mysql-test/suite/rpl/r/rpl_DML_error.result
mysql-test/suite/rpl/r/rpl_EE_err.result
mysql-test/suite/rpl/r/rpl_LD_INFILE.result
mysql-test/suite/rpl/r/rpl_alter.result
mysql-test/suite/rpl/r/rpl_alter_db.result
mysql-test/suite/rpl/r/rpl_alter_repository.result
mysql-test/suite/rpl/r/rpl_auto_increment.result
mysql-test/suite/rpl/r/rpl_auto_increment_11932.result
mysql-test/suite/rpl/r/rpl_auto_increment_bug33029.result
mysql-test/suite/rpl/r/rpl_auto_increment_update_failure.result
mysql-test/suite/rpl/r/rpl_begin_commit_rollback.result
mysql-test/suite/rpl/r/rpl_binlog_corruption.result
mysql-test/suite/rpl/r/rpl_binlog_errors.result
mysql-test/suite/rpl/r/rpl_binlog_grant.result
mysql-test/suite/rpl/r/rpl_bit.result
mysql-test/suite/rpl/r/rpl_bit_npk.result
mysql-test/suite/rpl/r/rpl_blackhole.result
mysql-test/suite/rpl/r/rpl_bug26395.result
mysql-test/suite/rpl/r/rpl_bug31076.result
mysql-test/suite/rpl/r/rpl_bug33931.result
mysql-test/suite/rpl/r/rpl_bug37426.result
mysql-test/suite/rpl/r/rpl_bug38694.result
mysql-test/suite/rpl/r/rpl_bug41902.result
mysql-test/suite/rpl/r/rpl_change_master.result
mysql-test/suite/rpl/r/rpl_change_master_crash_safe.result
mysql-test/suite/rpl/r/rpl_change_master_dbug.result
mysql-test/suite/rpl/r/rpl_charset.result
mysql-test/suite/rpl/r/rpl_charset_sjis.result
mysql-test/suite/rpl/r/rpl_checksum.result
mysql-test/suite/rpl/r/rpl_checksum_cache.result
mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result
mysql-test/suite/rpl/r/rpl_colSize.result
mysql-test/suite/rpl/r/rpl_commit_after_flush.result
mysql-test/suite/rpl/r/rpl_concurrency_error.result
mysql-test/suite/rpl/r/rpl_conditional_comments.result
mysql-test/suite/rpl/r/rpl_corruption.result
mysql-test/suite/rpl/r/rpl_crash_safe_master.result
mysql-test/suite/rpl/r/rpl_create_database.result
mysql-test/suite/rpl/r/rpl_create_if_not_exists.result
mysql-test/suite/rpl/r/rpl_create_tmp_table_if_not_exists.result
mysql-test/suite/rpl/r/rpl_cross_version.result
mysql-test/suite/rpl/r/rpl_current_user.result
mysql-test/suite/rpl/r/rpl_deadlock_innodb.result
mysql-test/suite/rpl/r/rpl_delete_no_where.result
mysql-test/suite/rpl/r/rpl_do_db_filter.result
mysql-test/suite/rpl/r/rpl_do_grant.result
mysql-test/suite/rpl/r/rpl_do_table_filter_insensitive.result
mysql-test/suite/rpl/r/rpl_do_table_filter_sensitive.result
mysql-test/suite/rpl/r/rpl_drop.result
mysql-test/suite/rpl/r/rpl_drop_db.result
mysql-test/suite/rpl/r/rpl_drop_temp.result
mysql-test/suite/rpl/r/rpl_drop_view.result
mysql-test/suite/rpl/r/rpl_dual_pos_advance.result
mysql-test/suite/rpl/r/rpl_empty_master_host.result
mysql-test/suite/rpl/r/rpl_err_ignoredtable.result
mysql-test/suite/rpl/r/rpl_events.result
mysql-test/suite/rpl/r/rpl_extra_col_master_innodb.result
mysql-test/suite/rpl/r/rpl_extra_col_master_myisam.result
mysql-test/suite/rpl/r/rpl_extra_col_slave_innodb.result
mysql-test/suite/rpl/r/rpl_extra_col_slave_myisam.result
mysql-test/suite/rpl/r/rpl_failed_optimize.result
mysql-test/suite/rpl/r/rpl_filter_database.result
mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result
mysql-test/suite/rpl/r/rpl_flush_logs.result
mysql-test/suite/rpl/r/rpl_flushlog_loop.result
mysql-test/suite/rpl/r/rpl_foreign_key_innodb.result
mysql-test/suite/rpl/r/rpl_free_items.result
mysql-test/suite/rpl/r/rpl_general_log.result
mysql-test/suite/rpl/r/rpl_geometry.result
mysql-test/suite/rpl/r/rpl_get_lock.result
mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result
mysql-test/suite/rpl/r/rpl_grant.result
mysql-test/suite/rpl/r/rpl_grant_plugin.result
mysql-test/suite/rpl/r/rpl_heartbeat.result
mysql-test/suite/rpl/r/rpl_heartbeat_2slaves.result
mysql-test/suite/rpl/r/rpl_heartbeat_basic.result
mysql-test/suite/rpl/r/rpl_heartbeat_ssl.result
mysql-test/suite/rpl/r/rpl_idempotency.result
mysql-test/suite/rpl/r/rpl_ignore_db_filter.result
mysql-test/suite/rpl/r/rpl_ignore_grant.result
mysql-test/suite/rpl/r/rpl_ignore_revoke.result
mysql-test/suite/rpl/r/rpl_ignore_table.result
mysql-test/suite/rpl/r/rpl_ignore_table_filter_insensitive.result
mysql-test/suite/rpl/r/rpl_ignore_table_filter_sensitive.result
mysql-test/suite/rpl/r/rpl_ignore_table_update.result
mysql-test/suite/rpl/r/rpl_incident.result
mysql-test/suite/rpl/r/rpl_init_slave.result
mysql-test/suite/rpl/r/rpl_init_slave_errors.result
mysql-test/suite/rpl/r/rpl_innodb_bug28430.result
mysql-test/suite/rpl/r/rpl_innodb_bug30888.result
mysql-test/suite/rpl/r/rpl_innodb_mixed_ddl.result
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result
mysql-test/suite/rpl/r/rpl_insert.result
mysql-test/suite/rpl/r/rpl_insert_id.result
mysql-test/suite/rpl/r/rpl_insert_id_pk.result
mysql-test/suite/rpl/r/rpl_insert_ignore.result
mysql-test/suite/rpl/r/rpl_invoked_features.result
mysql-test/suite/rpl/r/rpl_ip_mix.result
mysql-test/suite/rpl/r/rpl_ip_mix2.result
mysql-test/suite/rpl/r/rpl_ipv4_as_ipv6.result
mysql-test/suite/rpl/r/rpl_ipv6.result
mysql-test/suite/rpl/r/rpl_killed_ddl.result
mysql-test/suite/rpl/r/rpl_known_bugs_detection.result
mysql-test/suite/rpl/r/rpl_lcase_tblnames_rewrite_db.result
mysql-test/suite/rpl/r/rpl_loaddata.result
mysql-test/suite/rpl/r/rpl_loaddata_charset.result
mysql-test/suite/rpl/r/rpl_loaddata_fatal.result
mysql-test/suite/rpl/r/rpl_loaddata_m.result
mysql-test/suite/rpl/r/rpl_loaddata_map.result
mysql-test/suite/rpl/r/rpl_loaddata_s.result
mysql-test/suite/rpl/r/rpl_loaddata_simple.result
mysql-test/suite/rpl/r/rpl_loaddata_symlink.result
mysql-test/suite/rpl/r/rpl_loaddatalocal.result
mysql-test/suite/rpl/r/rpl_loadfile.result
mysql-test/suite/rpl/r/rpl_locale.result
mysql-test/suite/rpl/r/rpl_log_pos.result
mysql-test/suite/rpl/r/rpl_manual_change_index_file.result
mysql-test/suite/rpl/r/rpl_many_optimize.result
mysql-test/suite/rpl/r/rpl_master_connection.result
mysql-test/suite/rpl/r/rpl_master_pos_wait.result
mysql-test/suite/rpl/r/rpl_migration_crash_safe.result
mysql-test/suite/rpl/r/rpl_misc_functions.result
mysql-test/suite/rpl/r/rpl_mix_found_rows.result
mysql-test/suite/rpl/r/rpl_mix_insert_delayed.result
mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result
mysql-test/suite/rpl/r/rpl_mixed_bit_pk.result
mysql-test/suite/rpl/r/rpl_mixed_ddl_dml.result
mysql-test/suite/rpl/r/rpl_mixed_drop_create_temp_table.result
mysql-test/suite/rpl/r/rpl_mixed_implicit_commit_binlog.result
mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result
mysql-test/suite/rpl/r/rpl_mixed_mts_crash_safe.result
mysql-test/suite/rpl/r/rpl_mixed_mts_rec_crash_safe.result
mysql-test/suite/rpl/r/rpl_mixed_mts_rec_crash_safe_checksum.result
mysql-test/suite/rpl/r/rpl_mts_check_concurrency.result
mysql-test/suite/rpl/r/rpl_multi_delete.result
mysql-test/suite/rpl/r/rpl_multi_delete2.result
mysql-test/suite/rpl/r/rpl_multi_engine.result
mysql-test/suite/rpl/r/rpl_multi_update.result
mysql-test/suite/rpl/r/rpl_multi_update2.result
mysql-test/suite/rpl/r/rpl_multi_update3.result
mysql-test/suite/rpl/r/rpl_multi_update4.result
mysql-test/suite/rpl/r/rpl_mysql_upgrade.result
mysql-test/suite/rpl/r/rpl_name_const.result
mysql-test/suite/rpl/r/rpl_non_direct_mixed_mixing_engines.result
mysql-test/suite/rpl/r/rpl_non_direct_row_mixing_engines.result
mysql-test/suite/rpl/r/rpl_non_direct_stm_mixing_engines.result
mysql-test/suite/rpl/r/rpl_nondeterministic_functions.result
mysql-test/suite/rpl/r/rpl_not_null_innodb.result
mysql-test/suite/rpl/r/rpl_not_null_myisam.result
mysql-test/suite/rpl/r/rpl_optimize.result
mysql-test/suite/rpl/r/rpl_packet.result
mysql-test/suite/rpl/r/rpl_parallel.result
mysql-test/suite/rpl/r/rpl_parallel_conf_limits.result
mysql-test/suite/rpl/r/rpl_parallel_conflicts.result
mysql-test/suite/rpl/r/rpl_parallel_ddl.result
mysql-test/suite/rpl/r/rpl_parallel_innodb.result
mysql-test/suite/rpl/r/rpl_parallel_multi_db.result
mysql-test/suite/rpl/r/rpl_parallel_seconds_behind_master.result
mysql-test/suite/rpl/r/rpl_parallel_start_stop.result
mysql-test/suite/rpl/r/rpl_parallel_switch_sequential.result
mysql-test/suite/rpl/r/rpl_parallel_temp_query.result
mysql-test/suite/rpl/r/rpl_partition_archive.result
mysql-test/suite/rpl/r/rpl_partition_innodb.result
mysql-test/suite/rpl/r/rpl_partition_memory.result
mysql-test/suite/rpl/r/rpl_partition_myisam.result
mysql-test/suite/rpl/r/rpl_plugin_load.result
mysql-test/suite/rpl/r/rpl_ps.result
mysql-test/suite/rpl/r/rpl_rbr_to_sbr.result
mysql-test/suite/rpl/r/rpl_read_old_relay_log_info.result
mysql-test/suite/rpl/r/rpl_read_only.result
mysql-test/suite/rpl/r/rpl_relay_space_innodb.result
mysql-test/suite/rpl/r/rpl_relay_space_myisam.result
mysql-test/suite/rpl/r/rpl_relayrotate.result
mysql-test/suite/rpl/r/rpl_relayspace.result
mysql-test/suite/rpl/r/rpl_replicate_do.result
mysql-test/suite/rpl/r/rpl_replicate_ignore_db.result
mysql-test/suite/rpl/r/rpl_report.result
mysql-test/suite/rpl/r/rpl_rewrite_db_filter.result
mysql-test/suite/rpl/r/rpl_rewrt_db.result
mysql-test/suite/rpl/r/rpl_rotate_logs.result
mysql-test/suite/rpl/r/rpl_rotate_purge_deadlock.result
mysql-test/suite/rpl/r/rpl_row_001.result
mysql-test/suite/rpl/r/rpl_row_4_bytes.result
mysql-test/suite/rpl/r/rpl_row_NOW.result
mysql-test/suite/rpl/r/rpl_row_USER.result
mysql-test/suite/rpl/r/rpl_row_UUID.result
mysql-test/suite/rpl/r/rpl_row_basic_11bugs.result
mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result
mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result
mysql-test/suite/rpl/r/rpl_row_basic_8partition.result
mysql-test/suite/rpl/r/rpl_row_binlog_max_cache_size.result
mysql-test/suite/rpl/r/rpl_row_blob_innodb.result
mysql-test/suite/rpl/r/rpl_row_blob_myisam.result
mysql-test/suite/rpl/r/rpl_row_colSize.result
mysql-test/suite/rpl/r/rpl_row_conflicts.result
mysql-test/suite/rpl/r/rpl_row_corruption.result
mysql-test/suite/rpl/r/rpl_row_crash_safe.result
mysql-test/suite/rpl/r/rpl_row_delayed_ins.result
mysql-test/suite/rpl/r/rpl_row_drop.result
mysql-test/suite/rpl/r/rpl_row_drop_create_temp_table.result
mysql-test/suite/rpl/r/rpl_row_event_max_size.result
mysql-test/suite/rpl/r/rpl_row_find_row.result
mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result
mysql-test/suite/rpl/r/rpl_row_func001.result
mysql-test/suite/rpl/r/rpl_row_func002.result
mysql-test/suite/rpl/r/rpl_row_func003.result
mysql-test/suite/rpl/r/rpl_row_idempotency.result
mysql-test/suite/rpl/r/rpl_row_ignorable_event.result
mysql-test/suite/rpl/r/rpl_row_img_blobs.result
mysql-test/suite/rpl/r/rpl_row_img_eng_full.result
mysql-test/suite/rpl/r/rpl_row_img_eng_min.result
mysql-test/suite/rpl/r/rpl_row_img_eng_noblob.result
mysql-test/suite/rpl/r/rpl_row_img_idx_full.result
mysql-test/suite/rpl/r/rpl_row_img_idx_min.result
mysql-test/suite/rpl/r/rpl_row_img_idx_noblob.result
mysql-test/suite/rpl/r/rpl_row_img_misc.result
mysql-test/suite/rpl/r/rpl_row_img_sanity.result
mysql-test/suite/rpl/r/rpl_row_implicit_commit_binlog.result
mysql-test/suite/rpl/r/rpl_row_inexist_tbl.result
mysql-test/suite/rpl/r/rpl_row_insert_delayed.result
mysql-test/suite/rpl/r/rpl_row_lcase_tblnames.result
mysql-test/suite/rpl/r/rpl_row_log.result
mysql-test/suite/rpl/r/rpl_row_log_innodb.result
mysql-test/suite/rpl/r/rpl_row_max_relay_size.result
mysql-test/suite/rpl/r/rpl_row_mixing_engines.result
mysql-test/suite/rpl/r/rpl_row_mts_crash_safe.result
mysql-test/suite/rpl/r/rpl_row_mts_rec_crash_safe.result
mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result
mysql-test/suite/rpl/r/rpl_row_rec_comp_innodb.result
mysql-test/suite/rpl/r/rpl_row_rec_comp_myisam.result
mysql-test/suite/rpl/r/rpl_row_record_find_myisam.result
mysql-test/suite/rpl/r/rpl_row_reset_slave.result
mysql-test/suite/rpl/r/rpl_row_show_relaylog_events.result
mysql-test/suite/rpl/r/rpl_row_sp001.result
mysql-test/suite/rpl/r/rpl_row_sp002_innodb.result
mysql-test/suite/rpl/r/rpl_row_sp003.result
mysql-test/suite/rpl/r/rpl_row_sp005.result
mysql-test/suite/rpl/r/rpl_row_sp006_InnoDB.result
mysql-test/suite/rpl/r/rpl_row_sp007_innodb.result
mysql-test/suite/rpl/r/rpl_row_sp008.result
mysql-test/suite/rpl/r/rpl_row_sp009.result
mysql-test/suite/rpl/r/rpl_row_sp010.result
mysql-test/suite/rpl/r/rpl_row_sp011.result
mysql-test/suite/rpl/r/rpl_row_sp012.result
mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result
mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result
mysql-test/suite/rpl/r/rpl_row_tbl_metadata.result
mysql-test/suite/rpl/r/rpl_row_trig001.result
mysql-test/suite/rpl/r/rpl_row_trig002.result
mysql-test/suite/rpl/r/rpl_row_trig003.result
mysql-test/suite/rpl/r/rpl_row_trig004.result
mysql-test/suite/rpl/r/rpl_row_trunc_temp.result
mysql-test/suite/rpl/r/rpl_row_unsafe_funcs.result
mysql-test/suite/rpl/r/rpl_row_utf16.result
mysql-test/suite/rpl/r/rpl_row_utf32.result
mysql-test/suite/rpl/r/rpl_row_view01.result
mysql-test/suite/rpl/r/rpl_row_wide_table.result
mysql-test/suite/rpl/r/rpl_savepoint.result
mysql-test/suite/rpl/r/rpl_seconds_behind_master.result
mysql-test/suite/rpl/r/rpl_semi_sync.result
mysql-test/suite/rpl/r/rpl_semi_sync_event.result
mysql-test/suite/rpl/r/rpl_sequential.result
mysql-test/suite/rpl/r/rpl_server_id1.result
mysql-test/suite/rpl/r/rpl_server_id2.result
mysql-test/suite/rpl/r/rpl_server_id_ignore.result
mysql-test/suite/rpl/r/rpl_server_uuid.result
mysql-test/suite/rpl/r/rpl_session_var.result
mysql-test/suite/rpl/r/rpl_set_charset.result
mysql-test/suite/rpl/r/rpl_set_null_innodb.result
mysql-test/suite/rpl/r/rpl_set_null_myisam.result
mysql-test/suite/rpl/r/rpl_show_errors.result
mysql-test/suite/rpl/r/rpl_show_master_info_file.result
mysql-test/suite/rpl/r/rpl_show_slave_hosts.result
mysql-test/suite/rpl/r/rpl_show_slave_running.result
mysql-test/suite/rpl/r/rpl_skip_error.result
mysql-test/suite/rpl/r/rpl_skip_incident.result
mysql-test/suite/rpl/r/rpl_slave_grp_exec.result
mysql-test/suite/rpl/r/rpl_slave_load_in.result
mysql-test/suite/rpl/r/rpl_slave_load_remove_tmpfile.result
mysql-test/suite/rpl/r/rpl_slave_load_tmpdir_not_exist.result
mysql-test/suite/rpl/r/rpl_slave_skip.result
mysql-test/suite/rpl/r/rpl_slave_start.result
mysql-test/suite/rpl/r/rpl_slave_status.result
mysql-test/suite/rpl/r/rpl_slow_query_log.result
mysql-test/suite/rpl/r/rpl_sp.result
mysql-test/suite/rpl/r/rpl_sp004.result
mysql-test/suite/rpl/r/rpl_sp_effects.result
mysql-test/suite/rpl/r/rpl_spec_variables.result
mysql-test/suite/rpl/r/rpl_sporadic_master.result
mysql-test/suite/rpl/r/rpl_ssl.result
mysql-test/suite/rpl/r/rpl_ssl1.result
mysql-test/suite/rpl/r/rpl_stm_000001.result
mysql-test/suite/rpl/r/rpl_stm_EE_err2.result
mysql-test/suite/rpl/r/rpl_stm_auto_increment_bug33029.result
mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result
mysql-test/suite/rpl/r/rpl_stm_conflicts.result
mysql-test/suite/rpl/r/rpl_stm_drop_create_temp_table.result
mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result
mysql-test/suite/rpl/r/rpl_stm_found_rows.result
mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result
mysql-test/suite/rpl/r/rpl_stm_innodb.result
mysql-test/suite/rpl/r/rpl_stm_insert_delayed.result
mysql-test/suite/rpl/r/rpl_stm_lcase_tblnames.result
mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result
mysql-test/suite/rpl/r/rpl_stm_loadfile.result
mysql-test/suite/rpl/r/rpl_stm_log.result
mysql-test/suite/rpl/r/rpl_stm_max_relay_size.result
mysql-test/suite/rpl/r/rpl_stm_mix_show_relaylog_events.result
mysql-test/suite/rpl/r/rpl_stm_mixed_crash_safe.result
mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result
mysql-test/suite/rpl/r/rpl_stm_mts_crash_safe.result
mysql-test/suite/rpl/r/rpl_stm_mts_rec_crash_safe.result
mysql-test/suite/rpl/r/rpl_stm_multi_query.result
mysql-test/suite/rpl/r/rpl_stm_no_op.result
mysql-test/suite/rpl/r/rpl_stm_reset_slave.result
mysql-test/suite/rpl/r/rpl_stm_sql_mode.result
mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result
mysql-test/suite/rpl/r/rpl_stm_stop_middle_group.result
mysql-test/suite/rpl/r/rpl_stm_user_variables.result
mysql-test/suite/rpl/r/rpl_stop_slave.result
mysql-test/suite/rpl/r/rpl_switch_stm_row_mixed.result
mysql-test/suite/rpl/r/rpl_sync.result
mysql-test/suite/rpl/r/rpl_temp_table.result
mysql-test/suite/rpl/r/rpl_temp_table_mix_row.result
mysql-test/suite/rpl/r/rpl_temporary.result
mysql-test/suite/rpl/r/rpl_temporary_errors.result
mysql-test/suite/rpl/r/rpl_test_framework.result
mysql-test/suite/rpl/r/rpl_timezone.result
mysql-test/suite/rpl/r/rpl_tmp_table_and_DDL.result
mysql-test/suite/rpl/r/rpl_trigger.result
mysql-test/suite/rpl/r/rpl_trunc_temp.result
mysql-test/suite/rpl/r/rpl_truncate_2myisam.result
mysql-test/suite/rpl/r/rpl_truncate_3innodb.result
mysql-test/suite/rpl/r/rpl_typeconv.result
mysql-test/suite/rpl/r/rpl_typeconv_innodb.result
mysql-test/suite/rpl/r/rpl_udf.result
mysql-test/suite/rpl/r/rpl_user.result
mysql-test/suite/rpl/r/rpl_user_variables.result
mysql-test/suite/rpl/r/rpl_variables.result
mysql-test/suite/rpl/r/rpl_variables_stm.result
mysql-test/suite/rpl/r/rpl_view.result
mysql-test/suite/rpl/r/rpl_view_multi.result
mysql-test/suite/sys_vars/inc/delayed_queue_size_basic.inc
mysql-test/suite/sys_vars/inc/query_cache_size_basic.inc
mysql-test/suite/sys_vars/r/innodb_monitor_disable_basic.result
mysql-test/suite/sys_vars/r/innodb_monitor_enable_basic.result
mysql-test/suite/sys_vars/r/innodb_monitor_reset_all_basic.result
mysql-test/suite/sys_vars/r/innodb_monitor_reset_basic.result
mysql-test/suite/sys_vars/r/query_cache_size_basic_32.result
mysql-test/suite/sys_vars/r/query_cache_size_basic_64.result
mysql-test/suite/sys_vars/r/relay_log_basename_basic.result
mysql-test/suite/sys_vars/r/relay_log_index_basic.result
mysql-test/suite/sys_vars/r/rpl_init_slave_func.result
mysql-test/suite/sys_vars/t/delayed_insert_timeout_basic.test
mysql-test/suite/sys_vars/t/disabled.def
mysql-test/suite/sys_vars/t/innodb_buffer_pool_load_at_startup_basic.test
mysql-test/t/ctype_utf8mb4_innodb.test
mysql-test/t/derived.test
mysql-test/t/func_misc.test
mysql-test/t/func_str.test
mysql-test/t/group_min_max_innodb.test
mysql-test/t/innodb_mysql_lock.test
mysql-test/t/mysql_plugin.test
mysql-test/t/mysqlbinlog_row_innodb.test
mysql-test/t/partition_innodb.test
mysql-test/t/partition_innodb_plugin.test
mysql-test/t/plugin_auth.test
mysql-test/t/ps_1general.test
mysql-test/t/sp.test
mysql-test/t/type_newdecimal.test
mysql-test/t/view_grant.test
scripts/mysqld_safe.sh
sql/CMakeLists.txt
sql/filesort.cc
sql/ha_partition.cc
sql/handler.cc
sql/handler.h
sql/item.cc
sql/item.h
sql/item_strfunc.cc
sql/my_decimal.h
sql/opt_range.cc
sql/rpl_master.cc
sql/share/errmsg-utf8.txt
sql/sp_head.cc
sql/sql_acl.cc
sql/sql_bitmap.h
sql/sql_cache.cc
sql/sql_lex.cc
sql/sql_parse.cc
sql/sql_reload.cc
sql/sql_select.cc
sql/sql_union.cc
sql/sql_view.cc
sql/sql_yacc.yy
sql/table.cc
sql/table.h
storage/innobase/btr/btr0cur.c
storage/innobase/buf/buf0buddy.c
storage/innobase/buf/buf0buf.c
storage/innobase/buf/buf0checksum.c
storage/innobase/dict/dict0dict.c
storage/innobase/fil/fil0fil.c
storage/innobase/fsp/fsp0fsp.c
storage/innobase/handler/ha_innodb.cc
storage/innobase/handler/ha_innodb.h
storage/innobase/handler/i_s.cc
storage/innobase/ibuf/ibuf0ibuf.c
storage/innobase/include/buf0buf.h
storage/innobase/include/buf0checksum.h
storage/innobase/include/buf0types.h
storage/innobase/include/db0err.h
storage/innobase/include/dict0dict.ic
storage/innobase/include/fil0fil.h
storage/innobase/include/fsp0fsp.h
storage/innobase/include/fsp0fsp.ic
storage/innobase/include/fsp0types.h
storage/innobase/include/ha_prototypes.h
storage/innobase/include/lock0types.h
storage/innobase/include/mach0data.h
storage/innobase/include/mach0data.ic
storage/innobase/include/read0read.h
storage/innobase/include/rem0rec.ic
storage/innobase/include/row0merge.h
storage/innobase/include/srv0mon.h
storage/innobase/include/trx0i_s.h
storage/innobase/include/trx0sys.h
storage/innobase/include/trx0sys.ic
storage/innobase/include/trx0trx.h
storage/innobase/include/trx0trx.ic
storage/innobase/include/trx0undo.h
storage/innobase/include/univ.i
storage/innobase/include/ut0dbg.h
storage/innobase/include/ut0rnd.h
storage/innobase/include/ut0rnd.ic
storage/innobase/include/ut0ut.h
storage/innobase/lock/lock0lock.c
storage/innobase/page/page0page.c
storage/innobase/read/read0read.c
storage/innobase/row/row0ins.c
storage/innobase/row/row0mysql.c
storage/innobase/row/row0sel.c
storage/innobase/row/row0vers.c
storage/innobase/srv/srv0mon.c
storage/innobase/srv/srv0srv.c
storage/innobase/srv/srv0start.c
storage/innobase/trx/trx0i_s.c
storage/innobase/trx/trx0roll.c
storage/innobase/trx/trx0sys.c
storage/innobase/trx/trx0trx.c
storage/innobase/trx/trx0undo.c
storage/innobase/ut/ut0ut.c
strings/decimal.c
tests/mysql_client_test.c
unittest/gunit/my_decimal-t.cc
=== modified file 'mysql-test/r/create-big.result'
--- a/mysql-test/r/create-big.result 2010-05-24 13:54:08 +0000
+++ b/mysql-test/r/create-big.result 2011-11-21 11:28:32 +0000
@@ -1,7 +1,10 @@
drop table if exists t1,t2,t3,t4,t5;
-set session debug="+d,sleep_create_select_before_create";
+set debug_sync='RESET';
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
-create table t1 (j char(5));
+set debug_sync='now WAIT_FOR parked';
+create table t1 (j char(5));;
+set debug_sync='now SIGNAL go';
ERROR 42S01: Table 't1' already exists
show create table t1;
Table Create Table
@@ -9,8 +12,11 @@ t1 CREATE TABLE `t1` (
`i` int(1) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
-create table t1 select "Test" as j;
+set debug_sync='now WAIT_FOR parked';
+create table t1 select 'Test' as j;;
+set debug_sync='now SIGNAL go';
ERROR 42S01: Table 't1' already exists
show create table t1;
Table Create Table
@@ -19,8 +25,11 @@ t1 CREATE TABLE `t1` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
create table t3 (j char(5));
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
-create table t1 like t3;
+set debug_sync='now WAIT_FOR parked';
+create table t1 like t3;;
+set debug_sync='now SIGNAL go';
ERROR 42S01: Table 't1' already exists
show create table t1;
Table Create Table
@@ -28,8 +37,11 @@ t1 CREATE TABLE `t1` (
`i` int(1) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
-rename table t3 to t1;
+set debug_sync='now WAIT_FOR parked';
+rename table t3 to t1;;
+set debug_sync='now SIGNAL go';
ERROR 42S01: Table 't1' already exists
show create table t1;
Table Create Table
@@ -37,82 +49,117 @@ t1 CREATE TABLE `t1` (
`i` int(1) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
+set debug_sync='now WAIT_FOR parked';
alter table t3 rename to t1;
ERROR 42S01: Table 't1' already exists
+set debug_sync='now SIGNAL go';
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`i` int(1) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
+set debug_sync='now WAIT_FOR parked';
alter table t3 rename to t1, add k int;
ERROR 42S01: Table 't1' already exists
+set debug_sync='now SIGNAL go';
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`i` int(1) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1
-drop table t1, t3;
-set session debug="-d,sleep_create_select_before_create:+d,sleep_create_select_before_open";
+drop table t1,t3;
+set debug_sync='create_table_select_before_open SIGNAL parked WAIT_FOR go';
+set debug_sync='create_table_select_before_open SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
-drop table t1;
+set debug_sync='now WAIT_FOR parked';
+drop table t1;;
+set debug_sync='now SIGNAL go';
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
-rename table t1 to t2;
+set debug_sync='now WAIT_FOR parked';
+rename table t1 to t2;;
+set debug_sync='now SIGNAL go';
drop table t2;
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
-select * from t1;
+set debug_sync='now WAIT_FOR parked';
+select * from t1;;
+set debug_sync='now SIGNAL go';
i
1
drop table t1;
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
-insert into t1 values (2);
+set debug_sync='now WAIT_FOR parked';
+insert into t1 values (2);;
+set debug_sync='now SIGNAL go';
select * from t1;
i
1
2
drop table t1;
set @a:=0;
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
-create trigger t1_bi before insert on t1 for each row set @a:=1;
+set debug_sync='now WAIT_FOR parked';
+create trigger t1_bi before insert on t1 for each row set @a:=1;;
+set debug_sync='now SIGNAL go';
select @a;
@a
0
drop table t1;
-set session debug="-d,sleep_create_select_before_open:+d,sleep_create_select_before_lock";
-create table t1 select 1 as i;;
-drop table t1;
+set debug_sync='create_table_select_before_lock SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
-rename table t1 to t2;
-drop table t2;
-create table t1 select 1 as i;;
-select * from t1;
+set debug_sync='now WAIT_FOR parked';
+drop table t1;;
+set debug_sync='now SIGNAL go';
+set debug_sync='create_table_select_before_lock SIGNAL parked WAIT_FOR go';
+create table t1 select 1 as i;;
+set debug_sync='now WAIT_FOR parked';
+rename table t1 to t2;;
+set debug_sync='now SIGNAL go';
+drop table t2;
+set debug_sync='create_table_select_before_lock SIGNAL parked WAIT_FOR go';
+create table t1 select 1 as i;;
+set debug_sync='now WAIT_FOR parked';
+select * from t1;;
+set debug_sync='now SIGNAL go';
i
1
drop table t1;
+set debug_sync='create_table_select_before_lock SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
-insert into t1 values (2);
+set debug_sync='now WAIT_FOR parked';
+insert into t1 values (2);;
+set debug_sync='now SIGNAL go';
select * from t1;
i
1
2
drop table t1;
set @a:=0;
+set debug_sync='create_table_select_before_lock SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
-create trigger t1_bi before insert on t1 for each row set @a:=1;
+set debug_sync='now WAIT_FOR parked';
+create trigger t1_bi before insert on t1 for each row set @a:=1;;
+set debug_sync='now SIGNAL go';
select @a;
@a
0
drop table t1;
-set session debug="-d,sleep_create_select_before_lock:+d,sleep_create_select_before_check_if_exists";
-create table t1 (i int);
+set debug_sync='create_table_select_before_check_if_exists SIGNAL parked WAIT_FOR go';
create table if not exists t1 select 1 as i;;
-drop table t1;
-Warnings:
-Note 1050 Table 't1' already exists
+set debug_sync='now WAIT_FOR parked';
+drop table t1;;
+set debug_sync='now SIGNAL go';
create table t1 (i int);
set @a:=0;
+set debug_sync='create_table_select_before_check_if_exists SIGNAL parked WAIT_FOR go';
create table if not exists t1 select 1 as i;;
create trigger t1_bi before insert on t1 for each row set @a:=1;
Warnings:
@@ -122,53 +169,17 @@ select @a;
0
select * from t1;
i
-1
drop table t1;
-set session debug="-d,sleep_create_select_before_check_if_exists";
-create table t2 (a int);
-create table t4 (b int);
-lock table t4 write;
-select 1;
-1
-1
-create table t3 as select * from t4;;
-create table t1 select * from t2, t3;;
-unlock tables;
-select * from t1;
-a b
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `a` int(11) DEFAULT NULL,
- `b` int(11) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-drop table t1, t3;
-lock table t4 read;
-select 1;
-1
-1
-rename table t4 to t3;;
-create table if not exists t1 select 1 as i from t2, t3;;
-create table t5 (j int);
-rename table t5 to t1;
-unlock tables;
-Warnings:
-Note 1050 Table 't1' already exists
-select * from t1;
-j
-show create table t1;
-Table Create Table
-t1 CREATE TABLE `t1` (
- `j` int(11) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-drop table t1, t2, t3;
drop table if exists t1,t2;
+set debug_sync='RESET';
create table t1 (i int);
-set session debug="+d,sleep_create_like_before_check_if_exists";
+set debug_sync='create_table_like_after_open SIGNAL parked WAIT_FOR go';
reset master;
create table t2 like t1;;
+set debug_sync='now WAIT_FOR parked';
insert into t1 values (1);
-drop table t1;
+drop table t1;;
+set debug_sync='now SIGNAL go';
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
@@ -177,71 +188,41 @@ t2 CREATE TABLE `t2` (
drop table t2;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
+master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; create table t2 like t1
-master-bin.000001 # Query # # use `test`; drop table t1
-master-bin.000001 # Query # # use `test`; drop table t2
+master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
+master-bin.000001 # Query # # use `test`; DROP TABLE `t2` /* generated by server */
create table t1 (i int);
-set session debug="-d,sleep_create_like_before_check_if_exists:+d,sleep_create_like_before_copy";
-create table t2 like t1;;
-create table if not exists t2 (j int);
-Warnings:
-Note 1050 Table 't2' already exists
-show create table t2;
-Table Create Table
-t2 CREATE TABLE `t2` (
- `i` int(11) DEFAULT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=latin1
-drop table t2;
+set debug_sync='create_table_like_before_binlog SIGNAL parked WAIT_FOR go';
reset master;
create table t2 like t1;;
-drop table t1;
-drop table t2;
-show binlog events from <binlog_start>;
-Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; create table t2 like t1
-master-bin.000001 # Query # # use `test`; drop table t1
-master-bin.000001 # Query # # use `test`; drop table t2
-create table t1 (i int);
-set session debug="-d,sleep_create_like_before_copy:+d,sleep_create_like_before_ha_create";
-reset master;
-create table t2 like t1;;
-insert into t2 values (1);
-drop table t2;
-create table t2 like t1;;
-drop table t2;
-create table t2 like t1;;
-drop table t1;
-drop table t2;
-show binlog events from <binlog_start>;
-Log_name Pos Event_type Server_id End_log_pos Info
-master-bin.000001 # Query # # use `test`; create table t2 like t1
-master-bin.000001 # Query # # use `test`; insert into t2 values (1)
-master-bin.000001 # Query # # use `test`; drop table t2
-master-bin.000001 # Query # # use `test`; create table t2 like t1
-master-bin.000001 # Query # # use `test`; drop table t2
-master-bin.000001 # Query # # use `test`; create table t2 like t1
-master-bin.000001 # Query # # use `test`; drop table t1
-master-bin.000001 # Query # # use `test`; drop table t2
-create table t1 (i int);
-set session debug="-d,sleep_create_like_before_ha_create:+d,sleep_create_like_before_binlogging";
-reset master;
-create table t2 like t1;;
-insert into t2 values (1);
-drop table t2;
-create table t2 like t1;;
-drop table t2;
-create table t2 like t1;;
-drop table t1;
+set debug_sync='now WAIT_FOR parked';
+insert into t2 values (1);;
+set debug_sync='now SIGNAL go';
+drop table t2;
+set debug_sync='create_table_like_before_binlog SIGNAL parked WAIT_FOR go';
+create table t2 like t1;;
+set debug_sync='now WAIT_FOR parked';
+drop table t2;;
+set debug_sync='now SIGNAL go';
+set debug_sync='create_table_like_before_binlog SIGNAL parked WAIT_FOR go';
+create table t2 like t1;;
+set debug_sync='now WAIT_FOR parked';
+drop table t1;;
+set debug_sync='now SIGNAL go';
drop table t2;
+set debug_sync='RESET';
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; create table t2 like t1
+master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t2 values (1)
-master-bin.000001 # Query # # use `test`; drop table t2
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # use `test`; DROP TABLE `t2` /* generated by server */
master-bin.000001 # Query # # use `test`; create table t2 like t1
-master-bin.000001 # Query # # use `test`; drop table t2
+master-bin.000001 # Query # # use `test`; DROP TABLE `t2` /* generated by server */
master-bin.000001 # Query # # use `test`; create table t2 like t1
-master-bin.000001 # Query # # use `test`; drop table t1
-master-bin.000001 # Query # # use `test`; drop table t2
-set session debug="-d,sleep_create_like_before_binlogging";
+master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
+master-bin.000001 # Query # # use `test`; DROP TABLE `t2` /* generated by server */
=== added file 'mysql-test/suite/binlog/r/binlog_hexdump.result'
--- a/mysql-test/suite/binlog/r/binlog_hexdump.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/binlog/r/binlog_hexdump.result 2011-11-21 13:25:04 +0000
@@ -0,0 +1,121 @@
+/*!40019 SET @@session.max_insert_delayed_threads=0*/;
+/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
+DELIMITER /*!*/;
+# at 4
+#111118 13:10:33 server id 1 end_log_pos 114
+# Position Timestamp Type Master ID Size Master Pos Flags
+# 4 19 2f c6 4e 0f 01 00 00 00 6e 00 00 00 72 00 00 00 00 00
+# 17 04 00 35 2e 36 2e 34 2d 6d 37 2d 64 65 62 75 67 |..5.6.4.m7.debug|
+# 27 2d 6c 6f 67 00 00 00 00 00 00 00 00 00 00 00 00 |.log............|
+# 37 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+# 47 00 00 00 00 19 2f c6 4e 13 38 0d 00 08 00 12 00 |.......N.8......|
+# 57 04 04 04 04 12 00 00 56 00 04 1a 08 00 00 00 08 |.......V........|
+# 67 08 08 02 00 00 00 00 ba 38 4d f8 |........8M.|
+# Start: binlog v 4, server v 5.6.4-m7-debug-log created 111118 13:10:33 at startup
+ROLLBACK/*!*/;
+BINLOG '
+GS/GTg8BAAAAbgAAAHIAAAAAAAQANS42LjQtbTctZGVidWctbG9nAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAZL8ZOEzgNAAgAEgAEBAQEEgAAVgAEGggAAAAICAgCAAAAALo4Tfg=
+'/*!*/;
+# at 114
+#111118 13:11:28 server id 1 end_log_pos 245
+# Position Timestamp Type Master ID Size Master Pos Flags
+# 72 50 2f c6 4e 02 01 00 00 00 83 00 00 00 f5 00 00 00 00 00
+# 85 01 00 00 00 00 00 00 00 04 00 00 21 00 00 00 00 |................|
+# 95 00 00 01 00 00 00 00 00 00 00 00 06 03 73 74 64 |.............std|
+# a5 04 21 00 21 00 08 00 0c 01 74 65 73 74 00 74 65 |.........test.te|
+# b5 73 74 00 44 52 4f 50 20 54 41 42 4c 45 20 49 46 |st.DROP.TABLE.IF|
+# c5 20 45 58 49 53 54 53 20 60 74 31 30 31 32 33 34 |.EXISTS..t101234|
+# d5 35 36 37 38 39 60 20 2f 2a 20 67 65 6e 65 72 61 |56789.....genera|
+# e5 74 65 64 20 62 79 20 73 65 72 76 65 72 20 2a 2f |ted.by.server...|
+# Query thread_id=1 exec_time=0 error_code=0
+use test/*!*/;
+SET TIMESTAMP=1321611088/*!*/;
+SET @@session.pseudo_thread_id=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
+SET @@session.sql_mode=0/*!*/;
+SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
+/*!\C utf8 *//*!*/;
+SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
+SET @@session.lc_time_names=0/*!*/;
+SET @@session.collation_database=DEFAULT/*!*/;
+DROP TABLE IF EXISTS `t10123456789` /* generated by server */
+/*!*/;
+# at 245
+#111118 13:11:48 server id 1 end_log_pos 347
+# Position Timestamp Type Master ID Size Master Pos Flags
+# f5 64 2f c6 4e 02 01 00 00 00 66 00 00 00 5b 01 00 00 00 00
+# 108 01 00 00 00 00 00 00 00 04 00 00 21 00 00 00 00 |................|
+# 118 00 00 01 00 00 00 00 00 00 00 00 06 03 73 74 64 |.............std|
+# 128 04 21 00 21 00 08 00 0c 01 74 65 73 74 00 74 65 |.........test.te|
+# 138 73 74 00 63 72 65 61 74 65 20 74 61 62 6c 65 20 |st.create.table.|
+# 148 74 31 30 31 32 33 34 35 36 37 38 39 28 69 20 69 |t10123456789.i.i|
+# 158 6e 74 29 |nt.|
+# Query thread_id=1 exec_time=0 error_code=0
+SET TIMESTAMP=1321611108/*!*/;
+create table t10123456789(i int)
+/*!*/;
+# at 347
+#111118 13:12:21 server id 1 end_log_pos 422
+# Position Timestamp Type Master ID Size Master Pos Flags
+# 15b 85 2f c6 4e 02 01 00 00 00 4b 00 00 00 a6 01 00 00 08 00
+# 16e 01 00 00 00 00 00 00 00 04 00 00 21 00 00 00 00 |................|
+# 17e 00 00 01 00 00 00 00 00 00 00 00 06 03 73 74 64 |.............std|
+# 18e 04 21 00 21 00 08 00 0c 01 74 65 73 74 00 74 65 |.........test.te|
+# 19e 73 74 00 42 45 47 49 4e |st.BEGIN|
+# Query thread_id=1 exec_time=0 error_code=0
+SET TIMESTAMP=1321611141/*!*/;
+BEGIN
+/*!*/;
+# at 422
+#111118 13:12:21 server id 1 end_log_pos 447
+# Position Timestamp Type Master ID Size Master Pos Flags
+# 1a6 85 2f c6 4e 0e 01 00 00 00 19 00 00 00 bf 01 00 00 00 00
+# 1b9 01 00 00 00 32 01 |....2.|
+# User_var
+SET @`2`:=NULL/*!*/;
+# at 447
+#111118 13:12:21 server id 1 end_log_pos 552
+# Position Timestamp Type Master ID Size Master Pos Flags
+# 1bf 85 2f c6 4e 02 01 00 00 00 69 00 00 00 28 02 00 00 00 00
+# 1d2 01 00 00 00 00 00 00 00 04 00 00 21 00 00 00 00 |................|
+# 1e2 00 00 01 00 00 00 00 00 00 00 00 06 03 73 74 64 |.............std|
+# 1f2 04 21 00 21 00 08 00 0c 01 74 65 73 74 00 74 65 |.........test.te|
+# 202 73 74 00 69 6e 73 65 72 74 20 69 6e 74 6f 20 74 |st.insert.into.t|
+# 212 31 30 31 32 33 34 35 36 37 38 39 20 76 61 6c 75 |10123456789.valu|
+# 222 65 73 28 40 32 29 |es..2.|
+# Query thread_id=1 exec_time=0 error_code=0
+SET TIMESTAMP=1321611141/*!*/;
+insert into t10123456789 values(@2)
+/*!*/;
+# at 552
+#111118 13:12:21 server id 1 end_log_pos 579
+# Position Timestamp Type Master ID Size Master Pos Flags
+# 228 85 2f c6 4e 10 01 00 00 00 1b 00 00 00 43 02 00 00 00 00
+# 23b 0a 00 00 00 00 00 00 00 |........|
+# Xid = 10
+COMMIT/*!*/;
+# at 579
+#111118 13:12:33 server id 1 end_log_pos 710
+# Position Timestamp Type Master ID Size Master Pos Flags
+# 243 91 2f c6 4e 02 01 00 00 00 83 00 00 00 c6 02 00 00 00 00
+# 256 01 00 00 00 00 00 00 00 04 00 00 21 00 00 00 00 |................|
+# 266 00 00 01 00 00 00 00 00 00 00 00 06 03 73 74 64 |.............std|
+# 276 04 21 00 21 00 08 00 0c 01 74 65 73 74 00 74 65 |.........test.te|
+# 286 73 74 00 44 52 4f 50 20 54 41 42 4c 45 20 49 46 |st.DROP.TABLE.IF|
+# 296 20 45 58 49 53 54 53 20 60 74 31 30 31 32 33 34 |.EXISTS..t101234|
+# 2a6 35 36 37 38 39 60 20 2f 2a 20 67 65 6e 65 72 61 |56789.....genera|
+# 2b6 74 65 64 20 62 79 20 73 65 72 76 65 72 20 2a 2f |ted.by.server...|
+# Query thread_id=1 exec_time=0 error_code=0
+SET TIMESTAMP=1321611153/*!*/;
+DROP TABLE IF EXISTS `t10123456789` /* generated by server */
+/*!*/;
+# at 710
+#111118 13:12:41 server id 1 end_log_pos 729
+# Position Timestamp Type Master ID Size Master Pos Flags
+# 2c6 99 2f c6 4e 03 01 00 00 00 13 00 00 00 d9 02 00 00 00 00
+# Stop
+DELIMITER ;
+# End of log file
+ROLLBACK /* added by mysqlbinlog */;
+/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
=== added file 'mysql-test/suite/binlog/std_data/bug11747887-bin.000003'
Files a/mysql-test/suite/binlog/std_data/bug11747887-bin.000003 1970-01-01 00:00:00 +0000 and b/mysql-test/suite/binlog/std_data/bug11747887-bin.000003 2011-11-21 13:25:04 +0000 differ
=== added file 'mysql-test/suite/binlog/t/binlog_hexdump.test'
--- a/mysql-test/suite/binlog/t/binlog_hexdump.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/binlog/t/binlog_hexdump.test 2011-11-21 13:25:04 +0000
@@ -0,0 +1,6 @@
+#
+# Bug#11747887 - 34386: MYSQLBINLOG --HEXDUMP PRINTS LAST ROW OF HEXDUMP
+# INCORRECTLY
+#
+
+--exec $MYSQL_BINLOG --hexdump suite/binlog/std_data/bug11747887-bin.000003
=== modified file 'mysql-test/suite/federated/federated.test'
--- a/mysql-test/suite/federated/federated.test 2010-03-05 10:51:37 +0000
+++ b/mysql-test/suite/federated/federated.test 2011-11-21 11:28:35 +0000
@@ -4,8 +4,6 @@
#
-# should work with embedded server after mysqltest is fixed
---source include/not_embedded.inc
--source federated.inc
connection default;
=== modified file 'mysql-test/suite/federated/federated_plugin.test'
--- a/mysql-test/suite/federated/federated_plugin.test 2011-09-15 11:09:24 +0000
+++ b/mysql-test/suite/federated/federated_plugin.test 2011-11-21 11:28:35 +0000
@@ -1,3 +1,4 @@
+--source include/not_embedded.inc
--source include/have_federated_plugin.inc
# Uninstall will not uninstall if ps has been used
=== modified file 'mysql-test/suite/innodb_fts/r/innodb_fts_misc.result'
--- a/mysql-test/suite/innodb_fts/r/innodb_fts_misc.result 2011-11-16 16:48:12 +0000
+++ b/mysql-test/suite/innodb_fts/r/innodb_fts_misc.result 2011-11-21 17:09:08 +0000
@@ -22,90 +22,90 @@ INSERT INTO t1 (a,b) VALUES
('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
('MySQL vs. YourSQL','In the following database comparison ...'),
('MySQL Security','When configured properly, MySQL ...');
-SELECT * FROM t1 WHERE MATCH (a,b)
+SELECT id FROM t1 WHERE MATCH (a,b)
AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE);
-id a b
-1 MySQL Tutorial DBMS stands for DataBase ...
-3 Optimizing MySQL In this tutorial we will show ...
-select * from t1 where MATCH(a,b) AGAINST("+support +collections" IN BOOLEAN MODE);
-id a b
-select * from t1 where MATCH(a,b) AGAINST("+search" IN BOOLEAN MODE);
-id a b
-select * from t1 where MATCH(a,b) AGAINST("+search +(support vector)" IN BOOLEAN MODE);
-id a b
-select * from t1 where MATCH(a,b) AGAINST("+search -(support vector)" IN BOOLEAN MODE);
-id a b
-select *, MATCH(a,b) AGAINST("support collections" IN BOOLEAN MODE) as x from t1;
-id a b x
-1 MySQL Tutorial DBMS stands for DataBase ... 0
-2 How To Use MySQL Well After you went through a ... 0
-3 Optimizing MySQL In this tutorial we will show ... 0
-4 1001 MySQL Tricks 1. Never run mysqld as root. 2. ... 0
-5 MySQL vs. YourSQL In the following database comparison ... 0
-6 MySQL Security When configured properly, MySQL ... 0
-select *, MATCH(a,b) AGAINST("collections support" IN BOOLEAN MODE) as x from t1;
-id a b x
-1 MySQL Tutorial DBMS stands for DataBase ... 0
-2 How To Use MySQL Well After you went through a ... 0
-3 Optimizing MySQL In this tutorial we will show ... 0
-4 1001 MySQL Tricks 1. Never run mysqld as root. 2. ... 0
-5 MySQL vs. YourSQL In the following database comparison ... 0
-6 MySQL Security When configured properly, MySQL ... 0
-select * from t1 where MATCH a,b AGAINST ("+call* +coll*" IN BOOLEAN MODE);
-id a b
-select * from t1 where MATCH a,b AGAINST ('"support now"' IN BOOLEAN MODE);
-id a b
-select * from t1 where MATCH a,b AGAINST ('"Now sUPPort"' IN BOOLEAN MODE);
-id a b
-select * from t1 where MATCH(a,b) AGAINST ("collections" WITH QUERY EXPANSION);
-id a b
-select * from t1 where MATCH(a,b) AGAINST ("indexes" WITH QUERY EXPANSION);
-id a b
-select * from t1 where MATCH(a,b) AGAINST ("indexes collections" WITH QUERY EXPANSION);
-id a b
+id
+1
+3
+select id from t1 where MATCH(a,b) AGAINST("+support +collections" IN BOOLEAN MODE);
+id
+select id from t1 where MATCH(a,b) AGAINST("+search" IN BOOLEAN MODE);
+id
+select id from t1 where MATCH(a,b) AGAINST("+search +(support vector)" IN BOOLEAN MODE);
+id
+select id from t1 where MATCH(a,b) AGAINST("+search -(support vector)" IN BOOLEAN MODE);
+id
+select id, MATCH(a,b) AGAINST("support collections" IN BOOLEAN MODE) as x from t1;
+id x
+1 0
+2 0
+3 0
+4 0
+5 0
+6 0
+select id, MATCH(a,b) AGAINST("collections support" IN BOOLEAN MODE) as x from t1;
+id x
+1 0
+2 0
+3 0
+4 0
+5 0
+6 0
+select id from t1 where MATCH a,b AGAINST ("+call* +coll*" IN BOOLEAN MODE);
+id
+select id from t1 where MATCH a,b AGAINST ('"support now"' IN BOOLEAN MODE);
+id
+select id from t1 where MATCH a,b AGAINST ('"Now sUPPort"' IN BOOLEAN MODE);
+id
+select id from t1 where MATCH(a,b) AGAINST ("collections" WITH QUERY EXPANSION);
+id
+select id from t1 where MATCH(a,b) AGAINST ("indexes" WITH QUERY EXPANSION);
+id
+select id from t1 where MATCH(a,b) AGAINST ("indexes collections" WITH QUERY EXPANSION);
+id
ALTER TABLE t1 DROP INDEX idx;
CREATE FULLTEXT INDEX idx on t1 (a,b);
-SELECT * FROM t1 WHERE MATCH (a,b)
+SELECT id FROM t1 WHERE MATCH (a,b)
AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE);
-id a b
-1 MySQL Tutorial DBMS stands for DataBase ...
-3 Optimizing MySQL In this tutorial we will show ...
-select * from t1 where MATCH(a,b) AGAINST("+support +collections" IN BOOLEAN MODE);
-id a b
-select * from t1 where MATCH(a,b) AGAINST("+search" IN BOOLEAN MODE);
-id a b
-select * from t1 where MATCH(a,b) AGAINST("+search +(support vector)" IN BOOLEAN MODE);
-id a b
-select * from t1 where MATCH(a,b) AGAINST("+search -(support vector)" IN BOOLEAN MODE);
-id a b
-select *, MATCH(a,b) AGAINST("support collections" IN BOOLEAN MODE) as x from t1;
-id a b x
-1 MySQL Tutorial DBMS stands for DataBase ... 0
-2 How To Use MySQL Well After you went through a ... 0
-3 Optimizing MySQL In this tutorial we will show ... 0
-4 1001 MySQL Tricks 1. Never run mysqld as root. 2. ... 0
-5 MySQL vs. YourSQL In the following database comparison ... 0
-6 MySQL Security When configured properly, MySQL ... 0
-select *, MATCH(a,b) AGAINST("collections support" IN BOOLEAN MODE) as x from t1;
-id a b x
-1 MySQL Tutorial DBMS stands for DataBase ... 0
-2 How To Use MySQL Well After you went through a ... 0
-3 Optimizing MySQL In this tutorial we will show ... 0
-4 1001 MySQL Tricks 1. Never run mysqld as root. 2. ... 0
-5 MySQL vs. YourSQL In the following database comparison ... 0
-6 MySQL Security When configured properly, MySQL ... 0
-select * from t1 where MATCH a,b AGAINST ("+call* +coll*" IN BOOLEAN MODE);
-id a b
-select * from t1 where MATCH a,b AGAINST ('"support now"' IN BOOLEAN MODE);
-id a b
-select * from t1 where MATCH a,b AGAINST ('"Now sUPPort"' IN BOOLEAN MODE);
-id a b
-select * from t1 where MATCH(a,b) AGAINST ("collections" WITH QUERY EXPANSION);
-id a b
-select * from t1 where MATCH(a,b) AGAINST ("indexes" WITH QUERY EXPANSION);
-id a b
-select * from t1 where MATCH(a,b) AGAINST ("indexes collections" WITH QUERY EXPANSION);
-id a b
+id
+1
+3
+select id from t1 where MATCH(a,b) AGAINST("+support +collections" IN BOOLEAN MODE);
+id
+select id from t1 where MATCH(a,b) AGAINST("+search" IN BOOLEAN MODE);
+id
+select id from t1 where MATCH(a,b) AGAINST("+search +(support vector)" IN BOOLEAN MODE);
+id
+select id from t1 where MATCH(a,b) AGAINST("+search -(support vector)" IN BOOLEAN MODE);
+id
+select id, MATCH(a,b) AGAINST("support collections" IN BOOLEAN MODE) as x from t1;
+id x
+1 0
+2 0
+3 0
+4 0
+5 0
+6 0
+select id, MATCH(a,b) AGAINST("collections support" IN BOOLEAN MODE) as x from t1;
+id x
+1 0
+2 0
+3 0
+4 0
+5 0
+6 0
+select id from t1 where MATCH a,b AGAINST ("+call* +coll*" IN BOOLEAN MODE);
+id
+select id from t1 where MATCH a,b AGAINST ('"support now"' IN BOOLEAN MODE);
+id
+select id from t1 where MATCH a,b AGAINST ('"Now sUPPort"' IN BOOLEAN MODE);
+id
+select id from t1 where MATCH(a,b) AGAINST ("collections" WITH QUERY EXPANSION);
+id
+select id from t1 where MATCH(a,b) AGAINST ("indexes" WITH QUERY EXPANSION);
+id
+select id from t1 where MATCH(a,b) AGAINST ("indexes collections" WITH QUERY EXPANSION);
+id
INSERT INTO t1 (a,b) VALUES ('test query expansion','for database ...');
INSERT INTO t1 (a,b) VALUES
('test proximity search, test, proximity and phrase',
@@ -116,41 +116,41 @@ INSERT INTO t1 (a,b) VALUES
INSERT INTO t1 (a,b) VALUES
('test more proximity fts search, test, more proximity and phrase',
'search, with proximity innodb');
-SELECT * FROM t1
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('"proximity search"@10' IN BOOLEAN MODE);
-id a b
-8 test proximity search, test, proximity and phrase search, with proximity innodb
-SELECT * FROM t1
+id
+8
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('"proximity search"@9' IN BOOLEAN MODE);
-id a b
-SELECT * FROM t1
+id
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('"proximity search"@14' IN BOOLEAN MODE);
-id a b
-8 test proximity search, test, proximity and phrase search, with proximity innodb
-9 test proximity fts search, test, proximity and phrase search, with proximity innodb
-10 test more proximity fts search, test, more proximity and phrase search, with proximity innodb
-SELECT * FROM t1
+id
+8
+9
+10
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('"test proximity"@5' IN BOOLEAN MODE);
-id a b
-8 test proximity search, test, proximity and phrase search, with proximity innodb
-9 test proximity fts search, test, proximity and phrase search, with proximity innodb
-SELECT * FROM t1
+id
+8
+9
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('"more test proximity"@10' IN BOOLEAN MODE);
-id a b
-10 test more proximity fts search, test, more proximity and phrase search, with proximity innodb
-SELECT * FROM t1
+id
+10
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('"more test proximity"@9' IN BOOLEAN MODE);
-id a b
-SELECT * FROM t1
+id
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('"more fts proximity"@09' IN BOOLEAN MODE);
-id a b
+id
DROP TABLE t1;
CREATE TABLE t1 (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
@@ -166,64 +166,64 @@ INSERT INTO t1 (a,b) VALUES
('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
('MySQL vs. YourSQL','In the following database comparison ...'),
('MySQL Security','When configured properly, MySQL ...');
-SELECT * FROM t1 WHERE MATCH (a,b)
+SELECT id FROM t1 WHERE MATCH (a,b)
AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE);
-id a b
-1 MySQL Tutorial DBMS stands for DataBase ...
-3 Optimizing MySQL In this tutorial we will show ...
-SELECT * FROM t1 WHERE id = (SELECT MAX(id) FROM t1 WHERE MATCH (a,b)
+id
+1
+3
+SELECT id FROM t1 WHERE id = (SELECT MAX(id) FROM t1 WHERE MATCH (a,b)
AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE));
-id a b
-3 Optimizing MySQL In this tutorial we will show ...
-SELECT * FROM t1 WHERE id = (SELECT MIN(id) FROM t1 WHERE MATCH (a,b)
+id
+3
+SELECT id FROM t1 WHERE id = (SELECT MIN(id) FROM t1 WHERE MATCH (a,b)
AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE));
-id a b
-1 MySQL Tutorial DBMS stands for DataBase ...
-SELECT * FROM t1 WHERE id = (SELECT MIN(id) FROM t1 WHERE MATCH (a,b)
+id
+1
+SELECT id FROM t1 WHERE id = (SELECT MIN(id) FROM t1 WHERE MATCH (a,b)
AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE)) OR id = 3 ;
-id a b
-1 MySQL Tutorial DBMS stands for DataBase ...
-3 Optimizing MySQL In this tutorial we will show ...
-SELECT * FROM t1 WHERE CONCAT(t1.a,t1.b) IN (
+id
+1
+3
+SELECT id FROM t1 WHERE CONCAT(t1.a,t1.b) IN (
SELECT CONCAT(a,b) FROM t1 AS t2 WHERE
MATCH (t2.a,t2.b) AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE)
) OR t1.id = 3 ;
-id a b
-1 MySQL Tutorial DBMS stands for DataBase ...
-3 Optimizing MySQL In this tutorial we will show ...
-SELECT * FROM t1 WHERE CONCAT(t1.a,t1.b) IN (
+id
+1
+3
+SELECT id FROM t1 WHERE CONCAT(t1.a,t1.b) IN (
SELECT CONCAT(a,b) FROM t1 AS t2
WHERE MATCH (t2.a,t2.b) AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE)
AND t2.id != 3) ;
-id a b
-1 MySQL Tutorial DBMS stands for DataBase ...
-SELECT * FROM t1 WHERE id IN (SELECT MIN(id) FROM t1 WHERE
+id
+1
+SELECT id FROM t1 WHERE id IN (SELECT MIN(id) FROM t1 WHERE
MATCH (a,b) AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE)) OR id = 3 ;
-id a b
-1 MySQL Tutorial DBMS stands for DataBase ...
-3 Optimizing MySQL In this tutorial we will show ...
-SELECT * FROM t1 WHERE id NOT IN (SELECT MIN(id) FROM t1
+id
+1
+3
+SELECT id FROM t1 WHERE id NOT IN (SELECT MIN(id) FROM t1
WHERE MATCH (a,b) AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE)) ;
-id a b
-2 How To Use MySQL Well After you went through a ...
-3 Optimizing MySQL In this tutorial we will show ...
-4 1001 MySQL Tricks 1. Never run mysqld as root. 2. ...
-5 MySQL vs. YourSQL In the following database comparison ...
-6 MySQL Security When configured properly, MySQL ...
-SELECT * FROM t1 WHERE EXISTS (SELECT t2.id FROM t1 AS t2 WHERE
+id
+2
+3
+4
+5
+6
+SELECT id FROM t1 WHERE EXISTS (SELECT t2.id FROM t1 AS t2 WHERE
MATCH (t2.a,t2.b) AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE)
AND t1.id = t2.id) ;
-id a b
-1 MySQL Tutorial DBMS stands for DataBase ...
-3 Optimizing MySQL In this tutorial we will show ...
-SELECT * FROM t1 WHERE NOT EXISTS (SELECT t2.id FROM t1 AS t2 WHERE
+id
+1
+3
+SELECT id FROM t1 WHERE NOT EXISTS (SELECT t2.id FROM t1 AS t2 WHERE
MATCH (t2.a,t2.b) AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE)
AND t1.id = t2.id) ;
-id a b
-2 How To Use MySQL Well After you went through a ...
-4 1001 MySQL Tricks 1. Never run mysqld as root. 2. ...
-5 MySQL vs. YourSQL In the following database comparison ...
-6 MySQL Security When configured properly, MySQL ...
+id
+2
+4
+5
+6
DROP TABLE t1;
CREATE TABLE t1 (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
@@ -236,25 +236,25 @@ INSERT INTO t1(a,b) VALUES('MySQL has no
('Only MyISAM tables','support collections'),
('Function MATCH ... AGAINST()','is used to do a search'),
('Full-text search in MySQL', 'implements vector space model');
-SELECT * FROM t1 WHERE t1.id = (SELECT MAX(t2.id) FROM t1 AS t2 WHERE
+SELECT id FROM t1 WHERE t1.id = (SELECT MAX(t2.id) FROM t1 AS t2 WHERE
MATCH(t2.a,t2.b) AGAINST("+support +collections" IN BOOLEAN MODE));
-id a b
-3 Only MyISAM tables support collections
-SELECT * FROM t1 WHERE t1.id != (SELECT MIN(t2.id) FROM t1 AS t2 WHERE
+id
+3
+SELECT id FROM t1 WHERE t1.id != (SELECT MIN(t2.id) FROM t1 AS t2 WHERE
MATCH(t2.a,t2.b) AGAINST("+search" IN BOOLEAN MODE));
-id a b
-2 Full-text indexes are called collections
-3 Only MyISAM tables support collections
-4 Function MATCH ... AGAINST() is used to do a search
-5 Full-text search in MySQL implements vector space model
-SELECT * FROM t1 WHERE t1.id IN (SELECT t2.id FROM t1 AS t2 WHERE
+id
+2
+3
+4
+5
+SELECT id FROM t1 WHERE t1.id IN (SELECT t2.id FROM t1 AS t2 WHERE
MATCH (t2.a,t2.b) AGAINST ("+call* +coll*" IN BOOLEAN MODE));
-id a b
-2 Full-text indexes are called collections
-SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 AS t2 WHERE
+id
+2
+SELECT id FROM t1 WHERE EXISTS (SELECT id FROM t1 AS t2 WHERE
MATCH t2.a,t2.b AGAINST ('"Now sUPPort"' IN BOOLEAN MODE) AND t2.id=t1.id);
-id a b
-1 MySQL has now support for full-text search
+id
+1
INSERT INTO t1 (a,b) VALUES ('test query expansion','for database ...');
INSERT INTO t1 (a,b) VALUES
('test proximity search, test, proximity and phrase',
@@ -265,72 +265,66 @@ INSERT INTO t1 (a,b) VALUES
INSERT INTO t1 (a,b) VALUES
('test more proximity fts search, test, more proximity and phrase',
'search, with proximity innodb');
-SELECT * FROM t1 WHERE t1.id = (SELECT MAX(t2.id) FROM t1 AS t2 WHERE
+SELECT id FROM t1 WHERE t1.id = (SELECT MAX(t2.id) FROM t1 AS t2 WHERE
MATCH(t2.a,t2.b) AGAINST ('"proximity search"@10' IN BOOLEAN MODE));
-id a b
-7 test proximity search, test, proximity and phrase search, with proximity innodb
-SELECT * FROM t1 WHERE t1.id > (SELECT MIN(t2.id) FROM t1 AS t2 WHERE
+id
+7
+SELECT id FROM t1 WHERE t1.id > (SELECT MIN(t2.id) FROM t1 AS t2 WHERE
MATCH(t2.a,t2.b) AGAINST ('"proximity search"@10' IN BOOLEAN MODE));
-id a b
-8 test proximity fts search, test, proximity and phrase search, with proximity innodb
-9 test more proximity fts search, test, more proximity and phrase search, with proximity innodb
-SELECT * FROM t1 WHERE t1.id IN (SELECT t2.id FROM t1 AS t2 WHERE
+id
+8
+9
+SELECT id FROM t1 WHERE t1.id IN (SELECT t2.id FROM t1 AS t2 WHERE
MATCH (t2.a,t2.b) AGAINST ('"proximity search"@10' IN BOOLEAN MODE));
-id a b
-7 test proximity search, test, proximity and phrase search, with proximity innodb
-SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 AS t2 WHERE
+id
+7
+SELECT id FROM t1 WHERE EXISTS (SELECT id FROM t1 AS t2 WHERE
MATCH t2.a,t2.b AGAINST ('"proximity search"@10' IN BOOLEAN MODE)
AND t2.id=t1.id);
-id a b
-7 test proximity search, test, proximity and phrase search, with proximity innodb
-SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 AS t2 WHERE
+id
+7
+SELECT id FROM t1 WHERE EXISTS (SELECT id FROM t1 AS t2 WHERE
MATCH t2.a,t2.b AGAINST ('"more test proximity"@10' IN BOOLEAN MODE)
AND t2.id=t1.id);
-id a b
-9 test more proximity fts search, test, more proximity and phrase search, with proximity innodb
-SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 AS t2 WHERE
+id
+9
+SELECT id FROM t1 WHERE EXISTS (SELECT id FROM t1 AS t2 WHERE
MATCH t2.a,t2.b AGAINST ('"more test proximity"@5' IN BOOLEAN MODE)
AND t2.id=t1.id);
-id a b
-CREATE TABLE t2 ENGINE = InnoDB AS SELECT * FROM t1 WHERE
+id
+CREATE TABLE t2 ENGINE = InnoDB AS SELECT id FROM t1 WHERE
MATCH a,b AGAINST ('support') ;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
- `id` int(10) unsigned NOT NULL DEFAULT '0',
- `a` varchar(200) DEFAULT NULL,
- `b` text
+ `id` int(10) unsigned NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1
-SELECT * FROM t2;
-id a b
-1 MySQL has now support for full-text search
-3 Only MyISAM tables support collections
+SELECT id FROM t2;
+id
+1
+3
DROP TABLE t2;
-CREATE TABLE t2 ENGINE = InnoDB AS SELECT * FROM t1 WHERE
+CREATE TABLE t2 ENGINE = InnoDB AS SELECT id FROM t1 WHERE
MATCH a,b AGAINST("+support +collections" IN BOOLEAN MODE);
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
- `id` int(10) unsigned NOT NULL DEFAULT '0',
- `a` varchar(200) DEFAULT NULL,
- `b` text
+ `id` int(10) unsigned NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1
-SELECT * FROM t2;
-id a b
-3 Only MyISAM tables support collections
+SELECT id FROM t2;
+id
+3
DROP TABLE t2;
-CREATE TABLE t2 ENGINE = InnoDB AS SELECT * FROM t1 WHERE
+CREATE TABLE t2 ENGINE = InnoDB AS SELECT id FROM t1 WHERE
MATCH a,b AGAINST ('"proximity search"@10' IN BOOLEAN MODE);
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
- `id` int(10) unsigned NOT NULL DEFAULT '0',
- `a` varchar(200) DEFAULT NULL,
- `b` text
+ `id` int(10) unsigned NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1
-SELECT * FROM t2;
-id a b
-7 test proximity search, test, proximity and phrase search, with proximity innodb
+SELECT id FROM t2;
+id
+7
DROP TABLE t2;
DROP TABLE t1;
CREATE TABLE t1 (
@@ -358,59 +352,59 @@ COUNT(*)
SELECT COUNT(*) FROM t1 WHERE b IS NOT NULL;
COUNT(*)
6
-SELECT * FROM t1
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE);
-id a b
-1 MySQL from Tutorial DBMS stands for DataBase ...
-103 where will Optimizing MySQL what In this tutorial we will show ...
-SELECT * FROM t1
+id
+1
+103
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST (NULL IN NATURAL LANGUAGE MODE);
-id a b
-SELECT * FROM t1
+id
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST (NULL WITH QUERY EXPANSION);
-id a b
-SELECT * FROM t1
+id
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('null' IN NATURAL LANGUAGE MODE);
-id a b
-106 MySQL Security When configured properly, MySQL null...
-SELECT * FROM t1 WHERE MATCH (a,b)
+id
+106
+SELECT id FROM t1 WHERE MATCH (a,b)
AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
-id a b
-106 MySQL Security When configured properly, MySQL null...
-1 MySQL from Tutorial DBMS stands for DataBase ...
-52 when To Use MySQL Well After that you went through a ...
-103 where will Optimizing MySQL what In this tutorial we will show ...
-104 1001 MySQL Tricks 1. Never run mysqld as root. 2. ...
-SELECT * FROM t1 WHERE MATCH (a,b)
+id
+106
+1
+52
+103
+104
+SELECT id FROM t1 WHERE MATCH (a,b)
AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE) AND (a IS NOT NULL OR b IS NOT NULL);
-id a b
-106 MySQL Security When configured properly, MySQL null...
-1 MySQL from Tutorial DBMS stands for DataBase ...
-52 when To Use MySQL Well After that you went through a ...
-103 where will Optimizing MySQL what In this tutorial we will show ...
-104 1001 MySQL Tricks 1. Never run mysqld as root. 2. ...
-SELECT * FROM t1 WHERE MATCH (a,b)
+id
+106
+1
+52
+103
+104
+SELECT id FROM t1 WHERE MATCH (a,b)
AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE) AND (a IS NULL AND b IS NOT NULL);
-id a b
-SELECT * FROM t1 WHERE MATCH (a,b)
+id
+SELECT id FROM t1 WHERE MATCH (a,b)
AGAINST ('DBMS Security' IN BOOLEAN MODE);
-id a b
-1 MySQL from Tutorial DBMS stands for DataBase ...
-106 MySQL Security When configured properly, MySQL null...
+id
+1
+106
SELECT COUNT(*) FROM t1
WHERE MATCH (a,b)
AGAINST ('database' WITH QUERY EXPANSION);
COUNT(*)
6
-SELECT * FROM t1
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('"following database"@10' IN BOOLEAN MODE);
-id a b
-105 MySQL vs. YourSQL In the following database comparison ...
+id
+105
DROP TABLE t1;
drop table if exists t50;
set names utf8;
=== modified file 'mysql-test/suite/innodb_fts/r/innodb_fts_misc_1.result'
--- a/mysql-test/suite/innodb_fts/r/innodb_fts_misc_1.result 2011-11-20 21:00:25 +0000
+++ b/mysql-test/suite/innodb_fts/r/innodb_fts_misc_1.result 2011-11-21 17:09:08 +0000
@@ -34,50 +34,50 @@ INSERT INTO t2 (a2,b2) VALUES
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a2`) REFERENCES `t1` (`a1`) ON UPDATE CASCADE)
DELETE FROM t1;
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a2`) REFERENCES `t1` (`a1`) ON UPDATE CASCADE)
-SELECT * FROM t1 WHERE MATCH (a1,b1) AGAINST ('tutorial') ;
-id1 a1 b1
-1 MySQL Tutorial DBMS stands for DataBase VÐƷWİ...
-3 Optimizing MySQL In this tutorial we will show ...
-SELECT * FROM t2 WHERE MATCH (a2,b2) AGAINST ('tutorial') ;
-id2 a2 b2
-1 MySQL Tutorial DBMS stands for DataBase VÐƷWİ...
-3 Optimizing MySQL In this tutorial we will show ...
-SELECT * FROM t1 WHERE MATCH (a1,b1) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
-id1 a1 b1
-3 Optimizing MySQL In this tutorial we will show ...
-6 MySQL Security When configured properly, MySQL ...
-2 How To Use MySQL Well After you went through a ...
-4 1001 MySQL Tricks 1. Never run mysqld as root. 2. ...
-5 MySQL vs. YourSQL In the following database comparison ...
-SELECT * FROM t2 WHERE MATCH (a2,b2) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
-id2 a2 b2
-3 Optimizing MySQL In this tutorial we will show ...
-6 MySQL Security When configured properly, MySQL ...
-2 How To Use MySQL Well After you went through a ...
-4 1001 MySQL Tricks 1. Never run mysqld as root. 2. ...
-5 MySQL vs. YourSQL In the following database comparison ...
-SELECT * FROM t1 WHERE MATCH (a1,b1) AGAINST ('tutorial' WITH QUERY EXPANSION) ;
-id1 a1 b1
-1 MySQL Tutorial DBMS stands for DataBase VÐƷWİ...
-3 Optimizing MySQL In this tutorial we will show ...
-5 MySQL vs. YourSQL In the following database comparison ...
-6 MySQL Security When configured properly, MySQL ...
-2 How To Use MySQL Well After you went through a ...
-4 1001 MySQL Tricks 1. Never run mysqld as root. 2. ...
-SELECT * FROM t2 WHERE MATCH (a2,b2) AGAINST ('tutorial' WITH QUERY EXPANSION) ;
-id2 a2 b2
-1 MySQL Tutorial DBMS stands for DataBase VÐƷWİ...
-3 Optimizing MySQL In this tutorial we will show ...
-5 MySQL vs. YourSQL In the following database comparison ...
-6 MySQL Security When configured properly, MySQL ...
-2 How To Use MySQL Well After you went through a ...
-4 1001 MySQL Tricks 1. Never run mysqld as root. 2. ...
-SELECT * FROM t1 WHERE MATCH (a1,b1) AGAINST ('"dbms database"@16' IN BOOLEAN MODE) ;
-id1 a1 b1
-1 MySQL Tutorial DBMS stands for DataBase VÐƷWİ...
-SELECT * FROM t2 WHERE MATCH (a2,b2) AGAINST ('"dbms database"@16' IN BOOLEAN MODE) ;
-id2 a2 b2
-1 MySQL Tutorial DBMS stands for DataBase VÐƷWİ...
+SELECT id1 FROM t1 WHERE MATCH (a1,b1) AGAINST ('tutorial') ;
+id1
+1
+3
+SELECT id2 FROM t2 WHERE MATCH (a2,b2) AGAINST ('tutorial') ;
+id2
+1
+3
+SELECT id1 FROM t1 WHERE MATCH (a1,b1) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
+id1
+3
+6
+2
+4
+5
+SELECT id2 FROM t2 WHERE MATCH (a2,b2) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
+id2
+3
+6
+2
+4
+5
+SELECT id1 FROM t1 WHERE MATCH (a1,b1) AGAINST ('tutorial' WITH QUERY EXPANSION) ;
+id1
+1
+3
+5
+6
+2
+4
+SELECT id2 FROM t2 WHERE MATCH (a2,b2) AGAINST ('tutorial' WITH QUERY EXPANSION) ;
+id2
+1
+3
+5
+6
+2
+4
+SELECT id1 FROM t1 WHERE MATCH (a1,b1) AGAINST ('"dbms database"@16' IN BOOLEAN MODE) ;
+id1
+1
+SELECT id2 FROM t2 WHERE MATCH (a2,b2) AGAINST ('"dbms database"@16' IN BOOLEAN MODE) ;
+id2
+1
set global innodb_optimize_fulltext_only=1;
optimize table t1;
Table Op Msg_type Msg_text
@@ -85,32 +85,32 @@ test.t1 optimize status OK
set global innodb_optimize_fulltext_only=0;
UPDATE t1 SET a1 = "changing column - on update cascade" , b1 = "to check foreign constraint" WHERE
MATCH (a1,b1) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
-SELECT * FROM t1 WHERE MATCH (a1,b1) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
-id1 a1 b1
-SELECT * FROM t2 WHERE MATCH (a2,b2) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
-id2 a2 b2
-6 changing column - on update cascade When configured properly, MySQL ...
-SELECT * FROM t1 WHERE MATCH (a1,b1) AGAINST ('+update +cascade' IN BOOLEAN MODE) ;
-id1 a1 b1
-4 changing column - on update cascade to check foreign constraint
-2 changing column - on update cascade to check foreign constraint
-6 changing column - on update cascade to check foreign constraint
-5 changing column - on update cascade to check foreign constraint
-3 changing column - on update cascade to check foreign constraint
-SELECT * FROM t2 WHERE MATCH (a2,b2) AGAINST ('+update +cascade' IN BOOLEAN MODE) ;
-id2 a2 b2
-4 changing column - on update cascade 1. Never run mysqld as root. 2. ...
-2 changing column - on update cascade After you went through a ...
-6 changing column - on update cascade When configured properly, MySQL ...
-5 changing column - on update cascade In the following database comparison ...
-3 changing column - on update cascade In this tutorial we will show ...
-SELECT * FROM t2 WHERE a2 LIKE '%UPDATE CASCADE%';
-id2 a2 b2
-2 changing column - on update cascade After you went through a ...
-3 changing column - on update cascade In this tutorial we will show ...
-4 changing column - on update cascade 1. Never run mysqld as root. 2. ...
-5 changing column - on update cascade In the following database comparison ...
-6 changing column - on update cascade When configured properly, MySQL ...
+SELECT id1 FROM t1 WHERE MATCH (a1,b1) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
+id1
+SELECT id2 FROM t2 WHERE MATCH (a2,b2) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
+id2
+6
+SELECT id1 FROM t1 WHERE MATCH (a1,b1) AGAINST ('+update +cascade' IN BOOLEAN MODE) ;
+id1
+4
+2
+6
+5
+3
+SELECT id2 FROM t2 WHERE MATCH (a2,b2) AGAINST ('+update +cascade' IN BOOLEAN MODE) ;
+id2
+4
+2
+6
+5
+3
+SELECT id2 FROM t2 WHERE a2 LIKE '%UPDATE CASCADE%';
+id2
+2
+3
+4
+5
+6
DROP TABLE t2 , t1;
create table t1 (s1 int, s2 varchar(200), primary key (s1,s2)) ENGINE = InnoDB;
create table t2 (s1 int, s2 varchar(200),
=== modified file 'mysql-test/suite/innodb_fts/t/innodb_fts_misc.test'
--- a/mysql-test/suite/innodb_fts/t/innodb_fts_misc.test 2011-11-16 16:48:12 +0000
+++ b/mysql-test/suite/innodb_fts/t/innodb_fts_misc.test 2011-11-21 17:09:08 +0000
@@ -1,4 +1,4 @@
-
+--source include/not_windows.inc
#------------------------------------------------------------------------------
# Test With alter/create/drop index
#------------------------------------------------------------------------------
@@ -30,24 +30,24 @@ INSERT INTO t1 (a,b) VALUES
('MySQL Security','When configured properly, MySQL ...');
# Select word "tutorial" in the table
-SELECT * FROM t1 WHERE MATCH (a,b)
+SELECT id FROM t1 WHERE MATCH (a,b)
AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE);
# boolean mode
-select * from t1 where MATCH(a,b) AGAINST("+support +collections" IN BOOLEAN MODE);
-select * from t1 where MATCH(a,b) AGAINST("+search" IN BOOLEAN MODE);
-select * from t1 where MATCH(a,b) AGAINST("+search +(support vector)" IN BOOLEAN MODE);
-select * from t1 where MATCH(a,b) AGAINST("+search -(support vector)" IN BOOLEAN MODE);
-select *, MATCH(a,b) AGAINST("support collections" IN BOOLEAN MODE) as x from t1;
-select *, MATCH(a,b) AGAINST("collections support" IN BOOLEAN MODE) as x from t1;
-select * from t1 where MATCH a,b AGAINST ("+call* +coll*" IN BOOLEAN MODE);
-select * from t1 where MATCH a,b AGAINST ('"support now"' IN BOOLEAN MODE);
-select * from t1 where MATCH a,b AGAINST ('"Now sUPPort"' IN BOOLEAN MODE);
+select id from t1 where MATCH(a,b) AGAINST("+support +collections" IN BOOLEAN MODE);
+select id from t1 where MATCH(a,b) AGAINST("+search" IN BOOLEAN MODE);
+select id from t1 where MATCH(a,b) AGAINST("+search +(support vector)" IN BOOLEAN MODE);
+select id from t1 where MATCH(a,b) AGAINST("+search -(support vector)" IN BOOLEAN MODE);
+select id, MATCH(a,b) AGAINST("support collections" IN BOOLEAN MODE) as x from t1;
+select id, MATCH(a,b) AGAINST("collections support" IN BOOLEAN MODE) as x from t1;
+select id from t1 where MATCH a,b AGAINST ("+call* +coll*" IN BOOLEAN MODE);
+select id from t1 where MATCH a,b AGAINST ('"support now"' IN BOOLEAN MODE);
+select id from t1 where MATCH a,b AGAINST ('"Now sUPPort"' IN BOOLEAN MODE);
# query expansion
-select * from t1 where MATCH(a,b) AGAINST ("collections" WITH QUERY EXPANSION);
-select * from t1 where MATCH(a,b) AGAINST ("indexes" WITH QUERY EXPANSION);
-select * from t1 where MATCH(a,b) AGAINST ("indexes collections" WITH QUERY EXPANSION);
+select id from t1 where MATCH(a,b) AGAINST ("collections" WITH QUERY EXPANSION);
+select id from t1 where MATCH(a,b) AGAINST ("indexes" WITH QUERY EXPANSION);
+select id from t1 where MATCH(a,b) AGAINST ("indexes collections" WITH QUERY EXPANSION);
# Drop index
ALTER TABLE t1 DROP INDEX idx;
@@ -56,24 +56,24 @@ ALTER TABLE t1 DROP INDEX idx;
CREATE FULLTEXT INDEX idx on t1 (a,b);
# Select word "tutorial" in the table
-SELECT * FROM t1 WHERE MATCH (a,b)
+SELECT id FROM t1 WHERE MATCH (a,b)
AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE);
# boolean mode
-select * from t1 where MATCH(a,b) AGAINST("+support +collections" IN BOOLEAN MODE);
-select * from t1 where MATCH(a,b) AGAINST("+search" IN BOOLEAN MODE);
-select * from t1 where MATCH(a,b) AGAINST("+search +(support vector)" IN BOOLEAN MODE);
-select * from t1 where MATCH(a,b) AGAINST("+search -(support vector)" IN BOOLEAN MODE);
-select *, MATCH(a,b) AGAINST("support collections" IN BOOLEAN MODE) as x from t1;
-select *, MATCH(a,b) AGAINST("collections support" IN BOOLEAN MODE) as x from t1;
-select * from t1 where MATCH a,b AGAINST ("+call* +coll*" IN BOOLEAN MODE);
-select * from t1 where MATCH a,b AGAINST ('"support now"' IN BOOLEAN MODE);
-select * from t1 where MATCH a,b AGAINST ('"Now sUPPort"' IN BOOLEAN MODE);
+select id from t1 where MATCH(a,b) AGAINST("+support +collections" IN BOOLEAN MODE);
+select id from t1 where MATCH(a,b) AGAINST("+search" IN BOOLEAN MODE);
+select id from t1 where MATCH(a,b) AGAINST("+search +(support vector)" IN BOOLEAN MODE);
+select id from t1 where MATCH(a,b) AGAINST("+search -(support vector)" IN BOOLEAN MODE);
+select id, MATCH(a,b) AGAINST("support collections" IN BOOLEAN MODE) as x from t1;
+select id, MATCH(a,b) AGAINST("collections support" IN BOOLEAN MODE) as x from t1;
+select id from t1 where MATCH a,b AGAINST ("+call* +coll*" IN BOOLEAN MODE);
+select id from t1 where MATCH a,b AGAINST ('"support now"' IN BOOLEAN MODE);
+select id from t1 where MATCH a,b AGAINST ('"Now sUPPort"' IN BOOLEAN MODE);
# query expansion
-select * from t1 where MATCH(a,b) AGAINST ("collections" WITH QUERY EXPANSION);
-select * from t1 where MATCH(a,b) AGAINST ("indexes" WITH QUERY EXPANSION);
-select * from t1 where MATCH(a,b) AGAINST ("indexes collections" WITH QUERY EXPANSION);
+select id from t1 where MATCH(a,b) AGAINST ("collections" WITH QUERY EXPANSION);
+select id from t1 where MATCH(a,b) AGAINST ("indexes" WITH QUERY EXPANSION);
+select id from t1 where MATCH(a,b) AGAINST ("indexes collections" WITH QUERY EXPANSION);
# insert for proximity search
INSERT INTO t1 (a,b) VALUES ('test query expansion','for database ...');
@@ -91,37 +91,37 @@ INSERT INTO t1 (a,b) VALUES
'search, with proximity innodb');
# This should only return the first document
-SELECT * FROM t1
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('"proximity search"@10' IN BOOLEAN MODE);
# This would return no document
-SELECT * FROM t1
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('"proximity search"@9' IN BOOLEAN MODE);
# This give you all three documents
-SELECT * FROM t1
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('"proximity search"@14' IN BOOLEAN MODE);
# Similar boundary testing for the words
-SELECT * FROM t1
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('"test proximity"@5' IN BOOLEAN MODE);
# Test with more word The last document will return, please notice there
# is no ordering requirement for proximity search.
-SELECT * FROM t1
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('"more test proximity"@10' IN BOOLEAN MODE);
-SELECT * FROM t1
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('"more test proximity"@9' IN BOOLEAN MODE);
# The phrase search will not require exact word ordering
-SELECT * FROM t1
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('"more fts proximity"@09' IN BOOLEAN MODE);
@@ -157,52 +157,52 @@ INSERT INTO t1 (a,b) VALUES
# Select word "tutorial" in the table
-SELECT * FROM t1 WHERE MATCH (a,b)
+SELECT id FROM t1 WHERE MATCH (a,b)
AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE);
# Select word "tutorial" in the table
-SELECT * FROM t1 WHERE id = (SELECT MAX(id) FROM t1 WHERE MATCH (a,b)
+SELECT id FROM t1 WHERE id = (SELECT MAX(id) FROM t1 WHERE MATCH (a,b)
AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE));
# Select word "tutorial" in the table
-SELECT * FROM t1 WHERE id = (SELECT MIN(id) FROM t1 WHERE MATCH (a,b)
+SELECT id FROM t1 WHERE id = (SELECT MIN(id) FROM t1 WHERE MATCH (a,b)
AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE));
# Select word "tutorial" in the table
-SELECT * FROM t1 WHERE id = (SELECT MIN(id) FROM t1 WHERE MATCH (a,b)
+SELECT id FROM t1 WHERE id = (SELECT MIN(id) FROM t1 WHERE MATCH (a,b)
AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE)) OR id = 3 ;
# Select word "tutorial" in the table - innodb crash
-SELECT * FROM t1 WHERE CONCAT(t1.a,t1.b) IN (
+SELECT id FROM t1 WHERE CONCAT(t1.a,t1.b) IN (
SELECT CONCAT(a,b) FROM t1 AS t2 WHERE
MATCH (t2.a,t2.b) AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE)
) OR t1.id = 3 ;
# Select word "tutorial" in the table - innodb crash
-SELECT * FROM t1 WHERE CONCAT(t1.a,t1.b) IN (
+SELECT id FROM t1 WHERE CONCAT(t1.a,t1.b) IN (
SELECT CONCAT(a,b) FROM t1 AS t2
WHERE MATCH (t2.a,t2.b) AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE)
AND t2.id != 3) ;
# Select word "tutorial" in the table
-SELECT * FROM t1 WHERE id IN (SELECT MIN(id) FROM t1 WHERE
+SELECT id FROM t1 WHERE id IN (SELECT MIN(id) FROM t1 WHERE
MATCH (a,b) AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE)) OR id = 3 ;
# Select word except "tutorial" in the table
-SELECT * FROM t1 WHERE id NOT IN (SELECT MIN(id) FROM t1
+SELECT id FROM t1 WHERE id NOT IN (SELECT MIN(id) FROM t1
WHERE MATCH (a,b) AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE)) ;
# Select word "tutorial" in the table
-SELECT * FROM t1 WHERE EXISTS (SELECT t2.id FROM t1 AS t2 WHERE
+SELECT id FROM t1 WHERE EXISTS (SELECT t2.id FROM t1 AS t2 WHERE
MATCH (t2.a,t2.b) AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE)
AND t1.id = t2.id) ;
# Select not word like "tutorial" using subquery
-SELECT * FROM t1 WHERE NOT EXISTS (SELECT t2.id FROM t1 AS t2 WHERE
+SELECT id FROM t1 WHERE NOT EXISTS (SELECT t2.id FROM t1 AS t2 WHERE
MATCH (t2.a,t2.b) AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE)
AND t1.id = t2.id) ;
@@ -223,25 +223,25 @@ INSERT INTO t1(a,b) VALUES('MySQL has no
('Full-text search in MySQL', 'implements vector space model');
# Select word "tutorial" in the table
-SELECT * FROM t1 WHERE t1.id = (SELECT MAX(t2.id) FROM t1 AS t2 WHERE
+SELECT id FROM t1 WHERE t1.id = (SELECT MAX(t2.id) FROM t1 AS t2 WHERE
MATCH(t2.a,t2.b) AGAINST("+support +collections" IN BOOLEAN MODE));
-SELECT * FROM t1 WHERE t1.id != (SELECT MIN(t2.id) FROM t1 AS t2 WHERE
+SELECT id FROM t1 WHERE t1.id != (SELECT MIN(t2.id) FROM t1 AS t2 WHERE
MATCH(t2.a,t2.b) AGAINST("+search" IN BOOLEAN MODE));
-SELECT * FROM t1 WHERE t1.id IN (SELECT t2.id FROM t1 AS t2 WHERE
+SELECT id FROM t1 WHERE t1.id IN (SELECT t2.id FROM t1 AS t2 WHERE
MATCH (t2.a,t2.b) AGAINST ("+call* +coll*" IN BOOLEAN MODE));
-SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 AS t2 WHERE
+SELECT id FROM t1 WHERE EXISTS (SELECT id FROM t1 AS t2 WHERE
MATCH t2.a,t2.b AGAINST ('"Now sUPPort"' IN BOOLEAN MODE) AND t2.id=t1.id);
#query expansion search
# result differ for query expansion search even wo subquery
-#SELECT * FROM t1 WHERE t1.id = ( SELECT MAX(t2.id) FROM t1 AS t2 WHERE
+#SELECT id FROM t1 WHERE t1.id = ( SELECT MAX(t2.id) FROM t1 AS t2 WHERE
#MATCH(a,b) AGAINST ("collections" WITH QUERY EXPANSION));
-#SELECT * FROM t1 WHERE t1.id IN ( SELECT t2.id FROM t1 AS t2 WHERE
+#SELECT id FROM t1 WHERE t1.id IN ( SELECT t2.id FROM t1 AS t2 WHERE
#MATCH(a,b) AGAINST ("indexes" WITH QUERY EXPANSION));
-#SELECT * FROM t1 WHERE ( SELECT COUNT(*) FROM t1 AS t2 WHERE
+#SELECT id FROM t1 WHERE ( SELECT COUNT(*) FROM t1 AS t2 WHERE
#MATCH(t2.a,t2.b) AGAINST ("indexes collections" WITH QUERY EXPANSION)) >= 1
#AND t1.id <=3 ;
@@ -262,23 +262,23 @@ INSERT INTO t1 (a,b) VALUES
'search, with proximity innodb');
-SELECT * FROM t1 WHERE t1.id = (SELECT MAX(t2.id) FROM t1 AS t2 WHERE
+SELECT id FROM t1 WHERE t1.id = (SELECT MAX(t2.id) FROM t1 AS t2 WHERE
MATCH(t2.a,t2.b) AGAINST ('"proximity search"@10' IN BOOLEAN MODE));
-SELECT * FROM t1 WHERE t1.id > (SELECT MIN(t2.id) FROM t1 AS t2 WHERE
+SELECT id FROM t1 WHERE t1.id > (SELECT MIN(t2.id) FROM t1 AS t2 WHERE
MATCH(t2.a,t2.b) AGAINST ('"proximity search"@10' IN BOOLEAN MODE));
-SELECT * FROM t1 WHERE t1.id IN (SELECT t2.id FROM t1 AS t2 WHERE
+SELECT id FROM t1 WHERE t1.id IN (SELECT t2.id FROM t1 AS t2 WHERE
MATCH (t2.a,t2.b) AGAINST ('"proximity search"@10' IN BOOLEAN MODE));
-SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 AS t2 WHERE
+SELECT id FROM t1 WHERE EXISTS (SELECT id FROM t1 AS t2 WHERE
MATCH t2.a,t2.b AGAINST ('"proximity search"@10' IN BOOLEAN MODE)
AND t2.id=t1.id);
-SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 AS t2 WHERE
+SELECT id FROM t1 WHERE EXISTS (SELECT id FROM t1 AS t2 WHERE
MATCH t2.a,t2.b AGAINST ('"more test proximity"@10' IN BOOLEAN MODE)
AND t2.id=t1.id);
-SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 AS t2 WHERE
+SELECT id FROM t1 WHERE EXISTS (SELECT id FROM t1 AS t2 WHERE
MATCH t2.a,t2.b AGAINST ('"more test proximity"@5' IN BOOLEAN MODE)
AND t2.id=t1.id);
@@ -286,22 +286,22 @@ AND t2.id=t1.id);
#------------------------------------------------------------------------------
# create table AS SELECT from fts indexed table
#------------------------------------------------------------------------------
-CREATE TABLE t2 ENGINE = InnoDB AS SELECT * FROM t1 WHERE
+CREATE TABLE t2 ENGINE = InnoDB AS SELECT id FROM t1 WHERE
MATCH a,b AGAINST ('support') ;
SHOW CREATE TABLE t2;
-SELECT * FROM t2;
+SELECT id FROM t2;
DROP TABLE t2;
-CREATE TABLE t2 ENGINE = InnoDB AS SELECT * FROM t1 WHERE
+CREATE TABLE t2 ENGINE = InnoDB AS SELECT id FROM t1 WHERE
MATCH a,b AGAINST("+support +collections" IN BOOLEAN MODE);
SHOW CREATE TABLE t2;
-SELECT * FROM t2;
+SELECT id FROM t2;
DROP TABLE t2;
-CREATE TABLE t2 ENGINE = InnoDB AS SELECT * FROM t1 WHERE
+CREATE TABLE t2 ENGINE = InnoDB AS SELECT id FROM t1 WHERE
MATCH a,b AGAINST ('"proximity search"@10' IN BOOLEAN MODE);
SHOW CREATE TABLE t2;
-SELECT * FROM t2;
+SELECT id FROM t2;
DROP TABLE t2;
DROP TABLE t1;
@@ -354,30 +354,30 @@ SELECT COUNT(*) FROM t1;
SELECT COUNT(*) FROM t1 WHERE a IS NULL;
SELECT COUNT(*) FROM t1 WHERE b IS NOT NULL;
-SELECT * FROM t1
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('Tutorial' IN NATURAL LANGUAGE MODE);
-SELECT * FROM t1
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST (NULL IN NATURAL LANGUAGE MODE);
-SELECT * FROM t1
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST (NULL WITH QUERY EXPANSION);
-SELECT * FROM t1
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('null' IN NATURAL LANGUAGE MODE);
# Boolean search
# Select rows contain "MySQL" but not "YourSQL"
-SELECT * FROM t1 WHERE MATCH (a,b)
+SELECT id FROM t1 WHERE MATCH (a,b)
AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
-SELECT * FROM t1 WHERE MATCH (a,b)
+SELECT id FROM t1 WHERE MATCH (a,b)
AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE) AND (a IS NOT NULL OR b IS NOT NULL);
-SELECT * FROM t1 WHERE MATCH (a,b)
+SELECT id FROM t1 WHERE MATCH (a,b)
AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE) AND (a IS NULL AND b IS NOT NULL);
# Select rows contain at least one of the two words
-SELECT * FROM t1 WHERE MATCH (a,b)
+SELECT id FROM t1 WHERE MATCH (a,b)
AGAINST ('DBMS Security' IN BOOLEAN MODE);
# Test query expansion
@@ -386,7 +386,7 @@ WHERE MATCH (a,b)
AGAINST ('database' WITH QUERY EXPANSION);
# proximity
-SELECT * FROM t1
+SELECT id FROM t1
WHERE MATCH (a,b)
AGAINST ('"following database"@10' IN BOOLEAN MODE);
=== modified file 'mysql-test/suite/innodb_fts/t/innodb_fts_misc_1.test'
--- a/mysql-test/suite/innodb_fts/t/innodb_fts_misc_1.test 2011-11-20 21:00:25 +0000
+++ b/mysql-test/suite/innodb_fts/t/innodb_fts_misc_1.test 2011-11-21 17:09:08 +0000
@@ -1,3 +1,4 @@
+--source include/not_windows.inc
#------------------------------------------------------------------------------
# FTS with FK and update casecade
#-------------------------------------------------------------------------------
@@ -56,18 +57,18 @@ INSERT INTO t2 (a2,b2) VALUES
--error 1451
DELETE FROM t1;
-SELECT * FROM t1 WHERE MATCH (a1,b1) AGAINST ('tutorial') ;
-SELECT * FROM t2 WHERE MATCH (a2,b2) AGAINST ('tutorial') ;
+SELECT id1 FROM t1 WHERE MATCH (a1,b1) AGAINST ('tutorial') ;
+SELECT id2 FROM t2 WHERE MATCH (a2,b2) AGAINST ('tutorial') ;
-SELECT * FROM t1 WHERE MATCH (a1,b1) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
-SELECT * FROM t2 WHERE MATCH (a2,b2) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
+SELECT id1 FROM t1 WHERE MATCH (a1,b1) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
+SELECT id2 FROM t2 WHERE MATCH (a2,b2) AGAINST ('tutorial (+mysql -VÐ (a1,b1) AGAINST ('tutorial' WITH QUERY EXPANSION) ;
-SELECT * FROM t2 WHERE MATCH (a2,b2) AGAINST ('tutorial' WITH QUERY EXPANSION) ;
+SELECT id1 FROM t1 WHERE MATCH (a1,b1) AGAINST ('tutorial' WITH QUERY EXPANSION) ;
+SELECT id2 FROM t2 WHERE MATCH (a2,b2) AGAINST ('tutorial' WITH QUERY EXPANSION) ;
-SELECT * FROM t1 WHERE MATCH (a1,b1) AGAINST ('"dbms database"@16' IN BOOLEAN MODE) ;
-SELECT * FROM t2 WHERE MATCH (a2,b2) AGAINST ('"dbms database"@16' IN BOOLEAN MODE) ;
+SELECT id1 FROM t1 WHERE MATCH (a1,b1) AGAINST ('"dbms database"@16' IN BOOLEAN MODE) ;
+SELECT id2 FROM t2 WHERE MATCH (a2,b2) AGAINST ('"dbms database"@16' IN BOOLEAN MODE) ;
set global innodb_optimize_fulltext_only=1;
optimize table t1;
@@ -77,15 +78,15 @@ UPDATE t1 SET a1 = "changing column - on
MATCH (a1,b1) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
# no records expected
-SELECT * FROM t1 WHERE MATCH (a1,b1) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
+SELECT id1 FROM t1 WHERE MATCH (a1,b1) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
# InnoDB:Error child table shows records which is incorrect - UPADTE on Fix
-SELECT * FROM t2 WHERE MATCH (a2,b2) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
+SELECT id2 FROM t2 WHERE MATCH (a2,b2) AGAINST ('tutorial (+mysql -VÐƷWİ)' IN BOOLEAN MODE) ;
# it shows updated record
-SELECT * FROM t1 WHERE MATCH (a1,b1) AGAINST ('+update +cascade' IN BOOLEAN MODE) ;
+SELECT id1 FROM t1 WHERE MATCH (a1,b1) AGAINST ('+update +cascade' IN BOOLEAN MODE) ;
# InnoDB:Error child table does not show the expected record
-SELECT * FROM t2 WHERE MATCH (a2,b2) AGAINST ('+update +cascade' IN BOOLEAN MODE) ;
-SELECT * FROM t2 WHERE a2 LIKE '%UPDATE CASCADE%';
+SELECT id2 FROM t2 WHERE MATCH (a2,b2) AGAINST ('+update +cascade' IN BOOLEAN MODE) ;
+SELECT id2 FROM t2 WHERE a2 LIKE '%UPDATE CASCADE%';
DROP TABLE t2 , t1;
=== modified file 'mysql-test/suite/rpl/r/rpl_parallel_ddl.result'
--- a/mysql-test/suite/rpl/r/rpl_parallel_ddl.result 2011-11-19 08:08:03 +0000
+++ b/mysql-test/suite/rpl/r/rpl_parallel_ddl.result 2011-11-21 19:50:04 +0000
@@ -1005,747 +1005,5 @@ t7.frm
t8.MYD
t8.MYI
t8.frm
-"database d32:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d31:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t4.MYD
-t4.MYI
-t4.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d30:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d29:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d28:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d27:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d26:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d25:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d24:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d23:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d22:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d21:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d20:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d19:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d18:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d17:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d16:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d15:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d14:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d13:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d12:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d11:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d10:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d9:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d8:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d7:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d6:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d5:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d4:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d3:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d2:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
-"database d1:"
-db.opt
-t1.MYD
-t1.MYI
-t1.frm
-t2.MYD
-t2.MYI
-t2.frm
-t3.MYD
-t3.MYI
-t3.frm
-t4.MYD
-t4.MYI
-t4.frm
-t5.MYD
-t5.MYI
-t5.frm
-t6.MYD
-t6.MYI
-t6.frm
-t7.MYD
-t7.MYI
-t7.frm
-t8.MYD
-t8.MYI
-t8.frm
set @@global.slave_parallel_workers= @save.slave_parallel_workers;
include/rpl_end.inc
=== added file 'mysql-test/suite/rpl/r/rpl_parallel_load_data.result'
--- a/mysql-test/suite/rpl/r/rpl_parallel_load_data.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/r/rpl_parallel_load_data.result 2011-11-21 17:46:02 +0000
@@ -0,0 +1,22 @@
+include/master-slave.inc
+[connection master]
+include/stop_slave.inc
+SET @save_slave_parallel_workers= @@slave_parallel_workers;
+SET @@global.slave_parallel_workers=4;
+include/start_slave.inc
+DROP DATABASE IF EXISTS db1;
+DROP DATABASE IF EXISTS db2;
+CREATE DATABASE db1;
+CREATE DATABASE db2;
+CREATE TABLE db1.tb1 (f1 int) ENGINE=MyISAM;
+CREATE TABLE db2.tb2 (f1 int) ENGINE=InnoDB;
+CREATE TRIGGER db1.tr AFTER INSERT ON tb1 FOR EACH ROW INSERT INTO db2.tb2
+(f1) VALUES (new.f1);
+LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/load_bug12982188.txt' INTO TABLE db1.tb1;
+SELECT COUNT(*) FROM db2.tb2;
+COUNT(*)
+10
+DROP DATABASE db1;
+DROP DATABASE db2;
+include/stop_slave.inc
+SET @@global.slave_parallel_workers= @save_slave_parallel_workers;
=== modified file 'mysql-test/suite/rpl/t/rpl_parallel_ddl.test'
--- a/mysql-test/suite/rpl/t/rpl_parallel_ddl.test 2011-10-13 12:12:19 +0000
+++ b/mysql-test/suite/rpl/t/rpl_parallel_ddl.test 2011-11-21 19:50:04 +0000
@@ -252,25 +252,74 @@ while ($n)
connection master;
+let $n= $dbs;
--disable_query_log
-let $n= $dbs;
+# Hunting after bug#13033076: to drop db:s on master concurrently as
+# well through 4 connections.
+
+--connect(con1, localhost, root,,)
+--connect(con2, localhost, root,,)
+--connect(con3, localhost, root,,)
+--connect(con4, localhost, root,,)
+
+let $reap_not_done= 0;
+
while ($n)
{
- # DEBUG (to remove) bug#13033076
- --connection slave
- --echo "database d$n:"
- --list_files $MYSQLD_DATADIR/d$n
-
- --connection master
- eval drop database d$n;
- sync_slave_with_master;
+ --connection con1
+ if ($reap_not_done)
+ {
+ --reap
+ }
+ --send_eval drop database d$n;
+ dec $n;
+
+ --connection con2
+ if ($reap_not_done)
+ {
+ --reap
+ }
+ --send_eval drop database d$n;
dec $n;
+
+ --connection con3
+ if ($reap_not_done)
+ {
+ --reap
+ }
+ --send_eval drop database d$n;
+ dec $n;
+
+ --connection con4
+ if ($reap_not_done)
+ {
+ --reap
+ }
+ --send_eval drop database d$n;
+ dec $n;
+ let $reap_not_done= 1;
}
--enable_query_log
---connection master
+ --connection con1
+ --reap
+ --disconnect con1
+
+ --connection con2
+ --reap
+ --disconnect con2
+
+ --connection con3
+ --reap
+ --disconnect con3
+
+ --connection con4
+ --reap
+ --disconnect con4
+
+connection master;
sync_slave_with_master;
set @@global.slave_parallel_workers= @save.slave_parallel_workers;
=== added file 'mysql-test/suite/rpl/t/rpl_parallel_load_data-slave.opt'
--- a/mysql-test/suite/rpl/t/rpl_parallel_load_data-slave.opt 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/t/rpl_parallel_load_data-slave.opt 2011-11-21 17:46:02 +0000
@@ -0,0 +1 @@
+--slave-transaction-retries=0
=== added file 'mysql-test/suite/rpl/t/rpl_parallel_load_data.test'
--- a/mysql-test/suite/rpl/t/rpl_parallel_load_data.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/t/rpl_parallel_load_data.test 2011-11-21 17:46:02 +0000
@@ -0,0 +1,53 @@
+#
+# Bug#12982188 MTS: SBR ABORTS WITH ERROR 1742 ON LOAD DATA WITH TRIGGER MYISAM TO INNODB
+#
+
+--source include/master-slave.inc
+--source include/have_binlog_format_statement.inc
+
+let $max_workers= 4;
+
+--write_file $MYSQLTEST_VARDIR/load_bug12982188.txt
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+EOF
+
+--connection slave
+--source include/stop_slave.inc
+SET @save_slave_parallel_workers= @@slave_parallel_workers;
+eval SET @@global.slave_parallel_workers=$max_workers;
+--source include/start_slave.inc
+
+--connection master
+--disable_warnings
+DROP DATABASE IF EXISTS db1;
+DROP DATABASE IF EXISTS db2;
+--enable_warnings
+CREATE DATABASE db1;
+CREATE DATABASE db2;
+CREATE TABLE db1.tb1 (f1 int) ENGINE=MyISAM;
+CREATE TABLE db2.tb2 (f1 int) ENGINE=InnoDB;
+CREATE TRIGGER db1.tr AFTER INSERT ON tb1 FOR EACH ROW INSERT INTO db2.tb2
+(f1) VALUES (new.f1);
+--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
+eval LOAD DATA LOCAL INFILE '$MYSQLTEST_VARDIR/load_bug12982188.txt' INTO TABLE db1.tb1;
+--sync_slave_with_master
+SELECT COUNT(*) FROM db2.tb2;
+
+# cleanup
+--connection master
+DROP DATABASE db1;
+DROP DATABASE db2;
+--remove_file $MYSQLTEST_VARDIR/load_bug12982188.txt
+
+--sync_slave_with_master
+--source include/stop_slave.inc
+SET @@global.slave_parallel_workers= @save_slave_parallel_workers;
=== modified file 'mysql-test/t/create-big.test'
--- a/mysql-test/t/create-big.test 2010-05-24 13:54:08 +0000
+++ b/mysql-test/t/create-big.test 2011-11-21 11:28:32 +0000
@@ -7,11 +7,13 @@
#
# This test takes rather long time so let us run it only in --big-test mode
--source include/big_test.inc
-# We are using some debug-only features in this test
---source include/have_debug.inc
+# We need the Debug Sync Facility.
+--source include/have_debug_sync.inc
# Some of tests below also use binlog to check that statements are
# executed and logged in correct order
--source include/have_binlog_format_mixed_or_statement.inc
+# Save the initial number of concurrent sessions.
+--source include/count_sessions.inc
# Create auxilliary connections
connect (addconroot1, localhost, root,,);
@@ -22,7 +24,7 @@ connection default;
--disable_warnings
drop table if exists t1,t2,t3,t4,t5;
--enable_warnings
-
+set debug_sync='RESET';
#
# Tests for concurrency problems in CREATE TABLE ... SELECT
@@ -34,244 +36,378 @@ drop table if exists t1,t2,t3,t4,t5;
# What happens in situation when other statement messes with
# table to be created before it is created ?
# Concurrent CREATE TABLE
-set session debug="+d,sleep_create_select_before_create";
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
--send create table t1 select 1 as i;
connection addconroot1;
---sleep 2
---error ER_TABLE_EXISTS_ERROR
-create table t1 (j char(5));
+set debug_sync='now WAIT_FOR parked';
+--send create table t1 (j char(5));
+connection addconroot2;
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "create table t1 (j char(5))";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
+connection addconroot1;
+--error ER_TABLE_EXISTS_ERROR
+--reap
+connection default;
show create table t1;
drop table t1;
+
# Concurrent CREATE TABLE ... SELECT
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
--send create table t1 select 1 as i;
connection addconroot1;
---sleep 2
---error ER_TABLE_EXISTS_ERROR
-create table t1 select "Test" as j;
+set debug_sync='now WAIT_FOR parked';
+--send create table t1 select 'Test' as j;
+connection addconroot2;
+# Wait until the above CREATE TABLE t1 is blocked due to CREATE
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "create table t1 select 'Test' as j";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
+connection addconroot1;
+--error ER_TABLE_EXISTS_ERROR
+--reap
+connection default;
show create table t1;
drop table t1;
+
# Concurrent CREATE TABLE LIKE
create table t3 (j char(5));
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
--send create table t1 select 1 as i;
connection addconroot1;
---sleep 2
---error ER_TABLE_EXISTS_ERROR
-create table t1 like t3;
+set debug_sync='now WAIT_FOR parked';
+--send create table t1 like t3;
+connection addconroot2;
+# Wait until the above CREATE TABLE t1 is blocked due to CREATE
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "create table t1 like t3";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
+connection addconroot1;
+--error ER_TABLE_EXISTS_ERROR
+--reap
+connection default;
show create table t1;
drop table t1;
+
# Concurrent RENAME TABLE
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
--send create table t1 select 1 as i;
connection addconroot1;
---sleep 2
---error ER_TABLE_EXISTS_ERROR
-rename table t3 to t1;
+set debug_sync='now WAIT_FOR parked';
+--send rename table t3 to t1;
+connection addconroot2;
+# Wait until the above RENAME TABLE is blocked due to CREATE
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "rename table t3 to t1";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
+connection addconroot1;
+--error ER_TABLE_EXISTS_ERROR
+--reap
+connection default;
show create table t1;
drop table t1;
+
# Concurrent ALTER TABLE RENAME
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
--send create table t1 select 1 as i;
connection addconroot1;
---sleep 2
+set debug_sync='now WAIT_FOR parked';
--error ER_TABLE_EXISTS_ERROR
alter table t3 rename to t1;
+set debug_sync='now SIGNAL go';
connection default;
--reap
+connection default;
show create table t1;
drop table t1;
+
# Concurrent ALTER TABLE RENAME which also adds column
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
--send create table t1 select 1 as i;
connection addconroot1;
---sleep 2
+set debug_sync='now WAIT_FOR parked';
--error ER_TABLE_EXISTS_ERROR
alter table t3 rename to t1, add k int;
+set debug_sync='now SIGNAL go';
connection default;
--reap
show create table t1;
-drop table t1, t3;
+drop table t1,t3;
+
# What happens if other statement sneaks in after the table
# creation but before its opening ?
-set session debug="-d,sleep_create_select_before_create:+d,sleep_create_select_before_open";
+set debug_sync='create_table_select_before_open SIGNAL parked WAIT_FOR go';
+connection default;
+
# Concurrent DROP TABLE
+set debug_sync='create_table_select_before_open SIGNAL parked WAIT_FOR go';
--send create table t1 select 1 as i;
connection addconroot1;
---sleep 2
-drop table t1;
+set debug_sync='now WAIT_FOR parked';
+--send drop table t1;
+connection addconroot2;
+# Wait until the above DROP TABLE is blocked due to CREATE
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "drop table t1";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
+connection addconroot1;
+--reap
+connection default;
+
# Concurrent RENAME TABLE
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
--send create table t1 select 1 as i;
connection addconroot1;
---sleep 2
-rename table t1 to t2;
+set debug_sync='now WAIT_FOR parked';
+--send rename table t1 to t2;
+connection addconroot2;
+# Wait until the above RENAME TABLE is blocked due to CREATE
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "rename table t1 to t2";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
+connection addconroot1;
+--reap
+connection default;
drop table t2;
+
# Concurrent SELECT
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
--send create table t1 select 1 as i;
connection addconroot1;
---sleep 2
-select * from t1;
+set debug_sync='now WAIT_FOR parked';
+--send select * from t1;
+connection addconroot2;
+# Wait until the above SELECT is blocked due to CREATE
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "select * from t1";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
+connection addconroot1;
+--reap
+connection default;
drop table t1;
+
# Concurrent INSERT
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
--send create table t1 select 1 as i;
connection addconroot1;
---sleep 2
-insert into t1 values (2);
+set debug_sync='now WAIT_FOR parked';
+--send insert into t1 values (2);
+connection addconroot2;
+# Wait until the above INSERT is blocked due to CREATE
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "insert into t1 values (2)";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
+connection addconroot1;
+--reap
+connection default;
select * from t1;
drop table t1;
+
# Concurrent CREATE TRIGGER
set @a:=0;
+set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
--send create table t1 select 1 as i;
connection addconroot1;
---sleep 2
-create trigger t1_bi before insert on t1 for each row set @a:=1;
+set debug_sync='now WAIT_FOR parked';
+--send create trigger t1_bi before insert on t1 for each row set @a:=1;
+connection addconroot2;
+# Wait until the above CREATE TRIGGER is blocked due to CREATE TABLE
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "create trigger t1_bi before insert on t1 for each row set @a:=1";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
+connection addconroot1;
+--reap
+connection default;
select @a;
drop table t1;
+
# Okay, now the same tests for the potential gap between open and lock
-set session debug="-d,sleep_create_select_before_open:+d,sleep_create_select_before_lock";
+set debug_sync='create_table_select_before_lock SIGNAL parked WAIT_FOR go';
+
# Concurrent DROP TABLE
--send create table t1 select 1 as i;
connection addconroot1;
---sleep 2
-drop table t1;
+set debug_sync='now WAIT_FOR parked';
+--send drop table t1;
+connection addconroot2;
+# Wait until the above DROP TABLE is blocked due to CREATE TABLE
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "drop table t1";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
+connection addconroot1;
+--reap
+connection default;
+
# Concurrent RENAME TABLE
+set debug_sync='create_table_select_before_lock SIGNAL parked WAIT_FOR go';
--send create table t1 select 1 as i;
connection addconroot1;
---sleep 2
-rename table t1 to t2;
+set debug_sync='now WAIT_FOR parked';
+--send rename table t1 to t2;
+connection addconroot2;
+# Wait until the above RENAME TABLE is blocked due to CREATE TABLE
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "rename table t1 to t2";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
+connection addconroot1;
+--reap
+connection default;
drop table t2;
+
# Concurrent SELECT
+set debug_sync='create_table_select_before_lock SIGNAL parked WAIT_FOR go';
--send create table t1 select 1 as i;
connection addconroot1;
---sleep 2
-select * from t1;
+set debug_sync='now WAIT_FOR parked';
+--send select * from t1;
+connection addconroot2;
+# Wait until the above SELECT is blocked due to CREATE TABLE
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "select * from t1";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
+connection addconroot1;
+--reap
+connection default;
drop table t1;
+
# Concurrent INSERT
+set debug_sync='create_table_select_before_lock SIGNAL parked WAIT_FOR go';
--send create table t1 select 1 as i;
connection addconroot1;
---sleep 2
-insert into t1 values (2);
+set debug_sync='now WAIT_FOR parked';
+--send insert into t1 values (2);
+connection addconroot2;
+# Wait until the above INSERT INTO t1 is blocked due to CREATE TABLE
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "insert into t1 values (2)";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
+connection addconroot1;
+--reap
+connection default;
select * from t1;
drop table t1;
+
# Concurrent CREATE TRIGGER
set @a:=0;
+set debug_sync='create_table_select_before_lock SIGNAL parked WAIT_FOR go';
--send create table t1 select 1 as i;
connection addconroot1;
---sleep 2
-create trigger t1_bi before insert on t1 for each row set @a:=1;
+set debug_sync='now WAIT_FOR parked';
+--send create trigger t1_bi before insert on t1 for each row set @a:=1;
+connection addconroot2;
+# Wait until the above CREATE TRIGGER is blocked due to CREATE TABLE
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "create trigger t1_bi before insert on t1 for each row set @a:=1";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
+connection addconroot1;
+--reap
+connection default;
select @a;
drop table t1;
-# Some tests for case with existing table
-set session debug="-d,sleep_create_select_before_lock:+d,sleep_create_select_before_check_if_exists";
-create table t1 (i int);
+
# Concurrent DROP TABLE
+set debug_sync='create_table_select_before_check_if_exists SIGNAL parked WAIT_FOR go';
--send create table if not exists t1 select 1 as i;
connection addconroot1;
---sleep 2
-drop table t1;
+set debug_sync='now WAIT_FOR parked';
+--send drop table t1;
+connection addconroot2;
+# Wait until the above DROP TABLE is blocked due to CREATE TABLE
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "drop table t1";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
-# Concurrent CREATE TRIGGER
+connection addconroot1;
+--reap
+connection default;
+
+# Concurrent CREATE TRIGGER
create table t1 (i int);
set @a:=0;
+set debug_sync='create_table_select_before_check_if_exists SIGNAL parked WAIT_FOR go';
--send create table if not exists t1 select 1 as i;
connection addconroot1;
---sleep 2
create trigger t1_bi before insert on t1 for each row set @a:=1;
connection default;
--reap
+connection default;
select @a;
select * from t1;
drop table t1;
-set session debug="-d,sleep_create_select_before_check_if_exists";
-
-
-# Test for some details of CREATE TABLE ... SELECT implementation.
-#
-# We check that create placeholder is handled properly if we have
-# to reopen tables in open_tables().
-# This test heavily relies on current implementation of name-locking/
-# table cache so it may stop working if it changes. OTOH it such problem
-# will serve as warning that such changes should not be done lightly.
-create table t2 (a int);
-create table t4 (b int);
-connection addconroot2;
-lock table t4 write;
-select 1;
-connection addconroot1;
-# Create placeholder/name-lock for t3
---send create table t3 as select * from t4;
---sleep 2
-connection default;
-# This statement creates placeholder for t1, then opens t2,
-# then meets name-lock for t3 and then reopens all tables
---send create table t1 select * from t2, t3;
---sleep 2
-connection addconroot2;
-unlock tables;
-connection addconroot1;
---reap
-connection default;
---reap
-select * from t1;
-show create table t1;
-drop table t1, t3;
-# Now similar test which proves that we really temporarily
-# remove placeholder when we reopen tables.
-connection addconroot2;
-lock table t4 read;
-select 1;
-connection addconroot1;
-# Create name-lock for t3
---send rename table t4 to t3;
---sleep 2
-connection default;
-# This statement creates placeholder for t1, then opens t2,
-# then meets name-lock for t3 and then reopens all tables
---send create table if not exists t1 select 1 as i from t2, t3;
---sleep 2
-connection addconroot3;
-# We should be able to take name-lock on table t1 as we should not have
-# open placeholder for it at this point (otherwise it is possible to
-# come-up with situation which will lead to deadlock, e.g. think of
-# concurrent CREATE TABLE t1 SELECT * FROM t2 and RENAME TABLE t2 TO t1)
-create table t5 (j int);
-# This statement takes name-lock on t1 and therefore proves
-# that there is no active open placeholder for it.
-rename table t5 to t1;
-connection addconroot2;
-unlock tables;
-connection addconroot1;
---reap
-connection default;
---reap
-select * from t1;
-show create table t1;
-drop table t1, t2, t3;
-
# Tests for possible concurrency issues with CREATE TABLE ... LIKE
#
@@ -286,103 +422,101 @@ drop table t1, t2, t3;
--disable_warnings
drop table if exists t1,t2;
--enable_warnings
+set debug_sync='RESET';
# What happens if some statements sneak in right after we have
-# opened source table ?
+# acquired locks and opened source table ?
create table t1 (i int);
-set session debug="+d,sleep_create_like_before_check_if_exists";
+set debug_sync='create_table_like_after_open SIGNAL parked WAIT_FOR go';
# Reset binlog to have clear start
reset master;
--send create table t2 like t1;
connection addconroot1;
---sleep 2
+set debug_sync='now WAIT_FOR parked';
# DML on source table should be allowed to run concurrently
insert into t1 values (1);
# And DDL should wait
-drop table t1;
+--send drop table t1;
+connection addconroot2;
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "drop table t1";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
+connection addconroot1;
+--reap
+connection default;
show create table t2;
drop table t2;
# Let us check that statements were executed/binlogged in correct order
source include/show_binlog_events.inc;
-# Now let us check the gap between check for target table
-# existance and copying of .frm file.
+# Now check the gap between table creation and binlogging
create table t1 (i int);
-set session debug="-d,sleep_create_like_before_check_if_exists:+d,sleep_create_like_before_copy";
-# It should be impossible to create target table concurrently
---send create table t2 like t1;
-connection addconroot1;
---sleep 2
-create table if not exists t2 (j int);
-connection default;
---reap
-show create table t2;
-drop table t2;
-# And concurrent DDL on the source table should be still disallowed
+set debug_sync='create_table_like_before_binlog SIGNAL parked WAIT_FOR go';
reset master;
--send create table t2 like t1;
connection addconroot1;
---sleep 2
-drop table t1;
+set debug_sync='now WAIT_FOR parked';
+--send insert into t2 values (1);
+connection addconroot2;
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "insert into t2 values (1)";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
-drop table t2;
-source include/show_binlog_events.inc;
-# And now he gap between copying of .frm file and ha_create_table() call.
-create table t1 (i int);
-set session debug="-d,sleep_create_like_before_copy:+d,sleep_create_like_before_ha_create";
-# Both DML and DDL on target table should wait till operation completes
-reset master;
---send create table t2 like t1;
connection addconroot1;
---sleep 2
-insert into t2 values (1);
-connection default;
--reap
+connection default;
drop table t2;
+set debug_sync='create_table_like_before_binlog SIGNAL parked WAIT_FOR go';
--send create table t2 like t1;
connection addconroot1;
---sleep 2
-drop table t2;
+set debug_sync='now WAIT_FOR parked';
+--send drop table t2;
+connection addconroot2;
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "drop table t2";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
-# Concurrent DDL on the source table still waits
---send create table t2 like t1;
connection addconroot1;
---sleep 2
-drop table t1;
-connection default;
--reap
-drop table t2;
-source include/show_binlog_events.inc;
-
-# Finally we check the gap between ha_create_table() and binlogging
-create table t1 (i int);
-set session debug="-d,sleep_create_like_before_ha_create:+d,sleep_create_like_before_binlogging";
-reset master;
---send create table t2 like t1;
-connection addconroot1;
---sleep 2
-insert into t2 values (1);
connection default;
---reap
-drop table t2;
+set debug_sync='create_table_like_before_binlog SIGNAL parked WAIT_FOR go';
--send create table t2 like t1;
connection addconroot1;
---sleep 2
-drop table t2;
+set debug_sync='now WAIT_FOR parked';
+--send drop table t1;
+connection addconroot2;
+let $wait_condition=
+ select count(*) = 1 from information_schema.processlist
+ where state = "Waiting for table metadata lock" and
+ info = "drop table t1";
+--source include/wait_condition.inc
+set debug_sync='now SIGNAL go';
connection default;
--reap
---send create table t2 like t1;
connection addconroot1;
---sleep 2
-drop table t1;
-connection default;
--reap
+connection default;
drop table t2;
-source include/show_binlog_events.inc;
+disconnect addconroot1;
+disconnect addconroot2;
+disconnect addconroot3;
-set session debug="-d,sleep_create_like_before_binlogging";
+set debug_sync='RESET';
+source include/show_binlog_events.inc;
+# Check that all connections opened by test cases in this file are really
+# gone so execution of other tests won't be affected by their presence.
+--source include/wait_until_count_sessions.inc
=== modified file 'mysql-test/t/disabled.def'
--- a/mysql-test/t/disabled.def 2011-11-10 11:59:23 +0000
+++ b/mysql-test/t/disabled.def 2011-11-21 11:37:49 +0000
@@ -12,7 +12,6 @@
lowercase_table3 : Bug#11762269 2010-06-30 alik main.lowercase_table3 on Mac OSX
read_many_rows_innodb : Bug#11748886 2010-11-15 mattiasj report already exists
sum_distinct-big : Bug#11764126 2010-11-15 mattiasj was not tested
-create-big : Bug#11748731 2010-11-15 mattiasj was not tested
archive-big : Bug#11817185 2011-03-10 Anitha Disabled since this leads to timeout on Solaris Sparc
log_tables-big : Bug#11756699 2010-11-15 mattiasj report already exists
mysql_embedded : Bug#12561297 2011-11-08 Mayank Innodb behavior causes this test case to fail.
=== modified file 'sql/log_event.cc'
--- a/sql/log_event.cc 2011-11-15 14:40:04 +0000
+++ b/sql/log_event.cc 2011-11-21 17:46:02 +0000
@@ -1620,7 +1620,7 @@ void Log_event::print_header(IO_CACHE* f
my_off_t i;
/* Header len * 4 >= header len * (2 chars + space + extra space) */
- char *h, hex_string[LOG_EVENT_MINIMAL_HEADER_LEN*4]= {0};
+ char *h, hex_string[49]= {0};
char *c, char_string[16+1]= {0};
/* Pretty-print event common header if header is exactly 19 bytes */
@@ -1649,7 +1649,7 @@ void Log_event::print_header(IO_CACHE* f
i < size;
i++, ptr++)
{
- my_snprintf(h, 4, "%02x ", *ptr);
+ my_snprintf(h, 4, (i % 16 <= 7) ? "%02x " : " %02x", *ptr);
h += 3;
*c++= my_isalnum(&my_charset_bin, *ptr) ? *ptr : '.';
@@ -1675,13 +1675,15 @@ void Log_event::print_header(IO_CACHE* f
c= char_string;
h= hex_string;
}
- else if (i % 8 == 7) *h++ = ' ';
}
*c= '\0';
-
+ DBUG_ASSERT(hex_string[48] == 0);
+
if (hex_string[0])
{
char emit_buf[256];
+ // Right-pad hex_string with spaces, up to 48 characters.
+ memset(h, ' ', (sizeof(hex_string) -1) - (h - hex_string));
size_t const bytes_written=
my_snprintf(emit_buf, sizeof(emit_buf),
"# %8.8lx %-48.48s |%s|\n",
@@ -2365,12 +2367,48 @@ Log_event::continue_group(Relay_log_info
return Log_event::do_shall_skip(rli);
}
-
-bool Log_event::contains_partition_info()
+/**
+ @param end_group_sets_max_dbs when true the group terminal event
+ can carry partition info, see a note below.
+ @return true in cases the current event
+ carries partition data,
+ false otherwise
+
+ @note Some events combination may force to adjust partition info.
+ In particular BEGIN, BEGIN_LOAD_QUERY_EVENT, COMMIT
+ where none of the events holds partitioning data
+ causes the sequential applying of the group through
+ assigning OVER_MAX_DBS_IN_EVENT_MTS to mts_accessed_dbs
+ of COMMIT query event.
+*/
+bool Log_event::contains_partition_info(bool end_group_sets_max_dbs)
{
- return (get_type_code() == TABLE_MAP_EVENT) ||
- (get_type_code() == QUERY_EVENT && !ends_group() && !starts_group()) ||
- (get_type_code() == EXECUTE_LOAD_QUERY_EVENT);
+ bool res;
+
+ switch (get_type_code()) {
+ case TABLE_MAP_EVENT:
+ case EXECUTE_LOAD_QUERY_EVENT:
+ res= true;
+
+ break;
+
+ case QUERY_EVENT:
+ if (ends_group() && end_group_sets_max_dbs)
+ {
+ res= true;
+ static_cast<Query_log_event*>(this)->mts_accessed_dbs=
+ OVER_MAX_DBS_IN_EVENT_MTS;
+ }
+ else
+ res= (!ends_group() && !starts_group()) ? true : false;
+
+ break;
+
+ default:
+ res= false;
+ }
+
+ return res;
}
/**
@@ -2457,27 +2495,44 @@ Slave_worker *Log_event::get_slave_worke
{
Log_event *ptr_curr_ev= this;
// B-event is appended to the Deferred Array associated with GCAP
- insert_dynamic(&rli->curr_group_da,
- (uchar*) &ptr_curr_ev);
+ insert_dynamic(&rli->curr_group_da, (uchar*) &ptr_curr_ev);
DBUG_ASSERT(rli->curr_group_da.elements == 1);
// mark the current group as started with explicit B-event
rli->curr_group_seen_begin= TRUE;
-
+ // pessimistic preparation of no db:s will be found in events
+ rli->mts_end_group_sets_max_dbs= true;
return ret_worker;
}
}
// mini-group representative
- if (contains_partition_info())
+ if (contains_partition_info(rli->mts_end_group_sets_max_dbs))
{
int i= 0;
num_dbs= mts_number_dbs();
List_iterator<char> it(*get_mts_dbs(&rli->mts_coor_mem_root));
it++;
+ /*
+ Bug 12982188 - MTS: SBR ABORTS WITH ERROR 1742 ON LOAD DATA
+ Logging on master can create a group with no events holding
+ the partition info.
+ The following assert proves there's the only reason
+ for such group.
+ */
+ DBUG_ASSERT(!ends_group() ||
+ (rli->mts_end_group_sets_max_dbs &&
+ rli->curr_group_da.elements == 2 &&
+ ((*(Log_event **)
+ dynamic_array_ptr(&rli->curr_group_da,
+ rli->curr_group_da.elements - 1))->
+ get_type_code() == BEGIN_LOAD_QUERY_EVENT)));
+
+ // partioning info is found which drops the flag
+ rli->mts_end_group_sets_max_dbs= false;
ret_worker= rli->last_assigned_worker;
if (num_dbs == OVER_MAX_DBS_IN_EVENT_MTS)
{
@@ -2780,7 +2835,16 @@ int Log_event::apply_event(Relay_log_inf
DBUG_ASSERT(actual_exec_mode == EVENT_EXEC_PARALLEL);
DBUG_ASSERT(!(rli->curr_group_seen_begin && ends_group()) ||
- rli->last_assigned_worker);
+ rli->last_assigned_worker ||
+ /*
+ Begin_load_query can be logged w/o db info and within
+ Begin/Commit. That's a pattern forcing sequential
+ applying of LOAD-DATA.
+ */
+ (*(Log_event **)
+ dynamic_array_ptr(&rli->curr_group_da,
+ rli->curr_group_da.elements - 1))->
+ get_type_code() == BEGIN_LOAD_QUERY_EVENT);
worker= NULL;
rli->mts_group_status= Relay_log_info::MTS_IN_GROUP;
@@ -3985,10 +4049,10 @@ void Query_log_event::print(FILE* file,
*/
void Query_log_event::attach_temp_tables_worker(THD *thd)
{
- if (!is_mts_worker(thd) || !contains_partition_info())
+ if (!is_mts_worker(thd) || (ends_group() || starts_group()))
return;
- // in over max-db:s case just one special parttion is locked
+ // in over max-db:s case just one special partition is locked
int parts= ((mts_accessed_dbs == OVER_MAX_DBS_IN_EVENT_MTS) ?
1 : mts_accessed_dbs);
=== modified file 'sql/log_event.h'
--- a/sql/log_event.h 2011-11-15 13:04:11 +0000
+++ b/sql/log_event.h 2011-11-21 17:46:02 +0000
@@ -1405,7 +1405,7 @@ public:
/**
@return TRUE if events carries partitioning data (database names).
*/
- bool contains_partition_info();
+ bool contains_partition_info(bool);
/*
@return the number of updated by the event databases.
=== modified file 'sql/rpl_rli.h'
--- a/sql/rpl_rli.h 2011-11-15 13:04:11 +0000
+++ b/sql/rpl_rli.h 2011-11-21 17:46:02 +0000
@@ -448,6 +448,7 @@ public:
DYNAMIC_ARRAY curr_group_da; // deferred array to hold partition-info-free events
bool curr_group_seen_begin; // current group started with B-event or not
bool curr_group_isolated; // current group requires execution in isolation
+ bool mts_end_group_sets_max_dbs; // flag indicates if partitioning info is discovered
volatile ulong mts_wq_underrun_w_id; // Id of a Worker whose queue is getting empty
/*
Ongoing excessive overrun counter to correspond to number of events that
=== modified file 'sql/rpl_rli_pdb.cc'
--- a/sql/rpl_rli_pdb.cc 2011-11-10 06:53:27 +0000
+++ b/sql/rpl_rli_pdb.cc 2011-11-21 17:46:02 +0000
@@ -129,6 +129,7 @@ int Slave_worker::init_worker(Relay_log_
workers= c_rli->workers; // shallow copying is sufficient
wq_size_waits_cnt= groups_done= events_done= curr_jobs= 0;
usage_partition= 0;
+ end_group_sets_max_dbs= false;
last_group_done_index= c_rli->gaq->size; // out of range
jobs.avail= 0;
@@ -1686,11 +1687,13 @@ int slave_worker_exec_job(Slave_worker *
if (ev->starts_group())
{
+ worker->end_group_sets_max_dbs= true;
worker->curr_group_seen_begin= TRUE; // The current group is started with B-event
}
else
{
- if ((part_event= ev->contains_partition_info()))
+ if ((part_event=
+ ev->contains_partition_info(worker->end_group_sets_max_dbs)))
{
uint num_dbs= ev->mts_number_dbs();
DYNAMIC_ARRAY *ep= &worker->curr_group_exec_parts;
@@ -1720,6 +1723,7 @@ int slave_worker_exec_job(Slave_worker *
insert_dynamic(ep, (uchar*) &ev->mts_assigned_partitions[k]);
}
}
+ worker->end_group_sets_max_dbs= false;
}
}
worker->set_future_event_relay_log_pos(ev->future_event_relay_log_pos);
=== modified file 'sql/rpl_rli_pdb.h'
--- a/sql/rpl_rli_pdb.h 2011-08-19 13:04:28 +0000
+++ b/sql/rpl_rli_pdb.h 2011-11-21 17:46:02 +0000
@@ -312,6 +312,8 @@ public:
volatile int curr_jobs; // number of active assignments
// number of partitions allocated to the worker at point in time
long usage_partition;
+ // symmetric to rli->mts_end_group_sets_max_dbs
+ bool end_group_sets_max_dbs;
volatile bool relay_log_change_notified; // Coord sets and resets, W can read
volatile bool checkpoint_notified; // Coord sets and resets, W can read
=== modified file 'sql/set_var.cc'
--- a/sql/set_var.cc 2011-11-09 01:38:37 +0000
+++ b/sql/set_var.cc 2011-11-21 20:15:58 +0000
@@ -530,6 +530,11 @@ sys_var *intern_find_sys_var(const char
*/
var= (sys_var*) my_hash_search(&system_variable_hash,
(uchar*) str, length ? length : strlen(str));
+
+ /* Don't show non-visible variables. */
+ if (var->not_visible())
+ return NULL;
+
return var;
}
=== modified file 'sql/sql_insert.cc'
--- a/sql/sql_insert.cc 2011-11-10 11:28:09 +0000
+++ b/sql/sql_insert.cc 2011-11-21 11:37:49 +0000
@@ -3766,7 +3766,7 @@ static TABLE *create_table_from_items(TH
alter_info->create_list.push_back(cr_field);
}
- DBUG_EXECUTE_IF("sleep_create_select_before_create", my_sleep(6000000););
+ DEBUG_SYNC(thd,"create_table_select_before_create");
/*
Create and lock table.
@@ -3790,7 +3790,7 @@ static TABLE *create_table_from_items(TH
create_info, alter_info, 0,
select_field_count, NULL))
{
- DBUG_EXECUTE_IF("sleep_create_select_before_open", my_sleep(6000000););
+ DEBUG_SYNC(thd,"create_table_select_before_open");
if (!(create_info->options & HA_LEX_CREATE_TMP_TABLE))
{
@@ -3829,7 +3829,7 @@ static TABLE *create_table_from_items(TH
DBUG_RETURN(0);
}
- DBUG_EXECUTE_IF("sleep_create_select_before_lock", my_sleep(6000000););
+ DEBUG_SYNC(thd,"create_table_select_before_lock");
table->reginfo.lock_type=TL_WRITE;
hooks->prelock(&table, 1); // Call prelock hooks
@@ -3924,7 +3924,7 @@ select_create::prepare(List<Item> &value
unit= u;
DBUG_ASSERT(create_table->table == NULL);
- DBUG_EXECUTE_IF("sleep_create_select_before_check_if_exists", my_sleep(6000000););
+ DEBUG_SYNC(thd,"create_table_select_before_check_if_exists");
if (!(table= create_table_from_items(thd, create_info, create_table,
alter_info, &values,
=== modified file 'sql/sql_table.cc'
--- a/sql/sql_table.cc 2011-11-11 09:25:18 +0000
+++ b/sql/sql_table.cc 2011-11-21 17:09:08 +0000
@@ -4762,6 +4762,8 @@ bool mysql_create_like_table(THD* thd, T
goto err;
src_table->table->use_all_columns();
+ DEBUG_SYNC(thd, "create_table_like_after_open");
+
/* Fill HA_CREATE_INFO and Alter_info with description of source table. */
memset(&local_create_info, 0, sizeof(local_create_info));
local_create_info.db_type= src_table->table->s->db_type();
@@ -4810,6 +4812,9 @@ bool mysql_create_like_table(THD* thd, T
thd->mdl_context.is_lock_owner(MDL_key::TABLE, table->db,
table->table_name,
MDL_EXCLUSIVE));
+
+ DEBUG_SYNC(thd, "create_table_like_before_binlog");
+
/*
CREATE TEMPORARY TABLE doesn't terminate a transaction. Calling
stmt.mark_created_temp_table() guarantees the transaction can be binlogged
@@ -6567,6 +6572,15 @@ bool mysql_alter_table(THD *thd,char *ne
needed_inplace_flags|= HA_INPLACE_ADD_UNIQUE_INDEX_NO_READ_WRITE;
}
}
+ else if (key->flags & HA_FULLTEXT)
+ {
+ /*
+ Fulltext keys should be treated as primary keys as InnoDB might
+ need to rebuild the primary index.
+ */
+ needed_inplace_with_read_flags|= HA_INPLACE_ADD_PK_INDEX_NO_WRITE;
+ needed_inplace_flags|= HA_INPLACE_ADD_PK_INDEX_NO_READ_WRITE;
+ }
else
{
/* Non-unique key. */
=== modified file 'storage/innobase/fts/fts0que.c'
--- a/storage/innobase/fts/fts0que.c 2011-11-17 14:26:59 +0000
+++ b/storage/innobase/fts/fts0que.c 2011-11-21 17:09:08 +0000
@@ -2917,7 +2917,7 @@ fts_query_calculate_idf(
}
}
- printf("'%s' -> %lu/%lu %6.5lf\n",
+ fprintf(stderr,"'%s' -> %lu/%lu %6.5lf\n",
word_freq->word,
query->total_docs, word_freq->doc_count,
word_freq->idf);
=== modified file 'storage/innobase/row/row0ftsort.c'
--- a/storage/innobase/row/row0ftsort.c 2011-11-17 14:26:59 +0000
+++ b/storage/innobase/row/row0ftsort.c 2011-11-21 17:09:08 +0000
@@ -540,6 +540,7 @@ fts_parallel_tokenization(
dtype_t word_dtype;
dict_field_t* idx_field;
fts_tokenize_ctx_t t_ctx;
+ ulint retried = 0;
ut_ad(psort_info);
ut_ad(psort_info);
@@ -574,9 +575,13 @@ fts_parallel_tokenization(
processed = TRUE;
loop:
while (doc_item) {
+ dfield_t* dfield = doc_item->field;
+
last_doc_id = doc_item->doc_id;
- if (!(doc_item->field->data)) {
+ if (!(dfield->data)
+ || dfield_get_len(dfield) == UNIV_SQL_NULL) {
+ num_doc_processed++;
doc_item = UT_LIST_GET_NEXT(doc_list, doc_item);
/* Always remember the last doc_item we processed */
@@ -590,10 +595,10 @@ loop:
strings in the doc_item, otherwise continue processing last
item */
if (processed) {
- dfield_t* dfield = doc_item->field;
byte* data;
ulint data_len;
+ dfield = doc_item->field;
data = dfield_get_data(dfield);
data_len = dfield_get_len(dfield);
@@ -625,6 +630,7 @@ loop:
/* Current sort buffer full, need to recycle */
if (!processed) {
ut_ad(t_ctx.processed_len < doc.text.f_len);
+ ut_ad(t_ctx.rows_added[t_ctx.buf_used]);
break;
}
@@ -680,9 +686,21 @@ loop:
}
/* Parent done scanning, and if finish processing all the docs, exit */
- if (psort_info->state == FTS_PARENT_COMPLETE
- && num_doc_processed >= UT_LIST_GET_LEN(psort_info->fts_doc_list)) {
- goto exit;
+ if (psort_info->state == FTS_PARENT_COMPLETE) {
+ if (num_doc_processed >= UT_LIST_GET_LEN(
+ psort_info->fts_doc_list)) {
+ goto exit;
+ } else if (retried > 10000) {
+ ut_ad(!doc_item);
+ /* retied too many times and cannot get new record */
+ fprintf(stderr, "InnoDB: FTS parallel sort processed "
+ "%lu records, the sort queue has "
+ "%lu records. But sort cannot get "
+ "the next records", num_doc_processed,
+ UT_LIST_GET_LEN(
+ psort_info->fts_doc_list));
+ goto exit;
+ }
}
if (doc_item) {
@@ -697,6 +715,9 @@ loop:
if (doc_item) {
prev_doc_item = doc_item;
+ retried = 0;
+ } else if (psort_info->state == FTS_PARENT_COMPLETE) {
+ retried++;
}
goto loop;
=== modified file 'storage/innobase/row/row0merge.c'
--- a/storage/innobase/row/row0merge.c 2011-11-17 14:26:59 +0000
+++ b/storage/innobase/row/row0merge.c 2011-11-21 17:09:08 +0000
@@ -1508,7 +1508,7 @@ func_exit:
}
wait_again:
os_event_wait_time_low(fts_parallel_sort_event,
- 60000000, sig_count);
+ 10000000, sig_count);
for (i = 0; i < fts_sort_pll_degree; i++) {
if (psort_info[i].child_status != FTS_CHILD_COMPLETE) {
=== modified file 'storage/innobase/srv/srv0start.c'
--- a/storage/innobase/srv/srv0start.c 2011-11-20 21:00:25 +0000
+++ b/storage/innobase/srv/srv0start.c 2011-11-21 17:51:51 +0000
@@ -610,7 +610,7 @@ open_or_create_log_file(
ut_print_timestamp(stderr);
fprintf(stderr,
- " InnoDB: Log file %s did not exist:"
+ " InnoDB: Log file %s did not exist:"
" new to be created\n",
name);
if (log_file_has_been_opened) {
@@ -927,7 +927,7 @@ skip_size_check:
if (i > 0) {
ut_print_timestamp(stderr);
fprintf(stderr,
- " InnoDB: Data file %s did not"
+ " InnoDB: Data file %s did not"
" exist: new to be created\n",
name);
} else {
@@ -941,7 +941,7 @@ skip_size_check:
ut_print_timestamp(stderr);
fprintf(stderr,
- " InnoDB: Setting file %s size to %lu MB\n",
+ " InnoDB: Setting file %s size to %lu MB\n",
name,
(ulong) (srv_data_file_sizes[i]
>> (20 - UNIV_PAGE_SIZE_SHIFT)));
@@ -1020,22 +1020,22 @@ srv_undo_tablespace_create(
/* We created the data file and now write it full of zeros */
ut_print_timestamp(stderr);
- fprintf(stderr, " InnoDB: Data file %s did not"
+ fprintf(stderr, " InnoDB: Data file %s did not"
" exist: new to be created\n", name);
ut_print_timestamp(stderr);
- fprintf(stderr, " InnoDB: Setting file %s size to %lu MB\n",
+ fprintf(stderr, " InnoDB: Setting file %s size to %lu MB\n",
name, size >> (20 - UNIV_PAGE_SIZE_SHIFT));
ut_print_timestamp(stderr);
- fprintf(stderr, " InnoDB: Database physically writes the"
+ fprintf(stderr, " InnoDB: Database physically writes the"
" file full: wait...\n");
ret = os_file_set_size(name, fh, size << UNIV_PAGE_SIZE_SHIFT);
if (!ret) {
ut_print_timestamp(stderr);
- fprintf(stderr, " InnoDB: Error in creating %s:"
+ fprintf(stderr, " InnoDB: Error in creating %s:"
" probably out of disk space\n", name);
err = DB_ERROR;
@@ -2231,7 +2231,7 @@ innobase_start_or_create_for_mysql(void)
== ULINT_UNDEFINED)) {
ut_print_timestamp(stderr);
- fprintf(stderr, " InnoDB: "
+ fprintf(stderr, " InnoDB: "
"Waiting for the background threads to "
"start\n");
os_thread_sleep(1000000);
@@ -2500,7 +2500,7 @@ innobase_shutdown_for_mysql(void)
if (srv_is_being_started) {
ut_print_timestamp(stderr);
fprintf(stderr,
- " InnoDB: Warning: shutting down"
+ " InnoDB: Warning: shutting down"
" a not properly started\n"
"InnoDB: or created database!\n");
}
@@ -2668,7 +2668,7 @@ innobase_shutdown_for_mysql(void)
if (srv_print_verbose_log) {
ut_print_timestamp(stderr);
fprintf(stderr,
- " InnoDB: Shutdown completed;"
+ " InnoDB: Shutdown completed;"
" log sequence number " LSN_PF "\n",
srv_shutdown_lsn);
}
No bundle (reason: useless for push emails).| Thread |
|---|
| • bzr push into mysql-trunk-wl5461 branch (chris.powers:3443 to 3445) | Christopher Powers | 22 Nov |