From c0817dac99c28698dfc2b548d89acf1fb41dc32e Mon Sep 17 00:00:00 2001 From: Vlad Lesin Date: Fri, 30 Sep 2022 19:38:59 +0300 Subject: MDEV-29575 Access to innodb_trx, innodb_locks and innodb_lock_waits along with detached XA's can cause SIGSEGV trx->mysql_thd can be zeroed-out between thd_get_thread_id() and thd_query_safe() calls in fill_trx_row(). trx_disconnect_prepared() zeroes out trx->mysql_thd. And this can cause null pointer dereferencing in fill_trx_row(). fill_trx_row() is invoked from fetch_data_into_cache() under trx_sys.mutex. Bug fix is in reseting trx_t::mysql_thd in trx_disconnect_prepared() under trx_sys.mutex lock too. MTR test case can't be created for the fix, as we need to wait for trx_t::mysql_thd reseting in fill_trx_row() after trx_t::mysql_thd was checked for null while trx_sys.mutex is held. But trx_t::mysql_thd must be reset in trx_disconnect_prepared() under trx_sys.mutex. There will be deadlock. --- storage/innobase/trx/trx0trx.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/storage/innobase/trx/trx0trx.cc b/storage/innobase/trx/trx0trx.cc index b2cfbd9b4e3..7658af76709 100644 --- a/storage/innobase/trx/trx0trx.cc +++ b/storage/innobase/trx/trx0trx.cc @@ -564,8 +564,10 @@ void trx_disconnect_prepared(trx_t *trx) ut_ad(trx_state_eq(trx, TRX_STATE_PREPARED)); ut_ad(trx->mysql_thd); trx->read_view.close(); + mutex_enter(&trx_sys.mutex); trx->is_recovered= true; trx->mysql_thd= NULL; + mutex_exit(&trx_sys.mutex); /* todo/fixme: suggest to do it at innodb prepare */ trx->will_lock= false; } -- cgit v1.2.1 From d1bc469dca1de22bd24a4fc59a70085dcb5c32a5 Mon Sep 17 00:00:00 2001 From: Monty Date: Tue, 4 Oct 2022 11:26:50 +0300 Subject: Disable valgrind for test in main that takes > 200 seconds One can run these with --valgrind --big --- mysql-test/include/long_test.inc | 2 ++ mysql-test/main/alter_table.test | 1 + mysql-test/main/compress.test | 2 ++ mysql-test/main/ctype_big5.test | 1 + mysql-test/main/ctype_gb2312.test | 1 + mysql-test/main/ctype_gbk.test | 1 + mysql-test/main/ctype_sjis.test | 1 + mysql-test/main/ctype_utf8.test | 1 + mysql-test/main/gis-precise.test | 4 ++-- mysql-test/main/group_min_max.test | 1 + mysql-test/main/index_merge_innodb.test | 1 + mysql-test/main/index_merge_myisam.test | 1 + mysql-test/main/information_schema_all_engines.test | 1 + mysql-test/main/innodb_ext_key.test | 1 + mysql-test/main/join_cache.test | 6 ++++-- mysql-test/main/mysql_client_test_comp.test | 1 + mysql-test/main/mysql_upgrade.test | 1 + mysql-test/main/mysqldump.test | 1 + mysql-test/main/order_by.test | 1 + mysql-test/main/pool_of_threads.test | 3 ++- mysql-test/main/query_cache.test | 1 + mysql-test/main/query_cache_debug.test | 1 + mysql-test/main/range.test | 1 + mysql-test/main/range_innodb.test | 1 + mysql-test/main/range_vs_index_merge.test | 1 + mysql-test/main/rowid_filter_innodb.test | 1 + mysql-test/main/select.test | 2 ++ mysql-test/main/selectivity.test | 1 + mysql-test/main/sp.test | 1 + mysql-test/main/ssl.test | 1 + mysql-test/main/stat_tables_disabled.test | 2 ++ mysql-test/main/stat_tables_innodb.test | 1 + mysql-test/main/stat_tables_par_innodb.test | 1 + mysql-test/main/statistics.test | 1 + mysql-test/main/subselect_innodb.test | 1 + mysql-test/main/subselect_sj.test | 1 + mysql-test/main/subselect_sj_jcl6.test | 1 + mysql-test/main/trigger.test | 3 ++- mysql-test/main/win.test | 1 + mysql-test/main/win_big-mdev-11697.test | 2 ++ 40 files changed, 51 insertions(+), 6 deletions(-) diff --git a/mysql-test/include/long_test.inc b/mysql-test/include/long_test.inc index d9a3b338229..765f88b8037 100644 --- a/mysql-test/include/long_test.inc +++ b/mysql-test/include/long_test.inc @@ -2,3 +2,5 @@ # We can use this to schedule such test early (to not be left with # only one or two long tests running, and rests of works idle), or to # run a quick test skipping long-running test cases. + +--source include/no_valgrind_without_big.inc diff --git a/mysql-test/main/alter_table.test b/mysql-test/main/alter_table.test index 6dcb441d30a..ec2b5e2b1f0 100644 --- a/mysql-test/main/alter_table.test +++ b/mysql-test/main/alter_table.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/have_innodb.inc # # Test of alter table diff --git a/mysql-test/main/compress.test b/mysql-test/main/compress.test index 8fc21d9c961..daa133ebdc7 100644 --- a/mysql-test/main/compress.test +++ b/mysql-test/main/compress.test @@ -1,6 +1,8 @@ # Turn on compression between the client and server # and run a number of tests +# Too slow for valgrind +--source include/no_valgrind_without_big.inc # Can't test with embedded server -- source include/not_embedded.inc -- source include/have_compress.inc diff --git a/mysql-test/main/ctype_big5.test b/mysql-test/main/ctype_big5.test index 410203c7c86..3d81686b767 100644 --- a/mysql-test/main/ctype_big5.test +++ b/mysql-test/main/ctype_big5.test @@ -1,3 +1,4 @@ +-- source include/no_valgrind_without_big.inc -- source include/have_big5.inc # diff --git a/mysql-test/main/ctype_gb2312.test b/mysql-test/main/ctype_gb2312.test index 4489168a163..9cd7834a287 100644 --- a/mysql-test/main/ctype_gb2312.test +++ b/mysql-test/main/ctype_gb2312.test @@ -1,3 +1,4 @@ +-- source include/no_valgrind_without_big.inc -- source include/have_gb2312.inc # diff --git a/mysql-test/main/ctype_gbk.test b/mysql-test/main/ctype_gbk.test index d9d0a4d0ee4..defaf8bf6c3 100644 --- a/mysql-test/main/ctype_gbk.test +++ b/mysql-test/main/ctype_gbk.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc -- source include/have_gbk.inc # diff --git a/mysql-test/main/ctype_sjis.test b/mysql-test/main/ctype_sjis.test index 00662fdf2a0..13250b4933f 100644 --- a/mysql-test/main/ctype_sjis.test +++ b/mysql-test/main/ctype_sjis.test @@ -1,3 +1,4 @@ +-- source include/no_valgrind_without_big.inc -- source include/have_sjis.inc # diff --git a/mysql-test/main/ctype_utf8.test b/mysql-test/main/ctype_utf8.test index e2c47e75993..291149b317e 100644 --- a/mysql-test/main/ctype_utf8.test +++ b/mysql-test/main/ctype_utf8.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc # # Tests with the utf8 character set # diff --git a/mysql-test/main/gis-precise.test b/mysql-test/main/gis-precise.test index da72a0c4d8a..f49b3f1a1da 100644 --- a/mysql-test/main/gis-precise.test +++ b/mysql-test/main/gis-precise.test @@ -1,5 +1,5 @@ --- source include/have_geometry.inc - +--source include/no_valgrind_without_big.inc +--source include/have_geometry.inc # # Spatial objects diff --git a/mysql-test/main/group_min_max.test b/mysql-test/main/group_min_max.test index 0dc7ea2fee7..506323599cb 100644 --- a/mysql-test/main/group_min_max.test +++ b/mysql-test/main/group_min_max.test @@ -3,6 +3,7 @@ # The queries in this file test query execution via QUICK_GROUP_MIN_MAX_SELECT. # +--source include/no_valgrind_without_big.inc --source include/default_optimizer_switch.inc # diff --git a/mysql-test/main/index_merge_innodb.test b/mysql-test/main/index_merge_innodb.test index 4bdcb17760e..7931f6912dd 100644 --- a/mysql-test/main/index_merge_innodb.test +++ b/mysql-test/main/index_merge_innodb.test @@ -11,6 +11,7 @@ # # Slow test, don't run during staging part +--source include/long_test.inc --source include/not_staging.inc --source include/have_innodb.inc diff --git a/mysql-test/main/index_merge_myisam.test b/mysql-test/main/index_merge_myisam.test index b77c9bc1ca2..c098d80688b 100644 --- a/mysql-test/main/index_merge_myisam.test +++ b/mysql-test/main/index_merge_myisam.test @@ -9,6 +9,7 @@ # wrapper t/index_merge_innodb.test sources now several # include/index_merge*.inc files # +--source include/no_valgrind_without_big.inc SET STORAGE_ENGINE = MyISAM; # MyISAM supports Merge tables diff --git a/mysql-test/main/information_schema_all_engines.test b/mysql-test/main/information_schema_all_engines.test index f8d685d2560..04537051acb 100644 --- a/mysql-test/main/information_schema_all_engines.test +++ b/mysql-test/main/information_schema_all_engines.test @@ -2,6 +2,7 @@ # information_schema_db.test whose results depends on which engines are # available (since these engines inject tables into INFORMATION_SCHEMA). +--source include/no_valgrind_without_big.inc --source include/not_embedded.inc --source include/have_innodb.inc --source include/have_perfschema.inc diff --git a/mysql-test/main/innodb_ext_key.test b/mysql-test/main/innodb_ext_key.test index 1ff0ea51990..2de8be92149 100644 --- a/mysql-test/main/innodb_ext_key.test +++ b/mysql-test/main/innodb_ext_key.test @@ -1,4 +1,5 @@ --source include/innodb_prefix_index_cluster_optimization.inc +--source include/no_valgrind_without_big.inc SET SESSION STORAGE_ENGINE='InnoDB'; diff --git a/mysql-test/main/join_cache.test b/mysql-test/main/join_cache.test index b4271f648e3..b5d21179f43 100644 --- a/mysql-test/main/join_cache.test +++ b/mysql-test/main/join_cache.test @@ -1,9 +1,11 @@ +--source include/no_valgrind_without_big.inc +--source include/default_optimizer_switch.inc +--source include/default_charset.inc + --disable_warnings DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11; DROP DATABASE IF EXISTS world; --enable_warnings ---source include/default_optimizer_switch.inc ---source include/default_charset.inc set @org_optimizer_switch=@@optimizer_switch; set @save_join_cache_level=@@join_cache_level; diff --git a/mysql-test/main/mysql_client_test_comp.test b/mysql-test/main/mysql_client_test_comp.test index f8bd80fc48a..36a12b6691e 100644 --- a/mysql-test/main/mysql_client_test_comp.test +++ b/mysql-test/main/mysql_client_test_comp.test @@ -3,6 +3,7 @@ # No need to run this with embedded server --source include/not_embedded.inc --source include/check_ipv6.inc +--source include/no_valgrind_without_big.inc # need to have the dynamic loading turned on for the client plugin tests --source include/have_plugin_auth.inc diff --git a/mysql-test/main/mysql_upgrade.test b/mysql-test/main/mysql_upgrade.test index b0a1ffaa9d9..edf2cb21b05 100644 --- a/mysql-test/main/mysql_upgrade.test +++ b/mysql-test/main/mysql_upgrade.test @@ -2,6 +2,7 @@ -- source include/have_working_dns.inc -- source include/have_innodb.inc -- source include/have_partition.inc +-- source include/no_valgrind_without_big.inc set sql_mode=""; diff --git a/mysql-test/main/mysqldump.test b/mysql-test/main/mysqldump.test index 66b2259579a..d1b0a7d8c84 100644 --- a/mysql-test/main/mysqldump.test +++ b/mysql-test/main/mysqldump.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/have_utf8mb4.inc call mtr.add_suppression("@003f.frm' \\(errno: 22\\)"); diff --git a/mysql-test/main/order_by.test b/mysql-test/main/order_by.test index 9ba2b49a5a8..5f83f0f7541 100644 --- a/mysql-test/main/order_by.test +++ b/mysql-test/main/order_by.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc # # Testing ORDER BY # diff --git a/mysql-test/main/pool_of_threads.test b/mysql-test/main/pool_of_threads.test index 3d581d4605d..e9f083b2f8f 100644 --- a/mysql-test/main/pool_of_threads.test +++ b/mysql-test/main/pool_of_threads.test @@ -4,10 +4,11 @@ -- source include/have_pool_of_threads.inc -- source include/default_optimizer_switch.inc -SET optimizer_switch='outer_join_with_cache=off'; # Slow test, don't run during staging part -- source include/not_staging.inc -- source include/long_test.inc + +SET optimizer_switch='outer_join_with_cache=off'; -- source include/common-tests.inc SET optimizer_switch=default; diff --git a/mysql-test/main/query_cache.test b/mysql-test/main/query_cache.test index 6e113f0cdb7..9bb5122bc46 100644 --- a/mysql-test/main/query_cache.test +++ b/mysql-test/main/query_cache.test @@ -1,5 +1,6 @@ -- source include/have_query_cache.inc -- source include/long_test.inc +-- source include/no_valgrind_without_big.inc set @save_query_cache_size=@@query_cache_size; # diff --git a/mysql-test/main/query_cache_debug.test b/mysql-test/main/query_cache_debug.test index af82927245b..056396984d9 100644 --- a/mysql-test/main/query_cache_debug.test +++ b/mysql-test/main/query_cache_debug.test @@ -2,6 +2,7 @@ --source include/have_query_cache.inc --source include/have_debug_sync.inc --source include/long_test.inc +--source include/no_valgrind_without_big.inc set global query_cache_type= ON; set @save_query_cache_size=@@global.query_cache_size; diff --git a/mysql-test/main/range.test b/mysql-test/main/range.test index 10245857265..100b875e66f 100644 --- a/mysql-test/main/range.test +++ b/mysql-test/main/range.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc # # Problem with range optimizer # diff --git a/mysql-test/main/range_innodb.test b/mysql-test/main/range_innodb.test index 8b9771d1d1e..a9fef01b941 100644 --- a/mysql-test/main/range_innodb.test +++ b/mysql-test/main/range_innodb.test @@ -4,6 +4,7 @@ --source include/have_innodb.inc --source include/have_debug.inc +--source include/no_valgrind_without_big.inc --disable_warnings drop table if exists t0, t1, t2; diff --git a/mysql-test/main/range_vs_index_merge.test b/mysql-test/main/range_vs_index_merge.test index 94210ce5dd3..e9854386b98 100644 --- a/mysql-test/main/range_vs_index_merge.test +++ b/mysql-test/main/range_vs_index_merge.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/default_optimizer_switch.inc --source include/default_charset.inc --source include/have_sequence.inc diff --git a/mysql-test/main/rowid_filter_innodb.test b/mysql-test/main/rowid_filter_innodb.test index d121405f08d..dc8b1ddbca5 100644 --- a/mysql-test/main/rowid_filter_innodb.test +++ b/mysql-test/main/rowid_filter_innodb.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/have_innodb.inc SET SESSION STORAGE_ENGINE='InnoDB'; diff --git a/mysql-test/main/select.test b/mysql-test/main/select.test index 407108e6206..0e19ddd6970 100644 --- a/mysql-test/main/select.test +++ b/mysql-test/main/select.test @@ -2,6 +2,8 @@ # Find string "NOTE NOTE NOTE" in order to find some 'unsure' tests # +--source include/no_valgrind_without_big.inc + # # Simple select test # diff --git a/mysql-test/main/selectivity.test b/mysql-test/main/selectivity.test index 1d96dc0bf80..ba0af502720 100644 --- a/mysql-test/main/selectivity.test +++ b/mysql-test/main/selectivity.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/have_stat_tables.inc --source include/have_sequence.inc --source include/default_charset.inc diff --git a/mysql-test/main/sp.test b/mysql-test/main/sp.test index a93689ba4da..68aa40a9d29 100644 --- a/mysql-test/main/sp.test +++ b/mysql-test/main/sp.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/have_partition.inc --source include/have_sequence.inc diff --git a/mysql-test/main/ssl.test b/mysql-test/main/ssl.test index 45c903d43d2..8812c792a47 100644 --- a/mysql-test/main/ssl.test +++ b/mysql-test/main/ssl.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc # Turn on ssl between the client and server # and run a number of tests diff --git a/mysql-test/main/stat_tables_disabled.test b/mysql-test/main/stat_tables_disabled.test index 427cf4874bc..0ba698da752 100644 --- a/mysql-test/main/stat_tables_disabled.test +++ b/mysql-test/main/stat_tables_disabled.test @@ -4,7 +4,9 @@ set @innodb_stats_persistent_sample_pages_save= set global innodb_stats_persistent= 1; set global innodb_stats_persistent_sample_pages=100; + --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc SET SESSION STORAGE_ENGINE='InnoDB'; diff --git a/mysql-test/main/stat_tables_innodb.test b/mysql-test/main/stat_tables_innodb.test index 301ee8692b9..940eaf23855 100644 --- a/mysql-test/main/stat_tables_innodb.test +++ b/mysql-test/main/stat_tables_innodb.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/have_innodb.inc --source include/have_sequence.inc diff --git a/mysql-test/main/stat_tables_par_innodb.test b/mysql-test/main/stat_tables_par_innodb.test index fd5833e4aaf..f62777b9cf7 100644 --- a/mysql-test/main/stat_tables_par_innodb.test +++ b/mysql-test/main/stat_tables_par_innodb.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/have_innodb.inc SET SESSION STORAGE_ENGINE='InnoDB'; diff --git a/mysql-test/main/statistics.test b/mysql-test/main/statistics.test index 1f99aaa33e5..a81de1662f0 100644 --- a/mysql-test/main/statistics.test +++ b/mysql-test/main/statistics.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc --source include/have_stat_tables.inc --source include/have_innodb.inc --disable_warnings diff --git a/mysql-test/main/subselect_innodb.test b/mysql-test/main/subselect_innodb.test index fef954edc28..1007dadffdd 100644 --- a/mysql-test/main/subselect_innodb.test +++ b/mysql-test/main/subselect_innodb.test @@ -1,3 +1,4 @@ +-- source include/no_valgrind_without_big.inc -- source include/have_innodb.inc # Note: the tests uses only non-semijoin subqueries so semi-join switch diff --git a/mysql-test/main/subselect_sj.test b/mysql-test/main/subselect_sj.test index c869f56c837..e4d02ed666c 100644 --- a/mysql-test/main/subselect_sj.test +++ b/mysql-test/main/subselect_sj.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc # # Nested Loops semi-join subquery evaluation tests # diff --git a/mysql-test/main/subselect_sj_jcl6.test b/mysql-test/main/subselect_sj_jcl6.test index 179c1aa029b..f4f605c0406 100644 --- a/mysql-test/main/subselect_sj_jcl6.test +++ b/mysql-test/main/subselect_sj_jcl6.test @@ -1,6 +1,7 @@ # # Run subselect_sj.test with BKA enabled # +--source include/no_valgrind_without_big.inc --source include/default_optimizer_switch.inc set @save_optimizer_switch_jcl6=@@optimizer_switch; diff --git a/mysql-test/main/trigger.test b/mysql-test/main/trigger.test index 56e9246b95c..e8cc64adf40 100644 --- a/mysql-test/main/trigger.test +++ b/mysql-test/main/trigger.test @@ -1,6 +1,7 @@ # This test uses chmod, can't be run with root permissions -- source include/not_as_root.inc ---source include/default_charset.inc +-- source include/no_valgrind_without_big.inc +-- source include/default_charset.inc # # Basic triggers test diff --git a/mysql-test/main/win.test b/mysql-test/main/win.test index ce32626510a..01baaa138bc 100644 --- a/mysql-test/main/win.test +++ b/mysql-test/main/win.test @@ -1,6 +1,7 @@ # # Window Functions Tests # +--source include/no_valgrind_without_big.inc --source include/have_sequence.inc --disable_warnings diff --git a/mysql-test/main/win_big-mdev-11697.test b/mysql-test/main/win_big-mdev-11697.test index 7103b8522be..aca15fa9944 100644 --- a/mysql-test/main/win_big-mdev-11697.test +++ b/mysql-test/main/win_big-mdev-11697.test @@ -1,3 +1,5 @@ +--source include/no_valgrind_without_big.inc + create table test_table (id int, random_data varchar(36), static_int int, static_varchar varchar(10)); insert into test_table(id, random_data, static_int, static_varchar) -- cgit v1.2.1 From 19f0b96d53dec47d7b8680c44997afba2ed7431e Mon Sep 17 00:00:00 2001 From: Julius Goryavsky Date: Tue, 4 Oct 2022 13:15:52 +0200 Subject: MDEV-27682: bundled wsrep_notify.sh causes mariadbd to freeze during start This commit adds automation that will reduce the possibility of user errors when customizing wsrep_notify.sh (in particular caused by user-specified parameters). Now all leading and trailing spaces are removed from the user-specified parameters and automatic port and host address substitution has been added to scripts, as well as automatic password substitution to the client command line, only if it is specified in the wsrep_notify.sh and not as empty strings. Also added support for automatic substitution of the all SSL-related parameters and improved parsing for ipv6 addresses (to allow "[...]" notation for ipv6 addresses). Also added a test to check if the wsrep notify script will works with SSL. --- mysql-test/include/ipv6.inc | 1 - mysql-test/std_data/wsrep_notify.sh | 124 +++++++++++-- mysql-test/std_data/wsrep_notify_ssl.sh | 195 +++++++++++++++++++++ .../galera/r/galera_var_notify_ssl_ipv6.result | 11 ++ .../galera/t/galera_var_notify_ssl_ipv6-master.opt | 1 + .../suite/galera/t/galera_var_notify_ssl_ipv6.cnf | 20 +++ .../suite/galera/t/galera_var_notify_ssl_ipv6.test | 20 +++ support-files/wsrep_notify.sh | 123 +++++++++++-- 8 files changed, 465 insertions(+), 30 deletions(-) create mode 100755 mysql-test/std_data/wsrep_notify_ssl.sh create mode 100644 mysql-test/suite/galera/r/galera_var_notify_ssl_ipv6.result create mode 100644 mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6-master.opt create mode 100644 mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6.cnf create mode 100644 mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6.test mode change 100644 => 100755 support-files/wsrep_notify.sh diff --git a/mysql-test/include/ipv6.inc b/mysql-test/include/ipv6.inc index 3d8fdcfbc3c..05c65d7817a 100644 --- a/mysql-test/include/ipv6.inc +++ b/mysql-test/include/ipv6.inc @@ -22,4 +22,3 @@ eval SET PASSWORD FOR testuser1@'$IPv6' = PASSWORD ('9876'); --replace_result ::1 localhost SELECT USER(); eval DROP USER testuser1@'$IPv6'; - diff --git a/mysql-test/std_data/wsrep_notify.sh b/mysql-test/std_data/wsrep_notify.sh index 7036f603c84..d5defd6420e 100755 --- a/mysql-test/std_data/wsrep_notify.sh +++ b/mysql-test/std_data/wsrep_notify.sh @@ -4,11 +4,31 @@ # It will create 'wsrep' schema and two tables in it: 'membeship' and 'status' # and fill them on every membership or node status change. # -# Edit parameters below to specify the address and login to server. - +# Edit parameters below to specify the address and login to server: +# USER=root +PSWD= +# +# If these parameters are not set, then the values +# passed by the server are taken: +# HOST=127.0.0.1 PORT=$NODE_MYPORT_1 +# +# Edit parameters below to specify SSL parameters: +# +ssl_key= +ssl_cert= +ssl_ca= +ssl_capath= +ssl_cipher= +ssl_crl= +ssl_crlpath= +ssl_verify_server_cert=0 +# +# Client executable path: +# +CLIENT="$EXE_MYSQL" SCHEMA="mtr_wsrep_notify" MEMB_TABLE="$SCHEMA.membership" @@ -19,7 +39,7 @@ SET wsrep_on=0; CREATE SCHEMA IF NOT EXISTS $SCHEMA; CREATE TABLE IF NOT EXISTS $MEMB_TABLE ( idx INT, - uuid CHAR(40), /* node UUID */ + uuid CHAR(40), /* node UUID */ name VARCHAR(32), /* node name */ addr VARCHAR(256) /* node address */ ) ENGINE=MEMORY; @@ -40,7 +60,7 @@ configuration_change() local idx=0 - for NODE in $(echo $MEMBERS | sed s/,/\ /g) + for NODE in $(echo "$MEMBERS" | sed s/,/\ /g) do echo "INSERT INTO $MEMB_TABLE VALUES ( $idx, " # Don't forget to properly quote string values @@ -59,17 +79,44 @@ status_update() echo "SET wsrep_on=0; BEGIN; UPDATE $STATUS_TABLE SET status='$STATUS'; COMMIT;" } +trim_string() +{ + if [ -n "${BASH_VERSION:-}" ]; then + local pattern="[![:space:]${2:-}]" + local x="${1#*$pattern}" + local z=${#1} + x=${#x} + if [ $x -ne $z ]; then + local y="${1%$pattern*}" + y=${#y} + x=$(( z-x-1 )) + y=$(( y-x+1 )) + printf '%s' "${1:$x:$y}" + else + printf '' + fi + else + local pattern="[[:space:]${2:-}]" + echo "$1" | sed -E "s/^$pattern+|$pattern+\$//g" + fi +} + COM=status_update # not a configuration change by default -while [ $# -gt 0 ] -do +STATUS="" +CLUSTER_UUID="" +PRIMARY="0" +INDEX="" +MEMBERS="" + +while [ $# -gt 0 ]; do case $1 in --status) - STATUS=$2 + STATUS=$(trim_string "$2") shift ;; --uuid) - CLUSTER_UUID=$2 + CLUSTER_UUID=$(trim_string "$2") shift ;; --primary) @@ -78,22 +125,71 @@ do shift ;; --index) - INDEX=$2 + INDEX=$(trim_string "$2") shift ;; --members) - MEMBERS=$2 + MEMBERS=$(trim_string "$2") shift ;; esac shift done -# Undefined means node is shutting down -if [ "$STATUS" != "Undefined" ] +USER=$(trim_string "$USER") +PSWD=$(trim_string "$PSWD") + +HOST=$(trim_string "$HOST") +PORT=$(trim_string "$PORT") + +case "$HOST" in +\[*) + HOST="${HOST##\[}" + HOST=$(trim_string "${HOST%%\]}") + ;; +esac + +if [ -z "$HOST" ]; then + HOST="${NOTIFY_HOST:-}" +fi +if [ -z "$PORT" ]; then + PORT="${NOTIFY_PORT:-}" +fi + +ssl_key=$(trim_string "$ssl_key"); +ssl_cert=$(trim_string "$ssl_cert"); +ssl_ca=$(trim_string "$ssl_ca"); +ssl_capath=$(trim_string "$ssl_capath"); +ssl_cipher=$(trim_string "$ssl_cipher"); +ssl_crl=$(trim_string "$ssl_crl"); +ssl_crlpath=$(trim_string "$ssl_crlpath"); +ssl_verify_server_cert=$(trim_string "$ssl_verify_server_cert"); + +SSL_PARAM="" + +if [ -n "$ssl_key" -o -n "$ssl_cert" -o \ + -n "$ssl_ca" -o -n "$ssl_capath" -o \ + -n "$ssl_cipher" ] then - $COM | mysql -B -u$USER -h$HOST -P$PORT + SSL_PARAM=' --ssl' + [ -n "$ssl_key" ] && SSL_PARAM="$SSL_PARAM --ssl-key='$ssl_key'" + [ -n "$ssl_cert" ] && SSL_PARAM="$SSL_PARAM --ssl-cert='$ssl_cert'" + [ -n "$ssl_ca" ] && SSL_PARAM="$SSL_PARAM --ssl-ca='$ssl_ca'" + [ -n "$ssl_capath" ] && SSL_PARAM="$SSL_PARAM --ssl-capath='$ssl_capath'" + [ -n "$ssl_cipher" ] && SSL_PARAM="$SSL_PARAM --ssl-cipher='$ssl_cipher'" + [ -n "$ssl_crl" ] && SSL_PARAM="$SSL_PARAM --ssl-crl='$ssl_crl'" + [ -n "$ssl_crlpath" ] && SSL_PARAM="$SSL_PARAM --ssl-crlpath='$ssl_crlpath'" + if [ -n "$ssl_verify_server_cert" ]; then + if [ $ssl_verify_server_cert -ne 0 ]; then + SSL_PARAM+=' --ssl-verify-server-cert' + fi + fi +fi + +# Undefined means node is shutting down +if [ "$STATUS" != 'Undefined' ]; then + "$COM" | eval "$CLIENT" -B "-u'$USER'"${PSWD:+" -p'$PSWD'"}\ + "-h'$HOST'" "-P$PORT"$SSL_PARAM fi exit 0 -# diff --git a/mysql-test/std_data/wsrep_notify_ssl.sh b/mysql-test/std_data/wsrep_notify_ssl.sh new file mode 100755 index 00000000000..0e416a2f448 --- /dev/null +++ b/mysql-test/std_data/wsrep_notify_ssl.sh @@ -0,0 +1,195 @@ +#!/bin/sh -eu + +# This is a simple example of wsrep notification script (wsrep_notify_cmd). +# It will create 'wsrep' schema and two tables in it: 'membeship' and 'status' +# and fill them on every membership or node status change. +# +# Edit parameters below to specify the address and login to server: +# +USER=root +PSWD= +# +# If these parameters are not set, then the values +# passed by the server are taken: +# +HOST=127.0.0.1 +PORT=$NODE_MYPORT_1 +# +# Edit parameters below to specify SSL parameters: +# +ssl_cert="$MYSQL_TEST_DIR/std_data/client-cert.pem" +ssl_key="$MYSQL_TEST_DIR/std_data/client-key.pem" +ssl_ca="$MYSQL_TEST_DIR/std_data/cacert.pem" +ssl_capath= +ssl_cipher= +ssl_crl= +ssl_crlpath= +ssl_verify_server_cert=0 +# +# Client executable path: +# +CLIENT="$EXE_MYSQL" + +SCHEMA="mtr_wsrep_notify" +MEMB_TABLE="$SCHEMA.membership" +STATUS_TABLE="$SCHEMA.status" + +BEGIN=" +SET wsrep_on=0; +CREATE SCHEMA IF NOT EXISTS $SCHEMA; +CREATE TABLE IF NOT EXISTS $MEMB_TABLE ( + idx INT, + uuid CHAR(40), /* node UUID */ + name VARCHAR(32), /* node name */ + addr VARCHAR(256) /* node address */ +) ENGINE=MEMORY; +CREATE TABLE IF NOT EXISTS $STATUS_TABLE ( + size INT, /* component size */ + idx INT, /* this node index */ + status CHAR(16), /* this node status */ + uuid CHAR(40), /* cluster UUID */ + prim BOOLEAN /* if component is primary */ +) ENGINE=MEMORY; +BEGIN; +" +END="COMMIT;" + +configuration_change() +{ + echo "$BEGIN;" + + local idx=0 + + for NODE in $(echo "$MEMBERS" | sed s/,/\ /g) + do + echo "INSERT INTO $MEMB_TABLE VALUES ( $idx, " + # Don't forget to properly quote string values + echo "'$NODE'" | sed s/\\//\',\'/g + echo ");" + idx=$(( $idx + 1 )) + done + + echo "INSERT INTO $STATUS_TABLE VALUES($idx, $INDEX, '$STATUS', '$CLUSTER_UUID', $PRIMARY);" + + echo "$END" +} + +status_update() +{ + echo "SET wsrep_on=0; BEGIN; UPDATE $STATUS_TABLE SET status='$STATUS'; COMMIT;" +} + +trim_string() +{ + if [ -n "${BASH_VERSION:-}" ]; then + local pattern="[![:space:]${2:-}]" + local x="${1#*$pattern}" + local z=${#1} + x=${#x} + if [ $x -ne $z ]; then + local y="${1%$pattern*}" + y=${#y} + x=$(( z-x-1 )) + y=$(( y-x+1 )) + printf '%s' "${1:$x:$y}" + else + printf '' + fi + else + local pattern="[[:space:]${2:-}]" + echo "$1" | sed -E "s/^$pattern+|$pattern+\$//g" + fi +} + +COM=status_update # not a configuration change by default + +STATUS="" +CLUSTER_UUID="" +PRIMARY="0" +INDEX="" +MEMBERS="" + +while [ $# -gt 0 ]; do + case $1 in + --status) + STATUS=$(trim_string "$2") + shift + ;; + --uuid) + CLUSTER_UUID=$(trim_string "$2") + shift + ;; + --primary) + [ "$2" = "yes" ] && PRIMARY="1" || PRIMARY="0" + COM=configuration_change + shift + ;; + --index) + INDEX=$(trim_string "$2") + shift + ;; + --members) + MEMBERS=$(trim_string "$2") + shift + ;; + esac + shift +done + +USER=$(trim_string "$USER") +PSWD=$(trim_string "$PSWD") + +HOST=$(trim_string "$HOST") +PORT=$(trim_string "$PORT") + +case "$HOST" in +\[*) + HOST="${HOST##\[}" + HOST=$(trim_string "${HOST%%\]}") + ;; +esac + +if [ -z "$HOST" ]; then + HOST="${NOTIFY_HOST:-}" +fi +if [ -z "$PORT" ]; then + PORT="${NOTIFY_PORT:-}" +fi + +ssl_key=$(trim_string "$ssl_key"); +ssl_cert=$(trim_string "$ssl_cert"); +ssl_ca=$(trim_string "$ssl_ca"); +ssl_capath=$(trim_string "$ssl_capath"); +ssl_cipher=$(trim_string "$ssl_cipher"); +ssl_crl=$(trim_string "$ssl_crl"); +ssl_crlpath=$(trim_string "$ssl_crlpath"); +ssl_verify_server_cert=$(trim_string "$ssl_verify_server_cert"); + +SSL_PARAM="" + +if [ -n "$ssl_key" -o -n "$ssl_cert" -o \ + -n "$ssl_ca" -o -n "$ssl_capath" -o \ + -n "$ssl_cipher" ] +then + SSL_PARAM=' --ssl' + [ -n "$ssl_key" ] && SSL_PARAM="$SSL_PARAM --ssl-key='$ssl_key'" + [ -n "$ssl_cert" ] && SSL_PARAM="$SSL_PARAM --ssl-cert='$ssl_cert'" + [ -n "$ssl_ca" ] && SSL_PARAM="$SSL_PARAM --ssl-ca='$ssl_ca'" + [ -n "$ssl_capath" ] && SSL_PARAM="$SSL_PARAM --ssl-capath='$ssl_capath'" + [ -n "$ssl_cipher" ] && SSL_PARAM="$SSL_PARAM --ssl-cipher='$ssl_cipher'" + [ -n "$ssl_crl" ] && SSL_PARAM="$SSL_PARAM --ssl-crl='$ssl_crl'" + [ -n "$ssl_crlpath" ] && SSL_PARAM="$SSL_PARAM --ssl-crlpath='$ssl_crlpath'" + if [ -n "$ssl_verify_server_cert" ]; then + if [ $ssl_verify_server_cert -ne 0 ]; then + SSL_PARAM+=' --ssl-verify-server-cert' + fi + fi +fi + +# Undefined means node is shutting down +if [ "$STATUS" != 'Undefined' ]; then + "$COM" | eval "$CLIENT" -B "-u'$USER'"${PSWD:+" -p'$PSWD'"}\ + "-h'$HOST'" "-P$PORT"$SSL_PARAM +fi + +exit 0 diff --git a/mysql-test/suite/galera/r/galera_var_notify_ssl_ipv6.result b/mysql-test/suite/galera/r/galera_var_notify_ssl_ipv6.result new file mode 100644 index 00000000000..823407fbba7 --- /dev/null +++ b/mysql-test/suite/galera/r/galera_var_notify_ssl_ipv6.result @@ -0,0 +1,11 @@ +connection node_1; +SELECT COUNT(DISTINCT uuid) AS EXPECT_2 FROM mtr_wsrep_notify.membership; +EXPECT_2 +2 +SELECT MAX(size) AS EXPECT_2 FROM mtr_wsrep_notify.status; +EXPECT_2 +2 +SELECT COUNT(DISTINCT idx) AS EXPECT_2 FROM mtr_wsrep_notify.status; +EXPECT_2 +2 +DROP SCHEMA mtr_wsrep_notify; diff --git a/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6-master.opt b/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6-master.opt new file mode 100644 index 00000000000..99c5889916b --- /dev/null +++ b/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6-master.opt @@ -0,0 +1 @@ +--wsrep_notify_cmd=$MYSQL_TEST_DIR/std_data/wsrep_notify_ssl.sh --wsrep-sync-wait=0 diff --git a/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6.cnf b/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6.cnf new file mode 100644 index 00000000000..ce121d20e03 --- /dev/null +++ b/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6.cnf @@ -0,0 +1,20 @@ +!include ../galera_2nodes.cnf + +[mysqld] +ssl-cert=@ENV.MYSQL_TEST_DIR/std_data/server-cert.pem +ssl-key=@ENV.MYSQL_TEST_DIR/std_data/server-key.pem +ssl-ca=@ENV.MYSQL_TEST_DIR/std_data/cacert.pem +bind-address=:: + +[mysqld.1] +wsrep_provider_options='base_port=@mysqld.1.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.1.#galera_port;ist.recv_addr=[::1]:@mysqld.1.#ist_port;gcache.size=1;pc.ignore_sb=true' +wsrep_node_incoming_address='[::1]:@mysqld.1.port' +wsrep_node_address=::1 +wsrep_sst_receive_address='[::1]:@mysqld.1.#sst_port' + +[mysqld.2] +wsrep_cluster_address='gcomm://[::1]:@mysqld.1.#galera_port' +wsrep_provider_options='base_port=@mysqld.2.#galera_port;gmcast.listen_addr=tcp://[::]:@mysqld.2.#galera_port;ist.recv_addr=[::1]:@mysqld.2.#ist_port;gcache.size=1;pc.ignore_sb=true' +wsrep_node_address=::1 +wsrep_node_incoming_address='[::1]:@mysqld.2.port' +wsrep_sst_receive_address='[::1]:@mysqld.2.#sst_port' diff --git a/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6.test b/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6.test new file mode 100644 index 00000000000..2c2b106c2ae --- /dev/null +++ b/mysql-test/suite/galera/t/galera_var_notify_ssl_ipv6.test @@ -0,0 +1,20 @@ +# +# Test wsrep_notify_cmd. We use a version of the support-files/wsrep_notify.sh script that writes +# notifications into a table. +# + +--source include/galera_cluster.inc +--source include/have_ssl_communication.inc +--source include/check_ipv6.inc +--source include/force_restart.inc + +--connection node_1 +--let $wait_condition = SELECT COUNT(DISTINCT uuid) = 2 FROM mtr_wsrep_notify.membership; +--source include/wait_condition.inc + +SELECT COUNT(DISTINCT uuid) AS EXPECT_2 FROM mtr_wsrep_notify.membership; +SELECT MAX(size) AS EXPECT_2 FROM mtr_wsrep_notify.status; +SELECT COUNT(DISTINCT idx) AS EXPECT_2 FROM mtr_wsrep_notify.status; + +# CLEANUP +DROP SCHEMA mtr_wsrep_notify; diff --git a/support-files/wsrep_notify.sh b/support-files/wsrep_notify.sh old mode 100644 new mode 100755 index bdbe3d12a39..87ba11342c5 --- a/support-files/wsrep_notify.sh +++ b/support-files/wsrep_notify.sh @@ -4,12 +4,31 @@ # It will create 'wsrep' schema and two tables in it: 'membeship' and 'status' # and fill them on every membership or node status change. # -# Edit parameters below to specify the address and login to server. - +# Edit parameters below to specify the address and login to server: +# USER=root PSWD=rootpass +# +# If these parameters are not set, then the values +# passed by the server are taken: +# HOST=127.0.0.1 PORT=3306 +# +# Edit parameters below to specify SSL parameters: +# +ssl_key= +ssl_cert= +ssl_ca= +ssl_capath= +ssl_cipher= +ssl_crl= +ssl_crlpath= +ssl_verify_server_cert=0 +# +# Client executable path: +# +CLIENT="mysql" SCHEMA="wsrep" MEMB_TABLE="$SCHEMA.membership" @@ -32,8 +51,6 @@ CREATE TABLE $STATUS_TABLE ( prim BOOLEAN /* if component is primary */ ) ENGINE=MEMORY; BEGIN; -DELETE FROM $MEMB_TABLE; -DELETE FROM $STATUS_TABLE; " END="COMMIT;" @@ -43,7 +60,7 @@ configuration_change() local idx=0 - for NODE in $(echo $MEMBERS | sed s/,/\ /g) + for NODE in $(echo "$MEMBERS" | sed s/,/\ /g) do echo "INSERT INTO $MEMB_TABLE VALUES ( $idx, " # Don't forget to properly quote string values @@ -62,17 +79,44 @@ status_update() echo "SET wsrep_on=0; BEGIN; UPDATE $STATUS_TABLE SET status='$STATUS'; COMMIT;" } +trim_string() +{ + if [ -n "${BASH_VERSION:-}" ]; then + local pattern="[![:space:]${2:-}]" + local x="${1#*$pattern}" + local z=${#1} + x=${#x} + if [ $x -ne $z ]; then + local y="${1%$pattern*}" + y=${#y} + x=$(( z-x-1 )) + y=$(( y-x+1 )) + printf '%s' "${1:$x:$y}" + else + printf '' + fi + else + local pattern="[[:space:]${2:-}]" + echo "$1" | sed -E "s/^$pattern+|$pattern+\$//g" + fi +} + COM=status_update # not a configuration change by default -while [ $# -gt 0 ] -do +STATUS="" +CLUSTER_UUID="" +PRIMARY="0" +INDEX="" +MEMBERS="" + +while [ $# -gt 0 ]; do case $1 in --status) - STATUS=$2 + STATUS=$(trim_string "$2") shift ;; --uuid) - CLUSTER_UUID=$2 + CLUSTER_UUID=$(trim_string "$2") shift ;; --primary) @@ -81,22 +125,71 @@ do shift ;; --index) - INDEX=$2 + INDEX=$(trim_string "$2") shift ;; --members) - MEMBERS=$2 + MEMBERS=$(trim_string "$2") shift ;; esac shift done -# Undefined means node is shutting down -if [ "$STATUS" != "Undefined" ] +USER=$(trim_string "$USER") +PSWD=$(trim_string "$PSWD") + +HOST=$(trim_string "$HOST") +PORT=$(trim_string "$PORT") + +case "$HOST" in +\[*) + HOST="${HOST##\[}" + HOST=$(trim_string "${HOST%%\]}") + ;; +esac + +if [ -z "$HOST" ]; then + HOST="${NOTIFY_HOST:-}" +fi +if [ -z "$PORT" ]; then + PORT="${NOTIFY_PORT:-}" +fi + +ssl_key=$(trim_string "$ssl_key"); +ssl_cert=$(trim_string "$ssl_cert"); +ssl_ca=$(trim_string "$ssl_ca"); +ssl_capath=$(trim_string "$ssl_capath"); +ssl_cipher=$(trim_string "$ssl_cipher"); +ssl_crl=$(trim_string "$ssl_crl"); +ssl_crlpath=$(trim_string "$ssl_crlpath"); +ssl_verify_server_cert=$(trim_string "$ssl_verify_server_cert"); + +SSL_PARAM="" + +if [ -n "$ssl_key" -o -n "$ssl_cert" -o \ + -n "$ssl_ca" -o -n "$ssl_capath" -o \ + -n "$ssl_cipher" ] then - $COM | mysql -B -u$USER -p$PSWD -h$HOST -P$PORT + SSL_PARAM=' --ssl' + [ -n "$ssl_key" ] && SSL_PARAM="$SSL_PARAM --ssl-key='$ssl_key'" + [ -n "$ssl_cert" ] && SSL_PARAM="$SSL_PARAM --ssl-cert='$ssl_cert'" + [ -n "$ssl_ca" ] && SSL_PARAM="$SSL_PARAM --ssl-ca='$ssl_ca'" + [ -n "$ssl_capath" ] && SSL_PARAM="$SSL_PARAM --ssl-capath='$ssl_capath'" + [ -n "$ssl_cipher" ] && SSL_PARAM="$SSL_PARAM --ssl-cipher='$ssl_cipher'" + [ -n "$ssl_crl" ] && SSL_PARAM="$SSL_PARAM --ssl-crl='$ssl_crl'" + [ -n "$ssl_crlpath" ] && SSL_PARAM="$SSL_PARAM --ssl-crlpath='$ssl_crlpath'" + if [ -n "$ssl_verify_server_cert" ]; then + if [ $ssl_verify_server_cert -ne 0 ]; then + SSL_PARAM+=' --ssl-verify-server-cert' + fi + fi +fi + +# Undefined means node is shutting down +if [ "$STATUS" != 'Undefined' ]; then + "$COM" | eval "$CLIENT" -B "-u'$USER'"${PSWD:+" -p'$PSWD'"}\ + "-h'$HOST'" "-P$PORT"$SSL_PARAM fi exit 0 -# -- cgit v1.2.1 From 2154a1fc3566e994601a05875fdb65bd6f6d7133 Mon Sep 17 00:00:00 2001 From: Nayuta Yanagisawa Date: Thu, 29 Sep 2022 18:50:29 +0900 Subject: MDEV-29484 Assertion `!trx_free || !trx->locked_connections' failed in spider_free_trx_conn on LOCK TABLES In MDEV-28352, we've modified spider_free_trx_conn() so that it frees a connection only when the connection is locking no remote table. However, when a user connection to a Spider node is disconnected, the corresponding connections to remote data nodes from the Spider node must be freed immediately. Thus, the modification above leads an assertion error on the debug build and a hang on the non-debug build. We partly revert MDEV-28352 to fix the problem. --- .../mysql-test/spider/bugfix/r/mdev_29484.result | 39 ++++++++++++++++++ .../mysql-test/spider/bugfix/t/mdev_29484.cnf | 3 ++ .../mysql-test/spider/bugfix/t/mdev_29484.test | 47 ++++++++++++++++++++++ storage/spider/spd_trx.cc | 14 ++++--- 4 files changed, 98 insertions(+), 5 deletions(-) create mode 100644 storage/spider/mysql-test/spider/bugfix/r/mdev_29484.result create mode 100644 storage/spider/mysql-test/spider/bugfix/t/mdev_29484.cnf create mode 100644 storage/spider/mysql-test/spider/bugfix/t/mdev_29484.test diff --git a/storage/spider/mysql-test/spider/bugfix/r/mdev_29484.result b/storage/spider/mysql-test/spider/bugfix/r/mdev_29484.result new file mode 100644 index 00000000000..cc950ac0bd3 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/r/mdev_29484.result @@ -0,0 +1,39 @@ +# +# MDEV-29484 Assertion `!trx_free || !trx->locked_connections' failed in spider_free_trx_conn on LOCK TABLES +# +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 +connection child2_1; +CREATE DATABASE auto_test_remote; +USE auto_test_remote; +CREATE TABLE tbl_a ( +a INT +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +connection master_1; +CREATE DATABASE auto_test_local; +USE auto_test_local; +CREATE TABLE tbl_a ( +a INT +) ENGINE=Spider DEFAULT CHARSET=utf8 COMMENT='table "tbl_a", srv "s_2_1"'; +CREATE TABLE tbl_b ( +a INT +) ENGINE=Spider DEFAULT CHARSET=utf8; +LOCK TABLES tbl_a WRITE; +LOCK TABLES tbl_b READ, tbl_a READ; +ERROR HY000: Unable to connect to foreign data source: localhost +disconnect master_1; +connect master_1, localhost, root, , , $MASTER_1_MYPORT, $MASTER_1_MYSOCK; +connection child2_1; +DROP DATABASE auto_test_remote; +connection master_1; +DROP DATABASE auto_test_local; +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 diff --git a/storage/spider/mysql-test/spider/bugfix/t/mdev_29484.cnf b/storage/spider/mysql-test/spider/bugfix/t/mdev_29484.cnf new file mode 100644 index 00000000000..05dfd8a0bce --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/mdev_29484.cnf @@ -0,0 +1,3 @@ +!include include/default_mysqld.cnf +!include ../my_1_1.cnf +!include ../my_2_1.cnf diff --git a/storage/spider/mysql-test/spider/bugfix/t/mdev_29484.test b/storage/spider/mysql-test/spider/bugfix/t/mdev_29484.test new file mode 100644 index 00000000000..b6fe3b549f2 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/mdev_29484.test @@ -0,0 +1,47 @@ +--echo # +--echo # MDEV-29484 Assertion `!trx_free || !trx->locked_connections' failed in spider_free_trx_conn on LOCK TABLES +--echo # + +--disable_query_log +--disable_result_log +--source ../../t/test_init.inc +--enable_result_log +--enable_query_log + +--connection child2_1 +CREATE DATABASE auto_test_remote; +USE auto_test_remote; +eval CREATE TABLE tbl_a ( + a INT +) $CHILD2_1_ENGINE $CHILD2_1_CHARSET; + +--connection master_1 +CREATE DATABASE auto_test_local; +USE auto_test_local; + +eval CREATE TABLE tbl_a ( + a INT +) $MASTER_1_ENGINE $MASTER_1_CHARSET COMMENT='table "tbl_a", srv "s_2_1"'; + +eval CREATE TABLE tbl_b ( + a INT +) $MASTER_1_ENGINE $MASTER_1_CHARSET; + +LOCK TABLES tbl_a WRITE; +--error 1429 +LOCK TABLES tbl_b READ, tbl_a READ; + +--disconnect master_1 # crash +--source ../../t/connect_master_1.inc + +--connection child2_1 +DROP DATABASE auto_test_remote; + +--connection master_1 +DROP DATABASE auto_test_local; + +--disable_query_log +--disable_result_log +--source ../../t/test_deinit.inc +--enable_result_log +--enable_query_log diff --git a/storage/spider/spd_trx.cc b/storage/spider/spd_trx.cc index 657d2c3ebe3..316fe23f40e 100644 --- a/storage/spider/spd_trx.cc +++ b/storage/spider/spd_trx.cc @@ -103,7 +103,6 @@ int spider_free_trx_conn(SPIDER_TRX *trx, bool trx_free) HASH *conn_hash= &trx->trx_conn_hash; DBUG_ENTER("spider_free_trx_conn"); - DBUG_ASSERT(!trx_free || !trx->locked_connections); /* Clear the connection queues in any case. */ while ((conn= (SPIDER_CONN *) my_hash_element(conn_hash, loop_count))) @@ -114,11 +113,16 @@ int spider_free_trx_conn(SPIDER_TRX *trx, bool trx_free) if (trx_free || spider_param_conn_recycle_mode(trx->thd) != 2) { - /* Free connections only when no connection is locked. */ - if (!trx->locked_connections) + loop_count= 0; + while ((conn= (SPIDER_CONN *) my_hash_element(&trx->trx_conn_hash, + loop_count))) { - loop_count= 0; - while ((conn= (SPIDER_CONN *) my_hash_element(conn_hash, loop_count))) + if (conn->table_lock) + { + DBUG_ASSERT(!trx_free); + loop_count++; + } + else { spider_free_conn_from_trx(trx, conn, FALSE, trx_free, &loop_count); } -- cgit v1.2.1 From 1562b2c20b5b76ee305942238e3e1e66f9952e29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 Oct 2022 09:30:33 +0300 Subject: MDEV-29666 InnoDB fails to purge secondary index records when indexed virtual columns exist row_purge_get_partial(): Replaces trx_undo_rec_get_partial_row(). Also copy the purge_node_t::ref to the purge_node_t::row. In this way, the clustered index key fields will always be available, even if thanks to commit d384ead0f024995787b1f29bc672c33b0d3d40a8 (MDEV-14799) they would no longer be repeated in the remaining part of the undo log record. --- .../suite/gcol/r/innodb_virtual_debug_purge.result | 3 - .../suite/gcol/t/innodb_virtual_debug_purge.test | 3 - mysql-test/suite/innodb/r/purge_secondary.result | 15 ++ mysql-test/suite/innodb/t/purge_secondary.test | 32 ++++ storage/innobase/include/trx0rec.h | 26 +-- storage/innobase/row/row0purge.cc | 135 +++++++++++++++- storage/innobase/trx/trx0rec.cc | 176 --------------------- 7 files changed, 178 insertions(+), 212 deletions(-) diff --git a/mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result b/mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result index 3ef3679db75..5767aaf63ca 100644 --- a/mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result +++ b/mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result @@ -148,10 +148,7 @@ lock table t write; connection prevent_purge; commit; connection default; -InnoDB 0 transactions not purged disconnect lock_table; -start transaction with consistent snapshot; -commit; InnoDB 0 transactions not purged set global debug_dbug=@old_dbug; drop table t; diff --git a/mysql-test/suite/gcol/t/innodb_virtual_debug_purge.test b/mysql-test/suite/gcol/t/innodb_virtual_debug_purge.test index da203f118a8..20db2cd5533 100644 --- a/mysql-test/suite/gcol/t/innodb_virtual_debug_purge.test +++ b/mysql-test/suite/gcol/t/innodb_virtual_debug_purge.test @@ -189,10 +189,7 @@ lock table t write; connection prevent_purge; commit; connection default; ---source ../../innodb/include/wait_all_purged.inc disconnect lock_table; -start transaction with consistent snapshot; -commit; --source ../../innodb/include/wait_all_purged.inc set global debug_dbug=@old_dbug; drop table t; diff --git a/mysql-test/suite/innodb/r/purge_secondary.result b/mysql-test/suite/innodb/r/purge_secondary.result index 8f20f5baacb..66aaeb9e1a1 100644 --- a/mysql-test/suite/innodb/r/purge_secondary.result +++ b/mysql-test/suite/innodb/r/purge_secondary.result @@ -166,4 +166,19 @@ buffer_LRU_batch_evict_total_pages buffer # FLUSH TABLES t1 FOR EXPORT; # UNLOCK TABLES; DROP TABLE t1; +# +# MDEV-29666 InnoDB fails to purge secondary index records +# when indexed virtual columns exist +# +CREATE TABLE t1 (a INT, b INT, a1 INT AS(a) VIRTUAL, +INDEX(a1),INDEX(b)) ENGINE=InnoDB; +INSERT INTO t1 SET a=1, b=1; +UPDATE t1 SET a=2, b=3; +InnoDB 0 transactions not purged +FLUSH TABLE t1 FOR EXPORT; +page 4: N_RECS=0x0001 +page 5: N_RECS=0x0001 +UNLOCK TABLES; +DROP TABLE t1; +# End of 10.3 tests SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency; diff --git a/mysql-test/suite/innodb/t/purge_secondary.test b/mysql-test/suite/innodb/t/purge_secondary.test index bf702b6b737..530da2c33d9 100644 --- a/mysql-test/suite/innodb/t/purge_secondary.test +++ b/mysql-test/suite/innodb/t/purge_secondary.test @@ -149,4 +149,36 @@ WHERE NAME="buffer_LRU_batch_evict_total_pages" AND COUNT > 0; DROP TABLE t1; +--echo # +--echo # MDEV-29666 InnoDB fails to purge secondary index records +--echo # when indexed virtual columns exist +--echo # + +CREATE TABLE t1 (a INT, b INT, a1 INT AS(a) VIRTUAL, +INDEX(a1),INDEX(b)) ENGINE=InnoDB; +INSERT INTO t1 SET a=1, b=1; + +UPDATE t1 SET a=2, b=3; +let DATADIR=`select @@datadir`; +let PAGE_SIZE=`select @@innodb_page_size`; + +source include/wait_all_purged.inc; +FLUSH TABLE t1 FOR EXPORT; + +perl; +my $ps = $ENV{PAGE_SIZE}; +my $file = "$ENV{DATADIR}/test/t1.ibd"; +open(FILE, "<", $file) or die "Unable to open $file\n"; +die "Unable to read $file\n" unless + sysread(FILE, $_, 6*$ps) == 6*$ps; +close(FILE); +print "page 4: N_RECS=0x", unpack("H*", substr($_, 4 * $ps + 54, 2)), "\n"; +print "page 5: N_RECS=0x", unpack("H*", substr($_, 5 * $ps + 54, 2)), "\n"; +EOF + +UNLOCK TABLES; +DROP TABLE t1; + +--echo # End of 10.3 tests + SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency; diff --git a/storage/innobase/include/trx0rec.h b/storage/innobase/include/trx0rec.h index fa084ff274c..992e7645bc7 100644 --- a/storage/innobase/include/trx0rec.h +++ b/storage/innobase/include/trx0rec.h @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2017, 2019, MariaDB Corporation. +Copyright (c) 2017, 2022, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -136,30 +136,6 @@ trx_undo_update_rec_get_update( mem_heap_t* heap, /*!< in: memory heap from which the memory needed is allocated */ upd_t** upd); /*!< out, own: update vector */ -/*******************************************************************//** -Builds a partial row from an update undo log record, for purge. -It contains the columns which occur as ordering in any index of the table. -Any missing columns are indicated by col->mtype == DATA_MISSING. -@return pointer to remaining part of undo record */ -byte* -trx_undo_rec_get_partial_row( -/*=========================*/ - const byte* ptr, /*!< in: remaining part in update undo log - record of a suitable type, at the start of - the stored index columns; - NOTE that this copy of the undo log record must - be preserved as long as the partial row is - used, as we do NOT copy the data in the - record! */ - dict_index_t* index, /*!< in: clustered index */ - const upd_t* update, /*!< in: updated columns */ - dtuple_t** row, /*!< out, own: partial row */ - ibool ignore_prefix, /*!< in: flag to indicate if we - expect blob prefixes in undo. Used - only in the assertion. */ - mem_heap_t* heap) /*!< in: memory heap from which the memory - needed is allocated */ - MY_ATTRIBUTE((nonnull, warn_unused_result)); /** Report a RENAME TABLE operation. @param[in,out] trx transaction @param[in] table table that is being renamed diff --git a/storage/innobase/row/row0purge.cc b/storage/innobase/row/row0purge.cc index e46d515e8c2..77e772786d5 100644 --- a/storage/innobase/row/row0purge.cc +++ b/storage/innobase/row/row0purge.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 1997, 2017, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2017, 2021, MariaDB Corporation. +Copyright (c) 2017, 2022, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -1004,6 +1004,134 @@ skip_secondaries: row_purge_upd_exist_or_extern_func(node,undo_rec) #endif /* UNIV_DEBUG */ +/** Build a partial row from an update undo log record for purge. +Any columns which occur as ordering in any index of the table are present. +Any missing columns are indicated by col->mtype == DATA_MISSING. + +@param ptr remaining part of the undo log record +@param index clustered index +@param node purge node +@return pointer to remaining part of undo record */ +static byte *row_purge_get_partial(const byte *ptr, const dict_index_t &index, + purge_node_t *node) +{ + bool first_v_col= true; + bool is_undo_log= true; + + ut_ad(index.is_primary()); + ut_ad(index.n_uniq == node->ref->n_fields); + + node->row= dtuple_create_with_vcol(node->heap, index.table->n_cols, + index.table->n_v_cols); + + /* Mark all columns in the row uninitialized, so that + we can distinguish missing fields from fields that are SQL NULL. */ + for (ulint i= 0; i < index.table->n_cols; i++) + node->row->fields[i].type.mtype= DATA_MISSING; + + dtuple_init_v_fld(node->row); + + for (const upd_field_t *uf= node->update->fields, *const ue= + node->update->fields + node->update->n_fields; uf != ue; uf++) + if (!uf->old_v_val) + node->row->fields[dict_index_get_nth_col(&index, uf->field_no)->ind]= + uf->new_val; + + const byte *end_ptr= ptr + mach_read_from_2(ptr); + ptr+= 2; + + while (ptr != end_ptr) + { + dfield_t *dfield; + const byte *field; + const dict_col_t *col; + ulint len; + ulint orig_len; + + ulint field_no= mach_read_next_compressed(&ptr); + + if (field_no >= REC_MAX_N_FIELDS) + { + ptr= trx_undo_read_v_idx(index.table, ptr, first_v_col, &is_undo_log, + &field_no); + first_v_col= false; + + ptr= trx_undo_rec_get_col_val(ptr, &field, &len, &orig_len); + + if (field_no == ULINT_UNDEFINED) + continue; /* there no longer is an index on the virtual column */ + + dict_v_col_t *vcol= dict_table_get_nth_v_col(index.table, field_no); + col =&vcol->m_col; + dfield= dtuple_get_nth_v_field(node->row, vcol->v_pos); + dict_col_copy_type(&vcol->m_col, &dfield->type); + } + else + { + ptr= trx_undo_rec_get_col_val(ptr, &field, &len, &orig_len); + col= dict_index_get_nth_col(&index, field_no); + dfield= dtuple_get_nth_field(node->row, col->ind); + ut_ad(dfield->type.mtype == DATA_MISSING || + dict_col_type_assert_equal(col, &dfield->type)); + ut_ad(dfield->type.mtype == DATA_MISSING || + dfield->len == len || + (len != UNIV_SQL_NULL && len >= UNIV_EXTERN_STORAGE_FIELD)); + dict_col_copy_type(dict_table_get_nth_col(index.table, col->ind), + &dfield->type); + } + + dfield_set_data(dfield, field, len); + + if (len == UNIV_SQL_NULL || len < UNIV_EXTERN_STORAGE_FIELD) + continue; + + spatial_status_t spatial_status= static_cast + ((len & SPATIAL_STATUS_MASK) >> SPATIAL_STATUS_SHIFT); + len&= ~SPATIAL_STATUS_MASK; + + /* Keep compatible with 5.7.9 format. */ + if (spatial_status == SPATIAL_UNKNOWN) + spatial_status= dict_col_get_spatial_status(col); + + switch (UNIV_EXPECT(spatial_status, SPATIAL_NONE)) { + case SPATIAL_ONLY: + ut_ad(len - UNIV_EXTERN_STORAGE_FIELD == DATA_MBR_LEN); + dfield_set_len(dfield, len - UNIV_EXTERN_STORAGE_FIELD); + break; + + case SPATIAL_MIXED: + dfield_set_len(dfield, len - UNIV_EXTERN_STORAGE_FIELD - DATA_MBR_LEN); + break; + + default: + dfield_set_len(dfield, len - UNIV_EXTERN_STORAGE_FIELD); + break; + } + + dfield_set_ext(dfield); + dfield_set_spatial_status(dfield, spatial_status); + + if (!col->ord_part || spatial_status == SPATIAL_ONLY || + node->rec_type == TRX_UNDO_UPD_DEL_REC) + continue; + /* If the prefix of this BLOB column is indexed, ensure that enough + prefix is stored in the undo log record. */ + ut_a(dfield_get_len(dfield) >= BTR_EXTERN_FIELD_REF_SIZE); + ut_a(dict_table_has_atomic_blobs(index.table) || + dfield_get_len(dfield) >= + REC_ANTELOPE_MAX_INDEX_COL_LEN + BTR_EXTERN_FIELD_REF_SIZE); + } + + for (ulint i= 0; i < index.n_uniq; i++) + { + dfield_t &field= node->row->fields[index.fields[i].col->ind]; + if (field.type.mtype == DATA_MISSING) + field= node->ref->fields[i]; + } + + return const_cast(ptr); +} + /***********************************************************//** Parses the row reference and other info in a modify undo log record. @return true if purge operation required */ @@ -1153,10 +1281,7 @@ err_exit: if (!(node->cmpl_info & UPD_NODE_NO_ORD_CHANGE)) { ut_ad(!(node->update->info_bits & REC_INFO_MIN_REC_FLAG)); - ptr = trx_undo_rec_get_partial_row( - ptr, clust_index, node->update, &node->row, - type == TRX_UNDO_UPD_DEL_REC, - node->heap); + ptr = row_purge_get_partial(ptr, *clust_index, node); } else if (node->update->info_bits & REC_INFO_MIN_REC_FLAG) { node->ref = &trx_undo_metadata; } diff --git a/storage/innobase/trx/trx0rec.cc b/storage/innobase/trx/trx0rec.cc index d7ec2a38f19..e25ebc3e22a 100644 --- a/storage/innobase/trx/trx0rec.cc +++ b/storage/innobase/trx/trx0rec.cc @@ -1655,182 +1655,6 @@ trx_undo_update_rec_get_update( return(const_cast(ptr)); } -/*******************************************************************//** -Builds a partial row from an update undo log record, for purge. -It contains the columns which occur as ordering in any index of the table. -Any missing columns are indicated by col->mtype == DATA_MISSING. -@return pointer to remaining part of undo record */ -byte* -trx_undo_rec_get_partial_row( -/*=========================*/ - const byte* ptr, /*!< in: remaining part in update undo log - record of a suitable type, at the start of - the stored index columns; - NOTE that this copy of the undo log record must - be preserved as long as the partial row is - used, as we do NOT copy the data in the - record! */ - dict_index_t* index, /*!< in: clustered index */ - const upd_t* update, /*!< in: updated columns */ - dtuple_t** row, /*!< out, own: partial row */ - ibool ignore_prefix, /*!< in: flag to indicate if we - expect blob prefixes in undo. Used - only in the assertion. */ - mem_heap_t* heap) /*!< in: memory heap from which the memory - needed is allocated */ -{ - const byte* end_ptr; - bool first_v_col = true; - bool is_undo_log = true; - - ut_ad(index->is_primary()); - - *row = dtuple_create_with_vcol( - heap, dict_table_get_n_cols(index->table), - dict_table_get_n_v_cols(index->table)); - - /* Mark all columns in the row uninitialized, so that - we can distinguish missing fields from fields that are SQL NULL. */ - for (ulint i = 0; i < dict_table_get_n_cols(index->table); i++) { - dfield_get_type(dtuple_get_nth_field(*row, i)) - ->mtype = DATA_MISSING; - } - - dtuple_init_v_fld(*row); - - for (const upd_field_t* uf = update->fields, * const ue - = update->fields + update->n_fields; - uf != ue; uf++) { - if (uf->old_v_val) { - continue; - } - ulint c = dict_index_get_nth_col(index, uf->field_no)->ind; - *dtuple_get_nth_field(*row, c) = uf->new_val; - } - - end_ptr = ptr + mach_read_from_2(ptr); - ptr += 2; - - while (ptr != end_ptr) { - dfield_t* dfield; - const byte* field; - ulint field_no; - const dict_col_t* col; - ulint col_no; - ulint len; - ulint orig_len; - bool is_virtual; - - field_no = mach_read_next_compressed(&ptr); - - is_virtual = (field_no >= REC_MAX_N_FIELDS); - - if (is_virtual) { - ptr = trx_undo_read_v_idx( - index->table, ptr, first_v_col, &is_undo_log, - &field_no); - first_v_col = false; - } - - ptr = trx_undo_rec_get_col_val(ptr, &field, &len, &orig_len); - - /* This column could be dropped or no longer indexed */ - if (field_no == ULINT_UNDEFINED) { - ut_ad(is_virtual); - continue; - } - - if (is_virtual) { - dict_v_col_t* vcol = dict_table_get_nth_v_col( - index->table, field_no); - col = &vcol->m_col; - col_no = dict_col_get_no(col); - dfield = dtuple_get_nth_v_field(*row, vcol->v_pos); - dict_col_copy_type( - &vcol->m_col, - dfield_get_type(dfield)); - } else { - col = dict_index_get_nth_col(index, field_no); - col_no = dict_col_get_no(col); - dfield = dtuple_get_nth_field(*row, col_no); - ut_ad(dfield->type.mtype == DATA_MISSING - || dict_col_type_assert_equal(col, - &dfield->type)); - ut_ad(dfield->type.mtype == DATA_MISSING - || dfield->len == len - || (len != UNIV_SQL_NULL - && len >= UNIV_EXTERN_STORAGE_FIELD)); - dict_col_copy_type( - dict_table_get_nth_col(index->table, col_no), - dfield_get_type(dfield)); - } - - dfield_set_data(dfield, field, len); - - if (len != UNIV_SQL_NULL - && len >= UNIV_EXTERN_STORAGE_FIELD) { - spatial_status_t spatial_status; - - /* Decode spatial status. */ - spatial_status = static_cast( - (len & SPATIAL_STATUS_MASK) - >> SPATIAL_STATUS_SHIFT); - len &= ~SPATIAL_STATUS_MASK; - - /* Keep compatible with 5.7.9 format. */ - if (spatial_status == SPATIAL_UNKNOWN) { - spatial_status = - dict_col_get_spatial_status(col); - } - - switch (spatial_status) { - case SPATIAL_ONLY: - ut_ad(len - UNIV_EXTERN_STORAGE_FIELD - == DATA_MBR_LEN); - dfield_set_len( - dfield, - len - UNIV_EXTERN_STORAGE_FIELD); - break; - - case SPATIAL_MIXED: - dfield_set_len( - dfield, - len - UNIV_EXTERN_STORAGE_FIELD - - DATA_MBR_LEN); - break; - - case SPATIAL_NONE: - dfield_set_len( - dfield, - len - UNIV_EXTERN_STORAGE_FIELD); - break; - - case SPATIAL_UNKNOWN: - ut_ad(0); - break; - } - - dfield_set_ext(dfield); - dfield_set_spatial_status(dfield, spatial_status); - - /* If the prefix of this column is indexed, - ensure that enough prefix is stored in the - undo log record. */ - if (!ignore_prefix && col->ord_part - && spatial_status != SPATIAL_ONLY) { - ut_a(dfield_get_len(dfield) - >= BTR_EXTERN_FIELD_REF_SIZE); - ut_a(dict_table_has_atomic_blobs(index->table) - || dfield_get_len(dfield) - >= REC_ANTELOPE_MAX_INDEX_COL_LEN - + BTR_EXTERN_FIELD_REF_SIZE); - } - } - } - - return(const_cast(ptr)); -} - /** Erase the unused undo log page end. @param[in,out] undo_page undo log page @return whether the page contained something */ -- cgit v1.2.1 From df97eb1432f91ad13e562111bda393b3650719d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 Oct 2022 10:09:49 +0300 Subject: Remove HAVE_SNPRINTF This fixes up commit 77c184df7c056da7364e606ac977cc2d3cd826ad which explicitly specifies that we use ISO/IEC 9899:1999 (C99), which includes the snprintf() function. --- client/mysqlimport.c | 6 +----- config.h.cmake | 1 - configure.cmake | 1 - sql/sql_analyse.cc | 4 ---- storage/maria/maria_ftdump.c | 4 ---- storage/myisam/myisam_ftdump.c | 4 ---- 6 files changed, 1 insertion(+), 19 deletions(-) diff --git a/client/mysqlimport.c b/client/mysqlimport.c index c5c1554ca6a..ac0ad793c3f 100644 --- a/client/mysqlimport.c +++ b/client/mysqlimport.c @@ -1,6 +1,6 @@ /* Copyright (c) 2000, 2015, Oracle and/or its affiliates. - Copyright (c) 2011, 2017, MariaDB + Copyright (c) 2011, 2022, MariaDB This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -323,11 +323,7 @@ static int write_to_table(char *filename, MYSQL *mysql) { if (verbose) fprintf(stdout, "Deleting the old data from table %s\n", tablename); -#ifdef HAVE_SNPRINTF snprintf(sql_statement, FN_REFLEN*16+256, "DELETE FROM %s", tablename); -#else - sprintf(sql_statement, "DELETE FROM %s", tablename); -#endif if (mysql_query(mysql, sql_statement)) { db_error_with_table(mysql, tablename); diff --git a/config.h.cmake b/config.h.cmake index 3a4a030fd59..e7754337b1f 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -224,7 +224,6 @@ #cmakedefine HAVE_SIGWAIT 1 #cmakedefine HAVE_SIGWAITINFO 1 #cmakedefine HAVE_SLEEP 1 -#cmakedefine HAVE_SNPRINTF 1 #cmakedefine HAVE_STPCPY 1 #cmakedefine HAVE_STRERROR 1 #cmakedefine HAVE_STRCOLL 1 diff --git a/configure.cmake b/configure.cmake index a899c2fd671..475fd250329 100644 --- a/configure.cmake +++ b/configure.cmake @@ -407,7 +407,6 @@ CHECK_FUNCTION_EXISTS (sigwait HAVE_SIGWAIT) CHECK_FUNCTION_EXISTS (sigwaitinfo HAVE_SIGWAITINFO) CHECK_FUNCTION_EXISTS (sigset HAVE_SIGSET) CHECK_FUNCTION_EXISTS (sleep HAVE_SLEEP) -CHECK_FUNCTION_EXISTS (snprintf HAVE_SNPRINTF) CHECK_FUNCTION_EXISTS (stpcpy HAVE_STPCPY) CHECK_FUNCTION_EXISTS (strcoll HAVE_STRCOLL) CHECK_FUNCTION_EXISTS (strerror HAVE_STRERROR) diff --git a/sql/sql_analyse.cc b/sql/sql_analyse.cc index 61474433506..8e833035b96 100644 --- a/sql/sql_analyse.cc +++ b/sql/sql_analyse.cc @@ -415,13 +415,9 @@ void field_real::add() } else { -#ifdef HAVE_SNPRINTF buff[sizeof(buff)-1]=0; // Safety snprintf(buff, sizeof(buff)-1, "%-.*f", (int) decs, num); length = (uint) strlen(buff); -#else - length= snprintf(buff, sizeof(buff), "%-.*f", (int) decs, num); -#endif // We never need to check further than this end = buff + length - 1 - decs + max_notzero_dec_len; diff --git a/storage/maria/maria_ftdump.c b/storage/maria/maria_ftdump.c index 75ff9bd2642..1a7e1cda59f 100644 --- a/storage/maria/maria_ftdump.c +++ b/storage/maria/maria_ftdump.c @@ -119,11 +119,7 @@ int main(int argc,char *argv[]) if (subkeys.i >= 0) weight= subkeys.f; -#ifdef HAVE_SNPRINTF snprintf(buf,MAX_LEN,"%.*s",(int) keylen,info->lastkey_buff+1); -#else - sprintf(buf,"%.*s",(int) keylen,info->lastkey_buff+1); -#endif my_casedn_str(default_charset_info,buf); total++; lengths[keylen]++; diff --git a/storage/myisam/myisam_ftdump.c b/storage/myisam/myisam_ftdump.c index 7ced701ed5b..2d96a951890 100644 --- a/storage/myisam/myisam_ftdump.c +++ b/storage/myisam/myisam_ftdump.c @@ -117,11 +117,7 @@ int main(int argc,char *argv[]) if (subkeys.i >= 0) weight= subkeys.f; -#ifdef HAVE_SNPRINTF snprintf(buf,MAX_LEN,"%.*s",(int) keylen,info->lastkey+1); -#else - sprintf(buf,"%.*s",(int) keylen,info->lastkey+1); -#endif my_casedn_str(default_charset_info,buf); total++; lengths[keylen]++; -- cgit v1.2.1 From b0c7b4307437508374e764785affa24dd6744110 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 Oct 2022 11:03:46 +0300 Subject: MDEV-29440 fixup: Clean up dict_load_foreigns() dict_load_foreigns(): Remove the constant parameter uncommitted=false. The parameter only had to be added to dict_load_foreign(). Spotted by Alexey Midenkov --- storage/innobase/dict/dict0load.cc | 6 ++---- storage/innobase/handler/ha_innodb.cc | 2 +- storage/innobase/handler/handler0alter.cc | 4 ++-- storage/innobase/include/dict0load.h | 2 -- storage/innobase/row/row0mysql.cc | 2 +- 5 files changed, 6 insertions(+), 10 deletions(-) diff --git a/storage/innobase/dict/dict0load.cc b/storage/innobase/dict/dict0load.cc index b93b5f8edbc..ce31721bd72 100644 --- a/storage/innobase/dict/dict0load.cc +++ b/storage/innobase/dict/dict0load.cc @@ -2495,7 +2495,7 @@ corrupted: if (!table->is_readable()) { /* Don't attempt to load the indexes from disk. */ } else if (err == DB_SUCCESS) { - err = dict_load_foreigns(table->name.m_name, nullptr, false, + err = dict_load_foreigns(table->name.m_name, nullptr, 0, true, ignore_err, fk_tables); if (err != DB_SUCCESS) { @@ -3045,8 +3045,6 @@ dict_load_foreigns( const char* table_name, /*!< in: table name */ const char** col_names, /*!< in: column names, or NULL to use table->col_names */ - bool uncommitted, /*!< in: use READ UNCOMMITTED - transaction isolation level */ trx_id_t trx_id, /*!< in: DDL transaction id, or 0 to check recursive load of tables @@ -3161,7 +3159,7 @@ loop: /* Load the foreign constraint definition to the dictionary cache */ err = len < sizeof fk_id - ? dict_load_foreign(table_name, uncommitted, col_names, trx_id, + ? dict_load_foreign(table_name, false, col_names, trx_id, check_recursive, check_charsets, {fk_id, len}, ignore_err, fk_tables) : DB_CORRUPTION; diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index 9a276a8511d..3594b31140c 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -12826,7 +12826,7 @@ int create_table_info_t::create_table(bool create_fk) if (err == DB_SUCCESS) { /* Check that also referencing constraints are ok */ dict_names_t fk_tables; - err = dict_load_foreigns(m_table_name, nullptr, false, + err = dict_load_foreigns(m_table_name, nullptr, m_trx->id, true, DICT_ERR_IGNORE_NONE, fk_tables); while (err == DB_SUCCESS && !fk_tables.empty()) { diff --git a/storage/innobase/handler/handler0alter.cc b/storage/innobase/handler/handler0alter.cc index f17747be3e3..fa86a920dd8 100644 --- a/storage/innobase/handler/handler0alter.cc +++ b/storage/innobase/handler/handler0alter.cc @@ -9881,7 +9881,7 @@ innobase_update_foreign_cache( dict_names_t fk_tables; err = dict_load_foreigns(user_table->name.m_name, - ctx->col_names, false, 1, true, + ctx->col_names, 1, true, DICT_ERR_IGNORE_NONE, fk_tables); @@ -9892,7 +9892,7 @@ innobase_update_foreign_cache( loaded with "foreign_key checks" off, so let's retry the loading with charset_check is off */ err = dict_load_foreigns(user_table->name.m_name, - ctx->col_names, false, 1, false, + ctx->col_names, 1, false, DICT_ERR_IGNORE_NONE, fk_tables); diff --git a/storage/innobase/include/dict0load.h b/storage/innobase/include/dict0load.h index 3a64adf923c..a94823b4a86 100644 --- a/storage/innobase/include/dict0load.h +++ b/storage/innobase/include/dict0load.h @@ -89,8 +89,6 @@ dict_load_foreigns( const char* table_name, /*!< in: table name */ const char** col_names, /*!< in: column names, or NULL to use table->col_names */ - bool uncommitted, /*!< in: use READ UNCOMMITTED - transaction isolation level */ trx_id_t trx_id, /*!< in: DDL transaction id, or 0 to check recursive load of tables diff --git a/storage/innobase/row/row0mysql.cc b/storage/innobase/row/row0mysql.cc index 0e982f59545..10fe321a702 100644 --- a/storage/innobase/row/row0mysql.cc +++ b/storage/innobase/row/row0mysql.cc @@ -2869,7 +2869,7 @@ row_rename_table_for_mysql( dict_names_t fk_tables; err = dict_load_foreigns( - new_name, nullptr, false, trx->id, + new_name, nullptr, trx->id, !old_is_tmp || trx->check_foreigns, use_fk ? DICT_ERR_IGNORE_NONE -- cgit v1.2.1 From c64e2d60a39573827b49e6d57a0812b092e605b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 Oct 2022 15:15:28 +0300 Subject: MDEV-29710: Disable innodb.table_flags under Valgrind --- mysql-test/suite/innodb/t/table_flags.test | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mysql-test/suite/innodb/t/table_flags.test b/mysql-test/suite/innodb/t/table_flags.test index 13e1fc01dc0..9d417909533 100644 --- a/mysql-test/suite/innodb/t/table_flags.test +++ b/mysql-test/suite/innodb/t/table_flags.test @@ -2,6 +2,12 @@ # Embedded server tests do not support restarting --source include/not_embedded.inc --source include/maybe_debug.inc +# Slow shutdown may take more than 120 seconds under Valgrind, +# causing the server to be (silently) killed. +# Due to that, crash recovery could "heal" the damage that our +# Perl code is inflicting, and the SELECT statements could succeed +# instead of failing with ER_NO_SUCH_TABLE_IN_ENGINE. +--source include/not_valgrind.inc --disable_query_log call mtr.add_suppression("InnoDB: Table `mysql`\\.`innodb_table_stats` not found"); -- cgit v1.2.1 From 380e06f84bbed5684a8f27c2c8fc9ea99b846ae6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 Oct 2022 15:16:03 +0300 Subject: MDEV-29710: Disable sys_vars.innodb_flush_method_func under Valgrind The test could emit some I/O error when run under Valgrind. --- mysql-test/suite/sys_vars/t/innodb_flush_method_func.test | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysql-test/suite/sys_vars/t/innodb_flush_method_func.test b/mysql-test/suite/sys_vars/t/innodb_flush_method_func.test index aad91d0f4a3..7293a99db41 100644 --- a/mysql-test/suite/sys_vars/t/innodb_flush_method_func.test +++ b/mysql-test/suite/sys_vars/t/innodb_flush_method_func.test @@ -1,6 +1,8 @@ --source include/have_innodb.inc # Embedded server tests do not support restarting. --source include/not_embedded.inc +# InnoDB: Cannot read first page of './ibdata1' I/O error +--source include/not_valgrind.inc call mtr.add_suppression("InnoDB: Failed to set .*DIRECT"); --replace_result unbuffered fsync -- cgit v1.2.1 From e0bcff10ef3984ae2354a52fb5f4cfa2c9e6efa0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 Oct 2022 15:18:44 +0300 Subject: MDEV-29710: Disable main.log_slow under Valgrind Under Valgrind, this test may occasionally fail because the sleep-based timeouts of less than 1 second could be exceeded. --- mysql-test/main/log_slow.test | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysql-test/main/log_slow.test b/mysql-test/main/log_slow.test index 64fd8202985..b51777d859e 100644 --- a/mysql-test/main/log_slow.test +++ b/mysql-test/main/log_slow.test @@ -1,3 +1,5 @@ +--source include/no_valgrind_without_big.inc + # # Testing of slow log query options # -- cgit v1.2.1 From 111cbdf3dae9c5f8e256db21c83307e5477055b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 Oct 2022 15:18:58 +0300 Subject: MDEV-29710: Valgrind tests massively fail due to silently killing server on shutdown timeout Let us disable Valgrind on tests that would fail because a server shutdown or a STOP SLAVE command would take longer, causing the test harness to forcibly and silently kill the server due to an exceeded timeout. --- mysql-test/include/master-slave.inc | 2 ++ mysql-test/main/mysql_upgrade.test | 1 + mysql-test/main/plugin_auth.test | 1 + mysql-test/suite/innodb/t/alter_missing_tablespace.test | 1 + mysql-test/suite/innodb/t/ibuf_not_empty.test | 1 + mysql-test/suite/innodb/t/innodb-get-fk.test | 2 ++ mysql-test/suite/innodb/t/missing_tablespaces.test | 1 + mysql-test/suite/innodb/t/xa_recovery.test | 1 + mysql-test/suite/mariabackup/log_page_corruption.test | 1 + mysql-test/suite/rpl/t/rpl_gtid_stop_start.test | 1 + mysql-test/suite/rpl/t/rpl_mdev12179.test | 1 + .../suite/sys_vars/t/innodb_buffer_pool_dump_at_shutdown_basic.test | 1 + 12 files changed, 14 insertions(+) diff --git a/mysql-test/include/master-slave.inc b/mysql-test/include/master-slave.inc index 9ed206b2c22..5b603fbfdb3 100644 --- a/mysql-test/include/master-slave.inc +++ b/mysql-test/include/master-slave.inc @@ -1,3 +1,5 @@ +--source include/no_valgrind_without_big.inc + # ==== Purpose ==== # # Configure two servers to be replication master and slave. diff --git a/mysql-test/main/mysql_upgrade.test b/mysql-test/main/mysql_upgrade.test index 0e42bb81fd9..67ec8de70d9 100644 --- a/mysql-test/main/mysql_upgrade.test +++ b/mysql-test/main/mysql_upgrade.test @@ -2,6 +2,7 @@ -- source include/have_working_dns.inc -- source include/have_innodb.inc -- source include/have_partition.inc +-- source include/no_valgrind_without_big.inc set sql_mode=""; diff --git a/mysql-test/main/plugin_auth.test b/mysql-test/main/plugin_auth.test index 1700a755492..0fde2953352 100644 --- a/mysql-test/main/plugin_auth.test +++ b/mysql-test/main/plugin_auth.test @@ -2,6 +2,7 @@ --source include/not_embedded.inc --source include/mysql_upgrade_preparation.inc --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc SET GLOBAL SQL_MODE=""; SET LOCAL SQL_MODE=""; diff --git a/mysql-test/suite/innodb/t/alter_missing_tablespace.test b/mysql-test/suite/innodb/t/alter_missing_tablespace.test index c1cfc0fa092..20088ef9dd3 100644 --- a/mysql-test/suite/innodb/t/alter_missing_tablespace.test +++ b/mysql-test/suite/innodb/t/alter_missing_tablespace.test @@ -1,5 +1,6 @@ --source include/not_embedded.inc --source include/innodb_page_size.inc +--source include/no_valgrind_without_big.inc --echo # --echo # Bug#13955083 ALLOW IN-PLACE DDL OPERATIONS ON MISSING diff --git a/mysql-test/suite/innodb/t/ibuf_not_empty.test b/mysql-test/suite/innodb/t/ibuf_not_empty.test index 43f09bf6828..72b57fd48ad 100644 --- a/mysql-test/suite/innodb/t/ibuf_not_empty.test +++ b/mysql-test/suite/innodb/t/ibuf_not_empty.test @@ -5,6 +5,7 @@ --source include/not_embedded.inc # The test is not big enough to use change buffering with larger page size. --source include/have_innodb_max_16k.inc +--source include/no_valgrind_without_big.inc SET GLOBAL innodb_purge_rseg_truncate_frequency=1; --disable_query_log diff --git a/mysql-test/suite/innodb/t/innodb-get-fk.test b/mysql-test/suite/innodb/t/innodb-get-fk.test index 47db92a0c6d..b4b170b89f9 100644 --- a/mysql-test/suite/innodb/t/innodb-get-fk.test +++ b/mysql-test/suite/innodb/t/innodb-get-fk.test @@ -2,6 +2,8 @@ --source include/default_charset.inc # need to restart server --source include/not_embedded.inc +--source include/no_valgrind_without_big.inc + CREATE SCHEMA `repro`; CREATE TABLE `repro`.`crew` ( diff --git a/mysql-test/suite/innodb/t/missing_tablespaces.test b/mysql-test/suite/innodb/t/missing_tablespaces.test index 98efc51d7b8..8dc560e8a07 100644 --- a/mysql-test/suite/innodb/t/missing_tablespaces.test +++ b/mysql-test/suite/innodb/t/missing_tablespaces.test @@ -4,6 +4,7 @@ --source include/not_embedded.inc #Windows has trouble creating files/directories with long names --source include/not_windows.inc +--source include/no_valgrind_without_big.inc --echo # --echo # Bug#19419026 WHEN A TABLESPACE IS NOT FOUND, DO NOT REPORT "TABLE NOT FOUND" diff --git a/mysql-test/suite/innodb/t/xa_recovery.test b/mysql-test/suite/innodb/t/xa_recovery.test index bb8e3316860..f0fbb1a94c3 100644 --- a/mysql-test/suite/innodb/t/xa_recovery.test +++ b/mysql-test/suite/innodb/t/xa_recovery.test @@ -1,6 +1,7 @@ --source include/have_innodb.inc # Embedded server does not support restarting. --source include/not_embedded.inc +--source include/no_valgrind_without_big.inc # MDEV-8841 - close tables opened by previous tests, # so they don't get marked crashed when the server gets crashed diff --git a/mysql-test/suite/mariabackup/log_page_corruption.test b/mysql-test/suite/mariabackup/log_page_corruption.test index 0151afb96b4..e14735fd024 100644 --- a/mysql-test/suite/mariabackup/log_page_corruption.test +++ b/mysql-test/suite/mariabackup/log_page_corruption.test @@ -1,4 +1,5 @@ --source include/have_debug.inc +--source include/no_valgrind_without_big.inc --echo ######## --echo # Test for generating "innodb_corrupted_pages" file during full and diff --git a/mysql-test/suite/rpl/t/rpl_gtid_stop_start.test b/mysql-test/suite/rpl/t/rpl_gtid_stop_start.test index 4202aa82516..75f9b5e479a 100644 --- a/mysql-test/suite/rpl/t/rpl_gtid_stop_start.test +++ b/mysql-test/suite/rpl/t/rpl_gtid_stop_start.test @@ -1,6 +1,7 @@ --let $rpl_topology=1->2 --source include/rpl_init.inc --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc --echo *** Test normal shutdown/restart of slave server configured as a GTID slave. *** diff --git a/mysql-test/suite/rpl/t/rpl_mdev12179.test b/mysql-test/suite/rpl/t/rpl_mdev12179.test index a0241784c85..f89f87abe28 100644 --- a/mysql-test/suite/rpl/t/rpl_mdev12179.test +++ b/mysql-test/suite/rpl/t/rpl_mdev12179.test @@ -1,6 +1,7 @@ --source include/have_innodb.inc --let $rpl_topology=1->2 --source include/rpl_init.inc +--source include/no_valgrind_without_big.inc --connection server_2 call mtr.add_suppression("The automatically created table.*name may not be entirely in lowercase"); diff --git a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_at_shutdown_basic.test b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_at_shutdown_basic.test index feb7bf05638..072d1cec1a4 100644 --- a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_at_shutdown_basic.test +++ b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_at_shutdown_basic.test @@ -5,6 +5,7 @@ -- source include/have_innodb.inc # include/restart_mysqld.inc does not work in embedded mode -- source include/not_embedded.inc +-- source include/no_valgrind_without_big.inc # Check the default value SET @orig = @@global.innodb_buffer_pool_dump_at_shutdown; -- cgit v1.2.1 From c0eda62aec1de8b74ca51791df5ad142dee2ef08 Mon Sep 17 00:00:00 2001 From: Vlad Lesin Date: Wed, 31 Aug 2022 17:49:38 +0300 Subject: MDEV-27927 row_sel_try_search_shortcut_for_mysql() does not latch a page, violating read view isolation btr_search_guess_on_hash() would only acquire an index page latch if it is invoked with ahi_latch=NULL. If it's invoked from row_sel_try_search_shortcut_for_mysql() with ahi_latch!=NULL, a page will not be latched, and row_search_mvcc() will get a pointer to the record, which can be changed by some other transaction before the record was stored in result buffer with row_sel_store_mysql_rec() call. ahi_latch argument of btr_cur_search_to_nth_level_func() and btr_pcur_open_with_no_init_func() is used only for row_sel_try_search_shortcut_for_mysql(). btr_cur_search_to_nth_level_func(..., ahi_latch !=0, ...) is invoked only from btr_pcur_open_with_no_init_func(..., ahi_latch !=0, ...), which, in turns, is invoked only from row_sel_try_search_shortcut_for_mysql(). I suppose that separate case with ahi_latch!=0 was intentionally implemented to protect row_sel_store_mysql_rec() call in row_search_mvcc() just after row_sel_try_search_shortcut_for_mysql() call. After the ahi_latch was moved from row_seach_mvcc() to row_sel_try_search_shortcut_for_mysql(), there is no need in it at all if btr_search_guess_on_hash() latches a page unconditionally. And if btr_search_guess_on_hash() latched the page, any access to the record in row_sel_try_search_shortcut_for_mysql() after btr_pcur_open_with_no_init() call will be protected with the page latch. The fix is to remove ahi_latch argument from btr_pcur_open_with_no_init_func(), btr_cur_search_to_nth_level_func() and btr_search_guess_on_hash(). There will not be test, as to test it we need to freeze some SELECT execution in the point between row_sel_try_search_shortcut_for_mysql() and row_sel_store_mysql_rec() calls in row_search_mvcc(), and to change the record in some other transaction to let row_sel_store_mysql_rec() to store changed record in result buffer. Buf we can't do this with the fix, as the page will be latched in btr_search_guess_on_hash() call. --- storage/innobase/btr/btr0btr.cc | 6 +-- storage/innobase/btr/btr0cur.cc | 86 ++++++++++++++--------------------- storage/innobase/btr/btr0pcur.cc | 6 +-- storage/innobase/btr/btr0sea.cc | 59 ++++++++---------------- storage/innobase/buf/buf0buf.cc | 22 ++------- storage/innobase/dict/dict0dict.cc | 4 +- storage/innobase/fts/fts0fts.cc | 4 +- storage/innobase/gis/gis0sea.cc | 8 ++-- storage/innobase/include/btr0cur.h | 77 +++++++++++++------------------ storage/innobase/include/btr0pcur.h | 55 +++++++++------------- storage/innobase/include/btr0pcur.inl | 58 ++++++++++------------- storage/innobase/include/btr0sea.h | 1 - storage/innobase/row/row0ins.cc | 10 ++-- storage/innobase/row/row0log.cc | 6 +-- storage/innobase/row/row0merge.cc | 7 ++- storage/innobase/row/row0sel.cc | 18 ++------ 16 files changed, 160 insertions(+), 267 deletions(-) diff --git a/storage/innobase/btr/btr0btr.cc b/storage/innobase/btr/btr0btr.cc index 2bba68f0f37..f041e35e501 100644 --- a/storage/innobase/btr/btr0btr.cc +++ b/storage/innobase/btr/btr0btr.cc @@ -876,7 +876,7 @@ btr_page_get_father_node_ptr_func( err = btr_cur_search_to_nth_level( index, level + 1, tuple, - PAGE_CUR_LE, latch_mode, cursor, 0, + PAGE_CUR_LE, latch_mode, cursor, file, line, mtr); if (err != DB_SUCCESS) { @@ -2380,7 +2380,7 @@ btr_insert_on_non_leaf_level_func( dberr_t err = btr_cur_search_to_nth_level( index, level, tuple, PAGE_CUR_LE, BTR_CONT_MODIFY_TREE, - &cursor, 0, file, line, mtr); + &cursor, file, line, mtr); if (err != DB_SUCCESS) { ib::warn() << " Error code: " << err @@ -2401,7 +2401,7 @@ btr_insert_on_non_leaf_level_func( btr_cur_search_to_nth_level(index, level, tuple, PAGE_CUR_RTREE_INSERT, BTR_CONT_MODIFY_TREE, - &cursor, 0, file, line, mtr); + &cursor, file, line, mtr); } ut_ad(cursor.flag == BTR_CUR_BINARY); diff --git a/storage/innobase/btr/btr0cur.cc b/storage/innobase/btr/btr0cur.cc index 95ac5db4e70..8788094ec0a 100644 --- a/storage/innobase/btr/btr0cur.cc +++ b/storage/innobase/btr/btr0cur.cc @@ -1102,38 +1102,36 @@ If mode is PAGE_CUR_GE, then up_match will a have a sensible value. If mode is PAGE_CUR_LE , cursor is left at the place where an insert of the search tuple should be performed in the B-tree. InnoDB does an insert immediately after the cursor. Thus, the cursor may end up on a user record, -or on a page infimum record. */ -dberr_t -btr_cur_search_to_nth_level_func( - dict_index_t* index, /*!< in: index */ - ulint level, /*!< in: the tree level of search */ - const dtuple_t* tuple, /*!< in: data tuple; NOTE: n_fields_cmp in - tuple must be set so that it cannot get - compared to the node ptr page number field! */ - page_cur_mode_t mode, /*!< in: PAGE_CUR_L, ...; - Inserts should always be made using - PAGE_CUR_LE to search the position! */ - ulint latch_mode, /*!< in: BTR_SEARCH_LEAF, ..., ORed with - at most one of BTR_INSERT, BTR_DELETE_MARK, - BTR_DELETE, or BTR_ESTIMATE; - cursor->left_block is used to store a pointer - to the left neighbor page, in the cases - BTR_SEARCH_PREV and BTR_MODIFY_PREV; - NOTE that if ahi_latch, we might not have a - cursor page latch, we assume that ahi_latch - protects the record! */ - btr_cur_t* cursor, /*!< in/out: tree cursor; the cursor page is - s- or x-latched, but see also above! */ -#ifdef BTR_CUR_HASH_ADAPT - rw_lock_t* ahi_latch, - /*!< in: currently held btr_search_latch - (in RW_S_LATCH mode), or NULL */ -#endif /* BTR_CUR_HASH_ADAPT */ - const char* file, /*!< in: file name */ - unsigned line, /*!< in: line where called */ - mtr_t* mtr, /*!< in: mtr */ - ib_uint64_t autoinc)/*!< in: PAGE_ROOT_AUTO_INC to be written - (0 if none) */ +or on a page infimum record. +@param index index +@param level the tree level of search +@param tuple data tuple; NOTE: n_fields_cmp in tuple must be set so that + it cannot get compared to the node ptr page number field! +@param mode PAGE_CUR_L, NOTE that if the search is made using a unique + prefix of a record, mode should be PAGE_CUR_LE, not + PAGE_CUR_GE, as the latter may end up on the previous page of + the record! Inserts should always be made using PAGE_CUR_LE + to search the position! +@param latch_mode BTR_SEARCH_LEAF, ..., ORed with at most one of BTR_INSERT, + BTR_DELETE_MARK, BTR_DELETE, or BTR_ESTIMATE; + cursor->left_block is used to store a pointer to the left + neighbor page, in the cases BTR_SEARCH_PREV and + BTR_MODIFY_PREV; NOTE that if ahi_latch, we might not have a + cursor page latch, we assume that ahi_latch protects the + record! +@param cursor tree cursor; the cursor page is s- or x-latched, but see also + above! +@param file file name +@param line line where called +@param mtr mini-transaction +@param autoinc PAGE_ROOT_AUTO_INC to be written (0 if none) +@return DB_SUCCESS on success or error code otherwise */ +dberr_t btr_cur_search_to_nth_level(dict_index_t *index, ulint level, + const dtuple_t *tuple, + page_cur_mode_t mode, ulint latch_mode, + btr_cur_t *cursor, const char *file, + unsigned line, mtr_t *mtr, + ib_uint64_t autoinc) { page_t* page = NULL; /* remove warning */ buf_block_t* block; @@ -1301,15 +1299,14 @@ btr_cur_search_to_nth_level_func( && mode != PAGE_CUR_LE_OR_EXTENDS # endif /* PAGE_CUR_LE_OR_EXTENDS */ && !dict_index_is_spatial(index) - /* If !ahi_latch, we do a dirty read of + /* We do a dirty read of btr_search_enabled below, and btr_search_guess_on_hash() will have to check it again. */ && btr_search_enabled && !modify_external && !(tuple->info_bits & REC_INFO_MIN_REC_FLAG) && btr_search_guess_on_hash(index, info, tuple, mode, - latch_mode, cursor, - ahi_latch, mtr)) { + latch_mode, cursor, mtr)) { /* Search using the hash index succeeded */ @@ -1330,13 +1327,6 @@ btr_cur_search_to_nth_level_func( /* If the hash search did not succeed, do binary search down the tree */ -#ifdef BTR_CUR_HASH_ADAPT - if (ahi_latch) { - /* Release possible search latch to obey latching order */ - rw_lock_s_unlock(ahi_latch); - } -#endif /* BTR_CUR_HASH_ADAPT */ - /* Store the position of the tree latch we push to mtr so that we know how to release it when we have latched leaf node(s) */ @@ -2397,12 +2387,6 @@ func_exit: cursor->rtr_info->mbr_adj = true; } -#ifdef BTR_CUR_HASH_ADAPT - if (ahi_latch) { - rw_lock_s_lock(ahi_latch); - } -#endif /* BTR_CUR_HASH_ADAPT */ - DBUG_RETURN(err); } @@ -6232,8 +6216,7 @@ btr_estimate_n_rows_in_range_low( btr_cur_search_to_nth_level(index, 0, tuple1, mode1, BTR_SEARCH_LEAF | BTR_ESTIMATE, - &cursor, 0, - __FILE__, __LINE__, &mtr); + &cursor, __FILE__, __LINE__, &mtr); ut_ad(!page_rec_is_infimum(btr_cur_get_rec(&cursor))); @@ -6286,8 +6269,7 @@ btr_estimate_n_rows_in_range_low( btr_cur_search_to_nth_level(index, 0, tuple2, mode2, BTR_SEARCH_LEAF | BTR_ESTIMATE, - &cursor, 0, - __FILE__, __LINE__, &mtr); + &cursor, __FILE__, __LINE__, &mtr); const rec_t* rec = btr_cur_get_rec(&cursor); diff --git a/storage/innobase/btr/btr0pcur.cc b/storage/innobase/btr/btr0pcur.cc index 53963caa023..ac6cd298097 100644 --- a/storage/innobase/btr/btr0pcur.cc +++ b/storage/innobase/btr/btr0pcur.cc @@ -424,11 +424,7 @@ btr_pcur_t::restore_position(ulint restore_latch_mode, const char *file, } btr_pcur_open_with_no_init_func(index, tuple, mode, restore_latch_mode, - this, -#ifdef BTR_CUR_HASH_ADAPT - NULL, -#endif /* BTR_CUR_HASH_ADAPT */ - file, line, mtr); + this, file, line, mtr); /* Restore the old search mode */ search_mode = old_mode; diff --git a/storage/innobase/btr/btr0sea.cc b/storage/innobase/btr/btr0sea.cc index 4b4bba9a941..ff5a0e1e737 100644 --- a/storage/innobase/btr/btr0sea.cc +++ b/storage/innobase/btr/btr0sea.cc @@ -895,8 +895,6 @@ both have sensible values. we assume the caller uses his search latch to protect the record! @param[out] cursor tree cursor -@param[in] ahi_latch the adaptive hash index latch being held, - or NULL @param[in] mtr mini transaction @return whether the search succeeded */ bool @@ -907,7 +905,6 @@ btr_search_guess_on_hash( ulint mode, ulint latch_mode, btr_cur_t* cursor, - rw_lock_t* ahi_latch, mtr_t* mtr) { ulint fold; @@ -916,8 +913,6 @@ btr_search_guess_on_hash( btr_cur_t cursor2; btr_pcur_t pcur; #endif - ut_ad(!ahi_latch || rw_lock_own_flagged( - ahi_latch, RW_LOCK_FLAG_X | RW_LOCK_FLAG_S)); if (!btr_search_enabled) { return false; @@ -925,7 +920,6 @@ btr_search_guess_on_hash( ut_ad(index && info && tuple && cursor && mtr); ut_ad(!dict_index_is_ibuf(index)); - ut_ad(!ahi_latch || ahi_latch == btr_get_search_latch(index)); ut_ad((latch_mode == BTR_SEARCH_LEAF) || (latch_mode == BTR_MODIFY_LEAF)); @@ -956,28 +950,21 @@ btr_search_guess_on_hash( cursor->fold = fold; cursor->flag = BTR_CUR_HASH; - rw_lock_t* use_latch = ahi_latch ? NULL : btr_get_search_latch(index); + rw_lock_t* ahi_latch = btr_get_search_latch(index); const rec_t* rec; - if (use_latch) { - rw_lock_s_lock(use_latch); + rw_lock_s_lock(ahi_latch); - if (!btr_search_enabled) { - goto fail; - } - } else { - ut_ad(btr_search_enabled); - ut_ad(rw_lock_own(ahi_latch, RW_LOCK_S)); + if (!btr_search_enabled) { + goto fail; } rec = static_cast( ha_search_and_get_data(btr_get_search_table(index), fold)); if (!rec) { - if (use_latch) { fail: - rw_lock_s_unlock(use_latch); - } + rw_lock_s_unlock(ahi_latch); btr_search_failure(info, cursor); return false; @@ -985,25 +972,19 @@ fail: buf_block_t* block = buf_block_from_ahi(rec); - if (use_latch) { - if (!buf_page_get_known_nowait( - latch_mode, block, BUF_MAKE_YOUNG, - __FILE__, __LINE__, mtr)) { - goto fail; - } + if (!buf_page_get_known_nowait(latch_mode, block, BUF_MAKE_YOUNG, + __FILE__, __LINE__, mtr)) { + goto fail; + } - const bool fail = index != block->index - && index_id == block->index->id; - ut_a(!fail || block->index->freed()); - rw_lock_s_unlock(use_latch); + const bool fail = index != block->index + && index_id == block->index->id; + ut_a(!fail || block->index->freed()); + ut_ad(fail || !block->page.file_page_was_freed); + rw_lock_s_unlock(ahi_latch); - buf_block_dbg_add_level(block, SYNC_TREE_NODE_FROM_HASH); - if (UNIV_UNLIKELY(fail)) { - goto fail_and_release_page; - } - } else if (UNIV_UNLIKELY(index != block->index - && index_id == block->index->id)) { - ut_a(block->index->freed()); + buf_block_dbg_add_level(block, SYNC_TREE_NODE_FROM_HASH); + if (UNIV_UNLIKELY(fail)) { goto fail_and_release_page; } @@ -1012,9 +993,7 @@ fail: ut_ad(buf_block_get_state(block) == BUF_BLOCK_REMOVE_HASH); fail_and_release_page: - if (!ahi_latch) { - btr_leaf_page_release(block, latch_mode, mtr); - } + btr_leaf_page_release(block, latch_mode, mtr); btr_search_failure(info, cursor); return false; @@ -1032,7 +1011,7 @@ fail_and_release_page: record to determine if our guess for the cursor position is right. */ if (index_id != btr_page_get_index_id(block->frame) - || !btr_search_check_guess(cursor, !!ahi_latch, tuple, mode)) { + || !btr_search_check_guess(cursor, 0, tuple, mode)) { goto fail_and_release_page; } @@ -1081,7 +1060,7 @@ fail_and_release_page: #ifdef UNIV_SEARCH_PERF_STAT btr_search_n_succ++; #endif - if (!ahi_latch && buf_page_peek_if_too_old(&block->page)) { + if (buf_page_peek_if_too_old(&block->page)) { buf_page_make_young(&block->page); } diff --git a/storage/innobase/buf/buf0buf.cc b/storage/innobase/buf/buf0buf.cc index c50c645342a..01111157920 100644 --- a/storage/innobase/buf/buf0buf.cc +++ b/storage/innobase/buf/buf0buf.cc @@ -4815,6 +4815,10 @@ buf_page_get_known_nowait( ut_a(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE); + /* The check for the page was not freed would already have been + performed when the block descriptor was acquired by the thread for the + first time.*/ + buf_block_buf_fix_inc(block, file, line); buf_page_set_accessed(&block->page); @@ -4861,24 +4865,6 @@ buf_page_get_known_nowait( ut_a(buf_block_get_state(block) == BUF_BLOCK_FILE_PAGE); #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */ -#ifdef UNIV_DEBUG - if (mode != BUF_KEEP_OLD) { - /* If mode == BUF_KEEP_OLD, we are executing an I/O - completion routine. Avoid a bogus assertion failure - when ibuf_merge_or_delete_for_page() is processing a - page that was just freed due to DROP INDEX, or - deleting a record from SYS_INDEXES. This check will be - skipped in recv_recover_page() as well. */ - -# ifdef BTR_CUR_HASH_ADAPT - ut_ad(!block->page.file_page_was_freed - || btr_search_check_marked_free_index(block)); -# else /* BTR_CUR_HASH_ADAPT */ - ut_ad(!block->page.file_page_was_freed); -# endif /* BTR_CUR_HASH_ADAPT */ - } -#endif /* UNIV_DEBUG */ - buf_pool->stat.n_page_gets++; return(TRUE); diff --git a/storage/innobase/dict/dict0dict.cc b/storage/innobase/dict/dict0dict.cc index eb0f10d55f4..d843115082e 100644 --- a/storage/innobase/dict/dict0dict.cc +++ b/storage/innobase/dict/dict0dict.cc @@ -5435,7 +5435,7 @@ dict_set_corrupted( btr_cur_search_to_nth_level(sys_index, 0, tuple, PAGE_CUR_LE, BTR_MODIFY_LEAF, - &cursor, 0, __FILE__, __LINE__, &mtr); + &cursor, __FILE__, __LINE__, &mtr); if (cursor.low_match == dtuple_get_n_fields(tuple)) { /* UPDATE SYS_INDEXES SET TYPE=index->type @@ -5538,7 +5538,7 @@ dict_index_set_merge_threshold( btr_cur_search_to_nth_level(sys_index, 0, tuple, PAGE_CUR_GE, BTR_MODIFY_LEAF, - &cursor, 0, __FILE__, __LINE__, &mtr); + &cursor, __FILE__, __LINE__, &mtr); if (cursor.up_match == dtuple_get_n_fields(tuple) && rec_get_n_fields_old(btr_cur_get_rec(&cursor)) diff --git a/storage/innobase/fts/fts0fts.cc b/storage/innobase/fts/fts0fts.cc index b16bb6611b0..dc8d529d79c 100644 --- a/storage/innobase/fts/fts0fts.cc +++ b/storage/innobase/fts/fts0fts.cc @@ -3437,7 +3437,7 @@ fts_add_doc_by_id( btr_pcur_open_with_no_init( fts_id_index, tuple, PAGE_CUR_LE, BTR_SEARCH_LEAF, - &pcur, 0, &mtr); + &pcur, &mtr); /* If we have a match, add the data to doc structure */ if (btr_pcur_get_low_match(&pcur) == 1) { @@ -3475,7 +3475,7 @@ fts_add_doc_by_id( btr_pcur_open_with_no_init( clust_index, clust_ref, PAGE_CUR_LE, - BTR_SEARCH_LEAF, &clust_pcur, 0, &mtr); + BTR_SEARCH_LEAF, &clust_pcur, &mtr); doc_pcur = &clust_pcur; clust_rec = btr_pcur_get_rec(&clust_pcur); diff --git a/storage/innobase/gis/gis0sea.cc b/storage/innobase/gis/gis0sea.cc index e5ba43faa0b..5e52b7a70c4 100644 --- a/storage/innobase/gis/gis0sea.cc +++ b/storage/innobase/gis/gis0sea.cc @@ -588,7 +588,7 @@ rtr_pcur_open_low( } btr_cur_search_to_nth_level(index, level, tuple, mode, latch_mode, - btr_cursor, 0, file, line, mtr); + btr_cursor, file, line, mtr); cursor->pos_state = BTR_PCUR_IS_POSITIONED; cursor->trx_if_known = NULL; @@ -756,8 +756,7 @@ static void rtr_get_father_node( /* root split, and search the new root */ btr_cur_search_to_nth_level( index, level, tuple, PAGE_CUR_RTREE_LOCATE, - BTR_CONT_MODIFY_TREE, btr_cur, 0, - __FILE__, __LINE__, mtr); + BTR_CONT_MODIFY_TREE, btr_cur, __FILE__, __LINE__, mtr); } else { /* btr_validate */ @@ -766,8 +765,7 @@ static void rtr_get_father_node( btr_cur_search_to_nth_level( index, level, tuple, PAGE_CUR_RTREE_LOCATE, - BTR_CONT_MODIFY_TREE, btr_cur, 0, - __FILE__, __LINE__, mtr); + BTR_CONT_MODIFY_TREE, btr_cur, __FILE__, __LINE__, mtr); rec = btr_cur_get_rec(btr_cur); n_fields = dtuple_get_n_fields_cmp(tuple); diff --git a/storage/innobase/include/btr0cur.h b/storage/innobase/include/btr0cur.h index db903df925c..5755c7c5bcf 100644 --- a/storage/innobase/include/btr0cur.h +++ b/storage/innobase/include/btr0cur.h @@ -170,56 +170,41 @@ btr_cur_optimistic_latch_leaves( unsigned line, mtr_t* mtr); -/********************************************************************//** -Searches an index tree and positions a tree cursor on a given level. +/** Searches an index tree and positions a tree cursor on a given level. NOTE: n_fields_cmp in tuple must be set so that it cannot be compared to node pointer page number fields on the upper levels of the tree! Note that if mode is PAGE_CUR_LE, which is used in inserts, then cursor->up_match and cursor->low_match both will have sensible values. -If mode is PAGE_CUR_GE, then up_match will a have a sensible value. */ -dberr_t -btr_cur_search_to_nth_level_func( - dict_index_t* index, /*!< in: index */ - ulint level, /*!< in: the tree level of search */ - const dtuple_t* tuple, /*!< in: data tuple; NOTE: n_fields_cmp in - tuple must be set so that it cannot get - compared to the node ptr page number field! */ - page_cur_mode_t mode, /*!< in: PAGE_CUR_L, ...; - NOTE that if the search is made using a unique - prefix of a record, mode should be PAGE_CUR_LE, - not PAGE_CUR_GE, as the latter may end up on - the previous page of the record! Inserts - should always be made using PAGE_CUR_LE to - search the position! */ - ulint latch_mode, /*!< in: BTR_SEARCH_LEAF, ..., ORed with - at most one of BTR_INSERT, BTR_DELETE_MARK, - BTR_DELETE, or BTR_ESTIMATE; - cursor->left_block is used to store a pointer - to the left neighbor page, in the cases - BTR_SEARCH_PREV and BTR_MODIFY_PREV; - NOTE that if ahi_latch, we might not have a - cursor page latch, we assume that ahi_latch - protects the record! */ - btr_cur_t* cursor, /*!< in/out: tree cursor; the cursor page is - s- or x-latched, but see also above! */ -#ifdef BTR_CUR_HASH_ADAPT - rw_lock_t* ahi_latch, - /*!< in: currently held btr_search_latch - (in RW_S_LATCH mode), or NULL */ -#endif /* BTR_CUR_HASH_ADAPT */ - const char* file, /*!< in: file name */ - unsigned line, /*!< in: line where called */ - mtr_t* mtr, /*!< in/out: mini-transaction */ - ib_uint64_t autoinc = 0); - /*!< in: PAGE_ROOT_AUTO_INC to be written - (0 if none) */ -#ifdef BTR_CUR_HASH_ADAPT -# define btr_cur_search_to_nth_level(i,l,t,m,lm,c,a,fi,li,mtr) \ - btr_cur_search_to_nth_level_func(i,l,t,m,lm,c,a,fi,li,mtr) -#else /* BTR_CUR_HASH_ADAPT */ -# define btr_cur_search_to_nth_level(i,l,t,m,lm,c,a,fi,li,mtr) \ - btr_cur_search_to_nth_level_func(i,l,t,m,lm,c,fi,li,mtr) -#endif /* BTR_CUR_HASH_ADAPT */ +If mode is PAGE_CUR_GE, then up_match will a have a sensible value. +@param index index +@param level the tree level of search +@param tuple data tuple; NOTE: n_fields_cmp in tuple must be set so that + it cannot get compared to the node ptr page number field! +@param mode PAGE_CUR_L, NOTE that if the search is made using a unique + prefix of a record, mode should be PAGE_CUR_LE, not + PAGE_CUR_GE, as the latter may end up on the previous page of + the record! Inserts should always be made using PAGE_CUR_LE + to search the position! +@param latch_mode BTR_SEARCH_LEAF, ..., ORed with at most one of BTR_INSERT, + BTR_DELETE_MARK, BTR_DELETE, or BTR_ESTIMATE; + cursor->left_block is used to store a pointer to the left + neighbor page, in the cases BTR_SEARCH_PREV and + BTR_MODIFY_PREV; NOTE that if ahi_latch, we might not have a + cursor page latch, we assume that ahi_latch protects the + record! +@param cursor tree cursor; the cursor page is s- or x-latched, but see also + above! +@param file file name +@param line line where called +@param mtr mini-transaction +@param autoinc PAGE_ROOT_AUTO_INC to be written (0 if none) +@return DB_SUCCESS on success or error code otherwise */ +dberr_t btr_cur_search_to_nth_level(dict_index_t *index, ulint level, + const dtuple_t *tuple, + page_cur_mode_t mode, ulint latch_mode, + btr_cur_t *cursor, const char *file, + unsigned line, mtr_t *mtr, + ib_uint64_t autoinc= 0); /*****************************************************************//** Opens a cursor at either end of an index. diff --git a/storage/innobase/include/btr0pcur.h b/storage/innobase/include/btr0pcur.h index bbb9831ae93..ca17dd95aa7 100644 --- a/storage/innobase/include/btr0pcur.h +++ b/storage/innobase/include/btr0pcur.h @@ -116,41 +116,30 @@ btr_pcur_open_low( mtr_t* mtr); /*!< in: mtr */ #define btr_pcur_open(i,t,md,l,c,m) \ btr_pcur_open_low(i,0,t,md,l,c,__FILE__,__LINE__,0,m) -/**************************************************************//** -Opens an persistent cursor to an index tree without initializing the -cursor. */ +/** Opens an persistent cursor to an index tree without initializing the +cursor. +@param index index +@param tuple tuple on which search done +@param mode PAGE_CUR_L, ...; NOTE that if the search is made using a + unique prefix of a record, mode should be PAGE_CUR_LE, not + PAGE_CUR_GE, as the latter may end up on the previous page of + the record! +@param latch_mode BTR_SEARCH_LEAF, ...; NOTE that if ahi_latch then we might + not acquire a cursor page latch, but assume that the + ahi_latch protects the record! +@param cursor memory buffer for persistent cursor +@param file file name +@param line line where called +@param mtr mtr +@return DB_SUCCESS on success or error code otherwise. */ UNIV_INLINE -dberr_t -btr_pcur_open_with_no_init_func( -/*============================*/ - dict_index_t* index, /*!< in: index */ - const dtuple_t* tuple, /*!< in: tuple on which search done */ - page_cur_mode_t mode, /*!< in: PAGE_CUR_L, ...; - NOTE that if the search is made using a unique - prefix of a record, mode should be - PAGE_CUR_LE, not PAGE_CUR_GE, as the latter - may end up on the previous page of the - record! */ - ulint latch_mode,/*!< in: BTR_SEARCH_LEAF, ...; - NOTE that if ahi_latch then we might not - acquire a cursor page latch, but assume - that the ahi_latch protects the record! */ - btr_pcur_t* cursor, /*!< in: memory buffer for persistent cursor */ -#ifdef BTR_CUR_HASH_ADAPT - rw_lock_t* ahi_latch, - /*!< in: adaptive hash index latch held - by the caller, or NULL if none */ -#endif /* BTR_CUR_HASH_ADAPT */ - const char* file, /*!< in: file name */ - unsigned line, /*!< in: line where called */ - mtr_t* mtr); /*!< in: mtr */ -#ifdef BTR_CUR_HASH_ADAPT -# define btr_pcur_open_with_no_init(ix,t,md,l,cur,ahi,m) \ - btr_pcur_open_with_no_init_func(ix,t,md,l,cur,ahi,__FILE__,__LINE__,m) -#else /* BTR_CUR_HASH_ADAPT */ -# define btr_pcur_open_with_no_init(ix,t,md,l,cur,ahi,m) \ +dberr_t btr_pcur_open_with_no_init_func(dict_index_t *index, + const dtuple_t *tuple, + page_cur_mode_t mode, ulint latch_mode, + btr_pcur_t *cursor, const char *file, + unsigned line, mtr_t *mtr); +# define btr_pcur_open_with_no_init(ix,t,md,l,cur,m) \ btr_pcur_open_with_no_init_func(ix,t,md,l,cur,__FILE__,__LINE__,m) -#endif /* BTR_CUR_HASH_ADAPT */ /*****************************************************************//** Opens a persistent cursor at either end of an index. */ diff --git a/storage/innobase/include/btr0pcur.inl b/storage/innobase/include/btr0pcur.inl index d93da475a1f..05f61b903ff 100644 --- a/storage/innobase/include/btr0pcur.inl +++ b/storage/innobase/include/btr0pcur.inl @@ -438,11 +438,8 @@ btr_pcur_open_low( ut_ad(!dict_index_is_spatial(index)); - err = btr_cur_search_to_nth_level_func( + err = btr_cur_search_to_nth_level( index, level, tuple, mode, latch_mode, btr_cursor, -#ifdef BTR_CUR_HASH_ADAPT - NULL, -#endif /* BTR_CUR_HASH_ADAPT */ file, line, mtr, autoinc); if (UNIV_UNLIKELY(err != DB_SUCCESS)) { @@ -462,34 +459,28 @@ btr_pcur_open_low( return(err); } -/**************************************************************//** -Opens an persistent cursor to an index tree without initializing the -cursor. */ +/** Opens an persistent cursor to an index tree without initializing the +cursor. +@param index index +@param tuple tuple on which search done +@param mode PAGE_CUR_L, ...; NOTE that if the search is made using a + unique prefix of a record, mode should be PAGE_CUR_LE, not + PAGE_CUR_GE, as the latter may end up on the previous page of + the record! +@param latch_mode BTR_SEARCH_LEAF, ...; NOTE that if ahi_latch then we might + not acquire a cursor page latch, but assume that the + ahi_latch protects the record! +@param cursor memory buffer for persistent cursor +@param file file name +@param line line where called +@param mtr mtr +@return DB_SUCCESS on success or error code otherwise. */ UNIV_INLINE -dberr_t -btr_pcur_open_with_no_init_func( -/*============================*/ - dict_index_t* index, /*!< in: index */ - const dtuple_t* tuple, /*!< in: tuple on which search done */ - page_cur_mode_t mode, /*!< in: PAGE_CUR_L, ...; - NOTE that if the search is made using a unique - prefix of a record, mode should be - PAGE_CUR_LE, not PAGE_CUR_GE, as the latter - may end up on the previous page of the - record! */ - ulint latch_mode,/*!< in: BTR_SEARCH_LEAF, ...; - NOTE that if ahi_latch then we might not - acquire a cursor page latch, but assume - that the ahi_latch protects the record! */ - btr_pcur_t* cursor, /*!< in: memory buffer for persistent cursor */ -#ifdef BTR_CUR_HASH_ADAPT - rw_lock_t* ahi_latch, - /*!< in: adaptive hash index latch held - by the caller, or NULL if none */ -#endif /* BTR_CUR_HASH_ADAPT */ - const char* file, /*!< in: file name */ - unsigned line, /*!< in: line where called */ - mtr_t* mtr) /*!< in: mtr */ +dberr_t btr_pcur_open_with_no_init_func(dict_index_t *index, + const dtuple_t *tuple, + page_cur_mode_t mode, ulint latch_mode, + btr_pcur_t *cursor, const char *file, + unsigned line, mtr_t *mtr) { btr_cur_t* btr_cursor; dberr_t err = DB_SUCCESS; @@ -501,11 +492,8 @@ btr_pcur_open_with_no_init_func( btr_cursor = btr_pcur_get_btr_cur(cursor); - err = btr_cur_search_to_nth_level_func( + err = btr_cur_search_to_nth_level( index, 0, tuple, mode, latch_mode, btr_cursor, -#ifdef BTR_CUR_HASH_ADAPT - ahi_latch, -#endif /* BTR_CUR_HASH_ADAPT */ file, line, mtr); cursor->pos_state = BTR_PCUR_IS_POSITIONED; diff --git a/storage/innobase/include/btr0sea.h b/storage/innobase/include/btr0sea.h index 8277be8ac14..f217f8213f8 100644 --- a/storage/innobase/include/btr0sea.h +++ b/storage/innobase/include/btr0sea.h @@ -80,7 +80,6 @@ btr_search_guess_on_hash( ulint mode, ulint latch_mode, btr_cur_t* cursor, - rw_lock_t* ahi_latch, mtr_t* mtr); /** Move or delete hash entries for moved records, usually in a page split. diff --git a/storage/innobase/row/row0ins.cc b/storage/innobase/row/row0ins.cc index 82ecc02f2ec..f03381a2fcf 100644 --- a/storage/innobase/row/row0ins.cc +++ b/storage/innobase/row/row0ins.cc @@ -1137,7 +1137,7 @@ row_ins_foreign_check_on_constraint( tmp_heap); btr_pcur_open_with_no_init(clust_index, ref, PAGE_CUR_LE, BTR_SEARCH_LEAF, - cascade->pcur, 0, mtr); + cascade->pcur, mtr); clust_rec = btr_pcur_get_rec(cascade->pcur); clust_block = btr_pcur_get_block(cascade->pcur); @@ -2958,7 +2958,7 @@ row_ins_sec_index_entry_low( err = btr_cur_search_to_nth_level( index, 0, entry, PAGE_CUR_RTREE_INSERT, search_mode, - &cursor, 0, __FILE__, __LINE__, &mtr); + &cursor, __FILE__, __LINE__, &mtr); if (mode == BTR_MODIFY_LEAF && rtr_info.mbr_adj) { mtr_commit(&mtr); @@ -2977,7 +2977,7 @@ row_ins_sec_index_entry_low( err = btr_cur_search_to_nth_level( index, 0, entry, PAGE_CUR_RTREE_INSERT, search_mode, - &cursor, 0, __FILE__, __LINE__, &mtr); + &cursor, __FILE__, __LINE__, &mtr); mode = BTR_MODIFY_TREE; } @@ -2989,7 +2989,7 @@ row_ins_sec_index_entry_low( err = btr_cur_search_to_nth_level( index, 0, entry, PAGE_CUR_LE, search_mode, - &cursor, 0, __FILE__, __LINE__, &mtr); + &cursor, __FILE__, __LINE__, &mtr); } if (err != DB_SUCCESS) { @@ -3083,7 +3083,7 @@ row_ins_sec_index_entry_low( index, 0, entry, PAGE_CUR_LE, (search_mode & ~(BTR_INSERT | BTR_IGNORE_SEC_UNIQUE)), - &cursor, 0, __FILE__, __LINE__, &mtr); + &cursor, __FILE__, __LINE__, &mtr); } if (row_ins_must_modify_rec(&cursor)) { diff --git a/storage/innobase/row/row0log.cc b/storage/innobase/row/row0log.cc index 8bf70f61d07..c91f5b96617 100644 --- a/storage/innobase/row/row0log.cc +++ b/storage/innobase/row/row0log.cc @@ -3354,7 +3354,7 @@ row_log_apply_op_low( has_index_lock ? BTR_MODIFY_TREE : BTR_MODIFY_LEAF, - &cursor, 0, __FILE__, __LINE__, + &cursor, __FILE__, __LINE__, &mtr); ut_ad(dict_index_get_n_unique(index) > 0); @@ -3403,7 +3403,7 @@ row_log_apply_op_low( index->set_modified(mtr); btr_cur_search_to_nth_level( index, 0, entry, PAGE_CUR_LE, - BTR_MODIFY_TREE, &cursor, 0, + BTR_MODIFY_TREE, &cursor, __FILE__, __LINE__, &mtr); /* No other thread than the current one @@ -3506,7 +3506,7 @@ insert_the_rec: index->set_modified(mtr); btr_cur_search_to_nth_level( index, 0, entry, PAGE_CUR_LE, - BTR_MODIFY_TREE, &cursor, 0, + BTR_MODIFY_TREE, &cursor, __FILE__, __LINE__, &mtr); } diff --git a/storage/innobase/row/row0merge.cc b/storage/innobase/row/row0merge.cc index 3fee9d0e6da..3d729b54f7c 100644 --- a/storage/innobase/row/row0merge.cc +++ b/storage/innobase/row/row0merge.cc @@ -163,7 +163,7 @@ public: btr_cur_search_to_nth_level(m_index, 0, dtuple, PAGE_CUR_RTREE_INSERT, BTR_MODIFY_LEAF, &ins_cur, - 0, __FILE__, __LINE__, + __FILE__, __LINE__, &mtr); /* It need to update MBR in parent entry, @@ -179,7 +179,7 @@ public: btr_cur_search_to_nth_level( m_index, 0, dtuple, PAGE_CUR_RTREE_INSERT, - BTR_MODIFY_TREE, &ins_cur, 0, + BTR_MODIFY_TREE, &ins_cur, __FILE__, __LINE__, &mtr); } @@ -202,8 +202,7 @@ public: m_index, 0, dtuple, PAGE_CUR_RTREE_INSERT, BTR_MODIFY_TREE, - &ins_cur, 0, - __FILE__, __LINE__, &mtr); + &ins_cur, __FILE__, __LINE__, &mtr); error = btr_cur_pessimistic_insert( flag, &ins_cur, &ins_offsets, diff --git a/storage/innobase/row/row0sel.cc b/storage/innobase/row/row0sel.cc index c718a53db61..d9b517309c6 100644 --- a/storage/innobase/row/row0sel.cc +++ b/storage/innobase/row/row0sel.cc @@ -985,8 +985,7 @@ row_sel_get_clust_rec( index = dict_table_get_first_index(plan->table); btr_pcur_open_with_no_init(index, plan->clust_ref, PAGE_CUR_LE, - BTR_SEARCH_LEAF, &plan->clust_pcur, - 0, mtr); + BTR_SEARCH_LEAF, &plan->clust_pcur, mtr); clust_rec = btr_pcur_get_rec(&(plan->clust_pcur)); @@ -1394,8 +1393,7 @@ row_sel_open_pcur( /* Open pcur to the index */ btr_pcur_open_with_no_init(index, plan->tuple, plan->mode, - BTR_SEARCH_LEAF, &plan->pcur, - NULL, mtr); + BTR_SEARCH_LEAF, &plan->pcur, mtr); } else { /* Open the cursor to the start or the end of the index (FALSE: no init) */ @@ -3369,7 +3367,7 @@ Row_sel_get_clust_rec_for_mysql::operator()( btr_pcur_open_with_no_init(clust_index, prebuilt->clust_ref, PAGE_CUR_LE, BTR_SEARCH_LEAF, - prebuilt->clust_pcur, 0, mtr); + prebuilt->clust_pcur, mtr); clust_rec = btr_pcur_get_rec(prebuilt->clust_pcur); @@ -3952,15 +3950,12 @@ row_sel_try_search_shortcut_for_mysql( ut_ad(dict_index_is_clust(index)); ut_ad(!prebuilt->templ_contains_blob); - rw_lock_t* ahi_latch = btr_get_search_latch(index); - rw_lock_s_lock(ahi_latch); btr_pcur_open_with_no_init(index, search_tuple, PAGE_CUR_GE, - BTR_SEARCH_LEAF, pcur, ahi_latch, mtr); + BTR_SEARCH_LEAF, pcur, mtr); rec = btr_pcur_get_rec(pcur); if (!page_rec_is_user_rec(rec) || rec_is_metadata(rec, index)) { retry: - rw_lock_s_unlock(ahi_latch); return(SEL_RETRY); } @@ -3970,7 +3965,6 @@ retry: if (btr_pcur_get_up_match(pcur) < dtuple_get_n_fields(search_tuple)) { exhausted: - rw_lock_s_unlock(ahi_latch); return(SEL_EXHAUSTED); } @@ -3994,7 +3988,6 @@ exhausted: *out_rec = rec; - rw_lock_s_unlock(ahi_latch); return(SEL_FOUND); } #endif /* BTR_CUR_HASH_ADAPT */ @@ -4728,8 +4721,7 @@ wait_table_again: } err = btr_pcur_open_with_no_init(index, search_tuple, mode, - BTR_SEARCH_LEAF, - pcur, 0, &mtr); + BTR_SEARCH_LEAF, pcur, &mtr); if (err != DB_SUCCESS) { rec = NULL; -- cgit v1.2.1 From 51fc1ad86ab7034632d90a41ac1459ceadb0edd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 Oct 2022 18:05:39 +0300 Subject: After-merge fix: clang -Wmissing-braces This fixes up commit 900d7bf3604e7ba265f06d96f76a049dc3c4c9af --- sql/sql_debug.h | 98 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/sql/sql_debug.h b/sql/sql_debug.h index cb4bfcec3ed..aa4684d3bc6 100644 --- a/sql/sql_debug.h +++ b/sql/sql_debug.h @@ -33,26 +33,26 @@ public: { static LEX_CSTRING names[20]= { - STRING_WITH_LEN("END"), - STRING_WITH_LEN("TEXT"), - STRING_WITH_LEN("BINARY"), - STRING_WITH_LEN("SHORT_INT"), - STRING_WITH_LEN("LONG_INT"), - STRING_WITH_LEN("FLOAT"), - STRING_WITH_LEN("DOUBLE"), - STRING_WITH_LEN("NUM"), - STRING_WITH_LEN("USHORT_INT"), - STRING_WITH_LEN("ULONG_INT"), - STRING_WITH_LEN("LONGLONG"), - STRING_WITH_LEN("ULONGLONG"), - STRING_WITH_LEN("INT24"), - STRING_WITH_LEN("UINT24"), - STRING_WITH_LEN("INT8"), - STRING_WITH_LEN("VARTEXT1"), - STRING_WITH_LEN("VARBINARY1"), - STRING_WITH_LEN("VARTEXT2"), - STRING_WITH_LEN("VARBINARY2"), - STRING_WITH_LEN("BIT") + {STRING_WITH_LEN("END")}, + {STRING_WITH_LEN("TEXT")}, + {STRING_WITH_LEN("BINARY")}, + {STRING_WITH_LEN("SHORT_INT")}, + {STRING_WITH_LEN("LONG_INT")}, + {STRING_WITH_LEN("FLOAT")}, + {STRING_WITH_LEN("DOUBLE")}, + {STRING_WITH_LEN("NUM")}, + {STRING_WITH_LEN("USHORT_INT")}, + {STRING_WITH_LEN("ULONG_INT")}, + {STRING_WITH_LEN("LONGLONG")}, + {STRING_WITH_LEN("ULONGLONG")}, + {STRING_WITH_LEN("INT24")}, + {STRING_WITH_LEN("UINT24")}, + {STRING_WITH_LEN("INT8")}, + {STRING_WITH_LEN("VARTEXT1")}, + {STRING_WITH_LEN("VARBINARY1")}, + {STRING_WITH_LEN("VARTEXT2")}, + {STRING_WITH_LEN("VARBINARY2")}, + {STRING_WITH_LEN("BIT")} }; if ((uint) type >= array_elements(names)) return append(STRING_WITH_LEN("???")); @@ -63,23 +63,23 @@ public: { static LEX_CSTRING names[17]= { - STRING_WITH_LEN("HA_NOSAME"), - STRING_WITH_LEN("HA_PACK_KEY"), - STRING_WITH_LEN("HA_SPACE_PACK_USED"), - STRING_WITH_LEN("HA_VAR_LENGTH_KEY"), - STRING_WITH_LEN("HA_AUTO_KEY"), - STRING_WITH_LEN("HA_BINARY_PACK_KEY"), - STRING_WITH_LEN("HA_NULL_PART_KEY"), - STRING_WITH_LEN("HA_FULLTEXT"), - STRING_WITH_LEN("HA_UNIQUE_CHECK"), - STRING_WITH_LEN("HA_SORT_ALLOWS_SAME"), - STRING_WITH_LEN("HA_SPATIAL"), - STRING_WITH_LEN("HA_NULL_ARE_EQUAL"), - STRING_WITH_LEN("HA_GENERATED_KEY"), - STRING_WITH_LEN("HA_USES_COMMENT"), - STRING_WITH_LEN("HA_USES_PARSER"), - STRING_WITH_LEN("HA_USES_BLOCK_SIZE"), - STRING_WITH_LEN("HA_KEY_HAS_PART_KEY_SEG") + {STRING_WITH_LEN("HA_NOSAME")}, + {STRING_WITH_LEN("HA_PACK_KEY")}, + {STRING_WITH_LEN("HA_SPACE_PACK_USED")}, + {STRING_WITH_LEN("HA_VAR_LENGTH_KEY")}, + {STRING_WITH_LEN("HA_AUTO_KEY")}, + {STRING_WITH_LEN("HA_BINARY_PACK_KEY")}, + {STRING_WITH_LEN("HA_NULL_PART_KEY")}, + {STRING_WITH_LEN("HA_FULLTEXT")}, + {STRING_WITH_LEN("HA_UNIQUE_CHECK")}, + {STRING_WITH_LEN("HA_SORT_ALLOWS_SAME")}, + {STRING_WITH_LEN("HA_SPATIAL")}, + {STRING_WITH_LEN("HA_NULL_ARE_EQUAL")}, + {STRING_WITH_LEN("HA_GENERATED_KEY")}, + {STRING_WITH_LEN("HA_USES_COMMENT")}, + {STRING_WITH_LEN("HA_USES_PARSER")}, + {STRING_WITH_LEN("HA_USES_BLOCK_SIZE")}, + {STRING_WITH_LEN("HA_KEY_HAS_PART_KEY_SEG")} }; return append_flag32_names((uint) flags, names, array_elements(names)); } @@ -88,18 +88,18 @@ public: { static LEX_CSTRING names[]= { - STRING_WITH_LEN("HA_SPACE_PACK"), // 1 - STRING_WITH_LEN("??? 2 ???"), // 2 - STRING_WITH_LEN("HA_PART_KEY_SEG"), // 4 - STRING_WITH_LEN("HA_VAR_LENGTH_PART"), // 8 - STRING_WITH_LEN("HA_NULL_PART"), // 16 - STRING_WITH_LEN("HA_BLOB_PART"), // 32 - STRING_WITH_LEN("HA_SWAP_KEY"), // 64 - STRING_WITH_LEN("HA_REVERSE_SORT"), // 128 - STRING_WITH_LEN("HA_NO_SORT"), // 256 - STRING_WITH_LEN("??? 512 ???"), // 512 - STRING_WITH_LEN("HA_BIT_PART"), // 1024 - STRING_WITH_LEN("HA_CAN_MEMCMP") // 2048 + {STRING_WITH_LEN("HA_SPACE_PACK")}, // 1 + {STRING_WITH_LEN("??? 2 ???")}, // 2 + {STRING_WITH_LEN("HA_PART_KEY_SEG")}, // 4 + {STRING_WITH_LEN("HA_VAR_LENGTH_PART")}, // 8 + {STRING_WITH_LEN("HA_NULL_PART")}, // 16 + {STRING_WITH_LEN("HA_BLOB_PART")}, // 32 + {STRING_WITH_LEN("HA_SWAP_KEY")}, // 64 + {STRING_WITH_LEN("HA_REVERSE_SORT")}, // 128 + {STRING_WITH_LEN("HA_NO_SORT")}, // 256 + {STRING_WITH_LEN("??? 512 ???")}, // 512 + {STRING_WITH_LEN("HA_BIT_PART")}, // 1024 + {STRING_WITH_LEN("HA_CAN_MEMCMP")} // 2048 }; return append_flag32_names(flags, names, array_elements(names)); } -- cgit v1.2.1 From 286acaa796cd3c7e7a8d20eba20673ae1ab70b61 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Wed, 5 Oct 2022 17:18:30 +0200 Subject: maintainer mode: build with -Wmissing-braces --- cmake/maintainer.cmake | 1 + storage/rocksdb/rdb_datadic.cc | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/cmake/maintainer.cmake b/cmake/maintainer.cmake index b4936ff57cc..179308a76f6 100644 --- a/cmake/maintainer.cmake +++ b/cmake/maintainer.cmake @@ -27,6 +27,7 @@ SET(MY_WARNING_FLAGS -Wenum-conversion -Wextra -Wformat-security + -Wmissing-braces -Wno-format-truncation -Wno-init-self -Wno-nonnull-compare diff --git a/storage/rocksdb/rdb_datadic.cc b/storage/rocksdb/rdb_datadic.cc index e6113d437cf..939fb085c4f 100644 --- a/storage/rocksdb/rdb_datadic.cc +++ b/storage/rocksdb/rdb_datadic.cc @@ -3131,10 +3131,10 @@ static const Rdb_collation_codec *rdb_init_collation_mapping( } } - cur->m_make_unpack_info_func = {Rdb_key_def::make_unpack_simple_varchar, - Rdb_key_def::make_unpack_simple}; - cur->m_unpack_func = {Rdb_key_def::unpack_simple_varchar_space_pad, - Rdb_key_def::unpack_simple}; + cur->m_make_unpack_info_func = {{Rdb_key_def::make_unpack_simple_varchar, + Rdb_key_def::make_unpack_simple}}; + cur->m_unpack_func = {{Rdb_key_def::unpack_simple_varchar_space_pad, + Rdb_key_def::unpack_simple}}; } else { // Out of luck for now. } -- cgit v1.2.1 From 4eb8c35b363addd64e30ad0b5ce7988b328b07cd Mon Sep 17 00:00:00 2001 From: Aleksey Midenkov Date: Wed, 5 Oct 2022 17:46:50 +0300 Subject: MDEV-28576 Ability to manipulate List For "const char *" replace() and after() accepted const as "T *" and passed forward "void *". This cannot be cast implicitly, so we better use "const void *" instead of "void *" in the input interface. This way we avoid problems with using List for any const type. --- sql/sql_list.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sql/sql_list.h b/sql/sql_list.h index a47acf57b54..b11239856f5 100644 --- a/sql/sql_list.h +++ b/sql/sql_list.h @@ -118,8 +118,8 @@ struct list_node :public Sql_alloc { list_node *next; void *info; - list_node(void *info_par,list_node *next_par) - :next(next_par),info(info_par) + list_node(const void *info_par, list_node *next_par) + :next(next_par), info(const_cast(info_par)) {} list_node() /* For end_of_list */ { @@ -384,7 +384,7 @@ public: #endif // LIST_EXTRA_DEBUG protected: - void after(void *info,list_node *node) + void after(const void *info, list_node *node) { list_node *new_node=new list_node(info,node->next); node->next=new_node; @@ -445,11 +445,11 @@ public: { el= &list->first; } - inline void *replace(void *element) + inline void *replace(const void *element) { // Return old element void *tmp=current->info; DBUG_ASSERT(current->info != 0); - current->info=element; + current->info= const_cast(element); return tmp; } void *replace(base_list &new_list) @@ -472,7 +472,7 @@ public: el=prev; current=0; // Safeguard } - void after(void *element) // Insert element after current + void after(const void *element) // Insert element after current { list->after(element,current); current=current->next; -- cgit v1.2.1 From 0779e2cb1013556c4d67bcc326706dfd449db392 Mon Sep 17 00:00:00 2001 From: Aleksey Midenkov Date: Wed, 5 Oct 2022 17:46:51 +0300 Subject: MDEV-28576 RENAME COLUMN with NOCOPY algorithm leads to corrupt partitioned table When f.ex. table is partitioned by HASH(a) and we rename column `a' to `b' partitioning filter stays unchanged: HASH(a). That's the wrong behavior. The patch updates partitioning filter in accordance to the new columns names. That includes partition/subpartition expression and partition/subpartition field list. --- mysql-test/main/partition_alter.result | 11 ++++++++ mysql-test/main/partition_alter.test | 11 ++++++++ sql/sql_table.cc | 47 ++++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+) diff --git a/mysql-test/main/partition_alter.result b/mysql-test/main/partition_alter.result index 18142b63d10..2b0a09d2653 100644 --- a/mysql-test/main/partition_alter.result +++ b/mysql-test/main/partition_alter.result @@ -200,4 +200,15 @@ pk 2 delete from t1; drop table t1; +# +# MDEV-28576 RENAME COLUMN with NOCOPY algorithm leads to corrupt partitioned table +# +create table t (a int, b int) partition by list (b) (partition p1 values in (1, 2)); +insert into t values (0, 1), (2, 2); +alter table t change b f int, change a b int, algorithm=nocopy; +check table t; +Table Op Msg_type Msg_text +test.t check status OK +delete from t order by b limit 1; +drop table t; # End of 10.3 tests diff --git a/mysql-test/main/partition_alter.test b/mysql-test/main/partition_alter.test index 804b43dc3c2..7a80779e386 100644 --- a/mysql-test/main/partition_alter.test +++ b/mysql-test/main/partition_alter.test @@ -185,4 +185,15 @@ select * from t1 partition(p1); delete from t1; drop table t1; +--echo # +--echo # MDEV-28576 RENAME COLUMN with NOCOPY algorithm leads to corrupt partitioned table +--echo # +create table t (a int, b int) partition by list (b) (partition p1 values in (1, 2)); +insert into t values (0, 1), (2, 2); +alter table t change b f int, change a b int, algorithm=nocopy; +check table t; +delete from t order by b limit 1; +# cleanup +drop table t; + --echo # End of 10.3 tests diff --git a/sql/sql_table.cc b/sql/sql_table.cc index cc9cb37ca15..02b9a2cb96b 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -7975,6 +7975,20 @@ void append_drop_column(THD *thd, String *str, Field *field) } +static inline +void rename_field_in_list(Create_field *field, List *field_list) +{ + DBUG_ASSERT(field->change.str); + List_iterator it(*field_list); + while (const char *name= it++) + { + if (my_strcasecmp(system_charset_info, name, field->change.str)) + continue; + it.replace(field->field_name.str); + } +} + + /** Prepare column and key definitions for CREATE TABLE in ALTER TABLE. @@ -8284,6 +8298,39 @@ mysql_prepare_alter_table(THD *thd, TABLE *table, new_create_tail.push_back(def, thd->mem_root); } } + +#ifdef WITH_PARTITION_STORAGE_ENGINE + if (alter_info->flags & ALTER_RENAME_COLUMN) + { + if (thd->work_part_info) + { + partition_info *part_info= thd->work_part_info; + List_iterator def_it(column_rename_param.fields); + const bool part_field_list= !part_info->part_field_list.is_empty(); + const bool subpart_field_list= !part_info->subpart_field_list.is_empty(); + if (part_info->part_expr) + part_info->part_expr->walk(&Item::rename_fields_processor, 1, + &column_rename_param); + if (part_info->subpart_expr) + part_info->subpart_expr->walk(&Item::rename_fields_processor, 1, + &column_rename_param); + if (part_field_list || subpart_field_list) + { + while (Create_field *def= def_it++) + { + if (def->change.str) + { + if (part_field_list) + rename_field_in_list(def, &part_info->part_field_list); + if (subpart_field_list) + rename_field_in_list(def, &part_info->subpart_field_list); + } /* if (def->change.str) */ + } /* while (def) */ + } /* if (part_field_list || subpart_field_list) */ + } /* if (part_info) */ + } +#endif + dropped_sys_vers_fields &= VERS_SYSTEM_FIELD; if ((dropped_sys_vers_fields || alter_info->flags & ALTER_DROP_PERIOD) && -- cgit v1.2.1 From 074e358213ac8f358fa01c2c03ed58e94c81baf8 Mon Sep 17 00:00:00 2001 From: Aleksey Midenkov Date: Wed, 5 Oct 2022 17:46:51 +0300 Subject: MDEV-29697 Assertion failure in Diagnostics_area::set_ok_status upon CREATE OR REPLACE causing ER_UPDATE_TABLE_USED Missed set return status to 1. --- mysql-test/main/create_or_replace.result | 9 +++++++++ mysql-test/main/create_or_replace.test | 12 ++++++++++++ sql/sql_table.cc | 1 + 3 files changed, 22 insertions(+) diff --git a/mysql-test/main/create_or_replace.result b/mysql-test/main/create_or_replace.result index c9863f56154..09ae481e3d9 100644 --- a/mysql-test/main/create_or_replace.result +++ b/mysql-test/main/create_or_replace.result @@ -532,3 +532,12 @@ SELECT * FROM t3; ERROR HY000: Table 't3' was not locked with LOCK TABLES UNLOCK TABLES; DROP TABLE t3; +# +# MDEV-29697 Assertion failure in Diagnostics_area::set_ok_status +# upon CREATE OR REPLACE causing ER_UPDATE_TABLE_USED +# +CREATE TABLE t (a INT) ENGINE=MyISAM; +CREATE TABLE tm (a INT) ENGINE=MERGE UNION(t); +CREATE OR REPLACE TABLE t LIKE tm; +ERROR HY000: Table 'tm' is specified twice, both as a target for 'CREATE' and as a separate source for data +DROP TABLE IF EXISTS tm, t; diff --git a/mysql-test/main/create_or_replace.test b/mysql-test/main/create_or_replace.test index ba32f4b7603..badb7d0642a 100644 --- a/mysql-test/main/create_or_replace.test +++ b/mysql-test/main/create_or_replace.test @@ -485,3 +485,15 @@ CREATE OR REPLACE TEMPORARY TABLE t2(c INT DEFAULT ''); SELECT * FROM t3; UNLOCK TABLES; DROP TABLE t3; + +--echo # +--echo # MDEV-29697 Assertion failure in Diagnostics_area::set_ok_status +--echo # upon CREATE OR REPLACE causing ER_UPDATE_TABLE_USED +--echo # +CREATE TABLE t (a INT) ENGINE=MyISAM; +CREATE TABLE tm (a INT) ENGINE=MERGE UNION(t); +--error ER_UPDATE_TABLE_USED +CREATE OR REPLACE TABLE t LIKE tm; + +# Cleanup +DROP TABLE IF EXISTS tm, t; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 02b9a2cb96b..413d78ae814 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -5742,6 +5742,7 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, if ((duplicate= unique_table(thd, table, src_table, 0))) { update_non_unique_table_error(src_table, "CREATE", duplicate); + res= 1; goto err; } } -- cgit v1.2.1 From f600690c6be112e2f2b36ffb80c103bbd50814f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Wed, 5 Oct 2022 20:37:54 +0300 Subject: MDEV-29710: Skip some more tests on Valgrind --- mysql-test/main/rowid_filter_innodb_debug.test | 1 + mysql-test/suite/federated/federatedx_create_handlers.test | 1 + mysql-test/suite/innodb/t/alter_copy.test | 1 + mysql-test/suite/innodb/t/autoinc_persist.test | 1 + mysql-test/suite/innodb/t/innodb-stats-initialize-failure.test | 1 + mysql-test/suite/innodb/t/innodb-stats-sample.test | 1 + mysql-test/suite/innodb/t/innodb-trim.test | 1 + mysql-test/suite/innodb/t/innodb_bug30423.test | 1 + mysql-test/suite/innodb/t/log_corruption.test | 1 + mysql-test/suite/innodb/t/log_file.test | 1 + mysql-test/suite/innodb/t/log_file_name.test | 1 + mysql-test/suite/innodb/t/read_only_recover_committed.test | 1 + mysql-test/suite/innodb/t/recovery_shutdown.test | 1 + mysql-test/suite/innodb/t/undo_truncate.test | 1 + mysql-test/suite/innodb_fts/t/innodb_fts_plugin.test | 1 + mysql-test/suite/rpl/t/rpl_semi_sync_shutdown_await_ack.test | 2 ++ mysql-test/suite/stress/t/ddl_innodb.test | 1 + 17 files changed, 18 insertions(+) diff --git a/mysql-test/main/rowid_filter_innodb_debug.test b/mysql-test/main/rowid_filter_innodb_debug.test index eb43edd9e9e..31fbd937304 100644 --- a/mysql-test/main/rowid_filter_innodb_debug.test +++ b/mysql-test/main/rowid_filter_innodb_debug.test @@ -1,4 +1,5 @@ --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc set default_storage_engine=innodb; --source include/rowid_filter_debug_kill.inc diff --git a/mysql-test/suite/federated/federatedx_create_handlers.test b/mysql-test/suite/federated/federatedx_create_handlers.test index 4b5789e1d96..8863a057b47 100644 --- a/mysql-test/suite/federated/federatedx_create_handlers.test +++ b/mysql-test/suite/federated/federatedx_create_handlers.test @@ -1,5 +1,6 @@ --source have_federatedx.inc --source include/federated.inc +--source include/no_valgrind_without_big.inc connection default; diff --git a/mysql-test/suite/innodb/t/alter_copy.test b/mysql-test/suite/innodb/t/alter_copy.test index b7ab05a061a..ac1288adb0c 100644 --- a/mysql-test/suite/innodb/t/alter_copy.test +++ b/mysql-test/suite/innodb/t/alter_copy.test @@ -2,6 +2,7 @@ --source include/have_debug.inc --source include/have_debug_sync.inc --source include/not_embedded.inc +--source include/no_valgrind_without_big.inc --echo # --echo # MDEV-11415 AVOID INTERMEDIATE COMMIT WHILE DOING diff --git a/mysql-test/suite/innodb/t/autoinc_persist.test b/mysql-test/suite/innodb/t/autoinc_persist.test index fd85b45fbfa..f2175bd7f63 100644 --- a/mysql-test/suite/innodb/t/autoinc_persist.test +++ b/mysql-test/suite/innodb/t/autoinc_persist.test @@ -1,6 +1,7 @@ --source include/have_innodb.inc # Restarting is not supported when testing the embedded server. --source include/not_embedded.inc +--source include/no_valgrind_without_big.inc --echo # --echo # MDEV-6076 Persistent AUTO_INCREMENT for InnoDB diff --git a/mysql-test/suite/innodb/t/innodb-stats-initialize-failure.test b/mysql-test/suite/innodb/t/innodb-stats-initialize-failure.test index d5d04190b8a..ba37e82057f 100644 --- a/mysql-test/suite/innodb/t/innodb-stats-initialize-failure.test +++ b/mysql-test/suite/innodb/t/innodb-stats-initialize-failure.test @@ -1,5 +1,6 @@ # MDEV-6424: Mariadb server crashes with assertion failure in file ha_innodb.cc --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc # DEBUG_SYNC must be compiled in. --source include/have_debug_sync.inc diff --git a/mysql-test/suite/innodb/t/innodb-stats-sample.test b/mysql-test/suite/innodb/t/innodb-stats-sample.test index 35d35bfa382..de1b0d017e9 100644 --- a/mysql-test/suite/innodb/t/innodb-stats-sample.test +++ b/mysql-test/suite/innodb/t/innodb-stats-sample.test @@ -1,4 +1,5 @@ --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc # # Test that mysqld does not crash when running ANALYZE TABLE with # different values of the parameter innodb_stats_sample_pages. diff --git a/mysql-test/suite/innodb/t/innodb-trim.test b/mysql-test/suite/innodb/t/innodb-trim.test index 0f38ea5ba84..ea2ac402977 100644 --- a/mysql-test/suite/innodb/t/innodb-trim.test +++ b/mysql-test/suite/innodb/t/innodb-trim.test @@ -1,5 +1,6 @@ --source include/have_innodb.inc --source include/have_innodb_punchhole.inc +--source include/no_valgrind_without_big.inc --disable_query_log --disable_warnings diff --git a/mysql-test/suite/innodb/t/innodb_bug30423.test b/mysql-test/suite/innodb/t/innodb_bug30423.test index de53a935156..9d9975c04ca 100644 --- a/mysql-test/suite/innodb/t/innodb_bug30423.test +++ b/mysql-test/suite/innodb/t/innodb_bug30423.test @@ -1,4 +1,5 @@ --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc # Test for Bug #30423, InnoDBs treatment of NULL in index stats causes # bad "rows examined" estimates. # Implemented InnoDB system variable "innodb_stats_method" with diff --git a/mysql-test/suite/innodb/t/log_corruption.test b/mysql-test/suite/innodb/t/log_corruption.test index 3d68724f7a9..38048505aea 100644 --- a/mysql-test/suite/innodb/t/log_corruption.test +++ b/mysql-test/suite/innodb/t/log_corruption.test @@ -1,5 +1,6 @@ --source include/have_innodb.inc --source include/have_innodb_16k.inc +--source include/no_valgrind_without_big.inc --disable_query_log call mtr.add_suppression("InnoDB: Upgrade after a crash is not supported"); diff --git a/mysql-test/suite/innodb/t/log_file.test b/mysql-test/suite/innodb/t/log_file.test index 7aca2336de6..1e96e9c26e4 100644 --- a/mysql-test/suite/innodb/t/log_file.test +++ b/mysql-test/suite/innodb/t/log_file.test @@ -3,6 +3,7 @@ --echo # Bug#16418661 - CHANGING NAME IN FOR INNODB_DATA_FILE_PATH SHOULD NOT SUCCEED WITH LOG FILES --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc --disable_query_log call mtr.add_suppression("InnoDB: Could not create undo tablespace.*undo002"); diff --git a/mysql-test/suite/innodb/t/log_file_name.test b/mysql-test/suite/innodb/t/log_file_name.test index 80b4e3d3921..0aad3f88936 100644 --- a/mysql-test/suite/innodb/t/log_file_name.test +++ b/mysql-test/suite/innodb/t/log_file_name.test @@ -2,6 +2,7 @@ # Test the detection of duplicate tablespaces. --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc # Embedded server does not support crashing --source include/not_embedded.inc diff --git a/mysql-test/suite/innodb/t/read_only_recover_committed.test b/mysql-test/suite/innodb/t/read_only_recover_committed.test index 439f57e9fad..5c4eac86c26 100644 --- a/mysql-test/suite/innodb/t/read_only_recover_committed.test +++ b/mysql-test/suite/innodb/t/read_only_recover_committed.test @@ -1,6 +1,7 @@ --source include/have_innodb.inc --source include/have_debug.inc --source include/have_debug_sync.inc +--source include/no_valgrind_without_big.inc # need to restart server --source include/not_embedded.inc diff --git a/mysql-test/suite/innodb/t/recovery_shutdown.test b/mysql-test/suite/innodb/t/recovery_shutdown.test index d72e785f21d..f439ccac51a 100644 --- a/mysql-test/suite/innodb/t/recovery_shutdown.test +++ b/mysql-test/suite/innodb/t/recovery_shutdown.test @@ -1,5 +1,6 @@ --source include/have_innodb.inc --source include/not_embedded.inc +--source include/no_valgrind_without_big.inc # Flush any open myisam tables from previous tests FLUSH TABLES; diff --git a/mysql-test/suite/innodb/t/undo_truncate.test b/mysql-test/suite/innodb/t/undo_truncate.test index 0e73a9b4e21..e2648fa761a 100644 --- a/mysql-test/suite/innodb/t/undo_truncate.test +++ b/mysql-test/suite/innodb/t/undo_truncate.test @@ -3,6 +3,7 @@ --source include/have_undo_tablespaces.inc --source include/not_embedded.inc --source include/have_sequence.inc +--source include/no_valgrind_without_big.inc SET GLOBAL innodb_undo_log_truncate = 0; SET GLOBAL innodb_purge_rseg_truncate_frequency = 1; diff --git a/mysql-test/suite/innodb_fts/t/innodb_fts_plugin.test b/mysql-test/suite/innodb_fts/t/innodb_fts_plugin.test index 7279925386b..3f9d1f8faf1 100644 --- a/mysql-test/suite/innodb_fts/t/innodb_fts_plugin.test +++ b/mysql-test/suite/innodb_fts/t/innodb_fts_plugin.test @@ -1,5 +1,6 @@ --source include/have_innodb.inc --source include/have_simple_parser.inc +--source include/no_valgrind_without_big.inc # Restart is not supported in embedded --source include/not_embedded.inc diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync_shutdown_await_ack.test b/mysql-test/suite/rpl/t/rpl_semi_sync_shutdown_await_ack.test index 5e9cda6466e..2ee7d0aa052 100644 --- a/mysql-test/suite/rpl/t/rpl_semi_sync_shutdown_await_ack.test +++ b/mysql-test/suite/rpl/t/rpl_semi_sync_shutdown_await_ack.test @@ -1,3 +1,5 @@ +--source include/no_valgrind_without_big.inc + # # Purpose: # This test validates that data is consistent between a primary and replica diff --git a/mysql-test/suite/stress/t/ddl_innodb.test b/mysql-test/suite/stress/t/ddl_innodb.test index 083ec43e7d7..d5e23124b4b 100644 --- a/mysql-test/suite/stress/t/ddl_innodb.test +++ b/mysql-test/suite/stress/t/ddl_innodb.test @@ -1,3 +1,4 @@ +--source include/no_valgrind_without_big.inc ######## t/ddl_innodb.test ###### # # Stress the storage engine InnoDB with CREATE/DROP TABLE/INDEX -- cgit v1.2.1 From ba9ade47e3acf1e0f72a52f24832cd6b3619fb5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 6 Oct 2022 07:38:46 +0300 Subject: MDEV-29710: Skip main.update_use_source on Valgrind This test is not slow, but it reliably produces an EXPLAIN difference (number of rows) on the Valgrind builder. A possible explanation could be that the purge threads are not being scheduled. Valgrind runs all threads in a single thread. --- mysql-test/main/update_use_source.test | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/main/update_use_source.test b/mysql-test/main/update_use_source.test index 7ed5f95d68d..a73bbba7613 100644 --- a/mysql-test/main/update_use_source.test +++ b/mysql-test/main/update_use_source.test @@ -1,5 +1,6 @@ --source include/have_sequence.inc --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc create table t1 (old_c1 integer, old_c2 integer,c1 integer, c2 integer, c3 integer) engine=InnoDb; create view v1 as select * from t1 where c2=2; -- cgit v1.2.1 From 3708bef60683dc7b6020ee76e90738528ccad18a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 6 Oct 2022 07:40:00 +0300 Subject: MDEV-27682: Temporarily disable a failing test --- mysql-test/suite/galera/disabled.def | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/suite/galera/disabled.def b/mysql-test/suite/galera/disabled.def index 6727aa3d945..ade0e8257e5 100644 --- a/mysql-test/suite/galera/disabled.def +++ b/mysql-test/suite/galera/disabled.def @@ -24,6 +24,7 @@ galera_shutdown_nonprim : MDEV-21493 galera.galera_shutdown_nonprim galera_var_ignore_apply_errors : MDEV-26770 galera_var_ignore_apply_errors fails Server did not transition to READY state galera_var_node_address : MDEV-20485 Galera test failure galera_var_notify_cmd : MDEV-21905 Galera test galera_var_notify_cmd causes hang +galera_var_notify_ssl_ipv6 : hangs after the merge of MDEV-27682 galera_var_retry_autocommit: MDEV-18181 Galera test failure on galera.galera_var_retry_autocommit partition : MDEV-19958 Galera test failure on galera.partition query_cache: MDEV-15805 Test failure on galera.query_cache -- cgit v1.2.1 From f54bc7deb7db49ba3719da4a8acfa52819d11777 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 6 Oct 2022 08:42:26 +0300 Subject: MDEV-29710: Disable some slow tests on Valgrind --- mysql-test/suite/innodb/t/innodb_bug53290.test | 1 + mysql-test/suite/innodb_fts/t/innodb_fts_misc.test | 1 + mysql-test/suite/optimizer_unfixed_bugs/t/bug43448.test | 1 + 3 files changed, 3 insertions(+) diff --git a/mysql-test/suite/innodb/t/innodb_bug53290.test b/mysql-test/suite/innodb/t/innodb_bug53290.test index ea15212fa39..9d36d9bd2f6 100644 --- a/mysql-test/suite/innodb/t/innodb_bug53290.test +++ b/mysql-test/suite/innodb/t/innodb_bug53290.test @@ -1,4 +1,5 @@ -- source include/have_innodb.inc +-- source include/no_valgrind_without_big.inc create table bug53290 (x bigint) engine=innodb; diff --git a/mysql-test/suite/innodb_fts/t/innodb_fts_misc.test b/mysql-test/suite/innodb_fts/t/innodb_fts_misc.test index 8f4902fd2de..470acd554b4 100644 --- a/mysql-test/suite/innodb_fts/t/innodb_fts_misc.test +++ b/mysql-test/suite/innodb_fts/t/innodb_fts_misc.test @@ -3,6 +3,7 @@ #----------------------------------------------------------------------------- --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc --source include/default_charset.inc let collation=UTF8_UNICODE_CI; --source include/have_collation.inc diff --git a/mysql-test/suite/optimizer_unfixed_bugs/t/bug43448.test b/mysql-test/suite/optimizer_unfixed_bugs/t/bug43448.test index 4e1df63b45b..69181c3615c 100644 --- a/mysql-test/suite/optimizer_unfixed_bugs/t/bug43448.test +++ b/mysql-test/suite/optimizer_unfixed_bugs/t/bug43448.test @@ -4,6 +4,7 @@ --source include/have_debug.inc --source include/have_innodb.inc +--source include/no_valgrind_without_big.inc SET @saved_dbug = @@SESSION.debug_dbug; # crash requires ICP support in InnoDB -- cgit v1.2.1 From 8d6421aa48de5f1581e0706cc65c3515954bcead Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 6 Oct 2022 08:45:42 +0300 Subject: MemorySanitizer: Disable tests that time out --- mysql-test/main/ssl-big.test | 2 ++ mysql-test/suite/innodb/t/alter_large_dml.test | 2 ++ 2 files changed, 4 insertions(+) diff --git a/mysql-test/main/ssl-big.test b/mysql-test/main/ssl-big.test index 367cbcba2d7..a23f3028f02 100644 --- a/mysql-test/main/ssl-big.test +++ b/mysql-test/main/ssl-big.test @@ -4,6 +4,8 @@ -- source include/have_ssl_communication.inc -- source include/big_test.inc -- source include/have_64bit.inc +# This test often times out with MemorySanitizer. +--source include/not_msan.inc # Save the initial number of concurrent sessions --source include/count_sessions.inc diff --git a/mysql-test/suite/innodb/t/alter_large_dml.test b/mysql-test/suite/innodb/t/alter_large_dml.test index d8b288e5a9f..7320fa008af 100644 --- a/mysql-test/suite/innodb/t/alter_large_dml.test +++ b/mysql-test/suite/innodb/t/alter_large_dml.test @@ -5,6 +5,8 @@ --source include/have_debug.inc --source include/have_debug_sync.inc --source include/have_sequence.inc +# This test often times out with MemorySanitizer. +--source include/not_msan.inc CREATE TABLE t1(f1 char(200), f2 char(200), f3 char(200), f4 char(200), f5 char(200), f6 char(200), -- cgit v1.2.1 From d766a799f48bb328244fc6a1ba85b04027f34138 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 6 Oct 2022 11:58:28 +0300 Subject: MDEV-29508 work-around: Disable hanging test on Valgrind --- mysql-test/suite/perfschema/t/short_option_1.test | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mysql-test/suite/perfschema/t/short_option_1.test b/mysql-test/suite/perfschema/t/short_option_1.test index 4d00c3729d8..fbfbdda1bbc 100644 --- a/mysql-test/suite/perfschema/t/short_option_1.test +++ b/mysql-test/suite/perfschema/t/short_option_1.test @@ -1,3 +1,6 @@ +# Work around MDEV-29508 +--source include/not_valgrind.inc + # Tests for PERFORMANCE_SCHEMA # Check server start for short server start options -- cgit v1.2.1 From 5e66b63d954d68aac4543f272b102d5f43642c44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 6 Oct 2022 12:33:05 +0300 Subject: MDEV-29710: Disable a timing-sensitive test on Valgrind --- mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_abort_loads.test | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_abort_loads.test b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_abort_loads.test index 4a4411101e2..089f3072205 100644 --- a/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_abort_loads.test +++ b/mysql-test/suite/sys_vars/t/innodb_buffer_pool_dump_abort_loads.test @@ -3,6 +3,7 @@ # --source include/have_innodb.inc --source include/have_debug.inc +--source include/no_valgrind_without_big.inc --echo --echo # innodb_buffer_pool_load_incomplete defaults 0 -- cgit v1.2.1 From 8872d2ee71cc65826909f6a64413ee46d1c5218d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 6 Oct 2022 12:33:40 +0300 Subject: MDEV-29710: Disable a timing-sensitive test on Valgrind --- mysql-test/main/func_json_notembedded.test | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/main/func_json_notembedded.test b/mysql-test/main/func_json_notembedded.test index b33615060b4..893b248301c 100644 --- a/mysql-test/main/func_json_notembedded.test +++ b/mysql-test/main/func_json_notembedded.test @@ -1,5 +1,6 @@ source include/have_profiling.inc; source include/not_embedded.inc; +source include/no_valgrind_without_big.inc; set global max_allowed_packet=1073741824; connect u,localhost,root; -- cgit v1.2.1 From 09f7889b5c2039c55dc52e199f81862279192ce8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Thu, 6 Oct 2022 08:51:16 +0300 Subject: MDEV-29706 : SIGSEGV in wsrep_TOI_begin on non-Galera builds Do not allow setting wsrep_on=ON if no provider is set. --- .../sys_vars/r/wsrep_on_without_provider.result | 5 +++ mysql-test/suite/sys_vars/t/wsrep_on_basic.test | 45 ---------------------- .../sys_vars/t/wsrep_on_without_provider.test | 9 +++++ sql/wsrep_var.cc | 6 +++ 4 files changed, 20 insertions(+), 45 deletions(-) create mode 100644 mysql-test/suite/sys_vars/r/wsrep_on_without_provider.result delete mode 100644 mysql-test/suite/sys_vars/t/wsrep_on_basic.test create mode 100644 mysql-test/suite/sys_vars/t/wsrep_on_without_provider.test diff --git a/mysql-test/suite/sys_vars/r/wsrep_on_without_provider.result b/mysql-test/suite/sys_vars/r/wsrep_on_without_provider.result new file mode 100644 index 00000000000..525619dba29 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/wsrep_on_without_provider.result @@ -0,0 +1,5 @@ +SET GLOBAL wsrep_on=ON; +ERROR HY000: WSREP (galera) can't be enabled if the wsrep_provider is unset or set to 'none' +SELECT @@global.wsrep_on; +@@global.wsrep_on +0 diff --git a/mysql-test/suite/sys_vars/t/wsrep_on_basic.test b/mysql-test/suite/sys_vars/t/wsrep_on_basic.test deleted file mode 100644 index 229d771b5e7..00000000000 --- a/mysql-test/suite/sys_vars/t/wsrep_on_basic.test +++ /dev/null @@ -1,45 +0,0 @@ ---source include/have_wsrep.inc - ---echo # ---echo # wsrep_on ---echo # - ---echo # save the initial values -SET @wsrep_on_global_saved = @@global.wsrep_on; -SET @wsrep_on_session_saved = @@session.wsrep_on; - ---echo # default -SELECT @@global.wsrep_on; -SELECT @@session.wsrep_on; - ---echo ---echo # scope and valid values -SET @@global.wsrep_on=OFF; -SELECT @@global.wsrep_on; -SET @@global.wsrep_on=ON; -SELECT @@global.wsrep_on; - -SET @@session.wsrep_on=OFF; -SELECT @@session.wsrep_on; -SET @@session.wsrep_on=ON; -SELECT @@session.wsrep_on; -SET @@session.wsrep_on=default; -SELECT @@session.wsrep_on; - ---echo ---echo # invalid values ---error ER_WRONG_VALUE_FOR_VAR -SET @@global.wsrep_on=NULL; ---error ER_WRONG_VALUE_FOR_VAR -SET @@global.wsrep_on='junk'; ---error ER_WRONG_VALUE_FOR_VAR -SET @@session.wsrep_on=NULL; ---error ER_WRONG_VALUE_FOR_VAR -SET @@session.wsrep_on='junk'; - ---echo ---echo # restore the initial values -SET @@global.wsrep_on = @wsrep_on_global_saved; -SET @@session.wsrep_on = @wsrep_on_session_saved; - ---echo # End of test diff --git a/mysql-test/suite/sys_vars/t/wsrep_on_without_provider.test b/mysql-test/suite/sys_vars/t/wsrep_on_without_provider.test new file mode 100644 index 00000000000..5bee3c9a356 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/wsrep_on_without_provider.test @@ -0,0 +1,9 @@ +--source include/not_embedded.inc + +# +# @@global.wsrep_on is not allowed if there +# is no wsrep_provider +# +--error ER_WRONG_ARGUMENTS +SET GLOBAL wsrep_on=ON; +SELECT @@global.wsrep_on; \ No newline at end of file diff --git a/sql/wsrep_var.cc b/sql/wsrep_var.cc index 413550935cb..ea8db8addab 100644 --- a/sql/wsrep_var.cc +++ b/sql/wsrep_var.cc @@ -70,6 +70,12 @@ bool wsrep_on_check(sys_var *self, THD* thd, set_var* var) " innodb_lock_schedule_algorithm=FCFS and restart.", MYF(0)); return true; } + if (new_wsrep_on && !WSREP_PROVIDER_EXISTS) + { + my_message(ER_WRONG_ARGUMENTS, "WSREP (galera) can't be enabled " + "if the wsrep_provider is unset or set to 'none'", MYF(0)); + return true; + } return false; } -- cgit v1.2.1 From d099bcadc3e38cf21d0d378ea4627b878be0972f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Thu, 6 Oct 2022 08:52:51 +0300 Subject: Test results updated. --- mysql-test/suite/galera/r/galera_rsu_wsrep_desync.result | 4 ++-- mysql-test/suite/galera/r/galera_sync_wait_show.result | 2 +- mysql-test/suite/galera/r/galera_toi_ddl_error.result | 4 ++-- mysql-test/suite/galera/r/lp1376747-4.result | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/mysql-test/suite/galera/r/galera_rsu_wsrep_desync.result b/mysql-test/suite/galera/r/galera_rsu_wsrep_desync.result index a103e810588..bc6b263c41e 100644 --- a/mysql-test/suite/galera/r/galera_rsu_wsrep_desync.result +++ b/mysql-test/suite/galera/r/galera_rsu_wsrep_desync.result @@ -15,7 +15,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1 +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci SHOW VARIABLES LIKE 'wsrep_desync'; Variable_name Value wsrep_desync OFF @@ -42,7 +42,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL, `f2` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1 +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci SET wsrep_OSU_method=TOI; DROP TABLE t1; SET DEBUG_SYNC= 'RESET'; diff --git a/mysql-test/suite/galera/r/galera_sync_wait_show.result b/mysql-test/suite/galera/r/galera_sync_wait_show.result index def771ff88d..9edb2cbe780 100644 --- a/mysql-test/suite/galera/r/galera_sync_wait_show.result +++ b/mysql-test/suite/galera/r/galera_sync_wait_show.result @@ -5,7 +5,7 @@ CREATE DATABASE db1; connection node_2; SHOW CREATE DATABASE db1; Database Create Database -db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET latin1 */ +db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */ DROP DATABASE db1; connection node_1; CREATE PROCEDURE p1 () SELECT 1 FROM DUAL; diff --git a/mysql-test/suite/galera/r/galera_toi_ddl_error.result b/mysql-test/suite/galera/r/galera_toi_ddl_error.result index dafad153867..ec4e6203324 100644 --- a/mysql-test/suite/galera/r/galera_toi_ddl_error.result +++ b/mysql-test/suite/galera/r/galera_toi_ddl_error.result @@ -10,12 +10,12 @@ SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1 +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci connection node_1; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=latin1 +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci DROP TABLE t1; DROP TABLE ten; diff --git a/mysql-test/suite/galera/r/lp1376747-4.result b/mysql-test/suite/galera/r/lp1376747-4.result index efce740ea88..0e12d59e922 100644 --- a/mysql-test/suite/galera/r/lp1376747-4.result +++ b/mysql-test/suite/galera/r/lp1376747-4.result @@ -14,7 +14,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `id` int(11) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci SET debug_sync='flush_tables_with_read_lock_after_acquire_locks SIGNAL parked2 WAIT_FOR go2'; FLUSH TABLES t1 WITH READ LOCK;; connection node_2; @@ -26,7 +26,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `id` int(11) NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci connection node_2a; set debug_sync= 'RESET'; UNLOCK TABLES; @@ -37,7 +37,7 @@ t1 CREATE TABLE `t1` ( `id` int(11) NOT NULL, `f2` int(11) DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 +) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci SELECT * from t1; id f2 1 NULL -- cgit v1.2.1 From 3e9e377bf6fc784a66482b9b13fe9d00c68dd1c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 6 Oct 2022 13:14:07 +0300 Subject: MDEV-29590 Deadlock between ibuf_insert_to_index_page_low() and DDL btr_page_reorganize_low(): Do not invoke lock_move_reorganize_page() on a dummy index during change buffer merge. The ibuf.index page latch that we are holding may block a DDL operation that is waiting in ibuf_delete_for_discarded_space() while holding exclusive lock_sys.latch. ibuf_insert_low() would refuse to buffer a change if any locks exist for the index page. --- storage/innobase/btr/btr0btr.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/storage/innobase/btr/btr0btr.cc b/storage/innobase/btr/btr0btr.cc index 1595ae917b5..6843771ac8c 100644 --- a/storage/innobase/btr/btr0btr.cc +++ b/storage/innobase/btr/btr0btr.cc @@ -1410,7 +1410,10 @@ static dberr_t btr_page_reorganize_low(page_cur_t *cursor, dict_index_t *index, block->page.frame + PAGE_MAX_TRX_ID + PAGE_HEADER, PAGE_DATA - (PAGE_MAX_TRX_ID + PAGE_HEADER))); - if (index->has_locking()) + if (!index->has_locking()); + else if (index->page == FIL_NULL) + ut_ad(index->is_dummy); + else lock_move_reorganize_page(block, old); /* Write log for the changes, if needed. */ -- cgit v1.2.1 From 959ad2f30fd233d70c92891e2e4edcbe7e03e5b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 6 Oct 2022 13:14:16 +0300 Subject: MDEV-29612 ReadViewBase::snapshot() misses an optimization ReadViewBase::snapshot(): In case m_low_limit_no==m_low_limit_id and m_ids would include everything between that and m_up_limit_id, set all fields to m_up_limit_id and clear m_ids, to speed up changes_visible() and append(). rw_trx_hash_t::debug_iterator(): Add an assertion. --- storage/innobase/include/trx0sys.h | 1 + storage/innobase/read/read0read.cc | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/storage/innobase/include/trx0sys.h b/storage/innobase/include/trx0sys.h index 30f2b431b54..4d231077b12 100644 --- a/storage/innobase/include/trx0sys.h +++ b/storage/innobase/include/trx0sys.h @@ -523,6 +523,7 @@ class rw_trx_hash_t if (element->trx) validate_element(element->trx); element->mutex.wr_unlock(); + ut_ad(element->id < element->no); return arg->action(element, arg->argument); } #endif diff --git a/storage/innobase/read/read0read.cc b/storage/innobase/read/read0read.cc index 05d12fa7f21..97eda7dba32 100644 --- a/storage/innobase/read/read0read.cc +++ b/storage/innobase/read/read0read.cc @@ -173,9 +173,22 @@ For details see: row_vers_old_has_index_entry() and row_purge_poss_sec() inline void ReadViewBase::snapshot(trx_t *trx) { trx_sys.snapshot_ids(trx, &m_ids, &m_low_limit_id, &m_low_limit_no); + if (m_ids.empty()) + { + m_up_limit_id= m_low_limit_id; + return; + } + std::sort(m_ids.begin(), m_ids.end()); - m_up_limit_id= m_ids.empty() ? m_low_limit_id : m_ids.front(); + m_up_limit_id= m_ids.front(); ut_ad(m_up_limit_id <= m_low_limit_id); + + if (m_low_limit_no == m_low_limit_id && + m_low_limit_id == m_up_limit_id + m_ids.size()) + { + m_ids.clear(); + m_low_limit_id= m_low_limit_no= m_up_limit_id; + } } -- cgit v1.2.1 From 97b0eeed2b2ac83898fc2d2a84929361806d2f59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 6 Oct 2022 13:14:40 +0300 Subject: Cleanup: Add missing const --- storage/innobase/handler/ha_innodb.cc | 2 +- storage/innobase/include/row0mysql.h | 19 +++++++------------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index 3594b31140c..f5e3317bc9b 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -20169,7 +20169,7 @@ innobase_rename_vc_templ( for purge thread. */ -bool innobase_allocate_row_for_vcol(THD *thd, dict_index_t *index, +bool innobase_allocate_row_for_vcol(THD *thd, const dict_index_t *index, mem_heap_t **heap, TABLE **table, VCOL_STORAGE *storage) { diff --git a/storage/innobase/include/row0mysql.h b/storage/innobase/include/row0mysql.h index c4a94a9b5ef..0414e5b0642 100644 --- a/storage/innobase/include/row0mysql.h +++ b/storage/innobase/include/row0mysql.h @@ -755,9 +755,8 @@ struct VCOL_STORAGE @return TRUE malloc failure */ -bool innobase_allocate_row_for_vcol( - THD * thd, - dict_index_t* index, +bool innobase_allocate_row_for_vcol(THD *thd, + const dict_index_t* index, mem_heap_t** heap, TABLE** table, VCOL_STORAGE* storage); @@ -773,17 +772,13 @@ public: ib_vcol_row(mem_heap_t *heap) : heap(heap) {} - byte *record(THD *thd, dict_index_t *index, TABLE **table) + byte *record(THD *thd, const dict_index_t *index, TABLE **table) { - if (!storage.innobase_record) - { - bool ok = innobase_allocate_row_for_vcol(thd, index, &heap, table, - &storage); - if (!ok) - return NULL; - } + if (!storage.innobase_record && + !innobase_allocate_row_for_vcol(thd, index, &heap, table, &storage)) + return nullptr; return storage.innobase_record; - }; + } ~ib_vcol_row() { -- cgit v1.2.1 From ea1415cbb632afde28c3706838a7db4e1810f9c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 6 Oct 2022 13:14:51 +0300 Subject: MDEV-22718: purge_sys.low_limit_no() is not protected purge_sys_t::low_limit_no(): Adjust a comment. Actually, this is protected after all. TrxUndoRsegsIterator::set_next(): Reduce the critical section of purge_sys.rseg->latch. Some purge_sys fields are accessed only by the purge coordinator task. --- storage/innobase/include/trx0purge.h | 5 ++++- storage/innobase/trx/trx0purge.cc | 12 ++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/storage/innobase/include/trx0purge.h b/storage/innobase/include/trx0purge.h index 0896d9c79a1..6109f7fb358 100644 --- a/storage/innobase/include/trx0purge.h +++ b/storage/innobase/include/trx0purge.h @@ -269,7 +269,10 @@ public: /** A wrapper around ReadView::low_limit_no(). */ trx_id_t low_limit_no() const { - /* MDEV-22718 FIXME: We are not holding latch here! */ + /* Other callers than purge_coordinator_callback() must be holding + purge_sys.latch here. The purge coordinator task may call this + without holding any latch, because it is the only thread that may + modify purge_sys.view. */ return view.low_limit_no(); } /** A wrapper around trx_sys_t::clone_oldest_view(). */ diff --git a/storage/innobase/trx/trx0purge.cc b/storage/innobase/trx/trx0purge.cc index c0fafe1ec6b..b5d00d9624f 100644 --- a/storage/innobase/trx/trx0purge.cc +++ b/storage/innobase/trx/trx0purge.cc @@ -110,7 +110,7 @@ TRANSACTIONAL_INLINE inline bool TrxUndoRsegsIterator::set_next() ut_ad(purge_sys.rseg->space->id == TRX_SYS_SPACE || srv_is_undo_tablespace(purge_sys.rseg->space->id)); - trx_id_t last_trx_no, tail_trx_no; + trx_id_t last_trx_no; { #ifdef SUX_LOCK_GENERIC purge_sys.rseg->latch.rd_lock(SRW_LOCK_CALL); @@ -119,9 +119,7 @@ TRANSACTIONAL_INLINE inline bool TrxUndoRsegsIterator::set_next() {purge_sys.rseg->latch}; #endif last_trx_no = purge_sys.rseg->last_trx_no(); - tail_trx_no = purge_sys.tail.trx_no; - purge_sys.tail.trx_no = last_trx_no; purge_sys.hdr_offset = purge_sys.rseg->last_offset(); purge_sys.hdr_page_no = purge_sys.rseg->last_page_no; @@ -130,11 +128,13 @@ TRANSACTIONAL_INLINE inline bool TrxUndoRsegsIterator::set_next() #endif } - /* Only the purge coordinator task will access - purge_sys.rseg_iter or purge_sys.hdr_page_no. */ + /* Only the purge coordinator task will access this object + purge_sys.rseg_iter, or any of purge_sys.hdr_page_no, + purge_sys.tail, purge_sys.head, or modify purge_sys.view. */ ut_ad(last_trx_no == m_rsegs.trx_no); ut_a(purge_sys.hdr_page_no != FIL_NULL); - ut_a(tail_trx_no <= last_trx_no); + ut_a(purge_sys.tail.trx_no <= last_trx_no); + purge_sys.tail.trx_no = last_trx_no; return(true); } -- cgit v1.2.1 From 1b1501b0f168bceb99b6033dd446af27e70973c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 6 Oct 2022 13:15:12 +0300 Subject: Simplify purge a little row_purge_step(): Process all available purge_node_t::undo_recs. row_purge_end(): Replaced with purge_node_t::end(). TODO: Do we need a "query graph node" at all for purge? --- storage/innobase/include/row0purge.h | 32 +++------------------- storage/innobase/row/row0purge.cc | 53 ++++++++++++++++++++---------------- 2 files changed, 34 insertions(+), 51 deletions(-) diff --git a/storage/innobase/include/row0purge.h b/storage/innobase/include/row0purge.h index 34af658cb12..b1390fd1ef1 100644 --- a/storage/innobase/include/row0purge.h +++ b/storage/innobase/include/row0purge.h @@ -72,9 +72,8 @@ row_purge_poss_sec( bool is_tree=false); /*************************************************************** -Does the purge operation for a single undo log record. This is a high-level -function used in an SQL execution graph. -@return query thread to run next or NULL */ +Does the purge operation. +@return query thread to run next */ que_thr_t* row_purge_step( /*===========*/ @@ -198,21 +197,7 @@ public: } /** Start processing an undo log record. */ - void start() - { - ut_ad(in_progress); - DBUG_ASSERT(common.type == QUE_NODE_PURGE); - - row= nullptr; - ref= nullptr; - index= nullptr; - update= nullptr; - found_clust= FALSE; - rec_type= ULINT_UNDEFINED; - cmpl_info= ULINT_UNDEFINED; - if (!purge_thd) - purge_thd= current_thd; - } + inline void start(); /** Close the existing table and release the MDL for it. */ @@ -253,16 +238,7 @@ public: /** Reset the state at end @return the query graph parent */ - que_node_t* end() - { - DBUG_ASSERT(common.type == QUE_NODE_PURGE); - close_table(); - ut_ad(undo_recs.empty()); - ut_d(in_progress= false); - purge_thd= nullptr; - mem_heap_empty(heap); - return common.parent; - } + inline que_node_t *end(); }; #endif diff --git a/storage/innobase/row/row0purge.cc b/storage/innobase/row/row0purge.cc index e525e427c7a..434ea7cfd20 100644 --- a/storage/innobase/row/row0purge.cc +++ b/storage/innobase/row/row0purge.cc @@ -1264,25 +1264,39 @@ row_purge( } } -/***********************************************************//** -Reset the purge query thread. */ -UNIV_INLINE -void -row_purge_end( -/*==========*/ - que_thr_t* thr) /*!< in: query thread */ +inline void purge_node_t::start() { - ut_ad(thr); - - thr->run_node = static_cast(thr->run_node)->end(); + ut_ad(in_progress); + DBUG_ASSERT(common.type == QUE_NODE_PURGE); + + row= nullptr; + ref= nullptr; + index= nullptr; + update= nullptr; + found_clust= FALSE; + rec_type= ULINT_UNDEFINED; + cmpl_info= ULINT_UNDEFINED; + if (!purge_thd) + purge_thd= current_thd; +} - ut_a(thr->run_node != NULL); +/** Reset the state at end +@return the query graph parent */ +inline que_node_t *purge_node_t::end() +{ + DBUG_ASSERT(common.type == QUE_NODE_PURGE); + close_table(); + ut_ad(undo_recs.empty()); + ut_d(in_progress= false); + purge_thd= nullptr; + mem_heap_empty(heap); + return common.parent; } + /***********************************************************//** -Does the purge operation for a single undo log record. This is a high-level -function used in an SQL execution graph. -@return query thread to run next or NULL */ +Does the purge operation. +@return query thread to run next */ que_thr_t* row_purge_step( /*===========*/ @@ -1294,22 +1308,15 @@ row_purge_step( node->start(); - if (!node->undo_recs.empty()) { + while (!node->undo_recs.empty()) { trx_purge_rec_t purge_rec = node->undo_recs.front(); node->undo_recs.pop(); node->roll_ptr = purge_rec.roll_ptr; row_purge(node, purge_rec.undo_rec, thr); - - if (node->undo_recs.empty()) { - row_purge_end(thr); - } else { - thr->run_node = node; - } - } else { - row_purge_end(thr); } + thr->run_node = node->end(); return(thr); } -- cgit v1.2.1 From 5e7bafe01ca94ff7ad6d40417df5d1601dd3cacf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 6 Oct 2022 14:10:39 +0300 Subject: MDEV-29710: Disable a timing-sensitive test on Valgrind --- mysql-test/suite/innodb/t/innodb-index-online.test | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/suite/innodb/t/innodb-index-online.test b/mysql-test/suite/innodb/t/innodb-index-online.test index f4f17d9c92c..ab4f5a965da 100644 --- a/mysql-test/suite/innodb/t/innodb-index-online.test +++ b/mysql-test/suite/innodb/t/innodb-index-online.test @@ -2,6 +2,7 @@ --source include/innodb_encrypt_log.inc --source include/have_debug.inc --source include/have_debug_sync.inc +--source include/no_valgrind_without_big.inc let $innodb_metrics_select= SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl'; -- cgit v1.2.1 From fa0cada95baeb9fad5a2d6dad687bb13c93da9b6 Mon Sep 17 00:00:00 2001 From: Aleksey Midenkov Date: Fri, 7 Oct 2022 00:45:21 +0300 Subject: MDEV-28576 RENAME COLUMN with NOCOPY algorithm leads to corrupt partitioned table 10.5 part: test cases and comments. The code is in the merge commit 74fe1c44aa1 When f.ex. table is partitioned by HASH(a) and we rename column `a' to `b' partitioning filter stays unchanged: HASH(a). That's the wrong behavior. The patch updates partitioning filter in accordance to the new columns names. That includes partition/subpartition expression and partition/subpartition field list. --- mysql-test/main/partition_alter.result | 78 ++++++++++++++++++++++++++++++++++ mysql-test/main/partition_alter.test | 41 ++++++++++++++++++ sql/field.h | 2 +- sql/partition_info.h | 8 ++++ sql/sql_partition.cc | 1 + sql/sql_table.cc | 6 +++ 6 files changed, 135 insertions(+), 1 deletion(-) diff --git a/mysql-test/main/partition_alter.result b/mysql-test/main/partition_alter.result index 2b0a09d2653..539f896f54f 100644 --- a/mysql-test/main/partition_alter.result +++ b/mysql-test/main/partition_alter.result @@ -212,3 +212,81 @@ test.t check status OK delete from t order by b limit 1; drop table t; # End of 10.3 tests +# +# MDEV-28576 RENAME COLUMN with NOCOPY algorithm leads to corrupt partitioned table +# +create table t (a int) +partition by list (a) +subpartition by hash(a) subpartitions 2 +(partition p0 values in (1)); +alter table t rename column a to b, algorithm=nocopy; +show create table t; +Table Create Table +t CREATE TABLE `t` ( + `b` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci + PARTITION BY LIST (`b`) +SUBPARTITION BY HASH (`b`) +SUBPARTITIONS 2 +(PARTITION `p0` VALUES IN (1) ENGINE = MyISAM) +alter table t rename column b to c, algorithm=copy; +show create table t; +Table Create Table +t CREATE TABLE `t` ( + `c` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci + PARTITION BY LIST (`c`) +SUBPARTITION BY HASH (`c`) +SUBPARTITIONS 2 +(PARTITION `p0` VALUES IN (1) ENGINE = MyISAM) +drop table t; +create table t (d int, e int) +partition by list columns (d, e) +subpartition by key (d, e) +(partition p0 values in ((2, 3))); +alter table t rename column d to f, rename column e to g, algorithm=nocopy; +show create table t; +Table Create Table +t CREATE TABLE `t` ( + `f` int(11) DEFAULT NULL, + `g` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci + PARTITION BY LIST COLUMNS(`f`,`g`) +SUBPARTITION BY KEY (`f`,`g`) +(PARTITION `p0` VALUES IN ((2,3)) ENGINE = MyISAM) +alter table t rename column f to h, rename column g to i, algorithm=copy; +show create table t; +Table Create Table +t CREATE TABLE `t` ( + `h` int(11) DEFAULT NULL, + `i` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci + PARTITION BY LIST COLUMNS(`h`,`i`) +SUBPARTITION BY KEY (`h`,`i`) +(PARTITION `p0` VALUES IN ((2,3)) ENGINE = MyISAM) +drop table t; +create table t (k int, l int) +partition by range (k) +subpartition by hash(l) subpartitions 4 +(partition p0 values less than (5)); +alter table t rename column k to l, rename column l to k; +show create table t; +Table Create Table +t CREATE TABLE `t` ( + `l` int(11) DEFAULT NULL, + `k` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci + PARTITION BY RANGE (`l`) +SUBPARTITION BY HASH (`k`) +SUBPARTITIONS 4 +(PARTITION `p0` VALUES LESS THAN (5) ENGINE = MyISAM) +drop table t; +create table t (a int, b int) partition by list (b) (partition p1 values in (1, 2)); +insert into t values (0, 1), (2, 2); +alter table t rename column b to f, rename column a to b, algorithm=nocopy; +check table t; +Table Op Msg_type Msg_text +test.t check status OK +delete from t order by b limit 1; +drop table t; +# End of 10.5 tests diff --git a/mysql-test/main/partition_alter.test b/mysql-test/main/partition_alter.test index ded6fde4794..4f17b520489 100644 --- a/mysql-test/main/partition_alter.test +++ b/mysql-test/main/partition_alter.test @@ -204,3 +204,44 @@ delete from t order by b limit 1; drop table t; --echo # End of 10.3 tests + +--echo # +--echo # MDEV-28576 RENAME COLUMN with NOCOPY algorithm leads to corrupt partitioned table +--echo # +create table t (a int) +partition by list (a) +subpartition by hash(a) subpartitions 2 +(partition p0 values in (1)); +alter table t rename column a to b, algorithm=nocopy; +show create table t; +alter table t rename column b to c, algorithm=copy; +show create table t; +drop table t; + +create table t (d int, e int) +partition by list columns (d, e) +subpartition by key (d, e) +(partition p0 values in ((2, 3))); +alter table t rename column d to f, rename column e to g, algorithm=nocopy; +show create table t; +alter table t rename column f to h, rename column g to i, algorithm=copy; +show create table t; +drop table t; + +create table t (k int, l int) +partition by range (k) +subpartition by hash(l) subpartitions 4 +(partition p0 values less than (5)); +alter table t rename column k to l, rename column l to k; +show create table t; +drop table t; + +create table t (a int, b int) partition by list (b) (partition p1 values in (1, 2)); +insert into t values (0, 1), (2, 2); +alter table t rename column b to f, rename column a to b, algorithm=nocopy; +check table t; +delete from t order by b limit 1; +# cleanup +drop table t; + +--echo # End of 10.5 tests diff --git a/sql/field.h b/sql/field.h index 8b7c6d6a554..e1b67d6acc1 100644 --- a/sql/field.h +++ b/sql/field.h @@ -5661,7 +5661,7 @@ inline bool Row_definition_list::eq_name(const Spvar_definition *def, class Create_field :public Column_definition { public: - LEX_CSTRING change; // If done with alter table + LEX_CSTRING change; // Old column name if column is renamed by ALTER LEX_CSTRING after; // Put column after this one Field *field; // For alter table const TYPELIB *save_interval; // Temporary copy for the above diff --git a/sql/partition_info.h b/sql/partition_info.h index 55ea20cf681..aebb81ff9c5 100644 --- a/sql/partition_info.h +++ b/sql/partition_info.h @@ -79,6 +79,10 @@ struct Vers_part_info : public Sql_alloc partition_element *hist_part; }; +/* + See generate_partition_syntax() for details of how the data is used + in partition expression. +*/ class partition_info : public Sql_alloc { public: @@ -88,6 +92,10 @@ public: List partitions; List temp_partitions; + /* + These are mutually exclusive with part_expr/subpart_expr depending on + what is specified in partitioning filter: expression or column list. + */ List part_field_list; List subpart_field_list; diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 78f56992f46..f004981bd2a 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -4801,6 +4801,7 @@ static void check_datadir_altered_for_innodb(THD *thd, @param[out] partition_changed Boolean indicating whether partition changed @param[out] fast_alter_table Boolean indicating if fast partition alter is possible. + @param[out] thd->work_part_info Prepared part_info for the new table @return Operation status @retval TRUE Error diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 5759e21c0fc..b5edd5bba6c 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -10535,6 +10535,9 @@ do_continue:; #ifdef WITH_PARTITION_STORAGE_ENGINE { + /* + Partitioning: part_info is prepared and returned via thd->work_part_info + */ if (prep_alter_part_table(thd, table, alter_info, create_info, &partition_changed, &fast_alter_partition)) { @@ -10712,6 +10715,9 @@ do_continue:; else alter_info->flags|= ALTER_INDEX_ORDER; create_info->alias= alter_ctx.table_name; + /* + Partitioning: part_info is passed via thd->work_part_info + */ error= create_table_impl(thd, alter_ctx.db, alter_ctx.table_name, alter_ctx.new_db, alter_ctx.tmp_name, alter_ctx.get_tmp_path(), -- cgit v1.2.1 From eae037c286e08d9f5f434f68048719df882f72b9 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Thu, 6 Oct 2022 16:52:16 +0200 Subject: galera crashes in debug builds after 6b685ea7b077 one can no longer violate the locking protocol by invoking thd_get_ha_data() on some other thread without protecting that with a mutex --- storage/innobase/handler/ha_innodb.cc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index f5e3317bc9b..d395eb4b1e4 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -18727,7 +18727,10 @@ wsrep_abort_transaction( ut_ad(bf_thd); ut_ad(victim_thd); + wsrep_thd_kill_LOCK(victim_thd); + wsrep_thd_LOCK(victim_thd); trx_t* victim_trx= thd_to_trx(victim_thd); + wsrep_thd_UNLOCK(victim_thd); WSREP_DEBUG("abort transaction: BF: %s victim: %s victim conf: %s", wsrep_thd_query(bf_thd), @@ -18737,7 +18740,6 @@ wsrep_abort_transaction( if (victim_trx) { victim_trx->lock.set_wsrep_victim(); - wsrep_thd_kill_LOCK(victim_thd); wsrep_thd_LOCK(victim_thd); bool aborting= !wsrep_thd_set_wsrep_aborter(bf_thd, victim_thd); wsrep_thd_UNLOCK(victim_thd); @@ -18754,8 +18756,6 @@ wsrep_abort_transaction( };); wsrep_thd_bf_abort(bf_thd, victim_thd, signal); } - wsrep_thd_kill_UNLOCK(victim_thd); - DBUG_VOID_RETURN; } else { DBUG_EXECUTE_IF("sync.before_wsrep_thd_abort", { @@ -18766,11 +18766,10 @@ wsrep_abort_transaction( DBUG_ASSERT(!debug_sync_set_action(bf_thd, STRING_WITH_LEN(act))); };); - wsrep_thd_kill_LOCK(victim_thd); wsrep_thd_bf_abort(bf_thd, victim_thd, signal); - wsrep_thd_kill_UNLOCK(victim_thd); } + wsrep_thd_kill_UNLOCK(victim_thd); DBUG_VOID_RETURN; } -- cgit v1.2.1 From 9fd91863e6043d3c661ccb1da6aff62256924b72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Fri, 7 Oct 2022 12:46:06 +0300 Subject: MDEV-29613 fixup: Mroonga -Wunused-function --- storage/mroonga/ha_mroonga.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storage/mroonga/ha_mroonga.cpp b/storage/mroonga/ha_mroonga.cpp index fdca803ad96..b6e4d6f2dfb 100644 --- a/storage/mroonga/ha_mroonga.cpp +++ b/storage/mroonga/ha_mroonga.cpp @@ -335,7 +335,7 @@ static int mrn_change_encoding(grn_ctx *ctx, const CHARSET_INFO *charset) return mrn::encoding::set(ctx, charset); } -#if !defined(DBUG_OFF) && !defined(_lint) +#if defined DBUG_TRACE && !defined(_lint) static const char *mrn_inspect_thr_lock_type(enum thr_lock_type lock_type) { const char *inspected = ""; -- cgit v1.2.1 From 4a8da624b5634a7ea891d5984831535d66422032 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Fri, 7 Oct 2022 12:48:38 +0300 Subject: Groonga: GCC 12.2.0 -Og -Wuse-after-free This message would always have been invoked on ptr=NULL. --- storage/mroonga/vendor/groonga/lib/alloc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/storage/mroonga/vendor/groonga/lib/alloc.c b/storage/mroonga/vendor/groonga/lib/alloc.c index 5e556b83712..94e31901cec 100644 --- a/storage/mroonga/vendor/groonga/lib/alloc.c +++ b/storage/mroonga/vendor/groonga/lib/alloc.c @@ -828,8 +828,8 @@ grn_free_default(grn_ctx *ctx, void *ptr, if (ptr) { GRN_ADD_ALLOC_COUNT(-1); } else { - GRN_LOG(ctx, GRN_LOG_ALERT, "free fail (%p) (%s:%d) <%d>", - ptr, file, line, alloc_count); + GRN_LOG(ctx, GRN_LOG_ALERT, "free fail (%s:%d) <%d>", + file, line, alloc_count); } } } -- cgit v1.2.1 From 1d35ec1ae1d1ea27d4b352f54fe5a3e720851e83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Fri, 7 Oct 2022 12:49:14 +0300 Subject: Mroonga: GCC 12.2.0 -Og -Wmaybe-uninitialized --- storage/mroonga/ha_mroonga.cpp | 14 +++--- storage/mroonga/vendor/groonga/lib/db.c | 82 ++++++++++++++++----------------- 2 files changed, 47 insertions(+), 49 deletions(-) diff --git a/storage/mroonga/ha_mroonga.cpp b/storage/mroonga/ha_mroonga.cpp index b6e4d6f2dfb..d439bd6f1e1 100644 --- a/storage/mroonga/ha_mroonga.cpp +++ b/storage/mroonga/ha_mroonga.cpp @@ -3396,16 +3396,16 @@ int ha_mroonga::wrapper_create_index(const char *name, TABLE *table, index_tables, NULL, tmp_share); } } - } - if (error) { - for (uint j = 0; j < i; j++) { - if (index_tables[j]) { - grn_obj_remove(ctx, index_tables[j]); + if (error) { + for (uint j = 0; j < i; j++) { + if (index_tables[j]) { + grn_obj_remove(ctx, index_tables[j]); + } } + grn_obj_remove(ctx, grn_table); + grn_table = NULL; } - grn_obj_remove(ctx, grn_table); - grn_table = NULL; } MRN_FREE_VARIABLE_LENGTH_ARRAYS(index_tables); DBUG_RETURN(error); diff --git a/storage/mroonga/vendor/groonga/lib/db.c b/storage/mroonga/vendor/groonga/lib/db.c index 418335aaf00..7602d1bc5b7 100644 --- a/storage/mroonga/vendor/groonga/lib/db.c +++ b/storage/mroonga/vendor/groonga/lib/db.c @@ -3591,53 +3591,51 @@ grn_obj_search_column_index_by_key(grn_ctx *ctx, grn_obj *obj, if (need_cast) { GRN_OBJ_INIT(&casted_query, GRN_BULK, 0, key_type); rc = grn_obj_cast(ctx, query, &casted_query, GRN_FALSE); - if (rc == GRN_SUCCESS) { - key = GRN_BULK_HEAD(&casted_query); - key_len = GRN_BULK_VSIZE(&casted_query); - } - } else { - rc = GRN_SUCCESS; - key = GRN_BULK_HEAD(query); - key_len = GRN_BULK_VSIZE(query); + if (rc != GRN_SUCCESS) + goto fail; + query = &casted_query; } - if (rc == GRN_SUCCESS) { - if (grn_logger_pass(ctx, GRN_REPORT_INDEX_LOG_LEVEL)) { - const char *tag; - if (optarg) { - switch (optarg->mode) { - case GRN_OP_MATCH : - tag = "[key][match]"; - break; - case GRN_OP_EXACT : - tag = "[key][exact]"; - break; - case GRN_OP_NEAR : - tag = "[key][near]"; - break; - case GRN_OP_NEAR2 : - tag = "[key][near2]"; - break; - case GRN_OP_SIMILAR : - tag = "[key][similar]"; - break; - case GRN_OP_REGEXP : - tag = "[key][regexp]"; - break; - case GRN_OP_FUZZY : - tag = "[key][fuzzy]"; - break; - default : - tag = "[key][unknown]"; - break; - } - } else { + + key = GRN_BULK_HEAD(query); + key_len = GRN_BULK_VSIZE(query); + + if (grn_logger_pass(ctx, GRN_REPORT_INDEX_LOG_LEVEL)) { + const char *tag; + if (optarg) { + switch (optarg->mode) { + case GRN_OP_MATCH : + tag = "[key][match]"; + break; + case GRN_OP_EXACT : tag = "[key][exact]"; + break; + case GRN_OP_NEAR : + tag = "[key][near]"; + break; + case GRN_OP_NEAR2 : + tag = "[key][near2]"; + break; + case GRN_OP_SIMILAR : + tag = "[key][similar]"; + break; + case GRN_OP_REGEXP : + tag = "[key][regexp]"; + break; + case GRN_OP_FUZZY : + tag = "[key][fuzzy]"; + break; + default : + tag = "[key][unknown]"; + break; } - grn_obj_search_index_report(ctx, tag, obj); + } else { + tag = "[key][exact]"; } - rc = grn_ii_sel(ctx, (grn_ii *)obj, key, key_len, - (grn_hash *)res, op, optarg); + grn_obj_search_index_report(ctx, tag, obj); } + rc = grn_ii_sel(ctx, (grn_ii *)obj, key, key_len, + (grn_hash *)res, op, optarg); + fail: if (need_cast) { GRN_OBJ_FIN(ctx, &casted_query); } -- cgit v1.2.1 From 3fe55fa8be9bdfbaefc69e0cd7dea12833fe9cbb Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Thu, 6 Oct 2022 19:09:44 +0200 Subject: CREATE ... VALUES ... didn't require INSERT privilege --- mysql-test/main/grant3.result | 19 ++++++++++++++++++- mysql-test/main/grant3.test | 20 +++++++++++++++++++- sql/sql_parse.cc | 8 +++++--- 3 files changed, 42 insertions(+), 5 deletions(-) diff --git a/mysql-test/main/grant3.result b/mysql-test/main/grant3.result index 63e343aaf4d..cd686e19a9b 100644 --- a/mysql-test/main/grant3.result +++ b/mysql-test/main/grant3.result @@ -195,4 +195,21 @@ connection default; DROP USER 'user2'@'%'; DROP DATABASE temp; set global sql_mode=default; -End of 5.0 tests +# +# End of 5.0 tests +# +create database db1; +create user foo@localhost; +grant create on db1.* to foo@localhost; +connect foo,localhost,foo; +create temporary table t as values (1),(2),(3); +use db1; +create table t1 as select * from test.t; +ERROR 42000: INSERT command denied to user 'foo'@'localhost' for table `db1`.`t1` +create table t1 as values (1),(2),(3); +ERROR 42000: INSERT command denied to user 'foo'@'localhost' for table `db1`.`t1` +create table t1 (a int); +disconnect foo; +connection default; +drop user foo@localhost; +drop database db1; diff --git a/mysql-test/main/grant3.test b/mysql-test/main/grant3.test index 27f565916f7..67c185bcccd 100644 --- a/mysql-test/main/grant3.test +++ b/mysql-test/main/grant3.test @@ -207,7 +207,25 @@ DROP USER 'user2'@'%'; DROP DATABASE temp; set global sql_mode=default; ---echo End of 5.0 tests +--echo # +--echo # End of 5.0 tests +--echo # + +create database db1; +create user foo@localhost; +grant create on db1.* to foo@localhost; +connect foo,localhost,foo; +create temporary table t as values (1),(2),(3); +use db1; +--error ER_TABLEACCESS_DENIED_ERROR +create table t1 as select * from test.t; +--error ER_TABLEACCESS_DENIED_ERROR +create table t1 as values (1),(2),(3); +create table t1 (a int); +disconnect foo; +connection default; +drop user foo@localhost; +drop database db1; # Wait till we reached the initial number of concurrent sessions --source include/wait_until_count_sessions.inc diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 471d93d97f6..57d7f93eacc 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -9857,7 +9857,7 @@ bool create_table_precheck(THD *thd, TABLE_LIST *tables, { LEX *lex= thd->lex; SELECT_LEX *select_lex= lex->first_select_lex(); - ulong want_priv; + ulong want_priv= CREATE_ACL; bool error= TRUE; // Error message is given DBUG_ENTER("create_table_precheck"); @@ -9866,8 +9866,10 @@ bool create_table_precheck(THD *thd, TABLE_LIST *tables, CREATE TABLE ... SELECT, also require INSERT. */ - want_priv= lex->tmp_table() ? CREATE_TMP_ACL : - (CREATE_ACL | (select_lex->item_list.elements ? INSERT_ACL : 0)); + if (lex->tmp_table()) + want_priv= CREATE_TMP_ACL; + else if (select_lex->item_list.elements || select_lex->tvc) + want_priv= INSERT_ACL; /* CREATE OR REPLACE on not temporary tables require DROP_ACL */ if (lex->create_info.or_replace() && !lex->tmp_table()) -- cgit v1.2.1 From 5f26f50020e9a41f644893088e94de74de55f95d Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Fri, 7 Oct 2022 15:14:50 +0200 Subject: typo fixed, followup for 3fe55fa8be9 --- mysql-test/main/grant3.result | 8 ++++++++ mysql-test/main/grant3.test | 10 ++++++++++ sql/sql_parse.cc | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/mysql-test/main/grant3.result b/mysql-test/main/grant3.result index cd686e19a9b..160153b1674 100644 --- a/mysql-test/main/grant3.result +++ b/mysql-test/main/grant3.result @@ -211,5 +211,13 @@ ERROR 42000: INSERT command denied to user 'foo'@'localhost' for table `db1`.`t1 create table t1 (a int); disconnect foo; connection default; +revoke create on db1.* from foo@localhost; +grant insert on db1.* to foo@localhost; +connect foo,localhost,foo; +use db1; +create table t2 as values (1),(2),(3); +ERROR 42000: CREATE command denied to user 'foo'@'localhost' for table `db1`.`t2` +disconnect foo; +connection default; drop user foo@localhost; drop database db1; diff --git a/mysql-test/main/grant3.test b/mysql-test/main/grant3.test index 67c185bcccd..5337d59efd8 100644 --- a/mysql-test/main/grant3.test +++ b/mysql-test/main/grant3.test @@ -223,6 +223,16 @@ create table t1 as select * from test.t; create table t1 as values (1),(2),(3); create table t1 (a int); disconnect foo; +connection default; + +revoke create on db1.* from foo@localhost; +grant insert on db1.* to foo@localhost; +connect foo,localhost,foo; +use db1; +--error ER_TABLEACCESS_DENIED_ERROR +create table t2 as values (1),(2),(3); +disconnect foo; + connection default; drop user foo@localhost; drop database db1; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 57d7f93eacc..37d54b1165e 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -9869,7 +9869,7 @@ bool create_table_precheck(THD *thd, TABLE_LIST *tables, if (lex->tmp_table()) want_priv= CREATE_TMP_ACL; else if (select_lex->item_list.elements || select_lex->tvc) - want_priv= INSERT_ACL; + want_priv|= INSERT_ACL; /* CREATE OR REPLACE on not temporary tables require DROP_ACL */ if (lex->create_info.or_replace() && !lex->tmp_table()) -- cgit v1.2.1 From 7be82a1fec92a582a4933f6ee186ea08350d154f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Mon, 3 Oct 2022 10:30:34 +0300 Subject: MDEV-29142 : Assertion `!_current_thd()' failed in void destroy_background_thd(THD*) In test user has set WSREP_ON=OFF this causes streaming replication recovery to fail and this caused call to unireg_abort(). However, this call is not necessary and we can let transaction to fail. Naturally, if real user does this he needs to bootstrap his cluster. --- mysql-test/suite/galera/r/MDEV-29142.result | 43 +++++++++++++++++ mysql-test/suite/galera/t/MDEV-29142.test | 71 +++++++++++++++++++++++++++++ sql/wsrep_mysqld.cc | 13 +++--- 3 files changed, 121 insertions(+), 6 deletions(-) create mode 100644 mysql-test/suite/galera/r/MDEV-29142.result create mode 100644 mysql-test/suite/galera/t/MDEV-29142.test diff --git a/mysql-test/suite/galera/r/MDEV-29142.result b/mysql-test/suite/galera/r/MDEV-29142.result new file mode 100644 index 00000000000..3816ca19867 --- /dev/null +++ b/mysql-test/suite/galera/r/MDEV-29142.result @@ -0,0 +1,43 @@ +connection node_2; +connection node_1; +connection node_1; +connection node_2; +connection node_1; +call mtr.add_suppression("WSREP: Event .* Write_rows_v1 apply failed:.*"); +call mtr.add_suppression("WSREP: Failed to apply write set:.*"); +connection node_2; +call mtr.add_suppression("WSREP: Failed to open table mysql.wsrep_streaming_log for writing"); +call mtr.add_suppression("WSREP: Failed to open SR table for write"); +call mtr.add_suppression("WSREP: Failed to recover SR transactions from schema: wsrep_on : 0"); +SET @@global.tx_read_only = ON; +SET default_storage_engine = SEQUENCE; +create table t1 (c1 int); +ERROR HY000: Can't create table `test`.`t1` (errno: 131 "Command not supported by the engine") +CREATE TABLE t1(c1 VARCHAR(20)) engine=innodb; +INSERT INTO t1 VALUES(0xA9B8); +create TABLE t1 (c1 int) engine=innodb; +ERROR 42S01: Table 't1' already exists +create TABLE t1 (c1 int) engine=innodb; +ERROR 42S01: Table 't1' already exists +SET GLOBAL wsrep_on=OFF; +SET GLOBAL wsrep_cluster_address='gcomm://'; +INSERT INTO t1 VALUES (1); +SELECT 1; +1 +1 +SELECT 1; +1 +1 +COMMIT; +# Killing cluster because we have messed with wsrep_cluster_address +connection node_2; +SET SESSION wsrep_sync_wait = 0; +Killing server ... +connection node_1; +SET SESSION wsrep_sync_wait = 0; +Killing server ... +connection node_2; +call mtr.add_suppression("WSREP: Failed to open table mysql.wsrep_streaming_log for writing"); +call mtr.add_suppression("WSREP: Failed to open SR table for write"); +call mtr.add_suppression("WSREP: Failed to recover SR transactions from schema: wsrep_on : 0"); +DROP TABLE IF EXISTS t1; diff --git a/mysql-test/suite/galera/t/MDEV-29142.test b/mysql-test/suite/galera/t/MDEV-29142.test new file mode 100644 index 00000000000..7f68e91859c --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-29142.test @@ -0,0 +1,71 @@ +--source include/galera_cluster.inc +--source include/have_sequence.inc +--source include/force_restart.inc + +# Save original auto_increment_offset values. +--let $node_1=node_1 +--let $node_2=node_2 +--source include/auto_increment_offset_save.inc + +--connection node_1 +call mtr.add_suppression("WSREP: Event .* Write_rows_v1 apply failed:.*"); +call mtr.add_suppression("WSREP: Failed to apply write set:.*"); + +--connection node_2 +call mtr.add_suppression("WSREP: Failed to open table mysql.wsrep_streaming_log for writing"); +call mtr.add_suppression("WSREP: Failed to open SR table for write"); +call mtr.add_suppression("WSREP: Failed to recover SR transactions from schema: wsrep_on : 0"); + +SET @@global.tx_read_only = ON; +--error 0,1286 +SET default_storage_engine = SEQUENCE; +--error 1005 +create table t1 (c1 int); +CREATE TABLE t1(c1 VARCHAR(20)) engine=innodb; +INSERT INTO t1 VALUES(0xA9B8); +--error 1050 +create TABLE t1 (c1 int) engine=innodb; +--error 1050 +create TABLE t1 (c1 int) engine=innodb; +--let $wsrep_cluster_address_saved = `SELECT @@global.wsrep_cluster_address` +SET GLOBAL wsrep_on=OFF; +SET GLOBAL wsrep_cluster_address='gcomm://'; +INSERT INTO t1 VALUES (1); +SELECT 1; +SELECT 1; +COMMIT; + +# +# Kill the entire cluster and restart +# +--echo # Killing cluster because we have messed with wsrep_cluster_address +--connection node_2 +SET SESSION wsrep_sync_wait = 0; +--source include/kill_galera.inc + +--connection node_1 +SET SESSION wsrep_sync_wait = 0; +--source include/kill_galera.inc + +--remove_file $MYSQLTEST_VARDIR/mysqld.1/data/grastate.dat +--let $start_mysqld_params = "--wsrep-new-cluster" +--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.1.expect +--source include/start_mysqld.inc + +--connection node_2 +--let $start_mysqld_params = "" +--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.2.expect +--source include/start_mysqld.inc + +call mtr.add_suppression("WSREP: Failed to open table mysql.wsrep_streaming_log for writing"); +call mtr.add_suppression("WSREP: Failed to open SR table for write"); +call mtr.add_suppression("WSREP: Failed to recover SR transactions from schema: wsrep_on : 0"); + +# +# Cleanup +# +--source ../../galera/include/auto_increment_offset_restore.inc +# We killed cluster, it might mean that table does not exists +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc index 743837f4ee1..ccf191b2e21 100644 --- a/sql/wsrep_mysqld.cc +++ b/sql/wsrep_mysqld.cc @@ -414,19 +414,20 @@ void wsrep_recover_sr_from_storage(THD *orig_thd) if (!wsrep_schema) { WSREP_ERROR("Wsrep schema not initialized when trying to recover " - "streaming transactions"); - unireg_abort(1); + "streaming transactions: wsrep_on %d", WSREP_ON); + trans_commit(orig_thd); } if (wsrep_schema->recover_sr_transactions(orig_thd)) { - WSREP_ERROR("Failed to recover SR transactions from schema"); - unireg_abort(1); + WSREP_ERROR("Failed to recover SR transactions from schema: wsrep_on : %d", WSREP_ON); + trans_commit(orig_thd); } break; default: /* */ - WSREP_ERROR("Unsupported wsrep SR store type: %lu", wsrep_SR_store_type); - unireg_abort(1); + WSREP_ERROR("Unsupported wsrep SR store type: %lu wsrep_on: %d", + wsrep_SR_store_type, WSREP_ON); + trans_commit(orig_thd); break; } } -- cgit v1.2.1 From ab3ec013c41db1b9943c5e34d3d44a35fa7538fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Mon, 3 Oct 2022 14:04:14 +0300 Subject: MDEV-27123 : auto_increment_increment and auto_increment_offset reset to 1 in current session after alter table on auto-increment column Problem was that in ALTER TABLE execution variables were set to 1 even when wsrep_auto_increment_control is OFF. We should set them only when wsrep_auto_increment_control is ON. --- mysql-test/suite/galera/r/MDEV-27123.result | 17 +++++++++++++++++ mysql-test/suite/galera/t/MDEV-27123.opt | 2 ++ mysql-test/suite/galera/t/MDEV-27123.test | 8 ++++++++ sql/sql_alter.cc | 14 ++++++++++++-- 4 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 mysql-test/suite/galera/r/MDEV-27123.result create mode 100644 mysql-test/suite/galera/t/MDEV-27123.opt create mode 100644 mysql-test/suite/galera/t/MDEV-27123.test diff --git a/mysql-test/suite/galera/r/MDEV-27123.result b/mysql-test/suite/galera/r/MDEV-27123.result new file mode 100644 index 00000000000..98377162a35 --- /dev/null +++ b/mysql-test/suite/galera/r/MDEV-27123.result @@ -0,0 +1,17 @@ +connection node_2; +connection node_1; +show variables like 'auto_increment%'; +Variable_name Value +auto_increment_increment 3 +auto_increment_offset 3 +create table t4 (c1 int primary key auto_increment) engine=innodb; +show variables like 'auto_increment%'; +Variable_name Value +auto_increment_increment 3 +auto_increment_offset 3 +alter table t4 add (c2 varchar(50)); +show variables like 'auto_increment%'; +Variable_name Value +auto_increment_increment 3 +auto_increment_offset 3 +DROP TABLE t4; diff --git a/mysql-test/suite/galera/t/MDEV-27123.opt b/mysql-test/suite/galera/t/MDEV-27123.opt new file mode 100644 index 00000000000..1c4accb816a --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-27123.opt @@ -0,0 +1,2 @@ +--wsrep_auto_increment_control=OFF --auto_increment_increment=3 --auto_increment_offset=3 + diff --git a/mysql-test/suite/galera/t/MDEV-27123.test b/mysql-test/suite/galera/t/MDEV-27123.test new file mode 100644 index 00000000000..c2b682d6ded --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-27123.test @@ -0,0 +1,8 @@ +--source include/galera_cluster.inc + +show variables like 'auto_increment%'; +create table t4 (c1 int primary key auto_increment) engine=innodb; +show variables like 'auto_increment%'; +alter table t4 add (c2 varchar(50)); +show variables like 'auto_increment%'; +DROP TABLE t4; diff --git a/sql/sql_alter.cc b/sql/sql_alter.cc index 6d75c20e868..67c6a081880 100644 --- a/sql/sql_alter.cc +++ b/sql/sql_alter.cc @@ -486,8 +486,18 @@ bool Sql_cmd_alter_table::execute(THD *thd) DBUG_RETURN(TRUE); } - thd->variables.auto_increment_offset = 1; - thd->variables.auto_increment_increment = 1; + /* + It makes sense to set auto_increment_* to defaults in TOI operations. + Must be done before wsrep_TOI_begin() since Query_log_event encapsulating + TOI statement and auto inc variables for wsrep replication is constructed + there. Variables are reset back in THD::reset_for_next_command() before + processing of next command. + */ + if (wsrep_auto_increment_control) + { + thd->variables.auto_increment_offset = 1; + thd->variables.auto_increment_increment = 1; + } } #endif -- cgit v1.2.1 From e8acec89741777ebaf46b499fdfe191ad88c3a95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Tue, 4 Oct 2022 14:08:36 +0300 Subject: MDEV-26597 : Assertion `!wsrep_has_changes(thd) || (thd->lex->sql_command == SQLCOM_CREATE_TABLE && !thd->is_current_stmt_binlog_format_row())' failed. If repl.max_ws_size is set too low following CREATE TABLE could fail during commit. In this case wsrep_commit_empty should allow rolling it back if provider state is s_aborted. Furhermore, original ER_ERROR_DURING_COMMIT does not really tell anything clear for user. Therefore, this commit adds a new error ER_TOO_BIG_WRITESET. This will change some test cases output. --- mysql-test/suite/galera/r/MDEV-26597.result | 19 +++++++++++++ .../suite/galera/r/galera_repl_max_ws_size.result | 2 +- .../suite/galera/r/galera_var_max_ws_size.result | 2 +- mysql-test/suite/galera/t/MDEV-26597.test | 32 ++++++++++++++++++++++ .../suite/galera/t/galera_repl_max_ws_size.test | 2 +- .../suite/galera/t/galera_var_max_ws_size.test | 2 +- sql/share/errmsg-utf8.txt | 2 ++ sql/wsrep_mysqld.cc | 4 +-- sql/wsrep_thd.h | 10 ++++--- sql/wsrep_trans_observer.h | 22 +++++++++++---- 10 files changed, 81 insertions(+), 16 deletions(-) create mode 100644 mysql-test/suite/galera/r/MDEV-26597.result create mode 100644 mysql-test/suite/galera/t/MDEV-26597.test diff --git a/mysql-test/suite/galera/r/MDEV-26597.result b/mysql-test/suite/galera/r/MDEV-26597.result new file mode 100644 index 00000000000..76730b56db1 --- /dev/null +++ b/mysql-test/suite/galera/r/MDEV-26597.result @@ -0,0 +1,19 @@ +connection node_2; +connection node_1; +connection node_1; +connection node_2; +connection node_2; +CREATE TABLE t3 (c1 INTEGER NOT NULL PRIMARY KEY, c2 FLOAT(3,2)); +SET GLOBAL wsrep_provider_options = 'repl.max_ws_size=512'; +SET @@autocommit=0; +INSERT INTO t3 VALUES (1000,0.00),(1001,0.25),(1002,0.50),(1003,0.75),(1008,1.00),(1009,1.25),(1010,1.50),(1011,1.75); +CREATE TABLE t1 ( pk int primary key) ENGINE=INNODB; +ERROR HY000: Maximum writeset size exceeded +SHOW WARNINGS; +Level Code Message +Error 4160 Maximum writeset size exceeded +connection node_2; +SET SESSION wsrep_sync_wait = 0; +Killing server ... +connection node_1; +DROP TABLE t3; diff --git a/mysql-test/suite/galera/r/galera_repl_max_ws_size.result b/mysql-test/suite/galera/r/galera_repl_max_ws_size.result index 0528df7b9f6..343381b99ea 100644 --- a/mysql-test/suite/galera/r/galera_repl_max_ws_size.result +++ b/mysql-test/suite/galera/r/galera_repl_max_ws_size.result @@ -4,7 +4,7 @@ connection node_1; CREATE TABLE t1 (f1 VARCHAR(512)) ENGINE=InnoDB; SET GLOBAL wsrep_provider_options = 'repl.max_ws_size=512'; INSERT INTO t1 VALUES (REPEAT('a', 512)); -ERROR HY000: Got error 5 "Input/output error" during COMMIT +ERROR HY000: Maximum writeset size exceeded SELECT COUNT(*) = 0 FROM t1; COUNT(*) = 0 1 diff --git a/mysql-test/suite/galera/r/galera_var_max_ws_size.result b/mysql-test/suite/galera/r/galera_var_max_ws_size.result index 89c9698eed4..bd712ef9b55 100644 --- a/mysql-test/suite/galera/r/galera_var_max_ws_size.result +++ b/mysql-test/suite/galera/r/galera_var_max_ws_size.result @@ -4,7 +4,7 @@ connection node_1; CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 VARCHAR(1024)) Engine=InnoDB; SET GLOBAL wsrep_max_ws_size = 1024; INSERT INTO t1 VALUES (DEFAULT, REPEAT('X', 1024)); -ERROR HY000: Got error 5 "Input/output error" during COMMIT +ERROR HY000: Maximum writeset size exceeded SELECT COUNT(*) = 0 FROM t1; COUNT(*) = 0 1 diff --git a/mysql-test/suite/galera/t/MDEV-26597.test b/mysql-test/suite/galera/t/MDEV-26597.test new file mode 100644 index 00000000000..3162cefcc22 --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-26597.test @@ -0,0 +1,32 @@ +--source include/galera_cluster.inc + +# Save original auto_increment_offset values. +--let $node_1=node_1 +--let $node_2=node_2 +--source include/auto_increment_offset_save.inc + +--connection node_2 +CREATE TABLE t3 (c1 INTEGER NOT NULL PRIMARY KEY, c2 FLOAT(3,2)); +SET GLOBAL wsrep_provider_options = 'repl.max_ws_size=512'; +SET @@autocommit=0; +INSERT INTO t3 VALUES (1000,0.00),(1001,0.25),(1002,0.50),(1003,0.75),(1008,1.00),(1009,1.25),(1010,1.50),(1011,1.75); +--error ER_TOO_BIG_WRITESET +CREATE TABLE t1 ( pk int primary key) ENGINE=INNODB; +SHOW WARNINGS; + +--connection node_2 +SET SESSION wsrep_sync_wait = 0; +--source include/kill_galera.inc + +--let $start_mysqld_params = "" +--let $_expect_file_name= $MYSQLTEST_VARDIR/tmp/mysqld.2.expect +--source include/start_mysqld.inc + +# +# Cleanup +# +--source ../../galera/include/auto_increment_offset_restore.inc +--connection node_1 +DROP TABLE t3; + + diff --git a/mysql-test/suite/galera/t/galera_repl_max_ws_size.test b/mysql-test/suite/galera/t/galera_repl_max_ws_size.test index 60b866ae018..896ad99f3d8 100644 --- a/mysql-test/suite/galera/t/galera_repl_max_ws_size.test +++ b/mysql-test/suite/galera/t/galera_repl_max_ws_size.test @@ -12,7 +12,7 @@ CREATE TABLE t1 (f1 VARCHAR(512)) ENGINE=InnoDB; SET GLOBAL wsrep_provider_options = 'repl.max_ws_size=512'; ---error ER_ERROR_DURING_COMMIT +--error ER_TOO_BIG_WRITESET INSERT INTO t1 VALUES (REPEAT('a', 512)); SELECT COUNT(*) = 0 FROM t1; diff --git a/mysql-test/suite/galera/t/galera_var_max_ws_size.test b/mysql-test/suite/galera/t/galera_var_max_ws_size.test index 8eb93bda9be..440b3dea2a3 100644 --- a/mysql-test/suite/galera/t/galera_var_max_ws_size.test +++ b/mysql-test/suite/galera/t/galera_var_max_ws_size.test @@ -12,7 +12,7 @@ CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 VARCHAR(1024)) Engine --let $wsrep_max_ws_size_orig = `SELECT @@wsrep_max_ws_size` SET GLOBAL wsrep_max_ws_size = 1024; ---error ER_ERROR_DURING_COMMIT +--error ER_TOO_BIG_WRITESET INSERT INTO t1 VALUES (DEFAULT, REPEAT('X', 1024)); SELECT COUNT(*) = 0 FROM t1; diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt index dde8337f01c..8d9bf5c6ebb 100644 --- a/sql/share/errmsg-utf8.txt +++ b/sql/share/errmsg-utf8.txt @@ -9090,3 +9090,5 @@ ER_PERIOD_CONSTRAINT_DROP ER_TOO_LONG_KEYPART 42000 S1009 chi "指定的索引部分太长;最大索引部分长度为 %u 个字节" eng "Specified key part was too long; max key part length is %u bytes" +ER_TOO_BIG_WRITESET + eng "Maximum writeset size exceeded" diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc index ccf191b2e21..d7cbc545161 100644 --- a/sql/wsrep_mysqld.cc +++ b/sql/wsrep_mysqld.cc @@ -1,4 +1,4 @@ -/* Copyright 2008-2021 Codership Oy +/* Copyright 2008-2022 Codership Oy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -2153,7 +2153,7 @@ static int wsrep_TOI_begin(THD *thd, const char *db, const char *table, ret, (thd->db.str ? thd->db.str : "(null)"), wsrep_thd_query(thd)); - my_error(ER_ERROR_DURING_COMMIT, MYF(0), WSREP_SIZE_EXCEEDED); + my_error(ER_TOO_BIG_WRITESET, MYF(0)); break; case wsrep::e_deadlock_error: WSREP_WARN("TO isolation failed for: %d, schema: %s, sql: %s. " diff --git a/sql/wsrep_thd.h b/sql/wsrep_thd.h index 40e5ed98e9b..32663e9fc3b 100644 --- a/sql/wsrep_thd.h +++ b/sql/wsrep_thd.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2013-2021 Codership Oy +/* Copyright (C) 2013-2022 Codership Oy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -210,7 +210,6 @@ static inline void wsrep_override_error(THD *thd, uint error, !da->is_set() || (da->is_error() && da->sql_errno() != error && - da->sql_errno() != ER_ERROR_DURING_COMMIT && da->sql_errno() != ER_LOCK_DEADLOCK)) { da->reset_diagnostics_area(); @@ -226,7 +225,10 @@ static inline void wsrep_override_error(THD* thd, switch (ce) { case wsrep::e_error_during_commit: - wsrep_override_error(thd, ER_ERROR_DURING_COMMIT, status); + if (status == wsrep::provider::error_size_exceeded) + wsrep_override_error(thd, ER_TOO_BIG_WRITESET); + else + wsrep_override_error(thd, ER_ERROR_DURING_COMMIT, status); break; case wsrep::e_deadlock_error: wsrep_override_error(thd, ER_LOCK_DEADLOCK); @@ -235,7 +237,7 @@ static inline void wsrep_override_error(THD* thd, wsrep_override_error(thd, ER_QUERY_INTERRUPTED); break; case wsrep::e_size_exceeded_error: - wsrep_override_error(thd, ER_ERROR_DURING_COMMIT, status); + wsrep_override_error(thd, ER_TOO_BIG_WRITESET); break; case wsrep::e_append_fragment_error: /* TODO: Figure out better error number */ diff --git a/sql/wsrep_trans_observer.h b/sql/wsrep_trans_observer.h index cde8163cf4f..f1d0eebf6dd 100644 --- a/sql/wsrep_trans_observer.h +++ b/sql/wsrep_trans_observer.h @@ -1,4 +1,4 @@ -/* Copyright 2016-2019 Codership Oy +/* Copyright 2016-2022 Codership Oy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -531,18 +531,28 @@ wsrep_current_error_status(THD* thd) static inline void wsrep_commit_empty(THD* thd, bool all) { DBUG_ENTER("wsrep_commit_empty"); - WSREP_DEBUG("wsrep_commit_empty(%llu)", thd->thread_id); + WSREP_DEBUG("wsrep_commit_empty for %llu client_state %s client_mode" + " %s trans_state %s sql %s", + thd_get_thread_id(thd), + wsrep::to_c_string(thd->wsrep_cs().state()), + wsrep::to_c_string(thd->wsrep_cs().mode()), + wsrep::to_c_string(thd->wsrep_cs().transaction().state()), + wsrep_thd_query(thd)); + if (wsrep_is_real(thd, all) && wsrep_thd_is_local(thd) && thd->wsrep_trx().active() && thd->wsrep_trx().state() != wsrep::transaction::s_committed) { - /* @todo CTAS with STATEMENT binlog format and empty result set - seems to be committing empty. Figure out why and try to fix - elsewhere. */ + /* Here transaction is either empty (i.e. no changes) or + it was CREATE TABLE with no row binlog format or + we have already aborted transaction e.g. because max writeset size + has been reached. */ DBUG_ASSERT(!wsrep_has_changes(thd) || (thd->lex->sql_command == SQLCOM_CREATE_TABLE && - !thd->is_current_stmt_binlog_format_row())); + !thd->is_current_stmt_binlog_format_row()) || + thd->wsrep_cs().transaction().state() == wsrep::transaction::s_aborted); + bool have_error= wsrep_current_error(thd); int ret= wsrep_before_rollback(thd, all) || wsrep_after_rollback(thd, all) || -- cgit v1.2.1 From 0908a049f80f4024d7e2c8cd9082ca4cfca47b93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Thu, 6 Oct 2022 11:08:09 +0300 Subject: MDEV-25389 : Assertion `!is_thread_specific || (mysqld_server_initialized && thd)' failed in void my_malloc_size_cb_func(long long int, my_bool) If wsrep slave thread creation fails for some reason we need to handle this error correctly and set actual running slave threads accordingly. --- mysql-test/suite/galera/r/MDEV-25389.result | 15 +++++++++++++++ mysql-test/suite/galera/t/MDEV-25389.test | 13 +++++++++++++ sql/wsrep_mysqld.cc | 5 ++++- sql/wsrep_mysqld.h | 3 ++- sql/wsrep_thd.cc | 2 +- sql/wsrep_var.cc | 24 +++++++++++++++++++++--- 6 files changed, 56 insertions(+), 6 deletions(-) create mode 100644 mysql-test/suite/galera/r/MDEV-25389.result create mode 100644 mysql-test/suite/galera/t/MDEV-25389.test diff --git a/mysql-test/suite/galera/r/MDEV-25389.result b/mysql-test/suite/galera/r/MDEV-25389.result new file mode 100644 index 00000000000..9a142676d92 --- /dev/null +++ b/mysql-test/suite/galera/r/MDEV-25389.result @@ -0,0 +1,15 @@ +connection node_2; +connection node_1; +connection node_2; +call mtr.add_suppression("WSREP: Failed to create/initialize system thread"); +SET GLOBAL debug_dbug='+d,simulate_failed_connection_1'; +SET GLOBAL wsrep_slave_threads=2; +ERROR HY000: Incorrect arguments to SET +SELECT @@wsrep_slave_threads; +@@wsrep_slave_threads +1 +SET GLOBAL debug_dbug=''; +SET GLOBAL wsrep_slave_threads=1; +SELECT @@wsrep_slave_threads; +@@wsrep_slave_threads +1 diff --git a/mysql-test/suite/galera/t/MDEV-25389.test b/mysql-test/suite/galera/t/MDEV-25389.test new file mode 100644 index 00000000000..dcb21ee6136 --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-25389.test @@ -0,0 +1,13 @@ +--source include/galera_cluster.inc +--source include/have_debug.inc +--source include/have_debug_sync.inc + +--connection node_2 +call mtr.add_suppression("WSREP: Failed to create/initialize system thread"); +SET GLOBAL debug_dbug='+d,simulate_failed_connection_1'; +--error ER_WRONG_ARGUMENTS +SET GLOBAL wsrep_slave_threads=2; +SELECT @@wsrep_slave_threads; +SET GLOBAL debug_dbug=''; +SET GLOBAL wsrep_slave_threads=1; +SELECT @@wsrep_slave_threads; diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc index d7cbc545161..f4efaeee42e 100644 --- a/sql/wsrep_mysqld.cc +++ b/sql/wsrep_mysqld.cc @@ -126,6 +126,7 @@ ulong wsrep_trx_fragment_unit= WSREP_FRAG_BYTES; ulong wsrep_SR_store_type= WSREP_SR_STORE_TABLE; uint wsrep_ignore_apply_errors= 0; +std::atomic wsrep_thread_create_failed; /* * End configuration options @@ -2940,7 +2941,9 @@ void* start_wsrep_THD(void *arg) { close_connection(thd, ER_OUT_OF_RESOURCES); statistic_increment(aborted_connects,&LOCK_status); - MYSQL_CALLBACK(thread_scheduler, end_thread, (thd, 0)); + // This will signal error to wsrep_slave_threads_update + wsrep_thread_create_failed.store(true, std::memory_order_relaxed); + WSREP_DEBUG("start_wsrep_THD: init_new_connection_thread failed"); goto error; } diff --git a/sql/wsrep_mysqld.h b/sql/wsrep_mysqld.h index 3fc0e397514..201e3e1a44a 100644 --- a/sql/wsrep_mysqld.h +++ b/sql/wsrep_mysqld.h @@ -1,4 +1,4 @@ -/* Copyright 2008-2021 Codership Oy +/* Copyright 2008-2022 Codership Oy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -88,6 +88,7 @@ extern ulong wsrep_running_rollbacker_threads; extern bool wsrep_new_cluster; extern bool wsrep_gtid_mode; extern uint32 wsrep_gtid_domain_id; +extern std::atomic wsrep_thread_create_failed; enum enum_wsrep_reject_types { WSREP_REJECT_NONE, /* nothing rejected */ diff --git a/sql/wsrep_thd.cc b/sql/wsrep_thd.cc index 8853ea6a499..5922b39e718 100644 --- a/sql/wsrep_thd.cc +++ b/sql/wsrep_thd.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2013-2021 Codership Oy +/* Copyright (C) 2013-2022 Codership Oy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/sql/wsrep_var.cc b/sql/wsrep_var.cc index 8919715b188..dcca0ed08c2 100644 --- a/sql/wsrep_var.cc +++ b/sql/wsrep_var.cc @@ -1,4 +1,4 @@ -/* Copyright 2008-2021 Codership Oy +/* Copyright 2008-2022 Codership Oy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -753,12 +753,30 @@ bool wsrep_slave_threads_update (sys_var *self, THD* thd, enum_var_type type) if (wsrep_slave_count_change > 0) { WSREP_DEBUG("Creating %d applier threads, total %ld", wsrep_slave_count_change, wsrep_slave_threads); + wsrep_thread_create_failed.store(false, std::memory_order_relaxed); res= wsrep_create_appliers(wsrep_slave_count_change, true); + mysql_mutex_unlock(&LOCK_global_system_variables); + mysql_mutex_unlock(&LOCK_wsrep_slave_threads); + // Thread creation and execution is asyncronous, therefore we need + // wait them to be started or error produced + while (wsrep_running_applier_threads != (ulong)wsrep_slave_threads && + !wsrep_thread_create_failed.load(std::memory_order_relaxed)) + { + my_sleep(1000); + } + + mysql_mutex_lock(&LOCK_global_system_variables); + + if (wsrep_thread_create_failed.load(std::memory_order_relaxed)) { + wsrep_slave_threads= wsrep_running_applier_threads; + return true; + } + WSREP_DEBUG("Running %lu applier threads", wsrep_running_applier_threads); wsrep_slave_count_change = 0; } - - mysql_mutex_unlock(&LOCK_wsrep_slave_threads); + else + mysql_mutex_unlock(&LOCK_wsrep_slave_threads); return res; } -- cgit v1.2.1 From f6f9b7fc8936a0f8be5ee945b6e54b7371ed6d95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Thu, 6 Oct 2022 11:13:13 +0300 Subject: MDEV-29707 : Incorrect/bad errno on enabling wsrep_on after setting dummy wsrep_provider on non-Galera build Fix error message to contain correct errno. This commit was tested interactively because mtr will notice if you provide wrong wsrep_provider in config and you may not change wsrep_provider dynamically. --- sql/wsrep_var.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sql/wsrep_var.cc b/sql/wsrep_var.cc index dcca0ed08c2..82eb73944b9 100644 --- a/sql/wsrep_var.cc +++ b/sql/wsrep_var.cc @@ -120,8 +120,7 @@ bool wsrep_on_update (sys_var *self, THD* thd, enum_var_type var_type) if (wsrep_init()) { - my_error(ER_CANT_OPEN_LIBRARY, MYF(0), tmp, my_error, "wsrep_init failed"); - //rcode= true; + my_error(ER_CANT_OPEN_LIBRARY, MYF(0), tmp, errno, "wsrep_init failed"); saved_wsrep_on= false; } -- cgit v1.2.1 From 602124bb3bdff83f208406c866774c7a9bf14ea8 Mon Sep 17 00:00:00 2001 From: Anel Husakovic Date: Mon, 8 Aug 2022 15:03:52 +0200 Subject: Remove redudant defines USE_MB and USE_MB_IDENT Reviewer: --- config.h.cmake | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/config.h.cmake b/config.h.cmake index 962efeb13ba..10da62abbbf 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -261,9 +261,6 @@ #cmakedefine STRUCT_TIMESPEC_HAS_TV_SEC 1 #cmakedefine STRUCT_TIMESPEC_HAS_TV_NSEC 1 -#define USE_MB 1 -#define USE_MB_IDENT 1 - /* this means that valgrind headers and macros are available */ #cmakedefine HAVE_VALGRIND_MEMCHECK_H 1 @@ -462,8 +459,8 @@ #cmakedefine MYSQL_DEFAULT_CHARSET_NAME "@MYSQL_DEFAULT_CHARSET_NAME@" #cmakedefine MYSQL_DEFAULT_COLLATION_NAME "@MYSQL_DEFAULT_COLLATION_NAME@" -#cmakedefine USE_MB 1 -#cmakedefine USE_MB_IDENT 1 +#cmakedefine USE_MB +#cmakedefine USE_MB_IDENT /* This should mean case insensitive file system */ #cmakedefine FN_NO_CASE_SENSE 1 -- cgit v1.2.1 From 56b97ca03ac19b5bf2d95494d861f49324008676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Mon, 10 Oct 2022 09:12:55 +0300 Subject: MDEV-29742 heap number overflow A previous fix in commit efd8af535a4fa4aa3dd89a325340b6eb648e1bc8 failed to cover ALTER TABLE. PageBulk::isSpaceAvailable(): Check for record heap number overflow. --- mysql-test/suite/innodb/r/innodb-64k.result | 4 +++- mysql-test/suite/innodb/t/innodb-64k.test | 5 ++++- storage/innobase/btr/btr0bulk.cc | 7 ++++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/mysql-test/suite/innodb/r/innodb-64k.result b/mysql-test/suite/innodb/r/innodb-64k.result index 372dbbb91a0..189a615cbe3 100644 --- a/mysql-test/suite/innodb/r/innodb-64k.result +++ b/mysql-test/suite/innodb/r/innodb-64k.result @@ -1081,9 +1081,11 @@ COMMIT; drop table t2; DROP TABLE t1; # -# MDEV-19526 heap number overflow +# MDEV-19526/MDEV-29742 heap number overflow # CREATE TABLE t1(a SMALLINT NOT NULL UNIQUE AUTO_INCREMENT, KEY(a)) ENGINE=InnoDB; INSERT INTO t1 (a) SELECT seq FROM seq_1_to_8191; +ALTER TABLE t1 FORCE, ALGORITHM=INPLACE; DROP TABLE t1; +# End of 10.3 tests diff --git a/mysql-test/suite/innodb/t/innodb-64k.test b/mysql-test/suite/innodb/t/innodb-64k.test index 62d7b929ba1..972ba6bb8b8 100644 --- a/mysql-test/suite/innodb/t/innodb-64k.test +++ b/mysql-test/suite/innodb/t/innodb-64k.test @@ -641,9 +641,12 @@ drop table t2; DROP TABLE t1; --echo # ---echo # MDEV-19526 heap number overflow +--echo # MDEV-19526/MDEV-29742 heap number overflow --echo # CREATE TABLE t1(a SMALLINT NOT NULL UNIQUE AUTO_INCREMENT, KEY(a)) ENGINE=InnoDB; INSERT INTO t1 (a) SELECT seq FROM seq_1_to_8191; +ALTER TABLE t1 FORCE, ALGORITHM=INPLACE; DROP TABLE t1; + +--echo # End of 10.3 tests diff --git a/storage/innobase/btr/btr0bulk.cc b/storage/innobase/btr/btr0bulk.cc index fdeba1e375b..0b53438feb7 100644 --- a/storage/innobase/btr/btr0bulk.cc +++ b/storage/innobase/btr/btr0bulk.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2014, 2019, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2017, 2021, MariaDB Corporation. +Copyright (c) 2017, 2022, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -597,6 +597,11 @@ bool PageBulk::isSpaceAvailable( ulint rec_size) { + if (m_rec_no >= 8190) { + ut_ad(srv_page_size == 65536); + return false; + } + ulint slot_size; ulint required_space; -- cgit v1.2.1 From e05ab0cfc5f52c8c240bfc02239f199081d82f61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Mon, 10 Oct 2022 09:36:43 +0300 Subject: Silence clang 13 -Wunused-but-set-variable for Bison --- sql/CMakeLists.txt | 11 +++++++++-- storage/innobase/CMakeLists.txt | 5 +++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index 58964fc0f80..d7ec42d6abb 100644 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -1,5 +1,5 @@ # Copyright (c) 2006, 2014, Oracle and/or its affiliates. -# Copyright (c) 2010, 2018, MariaDB Corporation +# Copyright (c) 2010, 2022, MariaDB Corporation. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -145,7 +145,14 @@ SET (SQL_SOURCE ${CMAKE_CURRENT_BINARY_DIR}/lex_token.h ${MYSYS_LIBWRAP_SOURCE} ) - + +IF(CMAKE_C_COMPILER_ID MATCHES "Clang" AND + NOT CMAKE_C_COMPILER_VERSION VERSION_LESS "13.0.0") + ADD_COMPILE_FLAGS(${CMAKE_CURRENT_BINARY_DIR}/sql_yacc.cc + ${CMAKE_CURRENT_BINARY_DIR}/sql_yacc_ora.cc + COMPILE_FLAGS "-Wno-unused-but-set-variable") +ENDIF() + IF (CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Windows" OR CMAKE_SYSTEM_NAME MATCHES "SunOS" OR diff --git a/storage/innobase/CMakeLists.txt b/storage/innobase/CMakeLists.txt index bb6da42c51b..81b1acf8b9e 100644 --- a/storage/innobase/CMakeLists.txt +++ b/storage/innobase/CMakeLists.txt @@ -371,6 +371,11 @@ IF(MSVC) # on generated file. TARGET_COMPILE_OPTIONS(innobase PRIVATE "/wd4065") ENDIF() +IF(CMAKE_C_COMPILER_ID MATCHES "Clang" AND + NOT CMAKE_C_COMPILER_VERSION VERSION_LESS "13.0.0") + ADD_COMPILE_FLAGS(pars/pars0grm.cc fts/fts0pars.cc + COMPILE_FLAGS "-Wno-unused-but-set-variable") +ENDIF() IF(NOT (PLUGIN_INNOBASE STREQUAL DYNAMIC)) ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/extra/mariabackup ${CMAKE_BINARY_DIR}/extra/mariabackup) -- cgit v1.2.1 From 34163154077045f9b870cacbd0e9b96afe5c6c2d Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Mon, 10 Oct 2022 14:10:48 +0400 Subject: A followup for MDEV-29672 Add MTR tests covering key and key segment flags and types Adding debug output for key and keyseg flags at ha_myisam::open() time. So now there are three points of debug output: 1. In the very end of mysql_prepare_create_table() 2. In ha_myisam::create(), after the table2myisam() call 3. In ha_myisan::open(), after the mi_open() call mi_create(), which is is called between 2 and 3, modifies flags for some data types, so the output in 2 and 3 is different. --- mysql-test/main/myisam_debug_keys.result | 2296 +++++++++++++++++++++++++++++- mysql-test/main/myisam_debug_keys.test | 2 + sql/sql_debug.h | 36 +- storage/myisam/ha_myisam.cc | 7 + 4 files changed, 2312 insertions(+), 29 deletions(-) diff --git a/mysql-test/main/myisam_debug_keys.result b/mysql-test/main/myisam_debug_keys.result index 030eaf11cf2..8a07c1da6fa 100644 --- a/mysql-test/main/myisam_debug_keys.result +++ b/mysql-test/main/myisam_debug_keys.result @@ -31,6 +31,10 @@ INSERT INTO types (type, prefix_length) VALUES ('TEXT', 12), ('TEXT', 16), ('TEXT', 100); +Warnings: +Note 1105 DBUG: ha_myisam::open: name=`PRIMARY` flags=00000011 (HA_AUTO_KEY|HA_NOSAME) +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) BEGIN NOT ATOMIC DECLARE create2_template TEXT DEFAULT 'CREATE TABLE t1 (a TYPE1 NOT NULL, b TYPE2 NOT NULL, KEY(SEG1,SEG2))'; @@ -54,6 +58,8 @@ CONCAT('b(',rec.prefix_length2,')'), 'b')); SELECT tabledef AS ``; EXECUTE IMMEDIATE tabledef; SHOW WARNINGS; +SELECT * FROM t1; +SHOW WARNINGS; SHOW CREATE TABLE t1; DROP TABLE t1; END; @@ -69,6 +75,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -84,6 +97,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -99,6 +119,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -114,6 +141,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -129,6 +163,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -144,6 +185,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -159,6 +207,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -174,6 +229,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -189,6 +251,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -204,6 +273,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -219,6 +295,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -234,6 +317,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -249,6 +339,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -264,6 +361,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -279,6 +383,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -294,6 +405,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -309,6 +427,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -324,6 +449,13 @@ Note 1105 DBUG: seg[0].type=4 LONG_INT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=4 LONG_INT +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL, @@ -339,6 +471,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -354,6 +493,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -369,6 +515,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -384,6 +537,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -399,6 +559,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -414,6 +581,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -429,6 +603,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -444,6 +625,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -459,6 +647,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -474,6 +669,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -489,6 +691,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -504,6 +713,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -519,6 +735,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -534,6 +757,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -549,6 +779,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -564,6 +801,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -579,6 +823,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -594,6 +845,13 @@ Note 1105 DBUG: seg[0].type=10 LONGLONG Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=10 LONGLONG +Note 1105 DBUG: seg[0].flag=00000040 (HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` bigint(20) NOT NULL, @@ -609,6 +867,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -624,6 +889,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -639,6 +911,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -654,6 +933,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -669,6 +955,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -684,6 +977,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -699,6 +999,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -714,6 +1021,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -729,6 +1043,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -744,6 +1065,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -759,6 +1087,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -774,6 +1109,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -789,6 +1131,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -804,6 +1153,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -819,6 +1175,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -834,6 +1197,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -849,6 +1219,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -864,6 +1241,13 @@ Note 1105 DBUG: seg[0].type=6 DOUBLE Note 1105 DBUG: seg[0].flag=00000800 (HA_CAN_MEMCMP) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=6 DOUBLE +Note 1105 DBUG: seg[0].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` double NOT NULL, @@ -879,6 +1263,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -894,6 +1285,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -909,6 +1307,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -924,6 +1329,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -939,6 +1351,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -954,6 +1373,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -969,6 +1395,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -984,6 +1417,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -999,6 +1439,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -1014,10 +1461,17 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) -Table Create Table -t1 CREATE TABLE `t1` ( - `a` decimal(20,10) NOT NULL, - `b` varchar(12) NOT NULL, +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +Table Create Table +t1 CREATE TABLE `t1` ( + `a` decimal(20,10) NOT NULL, + `b` varchar(12) NOT NULL, KEY `a` (`a`,`b`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci @@ -1029,6 +1483,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -1044,6 +1505,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -1059,6 +1527,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -1074,6 +1549,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -1089,6 +1571,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -1104,6 +1593,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -1119,6 +1615,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -1134,6 +1637,13 @@ Note 1105 DBUG: seg[0].type=2 BINARY Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=2 BINARY +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` decimal(20,10) NOT NULL, @@ -1149,6 +1659,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1164,6 +1681,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1179,6 +1703,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1194,6 +1725,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1209,6 +1747,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000000 +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1224,6 +1769,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1239,6 +1791,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1254,6 +1813,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1269,6 +1835,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1284,6 +1857,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1299,6 +1879,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1314,6 +1901,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1329,6 +1923,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1344,6 +1945,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1359,6 +1967,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1374,6 +1989,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1389,6 +2011,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1404,6 +2033,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000000 Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000000 +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` char(4) NOT NULL, @@ -1419,6 +2055,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1434,6 +2077,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1449,6 +2099,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1464,6 +2121,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1479,6 +2143,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1494,6 +2165,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1509,6 +2187,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1524,6 +2209,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1539,6 +2231,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1554,6 +2253,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1569,6 +2275,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1584,6 +2297,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1599,6 +2319,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1614,6 +2341,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1629,6 +2363,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1644,6 +2385,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1659,6 +2407,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1674,6 +2429,13 @@ Note 1105 DBUG: seg[0].type=1 TEXT Note 1105 DBUG: seg[0].flag=00000001 (HA_SPACE_PACK) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000000E (HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED|HA_PACK_KEY) +Note 1105 DBUG: seg[0].type=1 TEXT +Note 1105 DBUG: seg[0].flag=00000003 (HA_PACK_KEY|HA_SPACE_PACK) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` char(10) NOT NULL, @@ -1689,6 +2451,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1704,6 +2473,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1719,6 +2495,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1734,6 +2517,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1749,6 +2539,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1764,6 +2561,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1779,6 +2583,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1794,6 +2605,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1809,6 +2627,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1824,6 +2649,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1839,10 +2671,17 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) -Table Create Table -t1 CREATE TABLE `t1` ( - `a` varchar(4) NOT NULL, - `b` varchar(16) NOT NULL, +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +Table Create Table +t1 CREATE TABLE `t1` ( + `a` varchar(4) NOT NULL, + `b` varchar(16) NOT NULL, KEY `a` (`a`,`b`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci @@ -1854,6 +2693,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1869,6 +2715,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1884,6 +2737,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1899,6 +2759,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1914,6 +2781,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1929,6 +2803,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1944,6 +2825,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(4) NOT NULL, @@ -1959,6 +2847,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -1974,6 +2869,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -1989,6 +2891,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -2004,6 +2913,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -2019,6 +2935,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -2034,6 +2957,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -2049,6 +2979,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -2064,6 +3001,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -2079,6 +3023,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -2094,6 +3045,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -2109,6 +3067,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -2124,6 +3089,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -2139,6 +3111,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -2154,6 +3133,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -2169,6 +3155,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -2184,6 +3177,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -2199,6 +3199,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -2214,6 +3221,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(6) NOT NULL, @@ -2229,6 +3243,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2244,6 +3265,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2259,6 +3287,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2274,6 +3309,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2289,6 +3331,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2304,6 +3353,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2319,6 +3375,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2334,6 +3397,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2349,6 +3419,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2364,6 +3441,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2379,6 +3463,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2394,6 +3485,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2409,6 +3507,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2424,6 +3529,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2439,6 +3551,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2454,6 +3573,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2469,6 +3595,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2484,6 +3617,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(8) NOT NULL, @@ -2499,6 +3639,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2514,6 +3661,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2529,6 +3683,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2544,6 +3705,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2559,6 +3727,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2574,6 +3749,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2589,6 +3771,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2604,6 +3793,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2619,6 +3815,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2634,6 +3837,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2649,6 +3859,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2664,6 +3881,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2679,6 +3903,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2694,6 +3925,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2709,6 +3947,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2724,6 +3969,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2739,6 +3991,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2754,6 +4013,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(12) NOT NULL, @@ -2769,6 +4035,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -2784,6 +4057,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -2799,6 +4079,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -2814,6 +4101,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -2829,6 +4123,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -2844,6 +4145,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -2859,6 +4167,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -2874,6 +4189,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -2889,6 +4211,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -2904,6 +4233,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -2919,6 +4255,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -2934,6 +4277,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -2949,6 +4299,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -2964,6 +4321,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -2979,6 +4343,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -2994,6 +4365,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -3009,6 +4387,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -3024,6 +4409,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(16) NOT NULL, @@ -3039,6 +4431,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3054,6 +4453,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3069,6 +4475,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3084,6 +4497,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3099,6 +4519,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3114,6 +4541,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3129,6 +4563,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3144,6 +4585,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3159,6 +4607,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3174,6 +4629,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3189,6 +4651,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3204,6 +4673,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3219,6 +4695,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3234,6 +4717,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3249,6 +4739,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3264,6 +4761,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3279,6 +4783,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3294,6 +4805,13 @@ Note 1105 DBUG: seg[0].type=15 VARTEXT1 Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=15 VARTEXT1 +Note 1105 DBUG: seg[0].flag=00000008 (HA_VAR_LENGTH_PART) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(100) NOT NULL, @@ -3309,6 +4827,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3324,6 +4849,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3339,6 +4871,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3354,6 +4893,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3369,6 +4915,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3384,6 +4937,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3399,6 +4959,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3414,6 +4981,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3429,6 +5003,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3444,6 +5025,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3459,6 +5047,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3474,6 +5069,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3489,6 +5091,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3504,6 +5113,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3519,6 +5135,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3534,6 +5157,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3549,6 +5179,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3564,6 +5201,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3579,6 +5223,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3594,6 +5245,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3609,6 +5267,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3624,6 +5289,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3639,6 +5311,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3654,6 +5333,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3669,6 +5355,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3684,6 +5377,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3699,6 +5399,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3714,6 +5421,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3729,6 +5443,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3744,6 +5465,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3759,6 +5487,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3774,6 +5509,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000008 (HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3789,6 +5531,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3804,6 +5553,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3819,6 +5575,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3834,6 +5597,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3849,6 +5619,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3864,6 +5641,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3879,6 +5663,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3894,6 +5685,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3909,6 +5707,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3924,6 +5729,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3939,6 +5751,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3954,6 +5773,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3969,6 +5795,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3984,6 +5817,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -3999,6 +5839,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4014,6 +5861,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4029,6 +5883,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4044,6 +5905,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4059,6 +5927,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4074,6 +5949,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4089,6 +5971,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4104,6 +5993,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4119,6 +6015,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4128,12 +6031,19 @@ t1 CREATE TABLE `t1` ( CREATE TABLE t1 (a TEXT NOT NULL, b BIGINT NOT NULL, KEY(a(12),b)) Level Code Message -Note 1105 DBUG: prep_create_table: name=`a` flags=00010028 (HA_KEY_HAS_PART_KEY_SEG|HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) -Note 1105 DBUG: ha_myisam::create: name=`a` flags=00000020 (HA_BINARY_PACK_KEY) +Note 1105 DBUG: prep_create_table: name=`a` flags=00010028 (HA_KEY_HAS_PART_KEY_SEG|HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: ha_myisam::create: name=`a` flags=00000020 (HA_BINARY_PACK_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=10 LONGLONG -Note 1105 DBUG: seg[1].flag=00000000 +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4149,6 +6059,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4164,6 +6081,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4179,6 +6103,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4194,6 +6125,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4209,6 +6147,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4224,6 +6169,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4239,6 +6191,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4254,6 +6213,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4269,6 +6235,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4284,6 +6257,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4299,6 +6279,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4314,6 +6301,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4329,6 +6323,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4344,6 +6345,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4359,6 +6367,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4374,6 +6389,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4389,6 +6411,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4404,6 +6433,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4419,6 +6455,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4434,6 +6477,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4449,6 +6499,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4464,6 +6521,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4479,6 +6543,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4494,6 +6565,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4509,6 +6587,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4524,6 +6609,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4539,6 +6631,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4554,6 +6653,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4569,6 +6675,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4584,6 +6697,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4599,6 +6719,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4614,6 +6741,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4629,6 +6763,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4644,6 +6785,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4659,6 +6807,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=4 LONG_INT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=4 LONG_INT +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4674,6 +6829,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=10 LONGLONG Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=10 LONGLONG +Note 1105 DBUG: seg[1].flag=00000040 (HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4689,6 +6851,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=6 DOUBLE Note 1105 DBUG: seg[1].flag=00000800 (HA_CAN_MEMCMP) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=6 DOUBLE +Note 1105 DBUG: seg[1].flag=00000840 (HA_CAN_MEMCMP|HA_SWAP_KEY) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4704,6 +6873,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=2 BINARY Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=2 BINARY +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4719,6 +6895,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000000 +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000000 Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4734,6 +6917,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=1 TEXT Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=0000002C (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY|HA_SPACE_PACK_USED) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=1 TEXT +Note 1105 DBUG: seg[1].flag=00000001 (HA_SPACE_PACK) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4749,6 +6939,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4764,6 +6961,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4779,6 +6983,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4794,6 +7005,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4809,6 +7027,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4824,6 +7049,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=15 VARTEXT1 Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=15 VARTEXT1 +Note 1105 DBUG: seg[1].flag=00000008 (HA_VAR_LENGTH_PART) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4839,6 +7071,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4854,6 +7093,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4869,6 +7115,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4884,6 +7137,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4899,6 +7159,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, @@ -4914,6 +7181,13 @@ Note 1105 DBUG: seg[0].type=17 VARTEXT2 Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Note 1105 DBUG: seg[1].type=17 VARTEXT2 Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +a b +Level Code Message +Note 1105 DBUG: ha_myisam::open: name=`a` flags=00000028 (HA_BINARY_PACK_KEY|HA_VAR_LENGTH_KEY) +Note 1105 DBUG: seg[0].type=17 VARTEXT2 +Note 1105 DBUG: seg[0].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) +Note 1105 DBUG: seg[1].type=17 VARTEXT2 +Note 1105 DBUG: seg[1].flag=00000024 (HA_BLOB_PART|HA_PART_KEY_SEG) Table Create Table t1 CREATE TABLE `t1` ( `a` text NOT NULL, diff --git a/mysql-test/main/myisam_debug_keys.test b/mysql-test/main/myisam_debug_keys.test index c6555d260b9..bf028bb8e52 100644 --- a/mysql-test/main/myisam_debug_keys.test +++ b/mysql-test/main/myisam_debug_keys.test @@ -53,6 +53,8 @@ BEGIN NOT ATOMIC SELECT tabledef AS ``; EXECUTE IMMEDIATE tabledef; SHOW WARNINGS; + SELECT * FROM t1; + SHOW WARNINGS; SHOW CREATE TABLE t1; DROP TABLE t1; END; diff --git a/sql/sql_debug.h b/sql/sql_debug.h index de28de06b2b..c5aa3b5f94e 100644 --- a/sql/sql_debug.h +++ b/sql/sql_debug.h @@ -63,23 +63,23 @@ public: { static const char *names[17]= { - "HA_NOSAME", - "HA_PACK_KEY", - "HA_SPACE_PACK_USED", - "HA_VAR_LENGTH_KEY", - "HA_AUTO_KEY", - "HA_BINARY_PACK_KEY", - "HA_NULL_PART_KEY", - "HA_FULLTEXT", - "HA_UNIQUE_CHECK", - "HA_SORT_ALLOWS_SAME", - "HA_SPATIAL", - "HA_NULL_ARE_EQUAL", - "HA_GENERATED_KEY", - "HA_USES_COMMENT", - "HA_USES_PARSER", - "HA_USES_BLOCK_SIZE", - "HA_KEY_HAS_PART_KEY_SEG" + "HA_NOSAME", // 1 + "HA_PACK_KEY", // 2 - used in both HA_KEYSEG and KEY/MI_KEYDEF + "HA_SPACE_PACK_USED", // 4 + "HA_VAR_LENGTH_KEY", // 8 + "HA_AUTO_KEY", // 16 + "HA_BINARY_PACK_KEY", // 32 + "HA_NULL_PART_KEY", // 64 + "HA_FULLTEXT", // 128 + "HA_UNIQUE_CHECK", // 256 + "HA_SORT_ALLOWS_SAME", // 512 + "HA_SPATIAL", // 1024 + "HA_NULL_ARE_EQUAL", // 2048 + "HA_USES_COMMENT", // 4096 + "HA_GENERATED_KEY", // 8192 + "HA_USES_PARSER", // 16384 + "HA_USES_BLOCK_SIZE", // 32768 + "HA_KEY_HAS_PART_KEY_SEG" // 65536 }; return append_flag32_names((uint) flags, names, array_elements(names)); } @@ -89,7 +89,7 @@ public: static const char *names[]= { "HA_SPACE_PACK", // 1 - "??? 2 ???", // 2 + "HA_PACK_KEY", // 2 - used in both HA_KEYSEG and KEY/MI_KEYDEF "HA_PART_KEY_SEG", // 4 "HA_VAR_LENGTH_PART", // 8 "HA_NULL_PART", // 16 diff --git a/storage/myisam/ha_myisam.cc b/storage/myisam/ha_myisam.cc index 6c58a26c260..3a2e886e6ce 100644 --- a/storage/myisam/ha_myisam.cc +++ b/storage/myisam/ha_myisam.cc @@ -860,6 +860,13 @@ int ha_myisam::open(const char *name, int mode, uint test_if_locked) /* purecov: end */ } } + + DBUG_EXECUTE_IF("key", + Debug_key_myisam::print_keys_myisam(table->in_use, + "ha_myisam::open: ", + table, file->s->keyinfo, + file->s->base.keys); + ); if (test_if_locked & (HA_OPEN_IGNORE_IF_LOCKED | HA_OPEN_TMP_TABLE)) (void) mi_extra(file, HA_EXTRA_NO_WAIT_LOCK, 0); -- cgit v1.2.1 From 15edd69ddf649ebf7ecab3fa72bc5dea263c0154 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Tue, 11 Oct 2022 00:07:38 +0200 Subject: MDEV-27943 Reduce overhead of attaching THD to OS thread, in threadpool Avoid relatively expensive THD::store_globals() for every query in the threadpool. Use a lighter version instead, that only resets some thread local storage variables(THD, mysys, PSI), avoids some calculationms and caches syscall gettid (Linux only) in a thread_local variable. Also simplify Worker_context use, with RAII. --- sql/threadpool_common.cc | 54 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 8 deletions(-) diff --git a/sql/threadpool_common.cc b/sql/threadpool_common.cc index 965432357be..78f9eaf8792 100644 --- a/sql/threadpool_common.cc +++ b/sql/threadpool_common.cc @@ -92,13 +92,13 @@ struct Worker_thread_context PSI_thread *psi_thread; st_my_thread_var* mysys_var; - void save() + Worker_thread_context() { psi_thread= PSI_CALL_get_thread(); mysys_var= my_thread_var; } - void restore() + ~Worker_thread_context() { PSI_CALL_set_thread(psi_thread); set_mysys_var(mysys_var); @@ -142,6 +142,44 @@ static inline void set_thd_idle(THD *thd) #endif } +/* + Per OS thread info (ID and pthread_self) + stored as TLS, because of syscall overhead + (on Linux) +*/ +struct OS_thread_info +{ + pthread_t self; + ssize_t stack_size; + uint32_t thread_id; + + inline bool initialized() { return stack_size != 0; } + + void init(ssize_t ssize) + { +#if _WIN32 + self= thread_id= GetCurrentThreadId(); +#else +#ifdef __NR_gettid + thread_id= (uint32) syscall(__NR_gettid); +#else + thread_id= 0; +#endif + self= pthread_self(); +#endif + stack_size= ssize; + } +}; +static thread_local OS_thread_info os_thread_info; + +static const OS_thread_info *get_os_thread_info() +{ + auto *res= &os_thread_info; + if (!res->initialized()) + res->init((ssize_t) (my_thread_stack_size * STACK_DIRECTION)); + return res; +} + /* Attach/associate the connection with the OS thread, */ @@ -154,7 +192,12 @@ static void thread_attach(THD* thd) #endif /* WITH_WSREP */ set_mysys_var(thd->mysys_var); thd->thread_stack=(char*)&thd; - thd->store_globals(); + set_current_thd(thd); + auto tinfo= get_os_thread_info(); + thd->real_id= tinfo->self; + thd->os_thread_id= tinfo->thread_id; + DBUG_ASSERT(thd->mysys_var == my_thread_var); + thd->mysys_var->stack_ends_here= thd->thread_stack + tinfo->stack_size; PSI_CALL_set_thread(thd->get_psi()); mysql_socket_set_thread_owner(thd->net.vio->mysql_socket); } @@ -179,7 +222,6 @@ void tp_callback(TP_connection *c) DBUG_ASSERT(c); Worker_thread_context worker_context; - worker_context.save(); THD *thd= c->thd; @@ -212,7 +254,6 @@ retry: thd->async_state.m_state = thd_async_state::enum_async_state::RESUMED; goto retry; } - worker_context.restore(); return; case DISPATCH_COMMAND_CLOSE_CONNECTION: /* QUIT or an error occurred. */ @@ -231,8 +272,6 @@ retry: c->state= TP_STATE_IDLE; if (c->start_io()) goto error; - - worker_context.restore(); return; error: @@ -242,7 +281,6 @@ error: threadpool_remove_connection(thd); } delete c; - worker_context.restore(); } -- cgit v1.2.1 From 3f5b03c415662135257a4ae9bc525fd72a795872 Mon Sep 17 00:00:00 2001 From: Julius Goryavsky Date: Tue, 11 Oct 2022 08:37:13 +0200 Subject: MDEV-21905: Galera test galera_var_notify_cmd causes hang The problem is related to performing operations without switching wsrep off, this commit fixes this and allows disabled tests. --- mysql-test/std_data/wsrep_notify.sh | 19 +++++++------- mysql-test/std_data/wsrep_notify_ssl.sh | 29 +++++++++++++--------- mysql-test/suite/galera/disabled.def | 3 --- .../galera/r/galera_var_notify_ssl_ipv6.result | 2 ++ support-files/wsrep_notify.sh | 29 +++++++++++++--------- 5 files changed, 46 insertions(+), 36 deletions(-) diff --git a/mysql-test/std_data/wsrep_notify.sh b/mysql-test/std_data/wsrep_notify.sh index 5050ff9bc3e..80333b2eab8 100755 --- a/mysql-test/std_data/wsrep_notify.sh +++ b/mysql-test/std_data/wsrep_notify.sh @@ -34,8 +34,10 @@ SCHEMA="mtr_wsrep_notify" MEMB_TABLE="$SCHEMA.membership" STATUS_TABLE="$SCHEMA.status" -BEGIN=" -SET wsrep_on=0; +WSREP_ON='SET wsrep_on=ON' +WSREP_OFF='SET wsrep_on=OFF' + +BEGIN="$WSREP_OFF; CREATE SCHEMA IF NOT EXISTS $SCHEMA; CREATE TABLE IF NOT EXISTS $MEMB_TABLE ( idx INT, @@ -50,9 +52,8 @@ CREATE TABLE IF NOT EXISTS $STATUS_TABLE ( uuid CHAR(40), /* cluster UUID */ prim BOOLEAN /* if component is primary */ ) ENGINE=MEMORY; -BEGIN; -" -END="COMMIT;" +BEGIN" +END="COMMIT; $WSREP_ON" configuration_change() { @@ -71,7 +72,7 @@ configuration_change() echo "INSERT INTO $STATUS_TABLE VALUES($idx, $INDEX, '$STATUS', '$CLUSTER_UUID', $PRIMARY);" - echo "$END" + echo "$END;" } status_update() @@ -186,13 +187,13 @@ then fi fi -case $STATUS in - "joined" | "donor" | "synced") +case "$STATUS" in + 'joined' | 'donor' | 'synced') "$COM" | eval "$CLIENT" -B "-u'$USER'"${PSWD:+" -p'$PSWD'"}\ "-h'$HOST'" "-P$PORT"$SSL_PARAM ;; *) - # The node might be shutting down + # The node might be shutting down or not initialized ;; esac diff --git a/mysql-test/std_data/wsrep_notify_ssl.sh b/mysql-test/std_data/wsrep_notify_ssl.sh index 0e416a2f448..6c96db1a4e5 100755 --- a/mysql-test/std_data/wsrep_notify_ssl.sh +++ b/mysql-test/std_data/wsrep_notify_ssl.sh @@ -34,8 +34,10 @@ SCHEMA="mtr_wsrep_notify" MEMB_TABLE="$SCHEMA.membership" STATUS_TABLE="$SCHEMA.status" -BEGIN=" -SET wsrep_on=0; +WSREP_ON='SET wsrep_on=ON' +WSREP_OFF='SET wsrep_on=OFF' + +BEGIN="$WSREP_OFF; CREATE SCHEMA IF NOT EXISTS $SCHEMA; CREATE TABLE IF NOT EXISTS $MEMB_TABLE ( idx INT, @@ -50,9 +52,8 @@ CREATE TABLE IF NOT EXISTS $STATUS_TABLE ( uuid CHAR(40), /* cluster UUID */ prim BOOLEAN /* if component is primary */ ) ENGINE=MEMORY; -BEGIN; -" -END="COMMIT;" +BEGIN" +END="COMMIT; $WSREP_ON" configuration_change() { @@ -71,12 +72,12 @@ configuration_change() echo "INSERT INTO $STATUS_TABLE VALUES($idx, $INDEX, '$STATUS', '$CLUSTER_UUID', $PRIMARY);" - echo "$END" + echo "$END;" } status_update() { - echo "SET wsrep_on=0; BEGIN; UPDATE $STATUS_TABLE SET status='$STATUS'; COMMIT;" + echo "$BEGIN; UPDATE $STATUS_TABLE SET status='$STATUS'; $END;" } trim_string() @@ -186,10 +187,14 @@ then fi fi -# Undefined means node is shutting down -if [ "$STATUS" != 'Undefined' ]; then - "$COM" | eval "$CLIENT" -B "-u'$USER'"${PSWD:+" -p'$PSWD'"}\ - "-h'$HOST'" "-P$PORT"$SSL_PARAM -fi +case "$STATUS" in + 'joined' | 'donor' | 'synced') + "$COM" | eval "$CLIENT" -B "-u'$USER'"${PSWD:+" -p'$PSWD'"}\ + "-h'$HOST'" "-P$PORT"$SSL_PARAM + ;; + *) + # The node might be shutting down or not initialized + ;; +esac exit 0 diff --git a/mysql-test/suite/galera/disabled.def b/mysql-test/suite/galera/disabled.def index ade0e8257e5..7902f7ef537 100644 --- a/mysql-test/suite/galera/disabled.def +++ b/mysql-test/suite/galera/disabled.def @@ -23,11 +23,8 @@ galera_pc_recovery : MDEV-25199 cluster fails to start up galera_shutdown_nonprim : MDEV-21493 galera.galera_shutdown_nonprim galera_var_ignore_apply_errors : MDEV-26770 galera_var_ignore_apply_errors fails Server did not transition to READY state galera_var_node_address : MDEV-20485 Galera test failure -galera_var_notify_cmd : MDEV-21905 Galera test galera_var_notify_cmd causes hang -galera_var_notify_ssl_ipv6 : hangs after the merge of MDEV-27682 galera_var_retry_autocommit: MDEV-18181 Galera test failure on galera.galera_var_retry_autocommit partition : MDEV-19958 Galera test failure on galera.partition query_cache: MDEV-15805 Test failure on galera.query_cache versioning_trx_id: MDEV-18590: galera.versioning_trx_id: Test failure: mysqltest: Result content mismatch galera_bf_abort_at_after_statement : Unstable - diff --git a/mysql-test/suite/galera/r/galera_var_notify_ssl_ipv6.result b/mysql-test/suite/galera/r/galera_var_notify_ssl_ipv6.result index 823407fbba7..432d6c0adbd 100644 --- a/mysql-test/suite/galera/r/galera_var_notify_ssl_ipv6.result +++ b/mysql-test/suite/galera/r/galera_var_notify_ssl_ipv6.result @@ -1,3 +1,5 @@ +connection node_2; +connection node_1; connection node_1; SELECT COUNT(DISTINCT uuid) AS EXPECT_2 FROM mtr_wsrep_notify.membership; EXPECT_2 diff --git a/support-files/wsrep_notify.sh b/support-files/wsrep_notify.sh index 87ba11342c5..fd1a7546b71 100755 --- a/support-files/wsrep_notify.sh +++ b/support-files/wsrep_notify.sh @@ -34,8 +34,10 @@ SCHEMA="wsrep" MEMB_TABLE="$SCHEMA.membership" STATUS_TABLE="$SCHEMA.status" -BEGIN=" -SET wsrep_on=0; +WSREP_ON='SET wsrep_on=ON' +WSREP_OFF='SET wsrep_on=OFF' + +BEGIN="$WSREP_OFF; DROP SCHEMA IF EXISTS $SCHEMA; CREATE SCHEMA $SCHEMA; CREATE TABLE $MEMB_TABLE ( idx INT UNIQUE PRIMARY KEY, @@ -50,9 +52,8 @@ CREATE TABLE $STATUS_TABLE ( uuid CHAR(40), /* cluster UUID */ prim BOOLEAN /* if component is primary */ ) ENGINE=MEMORY; -BEGIN; -" -END="COMMIT;" +BEGIN" +END="COMMIT; $WSREP_ON" configuration_change() { @@ -71,12 +72,12 @@ configuration_change() echo "INSERT INTO $STATUS_TABLE VALUES($idx, $INDEX, '$STATUS', '$CLUSTER_UUID', $PRIMARY);" - echo "$END" + echo "$END;" } status_update() { - echo "SET wsrep_on=0; BEGIN; UPDATE $STATUS_TABLE SET status='$STATUS'; COMMIT;" + echo "$WSREP_OFF; BEGIN; UPDATE $STATUS_TABLE SET status='$STATUS'; $END;" } trim_string() @@ -186,10 +187,14 @@ then fi fi -# Undefined means node is shutting down -if [ "$STATUS" != 'Undefined' ]; then - "$COM" | eval "$CLIENT" -B "-u'$USER'"${PSWD:+" -p'$PSWD'"}\ - "-h'$HOST'" "-P$PORT"$SSL_PARAM -fi +case "$STATUS" in + 'joined' | 'donor' | 'synced') + "$COM" | eval "$CLIENT" -B "-u'$USER'"${PSWD:+" -p'$PSWD'"}\ + "-h'$HOST'" "-P$PORT"$SSL_PARAM + ;; + *) + # The node might be shutting down or not initialized + ;; +esac exit 0 -- cgit v1.2.1 From c49ebd2622867975fdda96cbfa88d12f01e9847a Mon Sep 17 00:00:00 2001 From: Julius Goryavsky Date: Tue, 11 Oct 2022 10:15:09 +0200 Subject: MDEV-21905: Galera test galera_var_notify_cmd causes hang The problem is related to performing operations without switching wsrep off, this commit fixes this and allows disabled tests. --- mysql-test/std_data/wsrep_notify.sh | 15 ++++++++------- mysql-test/std_data/wsrep_notify_ssl.sh | 15 ++++++++------- support-files/wsrep_notify.sh | 15 ++++++++------- 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/mysql-test/std_data/wsrep_notify.sh b/mysql-test/std_data/wsrep_notify.sh index d5defd6420e..5dfd63462b9 100755 --- a/mysql-test/std_data/wsrep_notify.sh +++ b/mysql-test/std_data/wsrep_notify.sh @@ -34,8 +34,10 @@ SCHEMA="mtr_wsrep_notify" MEMB_TABLE="$SCHEMA.membership" STATUS_TABLE="$SCHEMA.status" -BEGIN=" -SET wsrep_on=0; +WSREP_ON='SET wsrep_on=ON' +WSREP_OFF='SET wsrep_on=OFF' + +BEGIN="$WSREP_OFF; CREATE SCHEMA IF NOT EXISTS $SCHEMA; CREATE TABLE IF NOT EXISTS $MEMB_TABLE ( idx INT, @@ -50,9 +52,8 @@ CREATE TABLE IF NOT EXISTS $STATUS_TABLE ( uuid CHAR(40), /* cluster UUID */ prim BOOLEAN /* if component is primary */ ) ENGINE=MEMORY; -BEGIN; -" -END="COMMIT;" +BEGIN" +END="COMMIT; $WSREP_ON" configuration_change() { @@ -71,12 +72,12 @@ configuration_change() echo "INSERT INTO $STATUS_TABLE VALUES($idx, $INDEX, '$STATUS', '$CLUSTER_UUID', $PRIMARY);" - echo "$END" + echo "$END;" } status_update() { - echo "SET wsrep_on=0; BEGIN; UPDATE $STATUS_TABLE SET status='$STATUS'; COMMIT;" + echo "$BEGIN; UPDATE $STATUS_TABLE SET status='$STATUS'; $END;" } trim_string() diff --git a/mysql-test/std_data/wsrep_notify_ssl.sh b/mysql-test/std_data/wsrep_notify_ssl.sh index 0e416a2f448..2c6b6f4dacb 100755 --- a/mysql-test/std_data/wsrep_notify_ssl.sh +++ b/mysql-test/std_data/wsrep_notify_ssl.sh @@ -34,8 +34,10 @@ SCHEMA="mtr_wsrep_notify" MEMB_TABLE="$SCHEMA.membership" STATUS_TABLE="$SCHEMA.status" -BEGIN=" -SET wsrep_on=0; +WSREP_ON='SET wsrep_on=ON' +WSREP_OFF='SET wsrep_on=OFF' + +BEGIN="$WSREP_OFF; CREATE SCHEMA IF NOT EXISTS $SCHEMA; CREATE TABLE IF NOT EXISTS $MEMB_TABLE ( idx INT, @@ -50,9 +52,8 @@ CREATE TABLE IF NOT EXISTS $STATUS_TABLE ( uuid CHAR(40), /* cluster UUID */ prim BOOLEAN /* if component is primary */ ) ENGINE=MEMORY; -BEGIN; -" -END="COMMIT;" +BEGIN" +END="COMMIT; $WSREP_ON" configuration_change() { @@ -71,12 +72,12 @@ configuration_change() echo "INSERT INTO $STATUS_TABLE VALUES($idx, $INDEX, '$STATUS', '$CLUSTER_UUID', $PRIMARY);" - echo "$END" + echo "$END;" } status_update() { - echo "SET wsrep_on=0; BEGIN; UPDATE $STATUS_TABLE SET status='$STATUS'; COMMIT;" + echo "$BEGIN; UPDATE $STATUS_TABLE SET status='$STATUS'; $END;" } trim_string() diff --git a/support-files/wsrep_notify.sh b/support-files/wsrep_notify.sh index 87ba11342c5..dde1ded0963 100755 --- a/support-files/wsrep_notify.sh +++ b/support-files/wsrep_notify.sh @@ -34,8 +34,10 @@ SCHEMA="wsrep" MEMB_TABLE="$SCHEMA.membership" STATUS_TABLE="$SCHEMA.status" -BEGIN=" -SET wsrep_on=0; +WSREP_ON='SET wsrep_on=ON' +WSREP_OFF='SET wsrep_on=OFF' + +BEGIN="$WSREP_OFF; DROP SCHEMA IF EXISTS $SCHEMA; CREATE SCHEMA $SCHEMA; CREATE TABLE $MEMB_TABLE ( idx INT UNIQUE PRIMARY KEY, @@ -50,9 +52,8 @@ CREATE TABLE $STATUS_TABLE ( uuid CHAR(40), /* cluster UUID */ prim BOOLEAN /* if component is primary */ ) ENGINE=MEMORY; -BEGIN; -" -END="COMMIT;" +BEGIN" +END="COMMIT; $WSREP_ON" configuration_change() { @@ -71,12 +72,12 @@ configuration_change() echo "INSERT INTO $STATUS_TABLE VALUES($idx, $INDEX, '$STATUS', '$CLUSTER_UUID', $PRIMARY);" - echo "$END" + echo "$END;" } status_update() { - echo "SET wsrep_on=0; BEGIN; UPDATE $STATUS_TABLE SET status='$STATUS'; COMMIT;" + echo "$WSREP_OFF; BEGIN; UPDATE $STATUS_TABLE SET status='$STATUS'; $END;" } trim_string() -- cgit v1.2.1 From 7a28c82dcddc82008e5d9a8a27b95e9597295e23 Mon Sep 17 00:00:00 2001 From: Zhibo Zhang Date: Tue, 11 Oct 2022 06:40:50 -0400 Subject: MDEV-29183: Clarify mysqlbinlog command description (#2245) The statement 'Verify checksum binlog events.' is confusing. Fix word order to make it clear. --- client/mysqlbinlog.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index 1f1bb204493..7d2c5f7fdef 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -1788,7 +1788,7 @@ that may lead to an endless loop.", &opt_binlog_rows_event_max_encoded_size, 0, GET_ULONG, REQUIRED_ARG, UINT_MAX/4, 256, ULONG_MAX, 0, 256, 0}, #endif - {"verify-binlog-checksum", 'c', "Verify checksum binlog events.", + {"verify-binlog-checksum", 'c', "Verify binlog event checksums.", (uchar**) &opt_verify_binlog_checksum, (uchar**) &opt_verify_binlog_checksum, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"rewrite-db", OPT_REWRITE_DB, -- cgit v1.2.1 From e8101a4d033a59237d542f4bd0ae0b5323058e26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 11 Oct 2022 13:56:47 +0300 Subject: MDEV-19455/MDEV-29342 fixup: Avoid DEBUG_DBUG=-d,... --- mysql-test/suite/innodb_fts/r/misc_debug.result | 3 +-- mysql-test/suite/innodb_fts/r/misc_debug2.result | 5 +++-- mysql-test/suite/innodb_fts/t/misc_debug.test | 3 +-- mysql-test/suite/innodb_fts/t/misc_debug2.test | 5 +++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/mysql-test/suite/innodb_fts/r/misc_debug.result b/mysql-test/suite/innodb_fts/r/misc_debug.result index 9f13822ecda..be5d9b7698e 100644 --- a/mysql-test/suite/innodb_fts/r/misc_debug.result +++ b/mysql-test/suite/innodb_fts/r/misc_debug.result @@ -54,9 +54,8 @@ DROP TABLE t1; # MDEV-25663 Double free of transaction during TRUNCATE # call mtr.add_suppression("InnoDB: \\(Too many concurrent transactions\\)"); -SET DEBUG_DBUG='-d,ib_create_table_fail_too_many_trx'; -CREATE TABLE t1 (b CHAR(12), FULLTEXT KEY(b)) engine=InnoDB; SET @save_dbug= @@debug_dbug; +CREATE TABLE t1 (b CHAR(12), FULLTEXT KEY(b)) engine=InnoDB; SET debug_dbug='+d,ib_create_table_fail_too_many_trx'; TRUNCATE t1; ERROR HY000: Got error -1 "Internal error < 0 (Not system error)" from storage engine InnoDB diff --git a/mysql-test/suite/innodb_fts/r/misc_debug2.result b/mysql-test/suite/innodb_fts/r/misc_debug2.result index 583d43bd9db..a36561df96e 100644 --- a/mysql-test/suite/innodb_fts/r/misc_debug2.result +++ b/mysql-test/suite/innodb_fts/r/misc_debug2.result @@ -10,11 +10,12 @@ DROP TABLE mdev21563; # CREATE TABLE t1(f1 CHAR(100), FULLTEXT idx(f1))ENGINE=InnoDB; INSERT INTO t1 VALUES('mysql'), ('innodb'); +SET @save_dbug=@@debug_dbug; set debug_dbug="+d,fts_instrument_sync_debug"; INSERT INTO t1 VALUES('test'); -set debug_dbug="-d,fts_instrument_sync_debug"; +set debug_dbug=@save_dbug; INSERT INTO t1 VALUES('This is a fts issue'); set debug_dbug="+d,fts_instrument_sync_debug"; UPDATE t1 SET f1="mariadb"; -set debug_dbug="-d,fts_instrument_sync_debug"; +set debug_dbug=@save_dbug; DROP TABLE t1; diff --git a/mysql-test/suite/innodb_fts/t/misc_debug.test b/mysql-test/suite/innodb_fts/t/misc_debug.test index c8542152d4d..cf3651e14a2 100644 --- a/mysql-test/suite/innodb_fts/t/misc_debug.test +++ b/mysql-test/suite/innodb_fts/t/misc_debug.test @@ -84,10 +84,9 @@ DROP TABLE t1; --echo # MDEV-25663 Double free of transaction during TRUNCATE --echo # call mtr.add_suppression("InnoDB: \\(Too many concurrent transactions\\)"); -SET DEBUG_DBUG='-d,ib_create_table_fail_too_many_trx'; +SET @save_dbug= @@debug_dbug; CREATE TABLE t1 (b CHAR(12), FULLTEXT KEY(b)) engine=InnoDB; -SET @save_dbug= @@debug_dbug; SET debug_dbug='+d,ib_create_table_fail_too_many_trx'; --error ER_GET_ERRNO TRUNCATE t1; diff --git a/mysql-test/suite/innodb_fts/t/misc_debug2.test b/mysql-test/suite/innodb_fts/t/misc_debug2.test index 1ba77f2481e..815be816afd 100644 --- a/mysql-test/suite/innodb_fts/t/misc_debug2.test +++ b/mysql-test/suite/innodb_fts/t/misc_debug2.test @@ -16,12 +16,13 @@ DROP TABLE mdev21563; --echo # CREATE TABLE t1(f1 CHAR(100), FULLTEXT idx(f1))ENGINE=InnoDB; INSERT INTO t1 VALUES('mysql'), ('innodb'); +SET @save_dbug=@@debug_dbug; set debug_dbug="+d,fts_instrument_sync_debug"; INSERT INTO t1 VALUES('test'); -set debug_dbug="-d,fts_instrument_sync_debug"; +set debug_dbug=@save_dbug; INSERT INTO t1 VALUES('This is a fts issue'); --source include/restart_mysqld.inc set debug_dbug="+d,fts_instrument_sync_debug"; UPDATE t1 SET f1="mariadb"; -set debug_dbug="-d,fts_instrument_sync_debug"; +set debug_dbug=@save_dbug; DROP TABLE t1; -- cgit v1.2.1 From 2f1a4328cbd3c4a478d5556878596127cc874f59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 11 Oct 2022 15:36:24 +0300 Subject: MDEV-29613 fixup: clang -Wunused-but-set-variable --- storage/innobase/log/log0recv.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc index 4359fb6b308..0d03f49ae59 100644 --- a/storage/innobase/log/log0recv.cc +++ b/storage/innobase/log/log0recv.cc @@ -2,7 +2,7 @@ Copyright (c) 1997, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2012, Facebook Inc. -Copyright (c) 2013, 2020, MariaDB Corporation. +Copyright (c) 2013, 2022, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -2882,7 +2882,9 @@ loop: are included within the buffer */ ulint total_len = 0; +#ifdef DBUG_TRACE ulint n_recs = 0; +#endif bool only_mlog_file = true; ulint mlog_rec_len = 0; @@ -2935,7 +2937,9 @@ corrupted_log: } total_len += len; +#ifdef DBUG_TRACE n_recs++; +#endif ptr += len; -- cgit v1.2.1 From d0c4526eced7191b7e8b0b64b789ee70f5f245b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Tue, 11 Oct 2022 15:37:17 +0300 Subject: MDEV-20760 fixup: clang -Winconsistent-missing-override --- sql/sql_type.h | 468 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 242 insertions(+), 226 deletions(-) diff --git a/sql/sql_type.h b/sql/sql_type.h index 1ecc0b06cfd..ff6853b4c88 100644 --- a/sql/sql_type.h +++ b/sql/sql_type.h @@ -1,7 +1,7 @@ #ifndef SQL_TYPE_H_INCLUDED #define SQL_TYPE_H_INCLUDED /* - Copyright (c) 2015, 2020, MariaDB + Copyright (c) 2015, 2022, MariaDB This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -3827,8 +3827,8 @@ public: CHARSET_INFO *cs, bool send_error) const { - DBUG_ASSERT(0); - return NULL; + MY_ASSERT_UNREACHABLE(); + return nullptr; } Item_literal *create_literal_item(THD *thd, const String *str, bool send_error) const @@ -3839,13 +3839,13 @@ public: virtual Item *create_typecast_item(THD *thd, Item *item, const Type_cast_attributes &attr) const { - DBUG_ASSERT(0); - return NULL; + MY_ASSERT_UNREACHABLE(); + return nullptr; } virtual Item_copy *create_item_copy(THD *thd, Item *item) const; virtual int cmp_native(const Native &a, const Native &b) const { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return 0; } virtual bool set_comparator_func(Arg_comparator *cmp) const= 0; @@ -4000,67 +4000,65 @@ class Type_handler_row: public Type_handler static const Name m_name_row; public: virtual ~Type_handler_row() {} - const Name name() const { return m_name_row; } - bool is_scalar_type() const { return false; } - bool can_return_int() const { return false; } - bool can_return_decimal() const { return false; } - bool can_return_real() const { return false; } - bool can_return_str() const { return false; } - bool can_return_text() const { return false; } - bool can_return_date() const { return false; } - bool can_return_time() const { return false; } - enum_field_types field_type() const - { - DBUG_ASSERT(0); + const Name name() const override { return m_name_row; } + bool is_scalar_type() const override { return false; } + bool can_return_int() const override { return false; } + bool can_return_decimal() const override { return false; } + bool can_return_real() const override { return false; } + bool can_return_str() const override { return false; } + bool can_return_text() const override { return false; } + bool can_return_date() const override { return false; } + bool can_return_time() const override { return false; } + enum_field_types field_type() const override + { + MY_ASSERT_UNREACHABLE(); return MYSQL_TYPE_NULL; }; - protocol_send_type_t protocol_send_type() const + protocol_send_type_t protocol_send_type() const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return PROTOCOL_SEND_STRING; } - Item_result result_type() const + Item_result result_type() const override { return ROW_RESULT; } - Item_result cmp_type() const + Item_result cmp_type() const override { return ROW_RESULT; } - const Type_handler *type_handler_for_comparison() const; - int stored_field_cmp_to_item(THD *thd, Field *field, Item *item) const + const Type_handler *type_handler_for_comparison() const override; + int stored_field_cmp_to_item(THD *, Field *, Item *) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return 0; } - bool subquery_type_allows_materialization(const Item *inner, - const Item *outer, - bool is_in_predicate) const + bool subquery_type_allows_materialization(const Item *, const Item *, bool) + const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return false; } Field *make_num_distinct_aggregator_field(MEM_ROOT *, const Item *) const + override { - DBUG_ASSERT(0); - return NULL; + MY_ASSERT_UNREACHABLE(); + return nullptr; } - Field *make_conversion_table_field(TABLE *TABLE, - uint metadata, - const Field *target) const + Field *make_conversion_table_field(TABLE *, uint, const Field *) + const override { - DBUG_ASSERT(0); - return NULL; + MY_ASSERT_UNREACHABLE(); + return nullptr; } - bool Column_definition_fix_attributes(Column_definition *c) const + bool Column_definition_fix_attributes(Column_definition *) const override { return false; } - void Column_definition_reuse_fix_attributes(THD *thd, - Column_definition *c, - const Field *field) const + void Column_definition_reuse_fix_attributes(THD *, Column_definition *, + const Field *) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); } bool Column_definition_prepare_stage1(THD *thd, MEM_ROOT *mem_root, @@ -4069,28 +4067,25 @@ public: ulonglong table_flags, const Column_derived_attributes *derived_attr) - const; - bool Column_definition_redefine_stage1(Column_definition *def, - const Column_definition *dup, - const handler *file) - const + const override; + bool Column_definition_redefine_stage1(Column_definition *, + const Column_definition *, + const handler *) + const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } - bool Column_definition_prepare_stage2(Column_definition *c, - handler *file, - ulonglong table_flags) const + bool Column_definition_prepare_stage2(Column_definition *, handler *, + ulonglong) const override { return false; } - Field *make_table_field(const LEX_CSTRING *name, - const Record_addr &addr, - const Type_all_attributes &attr, - TABLE *table) const + Field *make_table_field(const LEX_CSTRING *, const Record_addr &, + const Type_all_attributes &, TABLE *) const override { - DBUG_ASSERT(0); - return NULL; + MY_ASSERT_UNREACHABLE(); + return nullptr; } Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, @@ -4098,252 +4093,263 @@ public: const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; - void make_sort_key(uchar *to, Item *item, - const SORT_FIELD_ATTR *sort_field, - Sort_param *param) const + uint32 flags) const override; + void make_sort_key(uchar *, Item *, const SORT_FIELD_ATTR *, Sort_param *) + const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); } - void sortlength(THD *thd, const Type_std_attributes *item, - SORT_FIELD_ATTR *attr) const + void sortlength(THD *, const Type_std_attributes *, SORT_FIELD_ATTR *) + const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); } - uint32 max_display_length(const Item *item) const + uint32 max_display_length(const Item *) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return 0; } - uint32 calc_pack_length(uint32 length) const + uint32 calc_pack_length(uint32) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return 0; } bool Item_eq_value(THD *thd, const Type_cmp_attributes *attr, - Item *a, Item *b) const; - uint Item_decimal_precision(const Item *item) const + Item *a, Item *b) const override; + uint Item_decimal_precision(const Item *) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return DECIMAL_MAX_PRECISION; } - bool Item_save_in_value(THD *thd, Item *item, st_value *value) const; + bool Item_save_in_value(THD *thd, Item *item, st_value *value) const + override; bool Item_param_set_from_value(THD *thd, Item_param *param, const Type_all_attributes *attr, - const st_value *value) const; - bool Item_send(Item *item, Protocol *protocol, st_value *buf) const + const st_value *value) const override; + bool Item_send(Item *, Protocol *, st_value *) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } - void Item_update_null_value(Item *item) const; - int Item_save_in_field(Item *item, Field *field, bool no_conversions) const + void Item_update_null_value(Item *item) const override; + int Item_save_in_field(Item *, Field *, bool) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return 1; } - String *print_item_value(THD *thd, Item *item, String *str) const; - bool can_change_cond_ref_to_const(Item_bool_func2 *target, - Item *target_expr, Item *target_value, - Item_bool_func2 *source, - Item *source_expr, Item *source_const) const + String *print_item_value(THD *thd, Item *item, String *str) const override; + bool can_change_cond_ref_to_const(Item_bool_func2 *, Item *, Item *, + Item_bool_func2 *, Item *, Item *) + const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return false; } - Item *make_const_item_for_comparison(THD *, Item *src, const Item *cmp) const; - Item_cache *Item_get_cache(THD *thd, const Item *item) const; - Item_copy *create_item_copy(THD *thd, Item *item) const + Item *make_const_item_for_comparison(THD *, Item *src, const Item *cmp) const + override; + Item_cache *Item_get_cache(THD *thd, const Item *item) const override; + Item_copy *create_item_copy(THD *, Item *) const override { - DBUG_ASSERT(0); - return NULL; + MY_ASSERT_UNREACHABLE(); + return nullptr; } - bool set_comparator_func(Arg_comparator *cmp) const; + bool set_comparator_func(Arg_comparator *cmp) const override; bool Item_hybrid_func_fix_attributes(THD *thd, const char *name, Type_handler_hybrid_field_type *, Type_all_attributes *atrr, - Item **items, uint nitems) const + Item **items, uint nitems) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } - bool Item_sum_hybrid_fix_length_and_dec(Item_sum_hybrid *func) const + bool Item_sum_hybrid_fix_length_and_dec(Item_sum_hybrid *) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } - bool Item_sum_sum_fix_length_and_dec(Item_sum_sum *) const + bool Item_sum_sum_fix_length_and_dec(Item_sum_sum *) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } - bool Item_sum_avg_fix_length_and_dec(Item_sum_avg *) const + bool Item_sum_avg_fix_length_and_dec(Item_sum_avg *) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } - bool Item_sum_variance_fix_length_and_dec(Item_sum_variance *) const + bool Item_sum_variance_fix_length_and_dec(Item_sum_variance *) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } - bool Item_val_bool(Item *item) const + bool Item_val_bool(Item *item) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return false; } - void Item_get_date(THD *thd, Item *item, - Temporal::Warn *warn, MYSQL_TIME *ltime, - date_mode_t fuzzydate) const + void Item_get_date(THD *, Item *, Temporal::Warn *, MYSQL_TIME *ltime, + date_mode_t) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); set_zero_time(ltime, MYSQL_TIMESTAMP_NONE); } - longlong Item_val_int_signed_typecast(Item *item) const + longlong Item_val_int_signed_typecast(Item *) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return 0; } - longlong Item_val_int_unsigned_typecast(Item *item) const + longlong Item_val_int_unsigned_typecast(Item *) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return 0; } - String *Item_func_hex_val_str_ascii(Item_func_hex *item, String *str) const + String *Item_func_hex_val_str_ascii(Item_func_hex *, String *) const override { - DBUG_ASSERT(0); - return NULL; + MY_ASSERT_UNREACHABLE(); + return nullptr; } String *Item_func_hybrid_field_type_val_str(Item_func_hybrid_field_type *, - String *) const + String *) const override { - DBUG_ASSERT(0); - return NULL; + MY_ASSERT_UNREACHABLE(); + return nullptr; } double Item_func_hybrid_field_type_val_real(Item_func_hybrid_field_type *) - const + const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return 0.0; } longlong Item_func_hybrid_field_type_val_int(Item_func_hybrid_field_type *) - const + const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return 0; } my_decimal *Item_func_hybrid_field_type_val_decimal( Item_func_hybrid_field_type *, - my_decimal *) const + my_decimal *) const override { - DBUG_ASSERT(0); - return NULL; + MY_ASSERT_UNREACHABLE(); + return nullptr; } void Item_func_hybrid_field_type_get_date(THD *, Item_func_hybrid_field_type *, Temporal::Warn *, MYSQL_TIME *ltime, - date_mode_t fuzzydate) const + date_mode_t) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); set_zero_time(ltime, MYSQL_TIMESTAMP_NONE); } String *Item_func_min_max_val_str(Item_func_min_max *, String *) const + override { - DBUG_ASSERT(0); - return NULL; + MY_ASSERT_UNREACHABLE(); + return nullptr; } - double Item_func_min_max_val_real(Item_func_min_max *) const + double Item_func_min_max_val_real(Item_func_min_max *) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return 0; } - longlong Item_func_min_max_val_int(Item_func_min_max *) const + longlong Item_func_min_max_val_int(Item_func_min_max *) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return 0; } my_decimal *Item_func_min_max_val_decimal(Item_func_min_max *, - my_decimal *) const + my_decimal *) const override { - DBUG_ASSERT(0); - return NULL; + MY_ASSERT_UNREACHABLE(); + return nullptr; } - bool Item_func_min_max_get_date(THD *thd, Item_func_min_max*, - MYSQL_TIME *, date_mode_t fuzzydate) const + bool Item_func_min_max_get_date(THD *, Item_func_min_max*, MYSQL_TIME *, + date_mode_t) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } - bool Item_func_between_fix_length_and_dec(Item_func_between *func) const + bool Item_func_between_fix_length_and_dec(Item_func_between *) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } - longlong Item_func_between_val_int(Item_func_between *func) const; - cmp_item *make_cmp_item(THD *thd, CHARSET_INFO *cs) const; - in_vector *make_in_vector(THD *thd, const Item_func_in *f, uint nargs) const; + longlong Item_func_between_val_int(Item_func_between *func) const override; + cmp_item *make_cmp_item(THD *thd, CHARSET_INFO *cs) const override; + in_vector *make_in_vector(THD *thd, const Item_func_in *f, uint nargs) const + override; bool Item_func_in_fix_comparator_compatible_types(THD *thd, - Item_func_in *) const; - bool Item_func_round_fix_length_and_dec(Item_func_round *) const; - bool Item_func_int_val_fix_length_and_dec(Item_func_int_val *) const; - bool Item_func_abs_fix_length_and_dec(Item_func_abs *) const; - bool Item_func_neg_fix_length_and_dec(Item_func_neg *) const; + Item_func_in *) const + override; + bool Item_func_round_fix_length_and_dec(Item_func_round *) const override; + bool Item_func_int_val_fix_length_and_dec(Item_func_int_val *) const + override; + bool Item_func_abs_fix_length_and_dec(Item_func_abs *) const override; + bool Item_func_neg_fix_length_and_dec(Item_func_neg *) const override; - bool Item_func_signed_fix_length_and_dec(Item_func_signed *) const + bool Item_func_signed_fix_length_and_dec(Item_func_signed *) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } bool Item_func_unsigned_fix_length_and_dec(Item_func_unsigned *) const + override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } bool Item_double_typecast_fix_length_and_dec(Item_double_typecast *) const + override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } bool Item_float_typecast_fix_length_and_dec(Item_float_typecast *) const + override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } bool Item_decimal_typecast_fix_length_and_dec(Item_decimal_typecast *) const + override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } bool Item_char_typecast_fix_length_and_dec(Item_char_typecast *) const + override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } bool Item_time_typecast_fix_length_and_dec(Item_time_typecast *) const + override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } bool Item_date_typecast_fix_length_and_dec(Item_date_typecast *) const + override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } - bool Item_datetime_typecast_fix_length_and_dec(Item_datetime_typecast *) const + bool Item_datetime_typecast_fix_length_and_dec(Item_datetime_typecast *) + const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return true; } - bool Item_func_plus_fix_length_and_dec(Item_func_plus *) const; - bool Item_func_minus_fix_length_and_dec(Item_func_minus *) const; - bool Item_func_mul_fix_length_and_dec(Item_func_mul *) const; - bool Item_func_div_fix_length_and_dec(Item_func_div *) const; - bool Item_func_mod_fix_length_and_dec(Item_func_mod *) const; + bool Item_func_plus_fix_length_and_dec(Item_func_plus *) const override; + bool Item_func_minus_fix_length_and_dec(Item_func_minus *) const override; + bool Item_func_mul_fix_length_and_dec(Item_func_mul *) const override; + bool Item_func_div_fix_length_and_dec(Item_func_div *) const override; + bool Item_func_mod_fix_length_and_dec(Item_func_mod *) const override; }; @@ -4353,7 +4359,7 @@ public: class Type_handler_numeric: public Type_handler { public: - String *print_item_value(THD *thd, Item *item, String *str) const; + String *print_item_value(THD *thd, Item *item, String *str) const override; bool Column_definition_prepare_stage1(THD *thd, MEM_ROOT *mem_root, Column_definition *c, @@ -4361,20 +4367,24 @@ public: ulonglong table_flags, const Column_derived_attributes *derived_attr) - const; - double Item_func_min_max_val_real(Item_func_min_max *) const; - longlong Item_func_min_max_val_int(Item_func_min_max *) const; + const override; + double Item_func_min_max_val_real(Item_func_min_max *) const override; + longlong Item_func_min_max_val_int(Item_func_min_max *) const override; my_decimal *Item_func_min_max_val_decimal(Item_func_min_max *, - my_decimal *) const; + my_decimal *) const override; bool Item_func_min_max_get_date(THD *thd, Item_func_min_max*, - MYSQL_TIME *, date_mode_t fuzzydate) const; + MYSQL_TIME *, date_mode_t fuzzydate) const + override; virtual ~Type_handler_numeric() { } bool can_change_cond_ref_to_const(Item_bool_func2 *target, Item *target_expr, Item *target_value, Item_bool_func2 *source, - Item *source_expr, Item *source_const) const; - bool Item_func_between_fix_length_and_dec(Item_func_between *func) const; - bool Item_char_typecast_fix_length_and_dec(Item_char_typecast *) const; + Item *source_expr, Item *source_const) const + override; + bool Item_func_between_fix_length_and_dec(Item_func_between *func) const + override; + bool Item_char_typecast_fix_length_and_dec(Item_char_typecast *) const + override; }; @@ -6151,35 +6161,36 @@ class Type_handler_string: public Type_handler_longstr static const Name m_name_char; public: virtual ~Type_handler_string() {} - const Name name() const { return m_name_char; } - enum_field_types field_type() const { return MYSQL_TYPE_STRING; } + const Name name() const override { return m_name_char; } + enum_field_types field_type() const override { return MYSQL_TYPE_STRING; } ulong KEY_pack_flags(uint column_nr) const override { return HA_PACK_KEY; } - bool is_param_long_data_type() const { return true; } - uint32 calc_pack_length(uint32 length) const { return length; } + bool is_param_long_data_type() const override { return true; } + uint32 calc_pack_length(uint32 length) const override { return length; } const Type_handler *type_handler_for_tmp_table(const Item *item) const + override { return varstring_type_handler(item); } Field *make_conversion_table_field(TABLE *, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const; + ulonglong table_flags) const override; Field *make_table_field(const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; }; @@ -6218,8 +6229,8 @@ class Type_handler_varchar: public Type_handler_longstr static const Name m_name_varchar; public: virtual ~Type_handler_varchar() {} - const Name name() const { return m_name_varchar; } - enum_field_types field_type() const { return MYSQL_TYPE_VARCHAR; } + const Name name() const override { return m_name_varchar; } + enum_field_types field_type() const override { return MYSQL_TYPE_VARCHAR; } ulong KEY_pack_flags(uint column_nr) const override { #if MARIADB_VERSION_ID >= 100500 @@ -6230,41 +6241,42 @@ public: return HA_BINARY_PACK_KEY | HA_VAR_LENGTH_KEY; #endif } - enum_field_types type_code_for_protocol() const + enum_field_types type_code_for_protocol() const override { return MYSQL_TYPE_VAR_STRING; // Keep things compatible for old clients } - uint32 calc_pack_length(uint32 length) const + uint32 calc_pack_length(uint32 length) const override { return (length + (length < 256 ? 1: 2)); } const Type_handler *type_handler_for_tmp_table(const Item *item) const + override { return varstring_type_handler(item); } - const Type_handler *type_handler_for_union(const Item *item) const + const Type_handler *type_handler_for_union(const Item *item) const override { return varstring_type_handler(item); } - bool is_param_long_data_type() const { return true; } + bool is_param_long_data_type() const override { return true; } Field *make_conversion_table_field(TABLE *, uint metadata, - const Field *target) const; - bool Column_definition_fix_attributes(Column_definition *c) const; + const Field *target) const override; + bool Column_definition_fix_attributes(Column_definition *c) const override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const; + ulonglong table_flags) const override; Field *make_table_field(const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; + TABLE *table) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, const LEX_CSTRING *name, const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; - bool adjust_spparam_type(Spvar_definition *def, Item *from) const; + uint32 flags) const override; + bool adjust_spparam_type(Spvar_definition *def, Item *from) const override; }; @@ -6273,11 +6285,12 @@ class Type_handler_hex_hybrid: public Type_handler_varchar static const Name m_name_hex_hybrid; public: virtual ~Type_handler_hex_hybrid() {} - const Name name() const { return m_name_hex_hybrid; } - const Type_handler *cast_to_int_type_handler() const; - const Type_handler *type_handler_for_system_time() const; - bool Item_func_round_fix_length_and_dec(Item_func_round *) const; - bool Item_func_int_val_fix_length_and_dec(Item_func_int_val *) const; + const Name name() const override { return m_name_hex_hybrid; } + const Type_handler *cast_to_int_type_handler() const override; + const Type_handler *type_handler_for_system_time() const override; + bool Item_func_round_fix_length_and_dec(Item_func_round *) const override; + bool Item_func_int_val_fix_length_and_dec(Item_func_int_val *) const + override; }; @@ -6285,10 +6298,10 @@ class Type_handler_varchar_compressed: public Type_handler_varchar { public: Field *make_conversion_table_field(TABLE *, uint metadata, - const Field *target) const; - ulong KEY_pack_flags(uint column_nr) const override + const Field *target) const override; + ulong KEY_pack_flags(uint) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return 0; } }; @@ -6299,7 +6312,7 @@ class Type_handler_blob_common: public Type_handler_longstr public: virtual ~Type_handler_blob_common() { } Field *make_conversion_table_field(TABLE *, uint metadata, - const Field *target) const; + const Field *target) const override; ulong KEY_pack_flags(uint column_nr) const override { if (column_nr == 0) @@ -6307,33 +6320,35 @@ public: return HA_PACK_KEY; } const Type_handler *type_handler_for_tmp_table(const Item *item) const + override { return blob_type_handler(item); } - const Type_handler *type_handler_for_union(const Item *item) const + const Type_handler *type_handler_for_union(const Item *item) const override { return blob_type_handler(item); } - bool subquery_type_allows_materialization(const Item *inner, - const Item *outer, - bool is_in_predicate) const + bool subquery_type_allows_materialization(const Item *, const Item *, bool) + const override { return false; // Materialization does not work with BLOB columns } - bool is_param_long_data_type() const { return true; } - bool Column_definition_fix_attributes(Column_definition *c) const; + bool is_param_long_data_type() const override { return true; } + bool Column_definition_fix_attributes(Column_definition *c) const override; void Column_definition_reuse_fix_attributes(THD *thd, Column_definition *c, - const Field *field) const; + const Field *field) const + override; bool Column_definition_prepare_stage2(Column_definition *c, handler *file, - ulonglong table_flags) const; + ulonglong table_flags) const override; bool Item_hybrid_func_fix_attributes(THD *thd, const char *name, Type_handler_hybrid_field_type *, Type_all_attributes *atrr, - Item **items, uint nitems) const; - void Item_param_setup_conversion(THD *thd, Item_param *) const; + Item **items, uint nitems) const + override; + void Item_param_setup_conversion(THD *thd, Item_param *) const override; Field *make_table_field_from_def(TABLE_SHARE *share, MEM_ROOT *mem_root, @@ -6341,7 +6356,7 @@ public: const Record_addr &addr, const Bit_addr &bit, const Column_definition_attributes *attr, - uint32 flags) const; + uint32 flags) const override; }; @@ -6350,14 +6365,14 @@ class Type_handler_tiny_blob: public Type_handler_blob_common static const Name m_name_tinyblob; public: virtual ~Type_handler_tiny_blob() {} - const Name name() const { return m_name_tinyblob; } - enum_field_types field_type() const { return MYSQL_TYPE_TINY_BLOB; } - uint32 calc_pack_length(uint32 length) const; + const Name name() const override { return m_name_tinyblob; } + enum_field_types field_type() const override { return MYSQL_TYPE_TINY_BLOB; } + uint32 calc_pack_length(uint32 length) const override; Field *make_table_field(const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; - uint max_octet_length() const { return UINT_MAX8; } + TABLE *table) const override; + uint max_octet_length() const override { return UINT_MAX8; } }; @@ -6366,14 +6381,15 @@ class Type_handler_medium_blob: public Type_handler_blob_common static const Name m_name_mediumblob; public: virtual ~Type_handler_medium_blob() {} - const Name name() const { return m_name_mediumblob; } - enum_field_types field_type() const { return MYSQL_TYPE_MEDIUM_BLOB; } - uint32 calc_pack_length(uint32 length) const; + const Name name() const override { return m_name_mediumblob; } + enum_field_types field_type() const override + { return MYSQL_TYPE_MEDIUM_BLOB; } + uint32 calc_pack_length(uint32 length) const override; Field *make_table_field(const LEX_CSTRING *name, const Record_addr &addr, const Type_all_attributes &attr, - TABLE *table) const; - uint max_octet_length() const { return UINT_MAX24; } + TABLE *table) const override; + uint max_octet_length() const override { return UINT_MAX24; } }; @@ -6415,10 +6431,10 @@ class Type_handler_blob_compressed: public Type_handler_blob { public: Field *make_conversion_table_field(TABLE *, uint metadata, - const Field *target) const; - ulong KEY_pack_flags(uint column_nr) const override + const Field *target) const override; + ulong KEY_pack_flags(uint) const override { - DBUG_ASSERT(0); + MY_ASSERT_UNREACHABLE(); return 0; } }; -- cgit v1.2.1 From 2aab7f2d0a6555f7ebb6dcde243639354ca5da53 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Tue, 11 Oct 2022 16:10:47 +0200 Subject: MDEV-26597 post-fix: cannot add new error messages in 10.4 followup for e8acec897417 --- mysql-test/suite/galera/r/MDEV-26597.result | 2 +- mysql-test/suite/galera/t/MDEV-26597.test | 2 +- .../suite/galera/t/galera_repl_max_ws_size.test | 2 +- .../suite/galera/t/galera_var_max_ws_size.test | 2 +- sql/share/errmsg-utf8.txt | 2 -- sql/wsrep_mysqld.cc | 2 +- sql/wsrep_thd.h | 34 +++++++--------------- 7 files changed, 15 insertions(+), 31 deletions(-) diff --git a/mysql-test/suite/galera/r/MDEV-26597.result b/mysql-test/suite/galera/r/MDEV-26597.result index 76730b56db1..15e334468a5 100644 --- a/mysql-test/suite/galera/r/MDEV-26597.result +++ b/mysql-test/suite/galera/r/MDEV-26597.result @@ -11,7 +11,7 @@ CREATE TABLE t1 ( pk int primary key) ENGINE=INNODB; ERROR HY000: Maximum writeset size exceeded SHOW WARNINGS; Level Code Message -Error 4160 Maximum writeset size exceeded +Error 1105 Maximum writeset size exceeded connection node_2; SET SESSION wsrep_sync_wait = 0; Killing server ... diff --git a/mysql-test/suite/galera/t/MDEV-26597.test b/mysql-test/suite/galera/t/MDEV-26597.test index 3162cefcc22..783a52cad50 100644 --- a/mysql-test/suite/galera/t/MDEV-26597.test +++ b/mysql-test/suite/galera/t/MDEV-26597.test @@ -10,7 +10,7 @@ CREATE TABLE t3 (c1 INTEGER NOT NULL PRIMARY KEY, c2 FLOAT(3,2)); SET GLOBAL wsrep_provider_options = 'repl.max_ws_size=512'; SET @@autocommit=0; INSERT INTO t3 VALUES (1000,0.00),(1001,0.25),(1002,0.50),(1003,0.75),(1008,1.00),(1009,1.25),(1010,1.50),(1011,1.75); ---error ER_TOO_BIG_WRITESET +--error ER_UNKNOWN_ERROR CREATE TABLE t1 ( pk int primary key) ENGINE=INNODB; SHOW WARNINGS; diff --git a/mysql-test/suite/galera/t/galera_repl_max_ws_size.test b/mysql-test/suite/galera/t/galera_repl_max_ws_size.test index 896ad99f3d8..2e29a030664 100644 --- a/mysql-test/suite/galera/t/galera_repl_max_ws_size.test +++ b/mysql-test/suite/galera/t/galera_repl_max_ws_size.test @@ -12,7 +12,7 @@ CREATE TABLE t1 (f1 VARCHAR(512)) ENGINE=InnoDB; SET GLOBAL wsrep_provider_options = 'repl.max_ws_size=512'; ---error ER_TOO_BIG_WRITESET +--error ER_UNKNOWN_ERROR INSERT INTO t1 VALUES (REPEAT('a', 512)); SELECT COUNT(*) = 0 FROM t1; diff --git a/mysql-test/suite/galera/t/galera_var_max_ws_size.test b/mysql-test/suite/galera/t/galera_var_max_ws_size.test index 440b3dea2a3..9444b8f2c4d 100644 --- a/mysql-test/suite/galera/t/galera_var_max_ws_size.test +++ b/mysql-test/suite/galera/t/galera_var_max_ws_size.test @@ -12,7 +12,7 @@ CREATE TABLE t1 (f1 INTEGER AUTO_INCREMENT PRIMARY KEY, f2 VARCHAR(1024)) Engine --let $wsrep_max_ws_size_orig = `SELECT @@wsrep_max_ws_size` SET GLOBAL wsrep_max_ws_size = 1024; ---error ER_TOO_BIG_WRITESET +--error ER_UNKNOWN_ERROR INSERT INTO t1 VALUES (DEFAULT, REPEAT('X', 1024)); SELECT COUNT(*) = 0 FROM t1; diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt index 8d9bf5c6ebb..dde8337f01c 100644 --- a/sql/share/errmsg-utf8.txt +++ b/sql/share/errmsg-utf8.txt @@ -9090,5 +9090,3 @@ ER_PERIOD_CONSTRAINT_DROP ER_TOO_LONG_KEYPART 42000 S1009 chi "指定的索引部分太长;最大索引部分长度为 %u 个字节" eng "Specified key part was too long; max key part length is %u bytes" -ER_TOO_BIG_WRITESET - eng "Maximum writeset size exceeded" diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc index f4efaeee42e..1dee4a6d3cd 100644 --- a/sql/wsrep_mysqld.cc +++ b/sql/wsrep_mysqld.cc @@ -2154,7 +2154,7 @@ static int wsrep_TOI_begin(THD *thd, const char *db, const char *table, ret, (thd->db.str ? thd->db.str : "(null)"), wsrep_thd_query(thd)); - my_error(ER_TOO_BIG_WRITESET, MYF(0)); + my_error(ER_UNKNOWN_ERROR, MYF(0), "Maximum writeset size exceeded"); break; case wsrep::e_deadlock_error: WSREP_WARN("TO isolation failed for: %d, schema: %s, sql: %s. " diff --git a/sql/wsrep_thd.h b/sql/wsrep_thd.h index 32663e9fc3b..31f95510c5e 100644 --- a/sql/wsrep_thd.h +++ b/sql/wsrep_thd.h @@ -182,7 +182,7 @@ void wsrep_reset_threadvars(THD *); so don't override those by default */ -static inline void wsrep_override_error(THD *thd, uint error) +static inline void wsrep_override_error(THD *thd, uint error, const char *format= 0, ...) { DBUG_ASSERT(error != ER_ERROR_DURING_COMMIT); Diagnostics_area *da= thd->get_stmt_da(); @@ -195,25 +195,11 @@ static inline void wsrep_override_error(THD *thd, uint error) da->sql_errno() != ER_LOCK_DEADLOCK)) { da->reset_diagnostics_area(); - my_error(error, MYF(0)); - } -} - -/** - Override error with additional wsrep status. - */ -static inline void wsrep_override_error(THD *thd, uint error, - enum wsrep::provider::status status) -{ - Diagnostics_area *da= thd->get_stmt_da(); - if (da->is_ok() || - !da->is_set() || - (da->is_error() && - da->sql_errno() != error && - da->sql_errno() != ER_LOCK_DEADLOCK)) - { - da->reset_diagnostics_area(); - my_error(error, MYF(0), status); + va_list args; + va_start(args, format); + if (!format) format= ER_THD(thd, error); + my_printv_error(error, format, MYF(0), args); + va_end(args); } } @@ -226,9 +212,9 @@ static inline void wsrep_override_error(THD* thd, { case wsrep::e_error_during_commit: if (status == wsrep::provider::error_size_exceeded) - wsrep_override_error(thd, ER_TOO_BIG_WRITESET); + wsrep_override_error(thd, ER_UNKNOWN_ERROR, "Maximum writeset size exceeded"); else - wsrep_override_error(thd, ER_ERROR_DURING_COMMIT, status); + wsrep_override_error(thd, ER_ERROR_DURING_COMMIT, 0, status); break; case wsrep::e_deadlock_error: wsrep_override_error(thd, ER_LOCK_DEADLOCK); @@ -237,11 +223,11 @@ static inline void wsrep_override_error(THD* thd, wsrep_override_error(thd, ER_QUERY_INTERRUPTED); break; case wsrep::e_size_exceeded_error: - wsrep_override_error(thd, ER_TOO_BIG_WRITESET); + wsrep_override_error(thd, ER_UNKNOWN_ERROR, "Maximum writeset size exceeded"); break; case wsrep::e_append_fragment_error: /* TODO: Figure out better error number */ - wsrep_override_error(thd, ER_ERROR_DURING_COMMIT, status); + wsrep_override_error(thd, ER_ERROR_DURING_COMMIT, 0, status); break; case wsrep::e_not_supported_error: wsrep_override_error(thd, ER_NOT_SUPPORTED_YET); -- cgit v1.2.1 From 5fffdbc8d5cbae5b63513d5e3d023bb4c928ec90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Lindstr=C3=B6m?= Date: Wed, 12 Oct 2022 10:53:14 +0300 Subject: Fixes after 10.4 --> 10.5 merge * MDEV-29142 : Ignore inconsistency warning as we kill cluster * galera_parallel_apply_3nodes : Disabled because it is unstable * MDEV-26597 : Add missing code * galera_sr.galera_sr_ws_size2 : Remove incorrect assertion --- mysql-test/suite/galera/disabled.def | 6 +----- mysql-test/suite/galera/r/MDEV-29142.result | 2 ++ mysql-test/suite/galera/t/MDEV-29142.test | 2 ++ mysql-test/suite/galera_3nodes/disabled.def | 1 + mysql-test/suite/galera_sr/disabled.def | 3 --- sql/wsrep_mysqld.cc | 19 ++++++++++++++----- sql/wsrep_thd.h | 1 - 7 files changed, 20 insertions(+), 14 deletions(-) diff --git a/mysql-test/suite/galera/disabled.def b/mysql-test/suite/galera/disabled.def index edb01ea1a1b..305547334fb 100644 --- a/mysql-test/suite/galera/disabled.def +++ b/mysql-test/suite/galera/disabled.def @@ -31,9 +31,5 @@ partition : MDEV-19958 Galera test failure on galera.partition query_cache: MDEV-15805 Test failure on galera.query_cache versioning_trx_id: MDEV-18590: galera.versioning_trx_id: Test failure: mysqltest: Result content mismatch galera_bf_abort_at_after_statement : Unstable +galera_bf_abort_shutdown : MDEV-29773 Assertion failure on sql/wsrep_mysqld.cc:2893 in wsrep_bf_abort_shutdown -# Recent trouble -MDEV-26597 : crashes on 10.5 -MDEV-27615 : crashes on 10.5 after MDEV-26597 fix -MDEV-29142 : fails on 10.5 with WSREP: Inconsistency detected -galera_bf_abort_shutdown : MDEV-29368 shutdown hang diff --git a/mysql-test/suite/galera/r/MDEV-29142.result b/mysql-test/suite/galera/r/MDEV-29142.result index 3816ca19867..2528520e236 100644 --- a/mysql-test/suite/galera/r/MDEV-29142.result +++ b/mysql-test/suite/galera/r/MDEV-29142.result @@ -5,10 +5,12 @@ connection node_2; connection node_1; call mtr.add_suppression("WSREP: Event .* Write_rows_v1 apply failed:.*"); call mtr.add_suppression("WSREP: Failed to apply write set:.*"); +call mtr.add_suppression("WSREP: Inconsistency detected: Inconsistent by consensus on.*"); connection node_2; call mtr.add_suppression("WSREP: Failed to open table mysql.wsrep_streaming_log for writing"); call mtr.add_suppression("WSREP: Failed to open SR table for write"); call mtr.add_suppression("WSREP: Failed to recover SR transactions from schema: wsrep_on : 0"); +call mtr.add_suppression("WSREP: Inconsistency detected: Inconsistent by consensus on.*"); SET @@global.tx_read_only = ON; SET default_storage_engine = SEQUENCE; create table t1 (c1 int); diff --git a/mysql-test/suite/galera/t/MDEV-29142.test b/mysql-test/suite/galera/t/MDEV-29142.test index 7f68e91859c..7e9776b005b 100644 --- a/mysql-test/suite/galera/t/MDEV-29142.test +++ b/mysql-test/suite/galera/t/MDEV-29142.test @@ -10,11 +10,13 @@ --connection node_1 call mtr.add_suppression("WSREP: Event .* Write_rows_v1 apply failed:.*"); call mtr.add_suppression("WSREP: Failed to apply write set:.*"); +call mtr.add_suppression("WSREP: Inconsistency detected: Inconsistent by consensus on.*"); --connection node_2 call mtr.add_suppression("WSREP: Failed to open table mysql.wsrep_streaming_log for writing"); call mtr.add_suppression("WSREP: Failed to open SR table for write"); call mtr.add_suppression("WSREP: Failed to recover SR transactions from schema: wsrep_on : 0"); +call mtr.add_suppression("WSREP: Inconsistency detected: Inconsistent by consensus on.*"); SET @@global.tx_read_only = ON; --error 0,1286 diff --git a/mysql-test/suite/galera_3nodes/disabled.def b/mysql-test/suite/galera_3nodes/disabled.def index 3c4c829de77..6599a936844 100644 --- a/mysql-test/suite/galera_3nodes/disabled.def +++ b/mysql-test/suite/galera_3nodes/disabled.def @@ -29,3 +29,4 @@ galera_ipv6_rsync_section : MDEV-24097 MTR sporadaically fails: Failed to start galera_ssl_reload : MDEV-24097 MTR sporadaically fails: Failed to start mysqld or mysql_shutdown failed galera_toi_vote : MDEV-24097 MTR sporadaically fails: Failed to start mysqld or mysql_shutdown failed galera_wsrep_schema_init : MDEV-24097 MTR sporadaically fails: Failed to start mysqld or mysql_shutdown failed +galera_parallel_apply_3nodes : MDEV-29774 Galera test galera_parallel_apply_3nodes is unstable diff --git a/mysql-test/suite/galera_sr/disabled.def b/mysql-test/suite/galera_sr/disabled.def index 8d13198cd0c..54701b1eb11 100644 --- a/mysql-test/suite/galera_sr/disabled.def +++ b/mysql-test/suite/galera_sr/disabled.def @@ -12,6 +12,3 @@ GCF-1060 : MDEV-26528 wrong usage of mutex LOCK_thd_kill and LOCK_thd_kill -galera_sr_ws_size2 : MDEV-29773 assertion failure -galera-features#56 : MDEV-29773 assertion failure -MDEV-27615 : MDEV-29773 assertion failure diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc index 134ab7c2a77..3e3b7ec5150 100644 --- a/sql/wsrep_mysqld.cc +++ b/sql/wsrep_mysqld.cc @@ -3339,19 +3339,28 @@ bool wsrep_consistency_check(THD *thd) void wsrep_commit_empty(THD* thd, bool all) { DBUG_ENTER("wsrep_commit_empty"); - WSREP_DEBUG("wsrep_commit_empty(%llu)", thd->thread_id); + WSREP_DEBUG("wsrep_commit_empty for %llu client_state %s client_mode" + " %s trans_state %s sql %s", + thd_get_thread_id(thd), + wsrep::to_c_string(thd->wsrep_cs().state()), + wsrep::to_c_string(thd->wsrep_cs().mode()), + wsrep::to_c_string(thd->wsrep_cs().transaction().state()), + wsrep_thd_query(thd)); + if (wsrep_is_real(thd, all) && wsrep_thd_is_local(thd) && thd->wsrep_trx().active() && !thd->internal_transaction() && thd->wsrep_trx().state() != wsrep::transaction::s_committed) { - /* @todo CTAS with STATEMENT binlog format and empty result set - seems to be committing empty. Figure out why and try to fix - elsewhere. */ + /* Here transaction is either empty (i.e. no changes) or + it was CREATE TABLE with no row binlog format or + we have already aborted transaction e.g. because max writeset size + has been reached. */ DBUG_ASSERT(!wsrep_has_changes(thd) || (thd->lex->sql_command == SQLCOM_CREATE_TABLE && - !thd->is_current_stmt_binlog_format_row())); + !thd->is_current_stmt_binlog_format_row()) || + thd->wsrep_cs().transaction().state() == wsrep::transaction::s_aborted); bool have_error= wsrep_current_error(thd); int ret= wsrep_before_rollback(thd, all) || wsrep_after_rollback(thd, all) || diff --git a/sql/wsrep_thd.h b/sql/wsrep_thd.h index e55895ffbe8..fd48df1494f 100644 --- a/sql/wsrep_thd.h +++ b/sql/wsrep_thd.h @@ -184,7 +184,6 @@ void wsrep_reset_threadvars(THD *); static inline void wsrep_override_error(THD *thd, uint error, const char *format= 0, ...) { - DBUG_ASSERT(error != ER_ERROR_DURING_COMMIT); Diagnostics_area *da= thd->get_stmt_da(); if (da->is_ok() || da->is_eof() || -- cgit v1.2.1 From 1feccb505f9ec5cada8f8e2c544f736c1a533633 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 13 Oct 2022 09:09:03 +0300 Subject: MDEV-29672 test fixup for --ps-protocol --- mysql-test/main/myisam_debug_keys.test | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysql-test/main/myisam_debug_keys.test b/mysql-test/main/myisam_debug_keys.test index bf028bb8e52..73d68637b29 100644 --- a/mysql-test/main/myisam_debug_keys.test +++ b/mysql-test/main/myisam_debug_keys.test @@ -10,6 +10,7 @@ CREATE TABLE types ( type TEXT NOT NULL, prefix_length INT NOT NULL ); +--disable_ps_protocol INSERT INTO types (type, prefix_length) VALUES ('INT', 0), ('BIGINT', 0), @@ -29,6 +30,7 @@ INSERT INTO types (type, prefix_length) VALUES ('TEXT', 12), ('TEXT', 16), ('TEXT', 100); +--enable_ps_protocol DELIMITER $$; BEGIN NOT ATOMIC DECLARE create2_template TEXT -- cgit v1.2.1