diff options
126 files changed, 6702 insertions, 1104 deletions
diff --git a/client/mysqltest.cc b/client/mysqltest.cc index a65dcc7da93..184121e12c0 100644 --- a/client/mysqltest.cc +++ b/client/mysqltest.cc @@ -5963,6 +5963,7 @@ void do_connect(struct st_command *command) int read_timeout= 0; int write_timeout= 0; int connect_timeout= 0; + char *csname=0; struct st_connection* con_slot; static DYNAMIC_STRING ds_connection_name; @@ -6065,6 +6066,11 @@ void do_connect(struct st_command *command) { connect_timeout= atoi(con_options + sizeof("connect_timeout=")-1); } + else if (strncasecmp(con_options, "CHARSET=", + sizeof("CHARSET=") - 1) == 0) + { + csname= strdup(con_options + sizeof("CHARSET=") - 1); + } else die("Illegal option to connect: %.*s", (int) (end - con_options), con_options); @@ -6102,7 +6108,7 @@ void do_connect(struct st_command *command) mysql_options(con_slot->mysql, MYSQL_OPT_COMPRESS, NullS); mysql_options(con_slot->mysql, MYSQL_OPT_LOCAL_INFILE, 0); mysql_options(con_slot->mysql, MYSQL_SET_CHARSET_NAME, - charset_info->csname); + csname?csname: charset_info->csname); if (opt_charsets_dir) mysql_options(con_slot->mysql, MYSQL_SET_CHARSET_DIR, opt_charsets_dir); @@ -6194,6 +6200,7 @@ void do_connect(struct st_command *command) dynstr_free(&ds_sock); dynstr_free(&ds_options); dynstr_free(&ds_default_auth); + free(csname); DBUG_VOID_RETURN; } diff --git a/extra/mariabackup/backup_mysql.cc b/extra/mariabackup/backup_mysql.cc index 2ff7e56f3ad..a9eef808008 100644 --- a/extra/mariabackup/backup_mysql.cc +++ b/extra/mariabackup/backup_mysql.cc @@ -153,7 +153,7 @@ xb_mysql_connect() return(NULL); } - xb_mysql_query(connection, "SET SESSION wait_timeout=2147483", + xb_mysql_query(connection, "SET SESSION wait_timeout=2147483, max_statement_time=0", false, true); return(connection); diff --git a/extra/mariabackup/xtrabackup.cc b/extra/mariabackup/xtrabackup.cc index 3ad3de2b6c8..009a4891d93 100644 --- a/extra/mariabackup/xtrabackup.cc +++ b/extra/mariabackup/xtrabackup.cc @@ -3090,7 +3090,16 @@ xb_load_single_table_tablespace( die("Can't open datafile %s", name); } - err = file->validate_first_page(&flush_lsn); + for (int i = 0; i < 10; i++) { + err = file->validate_first_page(&flush_lsn); + if (err != DB_CORRUPTION) { + break; + } + + my_sleep(1000); + } + + bool is_empty_file = file->exists() && file->is_empty_file(); if (err == DB_SUCCESS && file->space_id() != SRV_TMP_SPACE_ID) { os_offset_t node_size = os_file_get_size(file->handle()); @@ -3122,9 +3131,7 @@ xb_load_single_table_tablespace( delete file; - if (err != DB_SUCCESS && err != DB_CORRUPTION && xtrabackup_backup) { - /* allow corrupted first page for xtrabackup, it could be just - zero-filled page, which we restore from redo log later */ + if (err != DB_SUCCESS && xtrabackup_backup && !is_empty_file) { die("Failed to not validate first page of the file %s, error %d",name, (int)err); } } diff --git a/mysql-test/suite/galera_3nodes/include/galera_suspend.inc b/mysql-test/include/galera_suspend.inc index d4037d8958c..d4037d8958c 100644 --- a/mysql-test/suite/galera_3nodes/include/galera_suspend.inc +++ b/mysql-test/include/galera_suspend.inc diff --git a/mysql-test/include/mtr_check.sql b/mysql-test/include/mtr_check.sql index b5673b2a313..c4ffc292500 100644 --- a/mysql-test/include/mtr_check.sql +++ b/mysql-test/include/mtr_check.sql @@ -35,6 +35,7 @@ BEGIN AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' + AND variable_name != 'AUTO_INCREMENT_INCREMENT' ORDER BY variable_name; -- Dump all databases, there should be none diff --git a/mysql-test/main/lowercase_table.result b/mysql-test/main/lowercase_table.result index ac7d3e6bf7b..823ffa7696f 100644 --- a/mysql-test/main/lowercase_table.result +++ b/mysql-test/main/lowercase_table.result @@ -127,3 +127,7 @@ Database (mysql_TE%) mysql_test drop database mysql_TEST; End of 10.0 tests +create database db1; +create table t1 (a int); +drop database db1; +drop table t1; diff --git a/mysql-test/main/lowercase_table.test b/mysql-test/main/lowercase_table.test index c339105aae4..e0dcb6c36dd 100644 --- a/mysql-test/main/lowercase_table.test +++ b/mysql-test/main/lowercase_table.test @@ -118,3 +118,15 @@ show databases like "mysql_TE%"; drop database mysql_TEST; --echo End of 10.0 tests + +# +# MDEV-17148 DROP DATABASE throw "Directory not empty" after changed lower_case_table_names. +# + +let $datadir=`select @@datadir`; +create database db1; +create table t1 (a int); +copy_file $datadir/test/t1.frm $datadir/db1/T1.frm; +drop database db1; +drop table t1; + diff --git a/mysql-test/main/reset_connection.result b/mysql-test/main/reset_connection.result index 925195f704e..54f6ffdbd25 100644 --- a/mysql-test/main/reset_connection.result +++ b/mysql-test/main/reset_connection.result @@ -5,3 +5,23 @@ Com_select 10 SHOW local STATUS LIKE 'com_select'; Variable_name Value Com_select 0 +# Test if charset changes after reset (utf8) +connect utf8_conn,localhost,root,,,,,CHARSET=utf8; +connection utf8_conn; +SELECT IF(@@character_set_client='utf8','OK', 'FAIL') AS RESULT; +RESULT +OK +SELECT IF(@@character_set_client='utf8','OK', 'FAIL') AS RESULT; +RESULT +OK +disconnect utf8_conn; +# Test if charset changes after reset (latin1) +connect latin1_conn,localhost,root,,,,,CHARSET=latin1; +connection latin1_conn; +SELECT IF(@@character_set_client='latin1','OK', 'FAIL') AS RESULT; +RESULT +OK +SELECT IF(@@character_set_client='latin1','OK', 'FAIL') AS RESULT; +RESULT +OK +disconnect latin1_conn; diff --git a/mysql-test/main/reset_connection.test b/mysql-test/main/reset_connection.test index 49f41c32fc3..73c8280703c 100644 --- a/mysql-test/main/reset_connection.test +++ b/mysql-test/main/reset_connection.test @@ -23,3 +23,18 @@ SHOW local STATUS LIKE 'com_select'; SHOW local STATUS LIKE 'com_select'; +--echo # Test if charset changes after reset (utf8) +connect(utf8_conn,localhost,root,,,,,CHARSET=utf8); +connection utf8_conn; +SELECT IF(@@character_set_client='utf8','OK', 'FAIL') AS RESULT; +--reset_connection +SELECT IF(@@character_set_client='utf8','OK', 'FAIL') AS RESULT; +disconnect utf8_conn; + +--echo # Test if charset changes after reset (latin1) +connect(latin1_conn,localhost,root,,,,,CHARSET=latin1); +connection latin1_conn; +SELECT IF(@@character_set_client='latin1','OK', 'FAIL') AS RESULT; +--reset_connection +SELECT IF(@@character_set_client='latin1','OK', 'FAIL') AS RESULT; +disconnect latin1_conn;
\ No newline at end of file diff --git a/mysql-test/suite/funcs_1/r/is_routines_embedded.result b/mysql-test/suite/funcs_1/r/is_routines_embedded.result index ec375e9c5f6..02d2867b657 100644 --- a/mysql-test/suite/funcs_1/r/is_routines_embedded.result +++ b/mysql-test/suite/funcs_1/r/is_routines_embedded.result @@ -197,7 +197,7 @@ sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL NULL NULL NULL NUL SELECT * FROM db_datadict_2.res_6_408002_2; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci add_suppression def mtr add_suppression PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN INSERT INTO test_suppressions (pattern) VALUES (pattern); FLUSH NO_WRITE_TO_BINLOG TABLE test_suppressions; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci -check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.global_priv; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci +check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' AND variable_name != 'AUTO_INCREMENT_INCREMENT' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.global_priv; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci check_warnings def mtr check_warnings PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE `pos` bigint unsigned; SET SQL_LOG_BIN=0, SQL_SAFE_UPDATES=0; UPDATE error_log el, global_suppressions gs SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP gs.pattern; UPDATE error_log el, test_suppressions ts SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP ts.pattern; SELECT COUNT(*) INTO @num_warnings FROM error_log WHERE suspicious=1; IF @num_warnings > 0 THEN SELECT line FROM error_log WHERE suspicious=1; SELECT 2 INTO result; ELSE SELECT 0 INTO RESULT; END IF; TRUNCATE test_suppressions; DROP TABLE error_log; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci connect testuser2, localhost, testuser2, , db_datadict; SELECT * FROM information_schema.routines; @@ -209,7 +209,7 @@ sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL NULL NULL NULL NUL SELECT * FROM db_datadict_2.res_6_408002_2; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci add_suppression def mtr add_suppression PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN INSERT INTO test_suppressions (pattern) VALUES (pattern); FLUSH NO_WRITE_TO_BINLOG TABLE test_suppressions; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci -check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.global_priv; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci +check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' AND variable_name != 'AUTO_INCREMENT_INCREMENT' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.global_priv; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci check_warnings def mtr check_warnings PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE `pos` bigint unsigned; SET SQL_LOG_BIN=0, SQL_SAFE_UPDATES=0; UPDATE error_log el, global_suppressions gs SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP gs.pattern; UPDATE error_log el, test_suppressions ts SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP ts.pattern; SELECT COUNT(*) INTO @num_warnings FROM error_log WHERE suspicious=1; IF @num_warnings > 0 THEN SELECT line FROM error_log WHERE suspicious=1; SELECT 2 INTO result; ELSE SELECT 0 INTO RESULT; END IF; TRUNCATE test_suppressions; DROP TABLE error_log; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci connect testuser3, localhost, testuser3, , test; SELECT * FROM information_schema.routines; @@ -221,7 +221,7 @@ sp_6_408002_2 def db_datadict_2 sp_6_408002_2 PROCEDURE NULL NULL NULL NULL NUL SELECT * FROM db_datadict_2.res_6_408002_2; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost latin1 latin1_swedish_ci latin1_swedish_ci add_suppression def mtr add_suppression PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN INSERT INTO test_suppressions (pattern) VALUES (pattern); FLUSH NO_WRITE_TO_BINLOG TABLE test_suppressions; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci -check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.global_priv; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci +check_testcase def mtr check_testcase PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE variable_name NOT IN ('timestamp') AND variable_name not like "Last_IO_Err*" AND variable_name != 'INNODB_IBUF_MAX_SIZE' AND variable_name != 'INNODB_USE_NATIVE_AIO' AND variable_name != 'INNODB_BUFFER_POOL_LOAD_AT_STARTUP' AND variable_name not like 'GTID%POS' AND variable_name != 'GTID_BINLOG_STATE' AND variable_name != 'AUTO_INCREMENT_INCREMENT' ORDER BY variable_name; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA ORDER BY BINARY SCHEMA_NAME; SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mtr_wsrep_notify', 'wsrep_schema') ORDER BY BINARY SCHEMA_NAME; SELECT table_name AS tables_in_test FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='test'; SELECT CONCAT(table_schema, '.', table_name) AS tables_in_mysql FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='mysql' ORDER BY tables_in_mysql; SELECT CONCAT(table_schema, '.', table_name) AS columns_in_mysql, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, character_set_name, collation_name, column_type, column_key, extra, column_comment FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='mysql' ORDER BY columns_in_mysql; SELECT * FROM INFORMATION_SCHEMA.EVENTS; SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME NOT IN ('gs_insert', 'ts_insert'); SELECT * FROM INFORMATION_SCHEMA.ROUTINES; SHOW STATUS LIKE 'slave_open_temp_tables'; checksum table mysql.columns_priv, mysql.db, mysql.func, mysql.help_category, mysql.help_keyword, mysql.help_relation, mysql.plugin, mysql.proc, mysql.procs_priv, mysql.roles_mapping, mysql.tables_priv, mysql.time_zone, mysql.time_zone_leap_second, mysql.time_zone_name, mysql.time_zone_transition, mysql.time_zone_transition_type, mysql.global_priv; SELECT * FROM INFORMATION_SCHEMA.PLUGINS; select * from information_schema.session_variables where variable_name = 'debug_sync'; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci check_warnings def mtr check_warnings PROCEDURE NULL NULL NULL NULL NULL NULL NULL NULL SQL BEGIN DECLARE `pos` bigint unsigned; SET SQL_LOG_BIN=0, SQL_SAFE_UPDATES=0; UPDATE error_log el, global_suppressions gs SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP gs.pattern; UPDATE error_log el, test_suppressions ts SET suspicious=0 WHERE el.suspicious=1 AND el.line REGEXP ts.pattern; SELECT COUNT(*) INTO @num_warnings FROM error_log WHERE suspicious=1; IF @num_warnings > 0 THEN SELECT line FROM error_log WHERE suspicious=1; SELECT 2 INTO result; ELSE SELECT 0 INTO RESULT; END IF; TRUNCATE test_suppressions; DROP TABLE error_log; END NULL NULL SQL NO CONTAINS SQL NULL DEFINER YYYY-MM-DD hh:mm:ss YYYY-MM-DD hh:mm:ss root@localhost utf8 utf8_general_ci latin1_swedish_ci connection default; disconnect testuser1; diff --git a/mysql-test/suite/galera/disabled.def b/mysql-test/suite/galera/disabled.def index 76f62e7b0eb..4fe68a794fd 100644 --- a/mysql-test/suite/galera/disabled.def +++ b/mysql-test/suite/galera/disabled.def @@ -50,7 +50,6 @@ galera.galera_encrypt_tmp_files : Get error failed to enable encryption of tempo galera.galera_var_reject_queries : assertion in inline_mysql_socket_send query_cache : MDEV-18137: Galera test failure on query_cache galera.galera_autoinc_sst_mariabackup : MDEV-18177 Galera test failure on galera_autoinc_sst_mariabackup -galera_gcache_recover_manytrx : MDEV-15740 galera.galera_ist_mariabackup : Leaves port open galera.galera_sst_rsync2 : MDEV-18178 Galera test failure on galera_sst_rsync2 galera.galera_kill_largechanges : MDEV-18179 Galera test failure on galera.galera_kill_largechanges diff --git a/mysql-test/suite/galera/r/galera_gcache_recover_manytrx.result b/mysql-test/suite/galera/r/galera_gcache_recover_manytrx.result index 868b39bfbd6..604b24a8fab 100644 --- a/mysql-test/suite/galera/r/galera_gcache_recover_manytrx.result +++ b/mysql-test/suite/galera/r/galera_gcache_recover_manytrx.result @@ -70,28 +70,55 @@ WHILE 1 DO INSERT INTO t1 (f2) VALUES (REPEAT('x', 1024 * 1024 * 10)); END WHILE; END| +connect node_1_insert_simple, 127.0.0.1, root, , test, $NODE_MYPORT_1; +connect node_1_insert_multi, 127.0.0.1, root, , test, $NODE_MYPORT_1; +connect node_1_insert_transaction, 127.0.0.1, root, , test, $NODE_MYPORT_1; +connect node_1_update_simple, 127.0.0.1, root, , test, $NODE_MYPORT_1; +connect node_1_insert_1k, 127.0.0.1, root, , test, $NODE_MYPORT_1; +connect node_1_insert_1m, 127.0.0.1, root, , test, $NODE_MYPORT_1; +connect node_1_insert_10m, 127.0.0.1, root, , test, $NODE_MYPORT_1; +connection node_1_insert_simple; CALL insert_simple();; +connection node_1_insert_multi; CALL insert_multi();; +connection node_1_insert_transaction; CALL insert_transaction ();; +connection node_1_update_simple; CALL update_simple ();; +connection node_1_insert_1k; CALL insert_1k ();; +connection node_1_insert_1m; CALL insert_1m ();; +connection node_1_insert_10m; CALL insert_10m ();; +connection node_2; SET SESSION wsrep_sync_wait = 0; Killing server ... +connection node_1; Killing server ... +connection node_1_insert_simple; ERROR HY000: Lost connection to MySQL server during query +connection node_1_insert_multi; ERROR HY000: Lost connection to MySQL server during query +connection node_1_insert_transaction; ERROR HY000: Lost connection to MySQL server during query +connection node_1_update_simple; ERROR HY000: Lost connection to MySQL server during query +connection node_1_insert_1k; ERROR HY000: Lost connection to MySQL server during query +connection node_1_insert_1m; ERROR HY000: Lost connection to MySQL server during query +connection node_1_insert_10m; ERROR HY000: Lost connection to MySQL server during query +connection node_1; Performing --wsrep-recover ... Using --wsrep-start-position when starting mysqld ... +connection node_2; Performing --wsrep-recover ... Using --wsrep-start-position when starting mysqld ... +connection node_1; include/diff_servers.inc [servers=1 2] +connection node_1; DROP TABLE t1; DROP TABLE ten; DROP PROCEDURE insert_simple; @@ -100,8 +127,10 @@ DROP PROCEDURE insert_transaction; DROP PROCEDURE update_simple; DROP PROCEDURE insert_1k; DROP PROCEDURE insert_1m; +connection node_1; CALL mtr.add_suppression("conflict state 7 after post commit"); CALL mtr.add_suppression("Skipped GCache ring buffer recovery"); include/assert_grep.inc [async IST sender starting to serve] +connection node_2; CALL mtr.add_suppression("Skipped GCache ring buffer recovery"); include/assert_grep.inc [Recovering GCache ring buffer: found gapless sequence] diff --git a/mysql-test/suite/galera_3nodes/r/galera_evs_suspect_timeout.result b/mysql-test/suite/galera_3nodes/r/galera_evs_suspect_timeout.result index 3543feff78c..d612e9377a9 100644 --- a/mysql-test/suite/galera_3nodes/r/galera_evs_suspect_timeout.result +++ b/mysql-test/suite/galera_3nodes/r/galera_evs_suspect_timeout.result @@ -25,4 +25,5 @@ COUNT(*) = 1 DROP TABLE t1; connection node_3; Resuming node ... +connection node_3; CALL mtr.add_suppression("WSREP: gcs_caused() returned -1 \\(Operation not permitted\\)"); diff --git a/mysql-test/suite/galera_3nodes/r/galera_ist_gcache_rollover.result b/mysql-test/suite/galera_3nodes/r/galera_ist_gcache_rollover.result index 7780c3f73b8..3b0c32547fe 100644 --- a/mysql-test/suite/galera_3nodes/r/galera_ist_gcache_rollover.result +++ b/mysql-test/suite/galera_3nodes/r/galera_ist_gcache_rollover.result @@ -3,6 +3,7 @@ connection node_1; connection node_1; connection node_2; connection node_3; +connection node_1; CREATE TABLE t1 (f1 INTEGER PRIMARY KEY); INSERT INTO t1 VALUES (01), (02), (03), (04), (05); connection node_2; diff --git a/mysql-test/suite/galera_3nodes/r/galera_safe_to_bootstrap.result b/mysql-test/suite/galera_3nodes/r/galera_safe_to_bootstrap.result index b87c8743406..4da24e8dbfb 100644 --- a/mysql-test/suite/galera_3nodes/r/galera_safe_to_bootstrap.result +++ b/mysql-test/suite/galera_3nodes/r/galera_safe_to_bootstrap.result @@ -34,10 +34,20 @@ connection node_1; connection node_2; connection node_3; connection node_2; +CALL mtr.add_suppression("WSREP: no nodes coming from prim view, prim not possible"); +CALL mtr.add_suppression("WSREP: It may not be safe to bootstrap the cluster from this node"); +CALL mtr.add_suppression("WSREP: wsrep::connect(.*) failed: 7"); +CALL mtr.add_suppression("Aborting"); +CALL mtr.add_suppression("WSREP: moving position backwards: [0-9]+ -> 0"); CALL mtr.add_suppression("Failed to prepare for incremental state transfer"); CALL mtr.add_suppression("It may not be safe to bootstrap the cluster from this node"); CALL mtr.add_suppression("Aborting"); connection node_3; +CALL mtr.add_suppression("WSREP: no nodes coming from prim view, prim not possible"); +CALL mtr.add_suppression("WSREP: It may not be safe to bootstrap the cluster from this node"); +CALL mtr.add_suppression("WSREP: wsrep::connect(.*) failed: 7"); +CALL mtr.add_suppression("Aborting"); +CALL mtr.add_suppression("WSREP: moving position backwards: [0-9]+ -> 0"); CALL mtr.add_suppression("Failed to prepare for incremental state transfer"); CALL mtr.add_suppression("It may not be safe to bootstrap the cluster from this node"); CALL mtr.add_suppression("Aborting"); diff --git a/mysql-test/suite/galera_3nodes/t/galera_evs_suspect_timeout.test b/mysql-test/suite/galera_3nodes/t/galera_evs_suspect_timeout.test index a4767928681..aa733442b92 100644 --- a/mysql-test/suite/galera_3nodes/t/galera_evs_suspect_timeout.test +++ b/mysql-test/suite/galera_3nodes/t/galera_evs_suspect_timeout.test @@ -56,8 +56,8 @@ DROP TABLE t1; # Reconnect node #3 so that MTR's end-of-test checks can run ---connection node_3 --source include/galera_resume.inc +--connection node_3 --source include/wait_until_connected_again.inc --disable_query_log diff --git a/mysql-test/suite/galera_3nodes/t/galera_garbd.test b/mysql-test/suite/galera_3nodes/t/galera_garbd.test index 81d927894c7..d66c4a75ab7 100644 --- a/mysql-test/suite/galera_3nodes/t/galera_garbd.test +++ b/mysql-test/suite/galera_3nodes/t/galera_garbd.test @@ -29,7 +29,9 @@ --source include/wait_condition.inc --echo Starting garbd ... ---exec `dirname $WSREP_PROVIDER`/garb/garbd --address "gcomm://127.0.0.1:$NODE_GALERAPORT_1" --group my_wsrep_cluster --options 'base_port=$NODE_GALERAPORT_3' > $MYSQL_TMP_DIR/garbd.log 2>&1 & +--let $gp1 = `SELECT SUBSTR(@@wsrep_provider_options, LOCATE('base_port =', @@wsrep_provider_options) + LENGTH('base_port = '))` +--let $galera_port_1 = `SELECT SUBSTR('$gp1', 1, LOCATE(';', '$gp1') - 1)` +--exec `dirname $WSREP_PROVIDER`/../../bin/garb/garbd --address "gcomm://127.0.0.1:$galera_port_1" --group my_wsrep_cluster --options 'base_port=$galera_port_3' > $MYSQL_TMP_DIR/garbd.log 2>&1 & --sleep 5 diff --git a/mysql-test/suite/galera_3nodes/t/galera_ist_gcache_rollover.cnf b/mysql-test/suite/galera_3nodes/t/galera_ist_gcache_rollover.cnf index 821175220ac..303087dffbb 100644 --- a/mysql-test/suite/galera_3nodes/t/galera_ist_gcache_rollover.cnf +++ b/mysql-test/suite/galera_3nodes/t/galera_ist_gcache_rollover.cnf @@ -1,11 +1,11 @@ !include ../galera_3nodes.cnf [mysqld.1] -wsrep_provider_options='base_port=@mysqld.1.#galera_port;pc.ignore_sb=true;gcache.size=1M' +wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.1.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.ignore_sb=true;gcache.size=1M' [mysqld.2] -wsrep_provider_options='base_port=@mysqld.2.#galera_port;pc.ignore_sb=true;gcache.size=1M' +wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.ignore_sb=true;gcache.size=1M' [mysqld.3] -wsrep_provider_options='base_port=@mysqld.3.#galera_port;pc.ignore_sb=true;gcache.size=1M' +wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.ignore_sb=true;gcache.size=1M' diff --git a/mysql-test/suite/galera_3nodes/t/galera_ist_gcache_rollover.test b/mysql-test/suite/galera_3nodes/t/galera_ist_gcache_rollover.test index 9e43c90bfc1..69e80ee6c3d 100644 --- a/mysql-test/suite/galera_3nodes/t/galera_ist_gcache_rollover.test +++ b/mysql-test/suite/galera_3nodes/t/galera_ist_gcache_rollover.test @@ -23,6 +23,7 @@ --let $node_3=node_3 --source ../galera/include/auto_increment_offset_save.inc +--connection node_1 CREATE TABLE t1 (f1 INTEGER PRIMARY KEY); INSERT INTO t1 VALUES (01), (02), (03), (04), (05); diff --git a/mysql-test/suite/galera_3nodes/t/galera_safe_to_bootstrap.test b/mysql-test/suite/galera_3nodes/t/galera_safe_to_bootstrap.test index 722242b22c8..053c0bd8ce9 100644 --- a/mysql-test/suite/galera_3nodes/t/galera_safe_to_bootstrap.test +++ b/mysql-test/suite/galera_3nodes/t/galera_safe_to_bootstrap.test @@ -1,7 +1,6 @@ # # Test the safe_to_bootstrap in grastate.dat # - --source include/galera_cluster.inc # @@ -144,9 +143,9 @@ SET SESSION wsrep_on = OFF; # --error 1 ---exec $MYSQLD --defaults-group-suffix=.2 --defaults-file=$MYSQLTEST_VARDIR/my.cnf --wsrep-new-cluster | grep 'This node is not safe to bootstrap the cluster' +--exec $MYSQLD --defaults-group-suffix=.2 --defaults-file=$MYSQLTEST_VARDIR/my.cnf --wsrep-new-cluster --wsrep-cluster-address='gcomm://' | grep 'This node is not safe to bootstrap the cluster' --error 1 ---exec $MYSQLD --defaults-group-suffix=.3 --defaults-file=$MYSQLTEST_VARDIR/my.cnf --wsrep-new-cluster | grep 'This node is not safe to bootstrap the cluster' +--exec $MYSQLD --defaults-group-suffix=.3 --defaults-file=$MYSQLTEST_VARDIR/my.cnf --wsrep-new-cluster --wsrep-cluster-address='gcomm://' | grep 'This node is not safe to bootstrap the cluster' # # Attempt to bootstrap starting from node #1, should succeed @@ -169,11 +168,21 @@ SET SESSION wsrep_on = OFF; --source include/wait_condition.inc --connection node_2 +CALL mtr.add_suppression("WSREP: no nodes coming from prim view, prim not possible"); +CALL mtr.add_suppression("WSREP: It may not be safe to bootstrap the cluster from this node"); +CALL mtr.add_suppression("WSREP: wsrep::connect(.*) failed: 7"); +CALL mtr.add_suppression("Aborting"); +CALL mtr.add_suppression("WSREP: moving position backwards: [0-9]+ -> 0"); CALL mtr.add_suppression("Failed to prepare for incremental state transfer"); CALL mtr.add_suppression("It may not be safe to bootstrap the cluster from this node"); CALL mtr.add_suppression("Aborting"); --connection node_3 +CALL mtr.add_suppression("WSREP: no nodes coming from prim view, prim not possible"); +CALL mtr.add_suppression("WSREP: It may not be safe to bootstrap the cluster from this node"); +CALL mtr.add_suppression("WSREP: wsrep::connect(.*) failed: 7"); +CALL mtr.add_suppression("Aborting"); +CALL mtr.add_suppression("WSREP: moving position backwards: [0-9]+ -> 0"); CALL mtr.add_suppression("Failed to prepare for incremental state transfer"); CALL mtr.add_suppression("It may not be safe to bootstrap the cluster from this node"); CALL mtr.add_suppression("Aborting"); diff --git a/mysql-test/suite/innodb/r/alter_varchar_change.result b/mysql-test/suite/innodb/r/alter_varchar_change.result new file mode 100644 index 00000000000..df7d49ca088 --- /dev/null +++ b/mysql-test/suite/innodb/r/alter_varchar_change.result @@ -0,0 +1,459 @@ +CREATE PROCEDURE get_index_id(IN tbl_id INT, IN idx_name char(100), OUT idx_id INT) +BEGIN +SELECT index_id into idx_id FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES WHERE +NAME=idx_name and TABLE_ID=tbl_id; +END| +CREATE PROCEDURE get_table_id(IN tbl_name char(100), OUT tbl_id INT) +BEGIN +SELECT table_id into tbl_id FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE +NAME = tbl_name; +END| +SET @tbl_id = 0; +SET @tbl1_id = 0; +SET @idx_id = 0; +SET @idx1_id = 0; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100) PRIMARY KEY)ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200); +CALL get_table_id("test/t1", @tbl1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +1 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(200) NOT NULL, + PRIMARY KEY (`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), +INDEX idx(f2))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200); +CALL get_table_id("test/t1", @tbl1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +1 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(200) DEFAULT NULL, + KEY `idx` (`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, f2 VARCHAR(100), f3 VARCHAR(100), +INDEX idx(f2, f3), index idx1(f3, f2))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), MODIFY f3 VARCHAR(150); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +1 +SELECT @idx1_id = @idx_id; +@idx1_id = @idx_id +1 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(200) DEFAULT NULL, + `f3` varchar(150) DEFAULT NULL, + KEY `idx` (`f2`,`f3`), + KEY `idx1` (`f3`,`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, f2 VARCHAR(100), +INDEX idx(f2(40)))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +1 +SELECT @idx1_id = @idx_id; +@idx1_id = @idx_id +1 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(200) DEFAULT NULL, + KEY `idx` (`f2`(40)) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), FULLTEXT idx(f2))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +1 +SELECT @idx1_id = @idx_id; +@idx1_id = @idx_id +1 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(200) DEFAULT NULL, + FULLTEXT KEY `idx` (`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), +f3 VARCHAR(50) as (f2) VIRTUAL, +INDEX idx(f3))ENGINE=InnoDB; +INSERT INTO t1(f1, f2) VALUES(1, repeat('a', 40)); +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(100); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +1 +SELECT @idx1_id = @idx_id; +@idx1_id = @idx_id +1 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(100) DEFAULT NULL, + `f3` varchar(50) GENERATED ALWAYS AS (`f2`) VIRTUAL, + KEY `idx` (`f3`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), +INDEX idx(f2(10)), +INDEX idx1(f1))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), DROP INDEX idx1; +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +1 +SELECT @idx1_id = @idx_id; +@idx1_id = @idx_id +1 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(200) DEFAULT NULL, + KEY `idx` (`f2`(10)) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), +INDEX idx(f2(10)))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), DROP INDEX idx, ADD INDEX idx(f2(10)); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +1 +SELECT @idx1_id = @idx_id; +@idx1_id = @idx_id +1 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(200) DEFAULT NULL, + KEY `idx` (`f2`(10)) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), +INDEX idx(f2(10)))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), DROP INDEX idx, ADD INDEX idx(f2(50)); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +1 +SELECT @idx1_id = @idx_id; +@idx1_id = @idx_id +0 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(200) DEFAULT NULL, + KEY `idx` (`f2`(50)) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), +INDEX idx(f2(100)))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), ADD INDEX idx1(f1); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +1 +SELECT @idx1_id = @idx_id; +@idx1_id = @idx_id +1 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(200) DEFAULT NULL, + KEY `idx` (`f2`), + KEY `idx1` (`f1`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), +INDEX idx(f2(10)))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), DROP INDEX idx, ADD INDEX idx(f2(6)); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +1 +SELECT @idx1_id = @idx_id; +@idx1_id = @idx_id +0 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(200) DEFAULT NULL, + KEY `idx` (`f2`(6)) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), +INDEX idx(f2))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), ADD COLUMN f3 INT; +CALL get_table_id("test/t1", @tbl1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +1 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(200) DEFAULT NULL, + `f3` int(11) DEFAULT NULL, + KEY `idx` (`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, f2 VARCHAR(100) PRIMARY KEY)ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), ADD COLUMN f3 INT; +CALL get_table_id("test/t1", @tbl1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +1 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(200) NOT NULL, + `f3` int(11) DEFAULT NULL, + PRIMARY KEY (`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, f2 VARCHAR(100))ENGINE=INNODB; +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), ADD FULLTEXT idx(f2); +CALL get_table_id("test/t1", @tbl1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +0 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(200) DEFAULT NULL, + FULLTEXT KEY `idx` (`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 CHAR(100) PRIMARY KEY)ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 CHAR(200); +CALL get_table_id("test/t1", @tbl1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +0 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` char(200) NOT NULL, + PRIMARY KEY (`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), +INDEX idx(f2(10)), +INDEX idx1(f1))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(50); +CALL get_table_id("test/t1", @tbl1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +0 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(50) DEFAULT NULL, + KEY `idx` (`f2`(10)), + KEY `idx1` (`f1`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), +INDEX idx(f2(10)), +INDEX idx1(f1))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(5), DROP INDEX idx1; +CALL get_table_id("test/t1", @tbl1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +0 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(5) DEFAULT NULL, + KEY `idx` (`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), FULLTEXT idx(f2))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(50); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +0 +SELECT @idx1_id = @idx_id; +@idx1_id = @idx_id +0 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(50) DEFAULT NULL, + FULLTEXT KEY `idx` (`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), +INDEX idx(f2))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 CHAR(200); +CALL get_table_id("test/t1", @tbl1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +0 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` char(200) DEFAULT NULL, + KEY `idx` (`f2`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), +INDEX idx(f2(40)))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 TEXT; +CALL get_table_id("test/t1", @tbl1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +0 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` text DEFAULT NULL, + KEY `idx` (`f2`(40)) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), +INDEX idx(f2(40)))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(300); +CALL get_table_id("test/t1", @tbl1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +0 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(300) DEFAULT NULL, + KEY `idx` (`f2`(40)) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), +INDEX idx(f2(40)))ENGINE=InnoDB; +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200) CHARACTER SET UTF16; +CALL get_table_id("test/t1", @tbl1_id); +SELECT @tbl1_id = @tbl_id; +@tbl1_id = @tbl_id +0 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(200) CHARACTER SET utf16 DEFAULT NULL, + KEY `idx` (`f2`(40)) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +CREATE TABLE t1(f1 INT NOT NULL, +f2 VARCHAR(100), +f3 VARCHAR(50) as (f2) VIRTUAL, +INDEX idx(f3))ENGINE=InnoDB; +# If varchar virtual column extension is allowed in the future then +# InnoDB must rebuild the index +ALTER TABLE t1 MODIFY f3 VARCHAR(100); +ERROR HY000: This is not yet supported for generated columns +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int(11) NOT NULL, + `f2` varchar(100) DEFAULT NULL, + `f3` varchar(50) GENERATED ALWAYS AS (`f2`) VIRTUAL, + KEY `idx` (`f3`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1; +DROP PROCEDURE get_index_id; +DROP PROCEDURE get_table_id; diff --git a/mysql-test/suite/innodb/t/alter_varchar_change.test b/mysql-test/suite/innodb/t/alter_varchar_change.test new file mode 100644 index 00000000000..f435125e581 --- /dev/null +++ b/mysql-test/suite/innodb/t/alter_varchar_change.test @@ -0,0 +1,336 @@ +--source include/have_innodb.inc + +DELIMITER |; +CREATE PROCEDURE get_index_id(IN tbl_id INT, IN idx_name char(100), OUT idx_id INT) +BEGIN +SELECT index_id into idx_id FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES WHERE + NAME=idx_name and TABLE_ID=tbl_id; +END| + +CREATE PROCEDURE get_table_id(IN tbl_name char(100), OUT tbl_id INT) +BEGIN +SELECT table_id into tbl_id FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE + NAME = tbl_name; +END| + +DELIMITER ;| + +SET @tbl_id = 0; +SET @tbl1_id = 0; +SET @idx_id = 0; +SET @idx1_id = 0; + +# Table should avoid rebuild for the following varchar change. + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100) PRIMARY KEY)ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200); +CALL get_table_id("test/t1", @tbl1_id); + +SELECT @tbl1_id = @tbl_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +# Index should avoid rebuild +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), + INDEX idx(f2))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200); +CALL get_table_id("test/t1", @tbl1_id); + +SELECT @tbl1_id = @tbl_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, f2 VARCHAR(100), f3 VARCHAR(100), + INDEX idx(f2, f3), index idx1(f3, f2))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), MODIFY f3 VARCHAR(150); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); + +SELECT @tbl1_id = @tbl_id; +SELECT @idx1_id = @idx_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, f2 VARCHAR(100), + INDEX idx(f2(40)))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); + +SELECT @tbl1_id = @tbl_id; +SELECT @idx1_id = @idx_id; + +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), FULLTEXT idx(f2))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); + +SELECT @tbl1_id = @tbl_id; +SELECT @idx1_id = @idx_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), + f3 VARCHAR(50) as (f2) VIRTUAL, + INDEX idx(f3))ENGINE=InnoDB; + +INSERT INTO t1(f1, f2) VALUES(1, repeat('a', 40)); + +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(100); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); + +SELECT @tbl1_id = @tbl_id; +SELECT @idx1_id = @idx_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), + INDEX idx(f2(10)), + INDEX idx1(f1))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), DROP INDEX idx1; +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); + +SELECT @tbl1_id = @tbl_id; +SELECT @idx1_id = @idx_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), + INDEX idx(f2(10)))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), DROP INDEX idx, ADD INDEX idx(f2(10)); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); + +SELECT @tbl1_id = @tbl_id; +SELECT @idx1_id = @idx_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), + INDEX idx(f2(10)))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), DROP INDEX idx, ADD INDEX idx(f2(50)); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); + +SELECT @tbl1_id = @tbl_id; +SELECT @idx1_id = @idx_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +# Newly added index should built + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), + INDEX idx(f2(100)))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), ADD INDEX idx1(f1); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); + +SELECT @tbl1_id = @tbl_id; +SELECT @idx1_id = @idx_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), + INDEX idx(f2(10)))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), DROP INDEX idx, ADD INDEX idx(f2(6)); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); + +SELECT @tbl1_id = @tbl_id; +SELECT @idx1_id = @idx_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +# Table should rebuild + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), + INDEX idx(f2))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), ADD COLUMN f3 INT; +CALL get_table_id("test/t1", @tbl1_id); + +SELECT @tbl1_id = @tbl_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, f2 VARCHAR(100) PRIMARY KEY)ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), ADD COLUMN f3 INT; +CALL get_table_id("test/t1", @tbl1_id); + +SELECT @tbl1_id = @tbl_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, f2 VARCHAR(100))ENGINE=INNODB; + +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200), ADD FULLTEXT idx(f2); +CALL get_table_id("test/t1", @tbl1_id); + +SELECT @tbl1_id = @tbl_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, + f2 CHAR(100) PRIMARY KEY)ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 CHAR(200); +CALL get_table_id("test/t1", @tbl1_id); + +SELECT @tbl1_id = @tbl_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), + INDEX idx(f2(10)), + INDEX idx1(f1))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(50); +CALL get_table_id("test/t1", @tbl1_id); + +SELECT @tbl1_id = @tbl_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), + INDEX idx(f2(10)), + INDEX idx1(f1))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(5), DROP INDEX idx1; +CALL get_table_id("test/t1", @tbl1_id); + +SELECT @tbl1_id = @tbl_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), FULLTEXT idx(f2))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +CALL get_index_id(@tbl_id, "idx", @idx_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(50); +CALL get_table_id("test/t1", @tbl1_id); +CALL get_index_id(@tbl1_id, "idx", @idx1_id); + +SELECT @tbl1_id = @tbl_id; +SELECT @idx1_id = @idx_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), + INDEX idx(f2))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 CHAR(200); +CALL get_table_id("test/t1", @tbl1_id); + +SELECT @tbl1_id = @tbl_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), + INDEX idx(f2(40)))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 TEXT; +CALL get_table_id("test/t1", @tbl1_id); + +SELECT @tbl1_id = @tbl_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), + INDEX idx(f2(40)))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(300); +CALL get_table_id("test/t1", @tbl1_id); + +SELECT @tbl1_id = @tbl_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), + INDEX idx(f2(40)))ENGINE=InnoDB; + +CALL get_table_id("test/t1", @tbl_id); +ALTER TABLE t1 MODIFY f2 VARCHAR(200) CHARACTER SET UTF16; +CALL get_table_id("test/t1", @tbl1_id); + +SELECT @tbl1_id = @tbl_id; +SHOW CREATE TABLE t1; +DROP TABLE t1; +# Show error when virtual varchar column got changed + +CREATE TABLE t1(f1 INT NOT NULL, + f2 VARCHAR(100), + f3 VARCHAR(50) as (f2) VIRTUAL, + INDEX idx(f3))ENGINE=InnoDB; + +--echo # If varchar virtual column extension is allowed in the future then +--echo # InnoDB must rebuild the index + +--error ER_UNSUPPORTED_ACTION_ON_GENERATED_COLUMN +ALTER TABLE t1 MODIFY f3 VARCHAR(100); +SHOW CREATE TABLE t1; +DROP TABLE t1; + +DROP PROCEDURE get_index_id; +DROP PROCEDURE get_table_id; diff --git a/mysql-test/suite/innodb_zip/r/prefix_index_liftedlimit.result b/mysql-test/suite/innodb_zip/r/prefix_index_liftedlimit.result index 7a73dae473e..96e51e506f2 100644 --- a/mysql-test/suite/innodb_zip/r/prefix_index_liftedlimit.result +++ b/mysql-test/suite/innodb_zip/r/prefix_index_liftedlimit.result @@ -1388,7 +1388,7 @@ ALTER TABLE worklog5743 ADD PRIMARY KEY `pk_idx` (col_1_varchar(3000)); ERROR 23000: Duplicate entry 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' for key 'PRIMARY' DROP TABLE worklog5743; set global innodb_large_prefix=0; -ERROR HY000: Unknown system variable 'innodb_large_prefix' +ERROR HY000: Variable 'innodb_large_prefix' is a read only variable CREATE TABLE worklog5743 ( col_1_varchar VARCHAR (4000) , col_2_varchar VARCHAR (4000) , PRIMARY KEY (col_1_varchar(3072)) diff --git a/mysql-test/suite/innodb_zip/t/prefix_index_liftedlimit.test b/mysql-test/suite/innodb_zip/t/prefix_index_liftedlimit.test index 5a944f0ae8b..bca710386d0 100644 --- a/mysql-test/suite/innodb_zip/t/prefix_index_liftedlimit.test +++ b/mysql-test/suite/innodb_zip/t/prefix_index_liftedlimit.test @@ -1300,7 +1300,7 @@ ALTER TABLE worklog5743 ADD PRIMARY KEY `pk_idx` (col_1_varchar(3000)); DROP TABLE worklog5743; # ----------------------------------------------------------------------------- ---error ER_UNKNOWN_SYSTEM_VARIABLE +--error ER_INCORRECT_GLOBAL_LOCAL_VAR set global innodb_large_prefix=0; CREATE TABLE worklog5743 ( col_1_varchar VARCHAR (4000) , col_2_varchar VARCHAR (4000) , diff --git a/mysql-test/suite/mariabackup/incremental_ddl_before_backup.result b/mysql-test/suite/mariabackup/incremental_ddl_before_backup.result new file mode 100644 index 00000000000..a6273a20ff5 --- /dev/null +++ b/mysql-test/suite/mariabackup/incremental_ddl_before_backup.result @@ -0,0 +1,32 @@ +call mtr.add_suppression("InnoDB: New log files created"); +CREATE TABLE t1(i INT) ENGINE INNODB; +CREATE TABLE t2(i INT PRIMARY KEY) ENGINE INNODB; +CREATE TABLE t3(i INT) ENGINE INNODB; +# Create full backup , modify table, then create incremental/differential backup +create table t4(f1 int not null, f2 int not null)engine=innodb; +insert into t4 values(1, 2), (2, 2), (3, 3), (5, 5), (6, 6), (4, 4), (9, 9); +insert into t4 select * from t4; +insert into t4 select * from t4; +insert into t4 select * from t4; +insert into t4 select * from t4; +insert into t4 select * from t4; +insert into t4 select * from t4; +insert into t4 select * from t4; +insert into t4 select * from t4; +insert into t4 select * from t4; +insert into t4 select * from t4; +rename table t4 to t7; +select count(*) from t7; +count(*) +7168 +# XTRABACKUP INCREMENTAL +# XTRABACKUP PREPARE +# XTRABACKUP INCREMENTAL PREPARE +# shutdown server +# remove datadir +# xtrabackup move back +# restart server +select count(*) from t7; +count(*) +7168 +drop table t1, t2, t7, t3; diff --git a/mysql-test/suite/mariabackup/incremental_ddl_before_backup.test b/mysql-test/suite/mariabackup/incremental_ddl_before_backup.test new file mode 100644 index 00000000000..2136771b97e --- /dev/null +++ b/mysql-test/suite/mariabackup/incremental_ddl_before_backup.test @@ -0,0 +1,50 @@ +--source include/have_debug.inc + +call mtr.add_suppression("InnoDB: New log files created"); + +let $basedir=$MYSQLTEST_VARDIR/tmp/backup; +let $incremental_dir=$MYSQLTEST_VARDIR/tmp/backup_inc1; + +CREATE TABLE t1(i INT) ENGINE INNODB; +CREATE TABLE t2(i INT PRIMARY KEY) ENGINE INNODB; +CREATE TABLE t3(i INT) ENGINE INNODB; + +echo # Create full backup , modify table, then create incremental/differential backup; +--disable_result_log +exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$basedir; +--enable_result_log + +create table t4(f1 int not null, f2 int not null)engine=innodb; +insert into t4 values(1, 2), (2, 2), (3, 3), (5, 5), (6, 6), (4, 4), (9, 9); +insert into t4 select * from t4; +insert into t4 select * from t4; +insert into t4 select * from t4; +insert into t4 select * from t4; +insert into t4 select * from t4; +insert into t4 select * from t4; +insert into t4 select * from t4; +insert into t4 select * from t4; +insert into t4 select * from t4; +insert into t4 select * from t4; +rename table t4 to t7; +select count(*) from t7; + +--echo # XTRABACKUP INCREMENTAL +exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$incremental_dir --incremental-basedir=$basedir; + +--echo # XTRABACKUP PREPARE +exec $XTRABACKUP --apply-log-only --prepare --target-dir=$basedir; + +--echo # XTRABACKUP INCREMENTAL PREPARE +exec $XTRABACKUP --prepare --target-dir=$basedir --incremental-dir=$incremental_dir; + +let $targetdir=$basedir; +-- source include/restart_and_restore.inc +--enable_result_log + +select count(*) from t7; +drop table t1, t2, t7, t3; + +# Cleanup +rmdir $basedir; +rmdir $incremental_dir; diff --git a/mysql-test/suite/mariabackup/mdev-14447.result b/mysql-test/suite/mariabackup/mdev-14447.result index 3bca7eb5701..6600c13ed74 100644 --- a/mysql-test/suite/mariabackup/mdev-14447.result +++ b/mysql-test/suite/mariabackup/mdev-14447.result @@ -7,6 +7,7 @@ COMMIT; SELECT count(*) FROM t; count(*) 100000 +FOUND 1 /Checksum mismatch in datafile/ in backup.log # Prepare full backup, apply incremental one # Restore and check results # shutdown server diff --git a/mysql-test/suite/mariabackup/mdev-14447.test b/mysql-test/suite/mariabackup/mdev-14447.test index 689b578f2ab..96d12368547 100644 --- a/mysql-test/suite/mariabackup/mdev-14447.test +++ b/mysql-test/suite/mariabackup/mdev-14447.test @@ -1,3 +1,4 @@ +--source include/have_debug.inc call mtr.add_suppression("InnoDB: New log files created"); let $basedir=$MYSQLTEST_VARDIR/tmp/backup; @@ -9,16 +10,26 @@ echo # Create full backup , modify table, then create incremental/differential b --disable_result_log exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$basedir; --enable_result_log + BEGIN; INSERT INTO t select uuid(), uuid(), uuid(), uuid() from seq_1_to_100000; COMMIT; SELECT count(*) FROM t; -exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$incremental_dir --incremental-basedir=$basedir; +let $backuplog=$MYSQLTEST_VARDIR/tmp/backup.log; + +exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$incremental_dir --incremental-basedir=$basedir --dbug=+d,page_intermittent_checksum_mismatch 2> $backuplog; + +--let SEARCH_RANGE = 10000000 +--let SEARCH_PATTERN=Checksum mismatch in datafile +--let SEARCH_FILE=$backuplog +--source include/search_pattern_in_file.inc +remove_file $backuplog; --disable_result_log echo # Prepare full backup, apply incremental one; exec $XTRABACKUP --prepare --verbose --apply-log-only --target-dir=$basedir; + exec $XTRABACKUP --prepare --verbose --apply-log-only --target-dir=$basedir --incremental-dir=$incremental_dir ; echo # Restore and check results; @@ -36,7 +47,6 @@ exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --copy-back --datadir= echo # restart server; --source include/start_mysqld.inc - --enable_result_log SELECT count(*) FROM t; DROP TABLE t; diff --git a/mysql-test/suite/sys_vars/r/sysvars_innodb.result b/mysql-test/suite/sys_vars/r/sysvars_innodb.result index a6f626dd0b5..22105923764 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_innodb.result +++ b/mysql-test/suite/sys_vars/r/sysvars_innodb.result @@ -904,6 +904,20 @@ NUMERIC_BLOCK_SIZE 0 ENUM_VALUE_LIST NULL READ_ONLY YES COMMAND_LINE_ARGUMENT REQUIRED +VARIABLE_NAME INNODB_FILE_FORMAT +SESSION_VALUE NULL +GLOBAL_VALUE +GLOBAL_VALUE_ORIGIN COMPILE-TIME +DEFAULT_VALUE +VARIABLE_SCOPE GLOBAL +VARIABLE_TYPE VARCHAR +VARIABLE_COMMENT Deprecated parameter with no effect. +NUMERIC_MIN_VALUE NULL +NUMERIC_MAX_VALUE NULL +NUMERIC_BLOCK_SIZE NULL +ENUM_VALUE_LIST NULL +READ_ONLY YES +COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME INNODB_FILE_PER_TABLE SESSION_VALUE NULL GLOBAL_VALUE ON @@ -1296,6 +1310,20 @@ NUMERIC_BLOCK_SIZE 0 ENUM_VALUE_LIST NULL READ_ONLY NO COMMAND_LINE_ARGUMENT REQUIRED +VARIABLE_NAME INNODB_LARGE_PREFIX +SESSION_VALUE NULL +GLOBAL_VALUE +GLOBAL_VALUE_ORIGIN COMPILE-TIME +DEFAULT_VALUE +VARIABLE_SCOPE GLOBAL +VARIABLE_TYPE VARCHAR +VARIABLE_COMMENT Deprecated parameter with no effect. +NUMERIC_MIN_VALUE NULL +NUMERIC_MAX_VALUE NULL +NUMERIC_BLOCK_SIZE NULL +ENUM_VALUE_LIST NULL +READ_ONLY YES +COMMAND_LINE_ARGUMENT REQUIRED VARIABLE_NAME INNODB_LIMIT_OPTIMISTIC_INSERT_DEBUG SESSION_VALUE NULL GLOBAL_VALUE 0 diff --git a/mysql-test/suite/wsrep/r/wsrep-recover-v25,binlogon.rdiff b/mysql-test/suite/wsrep/r/wsrep-recover-v25,binlogon.rdiff new file mode 100644 index 00000000000..5f96ec6efcb --- /dev/null +++ b/mysql-test/suite/wsrep/r/wsrep-recover-v25,binlogon.rdiff @@ -0,0 +1,17 @@ +--- r/wsrep-recover-v25.result 2019-02-05 12:33:42.681586950 +0200 ++++ r/wsrep-recover-v25.reject 2019-02-05 12:34:41.661752903 +0200 +@@ -18,11 +18,10 @@ + connection default; + SET DEBUG_SYNC = "now WAIT_FOR after_prepare_reached"; + # Kill the server +-Expect seqno 7 +-7 +-Expect 5 7 ++Expect seqno 6 ++6 ++Expect 5 + SELECT * FROM t1; + f1 + 5 +-7 + DROP TABLE t1; diff --git a/mysql-test/suite/wsrep/r/wsrep-recover-v25.result b/mysql-test/suite/wsrep/r/wsrep-recover-v25.result new file mode 100644 index 00000000000..09325665b63 --- /dev/null +++ b/mysql-test/suite/wsrep/r/wsrep-recover-v25.result @@ -0,0 +1,28 @@ +# Kill the server +Expect seqno 1 +1 +CREATE TABLE t1 (f1 INT PRIMARY KEY) ENGINE=InnoDB; +# Kill the server +Expect seqno 3 +3 +INSERT INTO t1 VALUES (5); +# Kill the server +Expect seqno 5 +5 +SELECT VARIABLE_VALUE `expect 6` FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_last_committed'; +expect 6 +6 +connect con1, localhost, root; +SET DEBUG_SYNC = "ha_commit_trans_after_prepare SIGNAL after_prepare_reached WAIT_FOR continue"; +INSERT INTO t1 VALUES (7); +connection default; +SET DEBUG_SYNC = "now WAIT_FOR after_prepare_reached"; +# Kill the server +Expect seqno 7 +7 +Expect 5 7 +SELECT * FROM t1; +f1 +5 +7 +DROP TABLE t1; diff --git a/mysql-test/suite/wsrep/t/wsrep-recover-v25.cnf b/mysql-test/suite/wsrep/t/wsrep-recover-v25.cnf new file mode 100644 index 00000000000..b1c96d2614d --- /dev/null +++ b/mysql-test/suite/wsrep/t/wsrep-recover-v25.cnf @@ -0,0 +1,7 @@ +!include ../my.cnf + +[mysqld.1] +wsrep-on=ON +wsrep-cluster-address=gcomm:// +wsrep-provider=@ENV.WSREP_PROVIDER +binlog-format=ROW diff --git a/mysql-test/suite/wsrep/t/wsrep-recover-v25.combinations b/mysql-test/suite/wsrep/t/wsrep-recover-v25.combinations new file mode 100644 index 00000000000..1ce3b45aa1a --- /dev/null +++ b/mysql-test/suite/wsrep/t/wsrep-recover-v25.combinations @@ -0,0 +1,4 @@ +[binlogon] +log-bin + +[binlogoff] diff --git a/mysql-test/suite/wsrep/t/wsrep-recover-v25.test b/mysql-test/suite/wsrep/t/wsrep-recover-v25.test new file mode 100644 index 00000000000..2b17cb49316 --- /dev/null +++ b/mysql-test/suite/wsrep/t/wsrep-recover-v25.test @@ -0,0 +1,121 @@ +# +# Verify that the wsrep XID gets updated in InnoDB rollback segment +# properly and can be recovered with --wsrep-recover +# +# The test runs the following scenarios: +# +# 1) The server is started but no SQL is run +# 2) DDL is executed +# 3) INSERT is executed +# 4) Two INSERTs are executed so that the first one in order will be +# blocked after certification and the second one before entering +# commit order critical section. +# 5) Two DMLs are executed so that the prepare step is run out of order. +# Both transactions are blocked before commit order critical section. +# +# After each scenario server is killed and the recovered position +# is validated. +# + +--source include/have_wsrep.inc +--source include/have_innodb.inc +--source include/have_wsrep_provider.inc +--source include/have_debug_sync.inc + +# +# Binlog option for recovery run. This must be set in the test because +# combinations file causes log-bin option to be set from command line, +# not via my.cnf. +# +--let $log_bin = `SELECT @@log_bin` +if ($log_bin) { +--let $wsrep_recover_binlog_opt = --log-bin +} + +# +# Scenario 1 +# The expected recovered seqno is 1 corresponding to initial cluster +# configuration change. +# +--source include/kill_mysqld.inc +--source wsrep-recover-step.inc +--echo Expect seqno 1 +--echo $wsrep_recover_start_position_seqno + +--let $restart_parameters = --wsrep-start-position=$wsrep_recover_start_position_uuid:$wsrep_recover_start_position_seqno +--source include/start_mysqld.inc +--source include/wait_wsrep_ready.inc + +# +# Senario 2 +# The expected recovered seqno is 3 corresponding to two configuration +# changes and CREATE TABLE +# + +CREATE TABLE t1 (f1 INT PRIMARY KEY) ENGINE=InnoDB; +--source include/kill_mysqld.inc +--source wsrep-recover-step.inc +--echo Expect seqno 3 +--echo $wsrep_recover_start_position_seqno + +--let $restart_parameters = --wsrep-start-position=$wsrep_recover_start_position_uuid:$wsrep_recover_start_position_seqno +--source include/start_mysqld.inc +--source include/wait_wsrep_ready.inc + +# +# Scenario 3 +# The expected recovered seqno is 5 corresponding to three configuration +# changes, CREATE TABLE and INSERT. +# +# The expected wsrep_last_committed after the server is restarted is 6. +# + +INSERT INTO t1 VALUES (5); +--source include/kill_mysqld.inc +--source wsrep-recover-step.inc +--echo Expect seqno 5 +--echo $wsrep_recover_start_position_seqno +--let $restart_parameters = --wsrep-start-position=$wsrep_recover_start_position_uuid:$wsrep_recover_start_position_seqno +--source include/start_mysqld.inc +--source include/wait_wsrep_ready.inc + +SELECT VARIABLE_VALUE `expect 6` FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_last_committed'; + +# +# Scenario 4 +# +# The INSERT gets prepared but not committed. +# +# If binlog is off, the expected outcome is that the INSERT gets committed +# since it is already committed in the cluster. If binlog is on, the INSERT +# should be rolled back during recovery phase since it has not yet +# been logged into binlog. +# +--connect con1, localhost, root +SET DEBUG_SYNC = "ha_commit_trans_after_prepare SIGNAL after_prepare_reached WAIT_FOR continue"; +--send INSERT INTO t1 VALUES (7) + +--connection default +SET DEBUG_SYNC = "now WAIT_FOR after_prepare_reached"; +--source include/kill_mysqld.inc +--source wsrep-recover-step.inc +if ($log_bin) { + --echo Expect seqno 6 +} +if (!$log_bin) { + --echo Expect seqno 7 +} +--echo $wsrep_recover_start_position_seqno +--let $restart_parameters = --wsrep-start-position=$wsrep_recover_start_position_uuid:$wsrep_recover_start_position_seqno +--source include/start_mysqld.inc +--source include/wait_wsrep_ready.inc + +if ($log_bin) { + --echo Expect 5 +} +if (!$log_bin) { + --echo Expect 5 7 +} +SELECT * FROM t1; + +DROP TABLE t1; diff --git a/sql/handler.cc b/sql/handler.cc index 1b5aaebe3cf..2e45b5883ea 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -2112,7 +2112,10 @@ static my_bool xarecover_handlerton(THD *unused, plugin_ref plugin, info->found_foreign_xids++; continue; } - if (info->dry_run) + if (IF_WSREP(!(wsrep_emulate_bin_log && + wsrep_is_wsrep_xid(info->list + i) && + x <= wsrep_limit) && info->dry_run, + info->dry_run)) { info->found_my_xids++; continue; diff --git a/sql/handler.h b/sql/handler.h index f5a7051a4e2..dfb2333b24e 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -736,6 +736,11 @@ typedef ulonglong alter_table_operations; */ #define ALTER_PARTITIONED (1ULL << 59) +/** + Change in index length such that it doesn't require index rebuild. +*/ +#define ALTER_COLUMN_INDEX_LENGTH (1ULL << 60) + /* Flags set in partition_flags when altering partitions */ diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 3d44d6078df..d4ca35b36cc 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -1589,7 +1589,7 @@ static my_bool kill_all_threads_once_again(THD *thd, void *) */ THD *save_thd= current_thd; set_current_thd(thd); - close_connection(thd, ER_SERVER_SHUTDOWN); + close_connection(thd); set_current_thd(save_thd); } #endif diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 22e849e6322..81db3c286ad 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -857,6 +857,7 @@ THD::THD(my_thread_id id, bool is_wsrep_applier, bool skip_global_sys_var_lock) prepare_derived_at_open= FALSE; create_tmp_table_for_derived= FALSE; save_prep_leaf_list= FALSE; + org_charset= 0; /* Restore THR_THD */ set_current_thd(old_THR_THD); } diff --git a/sql/sql_class.h b/sql/sql_class.h index 04044b0d005..402a114aadd 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -2380,6 +2380,9 @@ public: uint dbug_sentry; // watch out for memory corruption #endif struct st_my_thread_var *mysys_var; + + /* Original charset number from the first client packet, or COM_CHANGE_USER*/ + CHARSET_INFO *org_charset; private: /* Type of current query: COM_STMT_PREPARE, COM_QUERY, etc. Set from diff --git a/sql/sql_connect.cc b/sql/sql_connect.cc index ac2503d29ff..5adf5c75600 100644 --- a/sql/sql_connect.cc +++ b/sql/sql_connect.cc @@ -800,6 +800,7 @@ bool thd_init_client_charset(THD *thd, uint cs_number) cs->csname); return true; } + thd->org_charset= cs; thd->update_charset(cs,cs,cs); } return false; diff --git a/sql/sql_db.cc b/sql/sql_db.cc index fbb62bd384a..fcf07f7f920 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -1089,8 +1089,12 @@ static bool find_db_tables_and_rm_known_files(THD *thd, MY_DIR *dirp, table_list->table_name= *table; table_list->open_type= OT_BASE_ONLY; - /* To be able to correctly look up the table in the table cache. */ - if (lower_case_table_names) + /* + On the case-insensitive file systems table is opened + with the lowercased file name. So we should lowercase + as well to look up the cache properly. + */ + if (lower_case_file_system) table_list->table_name.length= my_casedn_str(files_charset_info, (char*) table_list->table_name.str); diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index c39d7de096e..1335461506d 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1653,6 +1653,9 @@ bool dispatch_command(enum enum_server_command command, THD *thd, thd->status_var.com_other++; thd->change_user(); thd->clear_error(); // if errors from rollback + /* Restore original charset from client authentication packet.*/ + if(thd->org_charset) + thd->update_charset(thd->org_charset,thd->org_charset,thd->org_charset); my_ok(thd, 0, 0, 0); break; } diff --git a/sql/sql_table.cc b/sql/sql_table.cc index b9dd9c16d23..8086950ea5b 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -6474,7 +6474,7 @@ static bool fill_alter_inplace_info(THD *thd, bool varchar, Alter_inplace_info *ha_alter_info) { - Field **f_ptr, *field; + Field **f_ptr, *field, *old_field; List_iterator_fast<Create_field> new_field_it; Create_field *new_field; KEY_PART_INFO *key_part, *new_part; @@ -6773,6 +6773,7 @@ static bool fill_alter_inplace_info(THD *thd, Go through keys and check if the original ones are compatible with new table. */ + uint old_field_len= 0; KEY *table_key; KEY *table_key_end= table->key_info + table->s->keys; KEY *new_key; @@ -6838,17 +6839,34 @@ static bool fill_alter_inplace_info(THD *thd, key_part < end; key_part++, new_part++) { + new_field= get_field_by_index(alter_info, new_part->fieldnr); + old_field= table->field[key_part->fieldnr - 1]; /* + If there is a change in index length due to column expansion + like varchar(X) changed to varchar(X + N) and has a compatible + packed data representation, we mark it for fast/INPLACE change + in index definition. InnoDB supports INPLACE for this cases + Key definition has changed if we are using a different field or - if the used key part length is different. It makes sense to - check lengths first as in case when fields differ it is likely - that lengths differ too and checking fields is more expensive - in general case. + if the user key part length is different. */ - if (key_part->length != new_part->length) - goto index_changed; + old_field_len= old_field->pack_length(); - new_field= get_field_by_index(alter_info, new_part->fieldnr); + if (old_field->type() == MYSQL_TYPE_VARCHAR) + { + old_field_len= (old_field->pack_length() + - ((Field_varstring*) old_field)->length_bytes); + } + + if (key_part->length == old_field_len && + key_part->length < new_part->length && + (key_part->field->is_equal((Create_field*) new_field) + == IS_EQUAL_PACK_LENGTH)) + { + ha_alter_info->handler_flags |= ALTER_COLUMN_INDEX_LENGTH; + } + else if (key_part->length != new_part->length) + goto index_changed; /* For prefix keys KEY_PART_INFO::field points to cloned Field diff --git a/storage/innobase/buf/buf0buf.cc b/storage/innobase/buf/buf0buf.cc index dd2e45791f6..b707761354e 100644 --- a/storage/innobase/buf/buf0buf.cc +++ b/storage/innobase/buf/buf0buf.cc @@ -1064,6 +1064,13 @@ buf_page_is_corrupted( if (srv_checksum_algorithm == SRV_CHECKSUM_ALGORITHM_CRC32) { + DBUG_EXECUTE_IF( + "page_intermittent_checksum_mismatch", { + static int page_counter; + if (page_counter++ == 2) { + checksum_field2++; + } + }); crc32 = buf_calc_page_crc32(read_buf); crc32_inited = true; diff --git a/storage/innobase/fil/fil0fil.cc b/storage/innobase/fil/fil0fil.cc index 9abbc4a540a..e891c5bcdf8 100644 --- a/storage/innobase/fil/fil0fil.cc +++ b/storage/innobase/fil/fil0fil.cc @@ -910,7 +910,7 @@ fil_space_extend_must_retry( we have set the node->being_extended flag. */ mutex_exit(&fil_system.mutex); - ut_ad(size > space->size); + ut_ad(size >= space->size); ulint last_page_no = space->size; const ulint file_start_page_no = last_page_no - node->size; diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index 683a6417747..153390dbc2d 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -190,6 +190,11 @@ static char* innobase_reset_all_monitor_counter; static ulong innodb_flush_method; +/** Deprecated; no effect other than issuing a deprecation warning. */ +static char* innodb_file_format; +/** Deprecated; no effect other than issuing a deprecation warning. */ +static char* innodb_large_prefix; + /* This variable can be set in the server configure file, specifying stopword table to be used */ static char* innobase_server_stopword_table; @@ -3689,6 +3694,17 @@ static int innodb_init_params() char *default_path; ulong num_pll_degree; + if (innodb_large_prefix || innodb_file_format) { + const char* p = innodb_file_format + ? "file_format" + : "large_prefix"; + sql_print_warning("The parameter innodb_%s is deprecated" + " and has no effect." + " It may be removed in future releases." + " See https://mariadb.com/kb/en/library/" + "xtradbinnodb-file-format/", p); + } + /* Check that values don't overflow on 32-bit systems. */ if (sizeof(ulint) == 4) { if (innobase_buffer_pool_size > UINT_MAX32) { @@ -18859,6 +18875,13 @@ static MYSQL_SYSVAR_ENUM(flush_method, innodb_flush_method, NULL, NULL, IF_WIN(SRV_ALL_O_DIRECT_FSYNC, SRV_FSYNC), &innodb_flush_method_typelib); +static MYSQL_SYSVAR_STR(file_format, innodb_file_format, + PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, + "Deprecated parameter with no effect.", NULL, NULL, NULL); +static MYSQL_SYSVAR_STR(large_prefix, innodb_large_prefix, + PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, + "Deprecated parameter with no effect.", NULL, NULL, NULL); + static MYSQL_SYSVAR_BOOL(force_load_corrupted, srv_load_corrupted, PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, "Force InnoDB to load metadata of corrupted table.", @@ -19903,6 +19926,7 @@ static struct st_mysql_sys_var* innobase_system_variables[]= { MYSQL_SYSVAR(read_io_threads), MYSQL_SYSVAR(write_io_threads), MYSQL_SYSVAR(file_per_table), + MYSQL_SYSVAR(file_format), /* deprecated in MariaDB 10.2; no effect */ MYSQL_SYSVAR(flush_log_at_timeout), MYSQL_SYSVAR(flush_log_at_trx_commit), MYSQL_SYSVAR(flush_method), @@ -19916,6 +19940,7 @@ static struct st_mysql_sys_var* innobase_system_variables[]= { MYSQL_SYSVAR(ft_min_token_size), MYSQL_SYSVAR(ft_num_word_optimize), MYSQL_SYSVAR(ft_sort_pll_degree), + MYSQL_SYSVAR(large_prefix), /* deprecated in MariaDB 10.2; no effect */ MYSQL_SYSVAR(force_load_corrupted), MYSQL_SYSVAR(lock_schedule_algorithm), MYSQL_SYSVAR(locks_unsafe_for_binlog), diff --git a/storage/innobase/handler/handler0alter.cc b/storage/innobase/handler/handler0alter.cc index a3e2349b10d..51d0042e011 100644 --- a/storage/innobase/handler/handler0alter.cc +++ b/storage/innobase/handler/handler0alter.cc @@ -106,7 +106,8 @@ static const alter_table_operations INNOBASE_INPLACE_IGNORE | ALTER_COLUMN_STORAGE_TYPE | ALTER_VIRTUAL_GCOL_EXPR | ALTER_DROP_CHECK_CONSTRAINT - | ALTER_RENAME; + | ALTER_RENAME + | ALTER_COLUMN_INDEX_LENGTH; /** Operations on foreign key definitions (changing the schema only) */ static const alter_table_operations INNOBASE_FOREIGN_OPERATIONS diff --git a/storage/innobase/include/fsp0file.h b/storage/innobase/include/fsp0file.h index 72810a25191..ec1ba699502 100644 --- a/storage/innobase/include/fsp0file.h +++ b/storage/innobase/include/fsp0file.h @@ -314,6 +314,25 @@ public: return(m_last_os_error); } + /** Check whether the file is empty. + @return true if file is empty */ + bool is_empty_file() const + { +#ifdef _WIN32 + os_offset_t offset = + (os_offset_t) m_file_info.nFileSizeLow + | ((os_offset_t) m_file_info.nFileSizeHigh << 32); + + return (offset == 0); +#else + return (m_file_info.st_size == 0); +#endif + } + + /** Check if the file exist. + @return true if file exists. */ + bool exists() const { return m_exists; } + /** Test if the filepath provided looks the same as this filepath by string comparison. If they are two different paths to the same file, same_as() will be used to show that after the files are opened. diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc index 26f747a5037..9f6b9243070 100644 --- a/storage/innobase/log/log0recv.cc +++ b/storage/innobase/log/log0recv.cc @@ -151,9 +151,13 @@ struct file_name_t { /** Status of the tablespace */ fil_status status; + /** FSP_SIZE of tablespace */ + ulint size; + /** Constructor */ file_name_t(std::string name_, bool deleted) : - name(name_), space(NULL), status(deleted ? DELETED: NORMAL) {} + name(name_), space(NULL), status(deleted ? DELETED: NORMAL), + size(0) {} }; /** Map of dirty tablespaces during recovery */ @@ -321,6 +325,11 @@ fil_name_process( ut_ad(space != NULL); if (f.space == NULL || f.space == space) { + + if (f.size && f.space == NULL) { + fil_space_set_recv_size(space->id, f.size); + } + f.name = fname.name; f.space = space; f.status = file_name_t::NORMAL; @@ -2249,11 +2258,24 @@ recv_parse_log_rec( } if (*page_no == 0 && *type == MLOG_4BYTES + && apply && mach_read_from_2(old_ptr) == FSP_HEADER_OFFSET + FSP_SIZE) { old_ptr += 2; - fil_space_set_recv_size(*space, - mach_parse_compressed(&old_ptr, - end_ptr)); + + ulint size = mach_parse_compressed(&old_ptr, end_ptr); + + recv_spaces_t::iterator it = recv_spaces.find(*space); + + ut_ad(!recv_sys->mlog_checkpoint_lsn + || *space == TRX_SYS_SPACE + || srv_is_undo_tablespace(*space) + || it != recv_spaces.end()); + + if (it != recv_spaces.end() && !it->second.space) { + it->second.size = size; + } + + fil_space_set_recv_size(*space, size); } return ulint(new_ptr - ptr); diff --git a/storage/spider/CMakeLists.txt b/storage/spider/CMakeLists.txt index 21278dde3b3..62dfc968579 100644 --- a/storage/spider/CMakeLists.txt +++ b/storage/spider/CMakeLists.txt @@ -18,7 +18,7 @@ SET(SPIDER_SOURCES spd_table.cc spd_direct_sql.cc spd_udf.cc spd_ping_table.cc spd_copy_tables.cc spd_i_s.cc spd_malloc.cc ha_spider.cc spd_udf.def spd_db_mysql.cc spd_db_handlersocket.cc spd_db_oracle.cc - spd_group_by_handler.cc + spd_group_by_handler.cc spd_db_include.cc hs_client/config.cpp hs_client/escape.cpp hs_client/fatal.cpp hs_client/hstcpcli.cpp hs_client/socket.cpp hs_client/string_util.cpp ) diff --git a/storage/spider/mysql-test/spider/bugfix/include/checksum_table_with_quick_mode_3_deinit.inc b/storage/spider/mysql-test/spider/bugfix/include/checksum_table_with_quick_mode_3_deinit.inc new file mode 100644 index 00000000000..47f6df9437e --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/include/checksum_table_with_quick_mode_3_deinit.inc @@ -0,0 +1,14 @@ +--let $MASTER_1_COMMENT_2_1= $MASTER_1_COMMENT_2_1_BACKUP +--let $CHILD2_1_DROP_TABLES= $CHILD2_1_DROP_TABLES_BACKUP +--let $CHILD2_1_CREATE_TABLES= $CHILD2_1_CREATE_TABLES_BACKUP +--let $CHILD2_1_SELECT_TABLES= $CHILD2_1_SELECT_TABLES_BACKUP +--connection master_1 +set session spider_quick_mode= @old_spider_quick_mode; +set session spider_quick_page_size= @old_spider_quick_page_size; +--disable_warnings +--disable_query_log +--disable_result_log +--source ../t/test_deinit.inc +--enable_result_log +--enable_query_log +--enable_warnings diff --git a/storage/spider/mysql-test/spider/bugfix/include/checksum_table_with_quick_mode_3_init.inc b/storage/spider/mysql-test/spider/bugfix/include/checksum_table_with_quick_mode_3_init.inc new file mode 100644 index 00000000000..bf2d9163b9a --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/include/checksum_table_with_quick_mode_3_init.inc @@ -0,0 +1,29 @@ +--disable_warnings +--disable_query_log +--disable_result_log +--source ../t/test_init.inc +--enable_result_log +--enable_query_log +--enable_warnings +--let $MASTER_1_COMMENT_2_1_BACKUP= $MASTER_1_COMMENT_2_1 +let $MASTER_1_COMMENT_2_1= + COMMENT='table "tbl_a", srv "s_2_1"'; +--let $CHILD2_1_DROP_TABLES_BACKUP= $CHILD2_1_DROP_TABLES +let $CHILD2_1_DROP_TABLES= + DROP TABLE IF EXISTS tbl_a; +--let $CHILD2_1_CREATE_TABLES_BACKUP= $CHILD2_1_CREATE_TABLES +let $CHILD2_1_CREATE_TABLES= + CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) + ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET; +--let $CHILD2_1_SELECT_TABLES_BACKUP= $CHILD2_1_SELECT_TABLES +let $CHILD2_1_SELECT_TABLES= + SELECT pkey FROM tbl_a ORDER BY pkey; +let $CHILD2_1_SELECT_ARGUMENT1= + SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +--connection master_1 +set @old_spider_quick_mode= @@spider_quick_mode; +set session spider_quick_mode= 3; +set @old_spider_quick_page_size= @@spider_quick_page_size; +set session spider_quick_page_size= 3; diff --git a/storage/spider/mysql-test/spider/bugfix/include/direct_sql_with_tmp_table_deinit.inc b/storage/spider/mysql-test/spider/bugfix/include/direct_sql_with_tmp_table_deinit.inc new file mode 100644 index 00000000000..ecb5622af14 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/include/direct_sql_with_tmp_table_deinit.inc @@ -0,0 +1,7 @@ +--disable_warnings +--disable_query_log +--disable_result_log +--source ../t/test_deinit.inc +--enable_result_log +--enable_query_log +--enable_warnings diff --git a/storage/spider/mysql-test/spider/bugfix/include/direct_sql_with_tmp_table_init.inc b/storage/spider/mysql-test/spider/bugfix/include/direct_sql_with_tmp_table_init.inc new file mode 100644 index 00000000000..7b58bd3e726 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/include/direct_sql_with_tmp_table_init.inc @@ -0,0 +1,9 @@ +--disable_warnings +--disable_query_log +--disable_result_log +--source ../t/test_init.inc +--enable_result_log +--enable_query_log +--enable_warnings +let $DIRECT_SQL_COMMAND= + SELECT spider_direct_sql('SELECT 22', 'tmp_a', 'srv "s_2_1", database "test"'); diff --git a/storage/spider/mysql-test/spider/bugfix/include/quick_mode_0_deinit.inc b/storage/spider/mysql-test/spider/bugfix/include/quick_mode_0_deinit.inc new file mode 100644 index 00000000000..42124a794ea --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/include/quick_mode_0_deinit.inc @@ -0,0 +1,19 @@ +--let $MASTER_1_COMMENT_2_1= $MASTER_1_COMMENT_2_1_BACKUP +--let $MASTER_1_COMMENT_2_2= $MASTER_1_COMMENT_2_2_BACKUP +--let $CHILD2_1_DROP_TABLES= $CHILD2_1_DROP_TABLES_BACKUP +--let $CHILD2_1_CREATE_TABLES= $CHILD2_1_CREATE_TABLES_BACKUP +--let $CHILD2_1_SELECT_TABLES= $CHILD2_1_SELECT_TABLES_BACKUP +--let $CHILD2_2_DROP_TABLES= $CHILD2_2_DROP_TABLES_BACKUP +--let $CHILD2_2_CREATE_TABLES= $CHILD2_2_CREATE_TABLES_BACKUP +--let $CHILD2_2_SELECT_TABLES= $CHILD2_2_SELECT_TABLES_BACKUP +--connection master_1 +set session spider_quick_mode= @old_spider_quick_mode; +set session spider_quick_page_size= @old_spider_quick_page_size; +set session spider_quick_page_byte= @old_spider_quick_page_byte; +--disable_warnings +--disable_query_log +--disable_result_log +--source ../t/test_deinit.inc +--enable_result_log +--enable_query_log +--enable_warnings diff --git a/storage/spider/mysql-test/spider/bugfix/include/quick_mode_0_init.inc b/storage/spider/mysql-test/spider/bugfix/include/quick_mode_0_init.inc new file mode 100644 index 00000000000..2656517216c --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/include/quick_mode_0_init.inc @@ -0,0 +1,51 @@ +--disable_warnings +--disable_query_log +--disable_result_log +--source ../t/test_init.inc +--enable_result_log +--enable_query_log +--enable_warnings +--let $MASTER_1_COMMENT_2_1_BACKUP= $MASTER_1_COMMENT_2_1 +let $MASTER_1_COMMENT_2_1= + COMMENT='table "tbl_a", srv "s_2_1"'; +--let $MASTER_1_COMMENT_2_2_BACKUP= $MASTER_1_COMMENT_2_2 +let $MASTER_1_COMMENT_2_2= + COMMENT='table "tbl_b", srv "s_2_2"'; +--let $CHILD2_1_DROP_TABLES_BACKUP= $CHILD2_1_DROP_TABLES +let $CHILD2_1_DROP_TABLES= + DROP TABLE IF EXISTS tbl_a; +--let $CHILD2_1_CREATE_TABLES_BACKUP= $CHILD2_1_CREATE_TABLES +let $CHILD2_1_CREATE_TABLES= + CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) + ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET; +--let $CHILD2_1_SELECT_TABLES_BACKUP= $CHILD2_1_SELECT_TABLES +let $CHILD2_1_SELECT_TABLES= + SELECT pkey FROM tbl_a ORDER BY pkey; +let $CHILD2_1_SELECT_ARGUMENT1= + SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +--let $CHILD2_2_DROP_TABLES_BACKUP= $CHILD2_2_DROP_TABLES +let $CHILD2_2_DROP_TABLES= + DROP TABLE IF EXISTS tbl_b; +--let $CHILD2_2_CREATE_TABLES_BACKUP= $CHILD2_2_CREATE_TABLES +let $CHILD2_2_CREATE_TABLES= + CREATE TABLE tbl_b ( + pkey int NOT NULL, + PRIMARY KEY (pkey) + ) $CHILD2_2_ENGINE $CHILD2_2_CHARSET; +--let $CHILD2_2_SELECT_TABLES_BACKUP= $CHILD2_2_SELECT_TABLES +let $CHILD2_2_SELECT_TABLES= + SELECT pkey FROM tbl_b ORDER BY pkey; +let $CHILD2_2_SELECT_ARGUMENT1= + SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +--connection master_1 +set @old_spider_quick_mode= @@spider_quick_mode; +set session spider_quick_mode= 0; +set @old_spider_quick_page_size= @@spider_quick_page_size; +set session spider_quick_page_size= 3; +set @old_spider_quick_page_byte= @@spider_quick_page_byte; +let $MASTER_1_SET_QUICK_PAGE_BYTE_6= + set session spider_quick_page_byte= 6; +let $MASTER_1_SET_QUICK_PAGE_BYTE_0= + set session spider_quick_page_byte= 0; diff --git a/storage/spider/mysql-test/spider/bugfix/include/quick_mode_1_deinit.inc b/storage/spider/mysql-test/spider/bugfix/include/quick_mode_1_deinit.inc new file mode 100644 index 00000000000..42124a794ea --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/include/quick_mode_1_deinit.inc @@ -0,0 +1,19 @@ +--let $MASTER_1_COMMENT_2_1= $MASTER_1_COMMENT_2_1_BACKUP +--let $MASTER_1_COMMENT_2_2= $MASTER_1_COMMENT_2_2_BACKUP +--let $CHILD2_1_DROP_TABLES= $CHILD2_1_DROP_TABLES_BACKUP +--let $CHILD2_1_CREATE_TABLES= $CHILD2_1_CREATE_TABLES_BACKUP +--let $CHILD2_1_SELECT_TABLES= $CHILD2_1_SELECT_TABLES_BACKUP +--let $CHILD2_2_DROP_TABLES= $CHILD2_2_DROP_TABLES_BACKUP +--let $CHILD2_2_CREATE_TABLES= $CHILD2_2_CREATE_TABLES_BACKUP +--let $CHILD2_2_SELECT_TABLES= $CHILD2_2_SELECT_TABLES_BACKUP +--connection master_1 +set session spider_quick_mode= @old_spider_quick_mode; +set session spider_quick_page_size= @old_spider_quick_page_size; +set session spider_quick_page_byte= @old_spider_quick_page_byte; +--disable_warnings +--disable_query_log +--disable_result_log +--source ../t/test_deinit.inc +--enable_result_log +--enable_query_log +--enable_warnings diff --git a/storage/spider/mysql-test/spider/bugfix/include/quick_mode_1_init.inc b/storage/spider/mysql-test/spider/bugfix/include/quick_mode_1_init.inc new file mode 100644 index 00000000000..9a8de407569 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/include/quick_mode_1_init.inc @@ -0,0 +1,51 @@ +--disable_warnings +--disable_query_log +--disable_result_log +--source ../t/test_init.inc +--enable_result_log +--enable_query_log +--enable_warnings +--let $MASTER_1_COMMENT_2_1_BACKUP= $MASTER_1_COMMENT_2_1 +let $MASTER_1_COMMENT_2_1= + COMMENT='table "tbl_a", srv "s_2_1"'; +--let $MASTER_1_COMMENT_2_2_BACKUP= $MASTER_1_COMMENT_2_2 +let $MASTER_1_COMMENT_2_2= + COMMENT='table "tbl_b", srv "s_2_2"'; +--let $CHILD2_1_DROP_TABLES_BACKUP= $CHILD2_1_DROP_TABLES +let $CHILD2_1_DROP_TABLES= + DROP TABLE IF EXISTS tbl_a; +--let $CHILD2_1_CREATE_TABLES_BACKUP= $CHILD2_1_CREATE_TABLES +let $CHILD2_1_CREATE_TABLES= + CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) + ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET; +--let $CHILD2_1_SELECT_TABLES_BACKUP= $CHILD2_1_SELECT_TABLES +let $CHILD2_1_SELECT_TABLES= + SELECT pkey FROM tbl_a ORDER BY pkey; +let $CHILD2_1_SELECT_ARGUMENT1= + SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +--let $CHILD2_2_DROP_TABLES_BACKUP= $CHILD2_2_DROP_TABLES +let $CHILD2_2_DROP_TABLES= + DROP TABLE IF EXISTS tbl_b; +--let $CHILD2_2_CREATE_TABLES_BACKUP= $CHILD2_2_CREATE_TABLES +let $CHILD2_2_CREATE_TABLES= + CREATE TABLE tbl_b ( + pkey int NOT NULL, + PRIMARY KEY (pkey) + ) $CHILD2_2_ENGINE $CHILD2_2_CHARSET; +--let $CHILD2_2_SELECT_TABLES_BACKUP= $CHILD2_2_SELECT_TABLES +let $CHILD2_2_SELECT_TABLES= + SELECT pkey FROM tbl_b ORDER BY pkey; +let $CHILD2_2_SELECT_ARGUMENT1= + SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +--connection master_1 +set @old_spider_quick_mode= @@spider_quick_mode; +set session spider_quick_mode= 1; +set @old_spider_quick_page_size= @@spider_quick_page_size; +set session spider_quick_page_size= 3; +set @old_spider_quick_page_byte= @@spider_quick_page_byte; +let $MASTER_1_SET_QUICK_PAGE_BYTE_6= + set session spider_quick_page_byte= 6; +let $MASTER_1_SET_QUICK_PAGE_BYTE_0= + set session spider_quick_page_byte= 0; diff --git a/storage/spider/mysql-test/spider/bugfix/include/quick_mode_2_deinit.inc b/storage/spider/mysql-test/spider/bugfix/include/quick_mode_2_deinit.inc new file mode 100644 index 00000000000..42124a794ea --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/include/quick_mode_2_deinit.inc @@ -0,0 +1,19 @@ +--let $MASTER_1_COMMENT_2_1= $MASTER_1_COMMENT_2_1_BACKUP +--let $MASTER_1_COMMENT_2_2= $MASTER_1_COMMENT_2_2_BACKUP +--let $CHILD2_1_DROP_TABLES= $CHILD2_1_DROP_TABLES_BACKUP +--let $CHILD2_1_CREATE_TABLES= $CHILD2_1_CREATE_TABLES_BACKUP +--let $CHILD2_1_SELECT_TABLES= $CHILD2_1_SELECT_TABLES_BACKUP +--let $CHILD2_2_DROP_TABLES= $CHILD2_2_DROP_TABLES_BACKUP +--let $CHILD2_2_CREATE_TABLES= $CHILD2_2_CREATE_TABLES_BACKUP +--let $CHILD2_2_SELECT_TABLES= $CHILD2_2_SELECT_TABLES_BACKUP +--connection master_1 +set session spider_quick_mode= @old_spider_quick_mode; +set session spider_quick_page_size= @old_spider_quick_page_size; +set session spider_quick_page_byte= @old_spider_quick_page_byte; +--disable_warnings +--disable_query_log +--disable_result_log +--source ../t/test_deinit.inc +--enable_result_log +--enable_query_log +--enable_warnings diff --git a/storage/spider/mysql-test/spider/bugfix/include/quick_mode_2_init.inc b/storage/spider/mysql-test/spider/bugfix/include/quick_mode_2_init.inc new file mode 100644 index 00000000000..dbe3f703a2f --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/include/quick_mode_2_init.inc @@ -0,0 +1,51 @@ +--disable_warnings +--disable_query_log +--disable_result_log +--source ../t/test_init.inc +--enable_result_log +--enable_query_log +--enable_warnings +--let $MASTER_1_COMMENT_2_1_BACKUP= $MASTER_1_COMMENT_2_1 +let $MASTER_1_COMMENT_2_1= + COMMENT='table "tbl_a", srv "s_2_1"'; +--let $MASTER_1_COMMENT_2_2_BACKUP= $MASTER_1_COMMENT_2_2 +let $MASTER_1_COMMENT_2_2= + COMMENT='table "tbl_b", srv "s_2_2"'; +--let $CHILD2_1_DROP_TABLES_BACKUP= $CHILD2_1_DROP_TABLES +let $CHILD2_1_DROP_TABLES= + DROP TABLE IF EXISTS tbl_a; +--let $CHILD2_1_CREATE_TABLES_BACKUP= $CHILD2_1_CREATE_TABLES +let $CHILD2_1_CREATE_TABLES= + CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) + ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET; +--let $CHILD2_1_SELECT_TABLES_BACKUP= $CHILD2_1_SELECT_TABLES +let $CHILD2_1_SELECT_TABLES= + SELECT pkey FROM tbl_a ORDER BY pkey; +let $CHILD2_1_SELECT_ARGUMENT1= + SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +--let $CHILD2_2_DROP_TABLES_BACKUP= $CHILD2_2_DROP_TABLES +let $CHILD2_2_DROP_TABLES= + DROP TABLE IF EXISTS tbl_b; +--let $CHILD2_2_CREATE_TABLES_BACKUP= $CHILD2_2_CREATE_TABLES +let $CHILD2_2_CREATE_TABLES= + CREATE TABLE tbl_b ( + pkey int NOT NULL, + PRIMARY KEY (pkey) + ) $CHILD2_2_ENGINE $CHILD2_2_CHARSET; +--let $CHILD2_2_SELECT_TABLES_BACKUP= $CHILD2_2_SELECT_TABLES +let $CHILD2_2_SELECT_TABLES= + SELECT pkey FROM tbl_b ORDER BY pkey; +let $CHILD2_2_SELECT_ARGUMENT1= + SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +--connection master_1 +set @old_spider_quick_mode= @@spider_quick_mode; +set session spider_quick_mode= 2; +set @old_spider_quick_page_size= @@spider_quick_page_size; +set session spider_quick_page_size= 3; +set @old_spider_quick_page_byte= @@spider_quick_page_byte; +let $MASTER_1_SET_QUICK_PAGE_BYTE_6= + set session spider_quick_page_byte= 6; +let $MASTER_1_SET_QUICK_PAGE_BYTE_0= + set session spider_quick_page_byte= 0; diff --git a/storage/spider/mysql-test/spider/bugfix/include/quick_mode_3_deinit.inc b/storage/spider/mysql-test/spider/bugfix/include/quick_mode_3_deinit.inc new file mode 100644 index 00000000000..42124a794ea --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/include/quick_mode_3_deinit.inc @@ -0,0 +1,19 @@ +--let $MASTER_1_COMMENT_2_1= $MASTER_1_COMMENT_2_1_BACKUP +--let $MASTER_1_COMMENT_2_2= $MASTER_1_COMMENT_2_2_BACKUP +--let $CHILD2_1_DROP_TABLES= $CHILD2_1_DROP_TABLES_BACKUP +--let $CHILD2_1_CREATE_TABLES= $CHILD2_1_CREATE_TABLES_BACKUP +--let $CHILD2_1_SELECT_TABLES= $CHILD2_1_SELECT_TABLES_BACKUP +--let $CHILD2_2_DROP_TABLES= $CHILD2_2_DROP_TABLES_BACKUP +--let $CHILD2_2_CREATE_TABLES= $CHILD2_2_CREATE_TABLES_BACKUP +--let $CHILD2_2_SELECT_TABLES= $CHILD2_2_SELECT_TABLES_BACKUP +--connection master_1 +set session spider_quick_mode= @old_spider_quick_mode; +set session spider_quick_page_size= @old_spider_quick_page_size; +set session spider_quick_page_byte= @old_spider_quick_page_byte; +--disable_warnings +--disable_query_log +--disable_result_log +--source ../t/test_deinit.inc +--enable_result_log +--enable_query_log +--enable_warnings diff --git a/storage/spider/mysql-test/spider/bugfix/include/quick_mode_3_init.inc b/storage/spider/mysql-test/spider/bugfix/include/quick_mode_3_init.inc new file mode 100644 index 00000000000..81239206dfc --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/include/quick_mode_3_init.inc @@ -0,0 +1,51 @@ +--disable_warnings +--disable_query_log +--disable_result_log +--source ../t/test_init.inc +--enable_result_log +--enable_query_log +--enable_warnings +--let $MASTER_1_COMMENT_2_1_BACKUP= $MASTER_1_COMMENT_2_1 +let $MASTER_1_COMMENT_2_1= + COMMENT='table "tbl_a", srv "s_2_1"'; +--let $MASTER_1_COMMENT_2_2_BACKUP= $MASTER_1_COMMENT_2_2 +let $MASTER_1_COMMENT_2_2= + COMMENT='table "tbl_b", srv "s_2_2"'; +--let $CHILD2_1_DROP_TABLES_BACKUP= $CHILD2_1_DROP_TABLES +let $CHILD2_1_DROP_TABLES= + DROP TABLE IF EXISTS tbl_a; +--let $CHILD2_1_CREATE_TABLES_BACKUP= $CHILD2_1_CREATE_TABLES +let $CHILD2_1_CREATE_TABLES= + CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) + ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET; +--let $CHILD2_1_SELECT_TABLES_BACKUP= $CHILD2_1_SELECT_TABLES +let $CHILD2_1_SELECT_TABLES= + SELECT pkey FROM tbl_a ORDER BY pkey; +let $CHILD2_1_SELECT_ARGUMENT1= + SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +--let $CHILD2_2_DROP_TABLES_BACKUP= $CHILD2_2_DROP_TABLES +let $CHILD2_2_DROP_TABLES= + DROP TABLE IF EXISTS tbl_b; +--let $CHILD2_2_CREATE_TABLES_BACKUP= $CHILD2_2_CREATE_TABLES +let $CHILD2_2_CREATE_TABLES= + CREATE TABLE tbl_b ( + pkey int NOT NULL, + PRIMARY KEY (pkey) + ) $CHILD2_2_ENGINE $CHILD2_2_CHARSET; +--let $CHILD2_2_SELECT_TABLES_BACKUP= $CHILD2_2_SELECT_TABLES +let $CHILD2_2_SELECT_TABLES= + SELECT pkey FROM tbl_b ORDER BY pkey; +let $CHILD2_2_SELECT_ARGUMENT1= + SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +--connection master_1 +set @old_spider_quick_mode= @@spider_quick_mode; +set session spider_quick_mode= 3; +set @old_spider_quick_page_size= @@spider_quick_page_size; +set session spider_quick_page_size= 3; +set @old_spider_quick_page_byte= @@spider_quick_page_byte; +let $MASTER_1_SET_QUICK_PAGE_BYTE_6= + set session spider_quick_page_byte= 6; +let $MASTER_1_SET_QUICK_PAGE_BYTE_0= + set session spider_quick_page_byte= 0; diff --git a/storage/spider/mysql-test/spider/bugfix/include/slave_trx_isolation_deinit.inc b/storage/spider/mysql-test/spider/bugfix/include/slave_trx_isolation_deinit.inc new file mode 100644 index 00000000000..7c20b2bc99e --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/include/slave_trx_isolation_deinit.inc @@ -0,0 +1,15 @@ +--let $MASTER_1_COMMENT_2_1= $MASTER_1_COMMENT_2_1_BACKUP +--let $CHILD2_1_DROP_TABLES= $CHILD2_1_DROP_TABLES_BACKUP +--let $CHILD2_1_CREATE_TABLES= $CHILD2_1_CREATE_TABLES_BACKUP +--let $CHILD2_1_SELECT_TABLES= $CHILD2_1_SELECT_TABLES_BACKUP +--connection slave1_1 +set global spider_slave_trx_isolation= @old_spider_slave_trx_isolation; +--disable_warnings +--disable_query_log +--disable_result_log +--source ../include/deinit_spider.inc +--source ../t/slave_test_deinit.inc +--source ../t/test_deinit.inc +--enable_result_log +--enable_query_log +--enable_warnings diff --git a/storage/spider/mysql-test/spider/bugfix/include/slave_trx_isolation_init.inc b/storage/spider/mysql-test/spider/bugfix/include/slave_trx_isolation_init.inc new file mode 100644 index 00000000000..3a058a55303 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/include/slave_trx_isolation_init.inc @@ -0,0 +1,35 @@ +--disable_warnings +--disable_query_log +--disable_result_log +--source ../t/test_init.inc +--source ../t/slave_test_init.inc +--enable_result_log +--enable_query_log +--enable_warnings +--let $MASTER_1_COMMENT_2_1_BACKUP= $MASTER_1_COMMENT_2_1 +let $MASTER_1_COMMENT_2_1= + COMMENT='table "tbl_a", srv "s_2_1"'; +--let $CHILD2_1_DROP_TABLES_BACKUP= $CHILD2_1_DROP_TABLES +let $CHILD2_1_DROP_TABLES= + DROP TABLE IF EXISTS tbl_a; +--let $CHILD2_1_CREATE_TABLES_BACKUP= $CHILD2_1_CREATE_TABLES +let $CHILD2_1_CREATE_TABLES= + CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) + ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET; +--let $CHILD2_1_SELECT_TABLES_BACKUP= $CHILD2_1_SELECT_TABLES +let $CHILD2_1_SELECT_TABLES= + SELECT pkey FROM tbl_a ORDER BY pkey; +let $CHILD2_1_SELECT_ARGUMENT1= + SELECT argument FROM mysql.general_log WHERE argument LIKE '%set %'; +--connection slave1_1 +--disable_warnings +--disable_query_log +--disable_result_log +--source ../include/init_spider.inc +--enable_result_log +--enable_query_log +--enable_warnings +set @old_spider_slave_trx_isolation= @@spider_slave_trx_isolation; +set global spider_slave_trx_isolation= 1; diff --git a/storage/spider/mysql-test/spider/bugfix/include/wrapper_mariadb_deinit.inc b/storage/spider/mysql-test/spider/bugfix/include/wrapper_mariadb_deinit.inc new file mode 100644 index 00000000000..76b7582abfe --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/include/wrapper_mariadb_deinit.inc @@ -0,0 +1,11 @@ +--let $MASTER_1_COMMENT_2_1= $MASTER_1_COMMENT_2_1_BACKUP +--let $CHILD2_1_DROP_TABLES= $CHILD2_1_DROP_TABLES_BACKUP +--let $CHILD2_1_CREATE_TABLES= $CHILD2_1_CREATE_TABLES_BACKUP +--let $CHILD2_1_SELECT_TABLES= $CHILD2_1_SELECT_TABLES_BACKUP +--disable_warnings +--disable_query_log +--disable_result_log +--source ../t/test_deinit.inc +--enable_result_log +--enable_query_log +--enable_warnings diff --git a/storage/spider/mysql-test/spider/bugfix/include/wrapper_mariadb_init.inc b/storage/spider/mysql-test/spider/bugfix/include/wrapper_mariadb_init.inc new file mode 100644 index 00000000000..df3d44c39bc --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/include/wrapper_mariadb_init.inc @@ -0,0 +1,24 @@ +--disable_warnings +--disable_query_log +--disable_result_log +--source ../t/test_init.inc +--enable_result_log +--enable_query_log +--enable_warnings +--let $MASTER_1_COMMENT_2_1_BACKUP= $MASTER_1_COMMENT_2_1 +let $MASTER_1_COMMENT_2_1= + COMMENT='table "tbl_a", srv "s_2_1", wrapper "mariadb"'; +--let $CHILD2_1_DROP_TABLES_BACKUP= $CHILD2_1_DROP_TABLES +let $CHILD2_1_DROP_TABLES= + DROP TABLE IF EXISTS tbl_a; +--let $CHILD2_1_CREATE_TABLES_BACKUP= $CHILD2_1_CREATE_TABLES +let $CHILD2_1_CREATE_TABLES= + CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) + ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET; +--let $CHILD2_1_SELECT_TABLES_BACKUP= $CHILD2_1_SELECT_TABLES +let $CHILD2_1_SELECT_TABLES= + SELECT pkey FROM tbl_a ORDER BY pkey; +let $CHILD2_1_SELECT_ARGUMENT1= + SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; diff --git a/storage/spider/mysql-test/spider/bugfix/my.cnf b/storage/spider/mysql-test/spider/bugfix/my.cnf new file mode 100644 index 00000000000..b7f76a630cc --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/my.cnf @@ -0,0 +1,2 @@ +!include include/default_mysqld.cnf +!include my_1_1.cnf diff --git a/storage/spider/mysql-test/spider/bugfix/my_1_1.cnf b/storage/spider/mysql-test/spider/bugfix/my_1_1.cnf new file mode 100644 index 00000000000..5f17295d895 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/my_1_1.cnf @@ -0,0 +1,44 @@ +[mysqld.1.1] +log-bin= master-bin +loose_handlersocket_port= 20000 +loose_handlersocket_port_wr= 20001 +loose_handlersocket_threads= 2 +loose_handlersocket_threads_wr= 1 +loose_handlersocket_support_merge_table= 0 +loose_handlersocket_direct_update_mode= 2 +loose_handlersocket_unlimited_boundary= 65536 +loose_handlersocket_bulk_insert= 0 +loose_handlersocket_bulk_insert_timeout= 0 +loose_handlersocket_general_log= 1 +loose_handlersocket_timeout= 30 +loose_handlersocket_close_table_interval=2 +open_files_limit= 4096 +loose_partition= 1 + +[ENV] +USE_GEOMETRY_TEST= 1 +USE_FULLTEXT_TEST= 1 +USE_HA_TEST= 1 +USE_GENERAL_LOG= 1 +USE_REPLICATION= 1 +MASTER_1_MYPORT= @mysqld.1.1.port +MASTER_1_HSRPORT= 20000 +MASTER_1_HSWPORT= 20001 +MASTER_1_MYSOCK= @mysqld.1.1.socket +MASTER_1_ENGINE_TYPE= Spider +#MASTER_1_ENGINE_TYPE= MyISAM +MASTER_1_ENGINE= ENGINE=Spider +MASTER_1_CHARSET= DEFAULT CHARSET=utf8 +MASTER_1_ENGINE2= ENGINE=MyISAM +MASTER_1_CHARSET2= DEFAULT CHARSET=utf8 +MASTER_1_CHARSET3= DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci + +STR_SEMICOLON= ; + +#The followings are set in include/init_xxx.inc files +# MASTER_1_COMMENT_2_1 +# MASTER_1_COMMENT2_2_1 +# MASTER_1_COMMENT3_2_1 +# MASTER_1_COMMENT4_2_1 +# MASTER_1_COMMENT5_2_1 +# MASTER_1_COMMENT_P_2_1 diff --git a/storage/spider/mysql-test/spider/bugfix/my_2_1.cnf b/storage/spider/mysql-test/spider/bugfix/my_2_1.cnf new file mode 100644 index 00000000000..24161645607 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/my_2_1.cnf @@ -0,0 +1,56 @@ +[mysqld.2.1] +loose_handlersocket_port= 20002 +loose_handlersocket_port_wr= 20003 +loose_handlersocket_threads= 2 +loose_handlersocket_threads_wr= 1 +loose_handlersocket_support_merge_table= 0 +loose_handlersocket_direct_update_mode= 2 +loose_handlersocket_unlimited_boundary= 65536 +loose_handlersocket_bulk_insert= 0 +loose_handlersocket_bulk_insert_timeout= 0 +loose_handlersocket_general_log= 1 +loose_handlersocket_timeout= 30 +loose_handlersocket_close_table_interval=2 +open_files_limit= 4096 + +[ENV] +USE_CHILD_GROUP2= 1 +OUTPUT_CHILD_GROUP2= 0 +CHILD2_1_MYPORT= @mysqld.2.1.port +CHILD2_1_HSRPORT= 20002 +CHILD2_1_HSWPORT= 20003 +CHILD2_1_MYSOCK= @mysqld.2.1.socket +CHILD2_1_ENGINE_TYPE= InnoDB +CHILD2_1_ENGINE= ENGINE=InnoDB +CHILD2_1_CHARSET= DEFAULT CHARSET=utf8 +CHILD2_1_CHARSET2= DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci +CHILD2_1_FT_MYPORT= @mysqld.2.1.port +CHILD2_1_FT_MYSOCK= @mysqld.2.1.socket +CHILD2_1_FT_ENGINE_TYPE= MyISAM +CHILD2_1_FT_ENGINE= ENGINE=MyISAM +CHILD2_1_FT_CHARSET= DEFAULT CHARSET=utf8 +CHILD2_1_GM_MYPORT= @mysqld.2.1.port +CHILD2_1_GM_MYSOCK= @mysqld.2.1.socket +CHILD2_1_GM_ENGINE_TYPE= MyISAM +CHILD2_1_GM_ENGINE= ENGINE=MyISAM +CHILD2_1_GM_CHARSET= DEFAULT CHARSET=utf8 + +#The followings are set in include/init_xxx.inc files +# CHILD2_1_DROP_TABLES +# CHILD2_1_CREATE_TABLES +# CHILD2_1_SELECT_TABLES +# CHILD2_1_DROP_TABLES2 +# CHILD2_1_CREATE_TABLES2 +# CHILD2_1_SELECT_TABLES2 +# CHILD2_1_DROP_TABLES3 +# CHILD2_1_CREATE_TABLES3 +# CHILD2_1_SELECT_TABLES3 +# CHILD2_1_DROP_TABLES4 +# CHILD2_1_CREATE_TABLES4 +# CHILD2_1_SELECT_TABLES4 +# CHILD2_1_DROP_TABLES5 +# CHILD2_1_CREATE_TABLES5 +# CHILD2_1_SELECT_TABLES5 +# CHILD2_1_DROP_TABLES6 +# CHILD2_1_CREATE_TABLES6 +# CHILD2_1_SELECT_TABLES6 diff --git a/storage/spider/mysql-test/spider/bugfix/my_2_2.cnf b/storage/spider/mysql-test/spider/bugfix/my_2_2.cnf new file mode 100644 index 00000000000..2d3c2a89a7d --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/my_2_2.cnf @@ -0,0 +1,38 @@ +[mysqld.2.2] +loose_handlersocket_port= 20004 +loose_handlersocket_port_wr= 20005 +loose_handlersocket_threads= 2 +loose_handlersocket_threads_wr= 1 +loose_handlersocket_support_merge_table= 0 +loose_handlersocket_direct_update_mode= 2 +loose_handlersocket_unlimited_boundary= 65536 +loose_handlersocket_bulk_insert= 0 +loose_handlersocket_bulk_insert_timeout= 0 +loose_handlersocket_general_log= 1 +loose_handlersocket_timeout= 30 +loose_handlersocket_close_table_interval=2 +open_files_limit= 4096 + +[ENV] +CHILD2_2_MYPORT= @mysqld.2.2.port +CHILD2_2_HSRPORT= 20004 +CHILD2_2_HSWPORT= 20005 +CHILD2_2_MYSOCK= @mysqld.2.2.socket +CHILD2_2_ENGINE_TYPE= InnoDB +CHILD2_2_ENGINE= ENGINE=InnoDB +CHILD2_2_CHARSET= DEFAULT CHARSET=utf8 +CHILD2_2_FT_MYPORT= @mysqld.2.2.port +CHILD2_2_FT_MYSOCK= @mysqld.2.2.socket +CHILD2_2_FT_ENGINE_TYPE= MyISAM +CHILD2_2_FT_ENGINE= ENGINE=MyISAM +CHILD2_2_FT_CHARSET= DEFAULT CHARSET=utf8 +CHILD2_2_GM_MYPORT= @mysqld.2.2.port +CHILD2_2_GM_MYSOCK= @mysqld.2.2.socket +CHILD2_2_GM_ENGINE_TYPE= MyISAM +CHILD2_2_GM_ENGINE= ENGINE=MyISAM +CHILD2_2_GM_CHARSET= DEFAULT CHARSET=utf8 + +#The followings are set in include/init_xxx.inc files +# CHILD2_2_DROP_TABLES +# CHILD2_2_CREATE_TABLES +# CHILD2_2_SELECT_TABLES diff --git a/storage/spider/mysql-test/spider/bugfix/my_2_3.cnf b/storage/spider/mysql-test/spider/bugfix/my_2_3.cnf new file mode 100644 index 00000000000..024da651e0c --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/my_2_3.cnf @@ -0,0 +1,8 @@ +[mysqld.2.3] + +[ENV] +CHILD2_3_MYPORT= @mysqld.2.3.port +CHILD2_3_MYSOCK= @mysqld.2.3.socket +CHILD2_3_ENGINE_TYPE= InnoDB +CHILD2_3_ENGINE= ENGINE=InnoDB +CHILD2_3_CHARSET= DEFAULT CHARSET=utf8 diff --git a/storage/spider/mysql-test/spider/bugfix/my_3_1.cnf b/storage/spider/mysql-test/spider/bugfix/my_3_1.cnf new file mode 100644 index 00000000000..fad21607789 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/my_3_1.cnf @@ -0,0 +1,11 @@ +[mysqld.3.1] +loose_partition= 1 + +[ENV] +USE_CHILD_GROUP3= 1 +OUTPUT_CHILD_GROUP3= 0 +CHILD3_1_MYPORT= @mysqld.3.1.port +CHILD3_1_MYSOCK= @mysqld.3.1.socket +CHILD3_1_ENGINE_TYPE= InnoDB +CHILD3_1_ENGINE= ENGINE=InnoDB +CHILD3_1_CHARSET= DEFAULT CHARSET=utf8 diff --git a/storage/spider/mysql-test/spider/bugfix/my_3_2.cnf b/storage/spider/mysql-test/spider/bugfix/my_3_2.cnf new file mode 100644 index 00000000000..6f027b6f525 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/my_3_2.cnf @@ -0,0 +1,9 @@ +[mysqld.3.2] +loose_partition= 1 + +[ENV] +CHILD3_2_MYPORT= @mysqld.3.2.port +CHILD3_2_MYSOCK= @mysqld.3.2.socket +CHILD3_2_ENGINE_TYPE= InnoDB +CHILD3_2_ENGINE= ENGINE=InnoDB +CHILD3_2_CHARSET= DEFAULT CHARSET=utf8 diff --git a/storage/spider/mysql-test/spider/bugfix/my_3_3.cnf b/storage/spider/mysql-test/spider/bugfix/my_3_3.cnf new file mode 100644 index 00000000000..fbb33694738 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/my_3_3.cnf @@ -0,0 +1,9 @@ +[mysqld.3.3] +loose_partition= 1 + +[ENV] +CHILD3_3_MYPORT= @mysqld.3.3.port +CHILD3_3_MYSOCK= @mysqld.3.3.socket +CHILD3_3_ENGINE_TYPE= InnoDB +CHILD3_3_ENGINE= ENGINE=InnoDB +CHILD3_3_CHARSET= DEFAULT CHARSET=utf8 diff --git a/storage/spider/mysql-test/spider/bugfix/my_4_1.cnf b/storage/spider/mysql-test/spider/bugfix/my_4_1.cnf new file mode 100644 index 00000000000..d1812a48b68 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/my_4_1.cnf @@ -0,0 +1,9 @@ +[mysqld.4.1] +loose_partition= 1 + +[ENV] +SLAVE1_1_MYPORT= @mysqld.4.1.port +SLAVE1_1_MYSOCK= @mysqld.4.1.socket +SLAVE1_1_ENGINE_TYPE= MyISAM +SLAVE1_1_ENGINE= ENGINE=MyISAM +SLAVE1_1_CHARSET= DEFAULT CHARSET=utf8 diff --git a/storage/spider/mysql-test/spider/bugfix/r/checksum_table_with_quick_mode_3.result b/storage/spider/mysql-test/spider/bugfix/r/checksum_table_with_quick_mode_3.result new file mode 100644 index 00000000000..eae4895411e --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/r/checksum_table_with_quick_mode_3.result @@ -0,0 +1,100 @@ +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 +connection master_1; +set @old_spider_quick_mode= @@spider_quick_mode; +set session spider_quick_mode= 3; +set @old_spider_quick_page_size= @@spider_quick_page_size; +set session spider_quick_page_size= 3; + +this test is for MDEV-16279 + +drop and create databases +connection master_1; +CREATE DATABASE auto_test_local; +USE auto_test_local; +connection child2_1; +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote; +USE auto_test_remote; + +create table and insert +connection child2_1; +CHILD2_1_CREATE_TABLES +TRUNCATE TABLE mysql.general_log; +connection master_1; +CREATE TABLE tbl_a ( +pkey int NOT NULL, +PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1 +INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_a (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_a (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); +FLUSH TABLES; + +select test 1 +connection child2_1; +TRUNCATE TABLE mysql.general_log; +connection master_1; +CHECKSUM TABLE tbl_a EXTENDED; +Table Checksum +auto_test_local.tbl_a 1061386331 +connection child2_1; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote`.`tbl_a` +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 + +deinit +connection master_1; +DROP DATABASE IF EXISTS auto_test_local; +connection child2_1; +DROP DATABASE IF EXISTS auto_test_remote; +SET GLOBAL log_output = @old_log_output; +connection master_1; +set session spider_quick_mode= @old_spider_quick_mode; +set session spider_quick_page_size= @old_spider_quick_page_size; +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 + +end of test diff --git a/storage/spider/mysql-test/spider/bugfix/r/direct_sql_with_tmp_table.result b/storage/spider/mysql-test/spider/bugfix/r/direct_sql_with_tmp_table.result new file mode 100644 index 00000000000..65beb8a43dd --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/r/direct_sql_with_tmp_table.result @@ -0,0 +1,33 @@ +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 + +drop and create databases +connection master_1; +CREATE DATABASE auto_test_local; +USE auto_test_local; +CREATE TEMPORARY TABLE tmp_a ( +pkey int NOT NULL, +PRIMARY KEY (pkey) +) MASTER_1_ENGINE2 +SELECT spider_direct_sql('SELECT 22', 'tmp_a', 'srv "s_2_1", database "test"'); +spider_direct_sql('SELECT 22', 'tmp_a', 'srv "s_2_1", database "test"') +1 +SELECT pkey FROM tmp_a; +pkey +22 + +deinit +connection master_1; +DROP DATABASE IF EXISTS auto_test_local; +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 + +end of test diff --git a/storage/spider/mysql-test/spider/bugfix/r/quick_mode_0.result b/storage/spider/mysql-test/spider/bugfix/r/quick_mode_0.result new file mode 100644 index 00000000000..6e5a0052370 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/r/quick_mode_0.result @@ -0,0 +1,504 @@ +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 +connection master_1; +set @old_spider_quick_mode= @@spider_quick_mode; +set session spider_quick_mode= 0; +set @old_spider_quick_page_size= @@spider_quick_page_size; +set session spider_quick_page_size= 3; +set @old_spider_quick_page_byte= @@spider_quick_page_byte; + +this test is for MDEV-16520 + +drop and create databases +connection master_1; +CREATE DATABASE auto_test_local; +USE auto_test_local; +connection child2_1; +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote; +USE auto_test_remote; +connection child2_2; +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote2; +USE auto_test_remote2; + +create table and insert +connection child2_1; +CHILD2_1_CREATE_TABLES +TRUNCATE TABLE mysql.general_log; +connection child2_2; +CHILD2_2_CREATE_TABLES +TRUNCATE TABLE mysql.general_log; +connection master_1; +CREATE TABLE tbl_a ( +pkey int NOT NULL, +PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1 +CREATE TABLE tbl_b ( +pkey int NOT NULL, +PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_2 +INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_a (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_a (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); +INSERT INTO tbl_b (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_b (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_b (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); + +select test 1 +connection child2_1; +TRUNCATE TABLE mysql.general_log; +connection child2_2; +TRUNCATE TABLE mysql.general_log; +connection master_1; +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_1; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote`.`tbl_a` order by `pkey` +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_2; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 0 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 1 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 2 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 3 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 4 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 5 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 6 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 7 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 8 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 9 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 10 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 11 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 12 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 13 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 14 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 15 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 16 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 17 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 18 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 19 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 20 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 21 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 22 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 23 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 24 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 25 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 26 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 27 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 28 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 29 +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_b ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection master_1; +set session spider_quick_page_byte= 6; + +select test 2 +connection child2_1; +TRUNCATE TABLE mysql.general_log; +connection child2_2; +TRUNCATE TABLE mysql.general_log; +connection master_1; +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_1; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote`.`tbl_a` order by `pkey` +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_2; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 0 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 1 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 2 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 3 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 4 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 5 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 6 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 7 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 8 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 9 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 10 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 11 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 12 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 13 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 14 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 15 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 16 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 17 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 18 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 19 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 20 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 21 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 22 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 23 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 24 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 25 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 26 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 27 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 28 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 29 +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_b ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection master_1; +set session spider_quick_page_byte= 0; + +select test 3 +connection child2_1; +TRUNCATE TABLE mysql.general_log; +connection child2_2; +TRUNCATE TABLE mysql.general_log; +connection master_1; +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_1; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote`.`tbl_a` order by `pkey` +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_2; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 0 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 1 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 2 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 3 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 4 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 5 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 6 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 7 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 8 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 9 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 10 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 11 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 12 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 13 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 14 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 15 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 16 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 17 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 18 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 19 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 20 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 21 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 22 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 23 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 24 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 25 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 26 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 27 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 28 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 29 +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_b ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 + +deinit +connection master_1; +DROP DATABASE IF EXISTS auto_test_local; +connection child2_1; +DROP DATABASE IF EXISTS auto_test_remote; +SET GLOBAL log_output = @old_log_output; +connection child2_2; +DROP DATABASE IF EXISTS auto_test_remote2; +SET GLOBAL log_output = @old_log_output; +connection master_1; +set session spider_quick_mode= @old_spider_quick_mode; +set session spider_quick_page_size= @old_spider_quick_page_size; +set session spider_quick_page_byte= @old_spider_quick_page_byte; +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 + +end of test diff --git a/storage/spider/mysql-test/spider/bugfix/r/quick_mode_1.result b/storage/spider/mysql-test/spider/bugfix/r/quick_mode_1.result new file mode 100644 index 00000000000..bca6d172a49 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/r/quick_mode_1.result @@ -0,0 +1,504 @@ +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 +connection master_1; +set @old_spider_quick_mode= @@spider_quick_mode; +set session spider_quick_mode= 1; +set @old_spider_quick_page_size= @@spider_quick_page_size; +set session spider_quick_page_size= 3; +set @old_spider_quick_page_byte= @@spider_quick_page_byte; + +this test is for MDEV-16520 + +drop and create databases +connection master_1; +CREATE DATABASE auto_test_local; +USE auto_test_local; +connection child2_1; +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote; +USE auto_test_remote; +connection child2_2; +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote2; +USE auto_test_remote2; + +create table and insert +connection child2_1; +CHILD2_1_CREATE_TABLES +TRUNCATE TABLE mysql.general_log; +connection child2_2; +CHILD2_2_CREATE_TABLES +TRUNCATE TABLE mysql.general_log; +connection master_1; +CREATE TABLE tbl_a ( +pkey int NOT NULL, +PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1 +CREATE TABLE tbl_b ( +pkey int NOT NULL, +PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_2 +INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_a (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_a (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); +INSERT INTO tbl_b (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_b (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_b (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); + +select test 1 +connection child2_1; +TRUNCATE TABLE mysql.general_log; +connection child2_2; +TRUNCATE TABLE mysql.general_log; +connection master_1; +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_1; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote`.`tbl_a` order by `pkey` +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_2; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 0 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 1 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 2 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 3 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 4 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 5 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 6 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 7 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 8 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 9 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 10 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 11 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 12 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 13 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 14 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 15 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 16 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 17 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 18 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 19 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 20 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 21 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 22 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 23 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 24 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 25 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 26 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 27 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 28 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 29 +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_b ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection master_1; +set session spider_quick_page_byte= 6; + +select test 2 +connection child2_1; +TRUNCATE TABLE mysql.general_log; +connection child2_2; +TRUNCATE TABLE mysql.general_log; +connection master_1; +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_1; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote`.`tbl_a` order by `pkey` +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_2; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 0 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 1 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 2 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 3 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 4 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 5 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 6 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 7 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 8 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 9 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 10 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 11 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 12 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 13 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 14 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 15 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 16 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 17 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 18 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 19 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 20 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 21 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 22 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 23 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 24 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 25 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 26 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 27 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 28 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 29 +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_b ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection master_1; +set session spider_quick_page_byte= 0; + +select test 3 +connection child2_1; +TRUNCATE TABLE mysql.general_log; +connection child2_2; +TRUNCATE TABLE mysql.general_log; +connection master_1; +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_1; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote`.`tbl_a` order by `pkey` +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_2; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 0 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 1 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 2 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 3 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 4 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 5 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 6 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 7 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 8 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 9 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 10 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 11 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 12 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 13 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 14 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 15 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 16 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 17 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 18 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 19 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 20 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 21 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 22 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 23 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 24 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 25 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 26 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 27 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 28 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 29 +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_b ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 + +deinit +connection master_1; +DROP DATABASE IF EXISTS auto_test_local; +connection child2_1; +DROP DATABASE IF EXISTS auto_test_remote; +SET GLOBAL log_output = @old_log_output; +connection child2_2; +DROP DATABASE IF EXISTS auto_test_remote2; +SET GLOBAL log_output = @old_log_output; +connection master_1; +set session spider_quick_mode= @old_spider_quick_mode; +set session spider_quick_page_size= @old_spider_quick_page_size; +set session spider_quick_page_byte= @old_spider_quick_page_byte; +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 + +end of test diff --git a/storage/spider/mysql-test/spider/bugfix/r/quick_mode_2.result b/storage/spider/mysql-test/spider/bugfix/r/quick_mode_2.result new file mode 100644 index 00000000000..61a7764dddb --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/r/quick_mode_2.result @@ -0,0 +1,504 @@ +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 +connection master_1; +set @old_spider_quick_mode= @@spider_quick_mode; +set session spider_quick_mode= 2; +set @old_spider_quick_page_size= @@spider_quick_page_size; +set session spider_quick_page_size= 3; +set @old_spider_quick_page_byte= @@spider_quick_page_byte; + +this test is for MDEV-16520 + +drop and create databases +connection master_1; +CREATE DATABASE auto_test_local; +USE auto_test_local; +connection child2_1; +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote; +USE auto_test_remote; +connection child2_2; +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote2; +USE auto_test_remote2; + +create table and insert +connection child2_1; +CHILD2_1_CREATE_TABLES +TRUNCATE TABLE mysql.general_log; +connection child2_2; +CHILD2_2_CREATE_TABLES +TRUNCATE TABLE mysql.general_log; +connection master_1; +CREATE TABLE tbl_a ( +pkey int NOT NULL, +PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1 +CREATE TABLE tbl_b ( +pkey int NOT NULL, +PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_2 +INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_a (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_a (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); +INSERT INTO tbl_b (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_b (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_b (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); + +select test 1 +connection child2_1; +TRUNCATE TABLE mysql.general_log; +connection child2_2; +TRUNCATE TABLE mysql.general_log; +connection master_1; +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_1; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote`.`tbl_a` order by `pkey` +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_2; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 0 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 1 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 2 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 3 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 4 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 5 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 6 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 7 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 8 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 9 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 10 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 11 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 12 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 13 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 14 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 15 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 16 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 17 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 18 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 19 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 20 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 21 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 22 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 23 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 24 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 25 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 26 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 27 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 28 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 29 +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_b ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection master_1; +set session spider_quick_page_byte= 6; + +select test 2 +connection child2_1; +TRUNCATE TABLE mysql.general_log; +connection child2_2; +TRUNCATE TABLE mysql.general_log; +connection master_1; +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_1; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote`.`tbl_a` order by `pkey` +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_2; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 0 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 1 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 2 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 3 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 4 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 5 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 6 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 7 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 8 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 9 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 10 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 11 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 12 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 13 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 14 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 15 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 16 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 17 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 18 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 19 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 20 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 21 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 22 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 23 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 24 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 25 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 26 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 27 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 28 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 29 +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_b ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection master_1; +set session spider_quick_page_byte= 0; + +select test 3 +connection child2_1; +TRUNCATE TABLE mysql.general_log; +connection child2_2; +TRUNCATE TABLE mysql.general_log; +connection master_1; +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_1; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote`.`tbl_a` order by `pkey` +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_2; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 0 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 1 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 2 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 3 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 4 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 5 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 6 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 7 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 8 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 9 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 10 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 11 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 12 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 13 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 14 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 15 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 16 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 17 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 18 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 19 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 20 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 21 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 22 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 23 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 24 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 25 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 26 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 27 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 28 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 29 +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_b ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 + +deinit +connection master_1; +DROP DATABASE IF EXISTS auto_test_local; +connection child2_1; +DROP DATABASE IF EXISTS auto_test_remote; +SET GLOBAL log_output = @old_log_output; +connection child2_2; +DROP DATABASE IF EXISTS auto_test_remote2; +SET GLOBAL log_output = @old_log_output; +connection master_1; +set session spider_quick_mode= @old_spider_quick_mode; +set session spider_quick_page_size= @old_spider_quick_page_size; +set session spider_quick_page_byte= @old_spider_quick_page_byte; +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 + +end of test diff --git a/storage/spider/mysql-test/spider/bugfix/r/quick_mode_3.result b/storage/spider/mysql-test/spider/bugfix/r/quick_mode_3.result new file mode 100644 index 00000000000..38387a45509 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/r/quick_mode_3.result @@ -0,0 +1,504 @@ +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 +connection master_1; +set @old_spider_quick_mode= @@spider_quick_mode; +set session spider_quick_mode= 3; +set @old_spider_quick_page_size= @@spider_quick_page_size; +set session spider_quick_page_size= 3; +set @old_spider_quick_page_byte= @@spider_quick_page_byte; + +this test is for MDEV-16520 + +drop and create databases +connection master_1; +CREATE DATABASE auto_test_local; +USE auto_test_local; +connection child2_1; +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote; +USE auto_test_remote; +connection child2_2; +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote2; +USE auto_test_remote2; + +create table and insert +connection child2_1; +CHILD2_1_CREATE_TABLES +TRUNCATE TABLE mysql.general_log; +connection child2_2; +CHILD2_2_CREATE_TABLES +TRUNCATE TABLE mysql.general_log; +connection master_1; +CREATE TABLE tbl_a ( +pkey int NOT NULL, +PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1 +CREATE TABLE tbl_b ( +pkey int NOT NULL, +PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_2 +INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_a (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_a (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); +INSERT INTO tbl_b (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_b (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_b (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); + +select test 1 +connection child2_1; +TRUNCATE TABLE mysql.general_log; +connection child2_2; +TRUNCATE TABLE mysql.general_log; +connection master_1; +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_1; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote`.`tbl_a` order by `pkey` +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_2; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 0 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 1 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 2 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 3 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 4 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 5 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 6 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 7 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 8 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 9 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 10 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 11 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 12 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 13 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 14 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 15 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 16 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 17 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 18 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 19 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 20 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 21 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 22 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 23 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 24 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 25 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 26 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 27 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 28 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 29 +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_b ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection master_1; +set session spider_quick_page_byte= 6; + +select test 2 +connection child2_1; +TRUNCATE TABLE mysql.general_log; +connection child2_2; +TRUNCATE TABLE mysql.general_log; +connection master_1; +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_1; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote`.`tbl_a` order by `pkey` +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_2; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 0 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 1 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 2 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 3 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 4 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 5 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 6 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 7 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 8 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 9 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 10 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 11 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 12 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 13 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 14 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 15 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 16 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 17 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 18 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 19 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 20 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 21 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 22 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 23 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 24 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 25 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 26 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 27 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 28 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 29 +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_b ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection master_1; +set session spider_quick_page_byte= 0; + +select test 3 +connection child2_1; +TRUNCATE TABLE mysql.general_log; +connection child2_2; +TRUNCATE TABLE mysql.general_log; +connection master_1; +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_1; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote`.`tbl_a` order by `pkey` +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +connection child2_2; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 0 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 1 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 2 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 3 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 4 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 5 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 6 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 7 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 8 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 9 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 10 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 11 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 12 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 13 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 14 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 15 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 16 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 17 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 18 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 19 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 20 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 21 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 22 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 23 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 24 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 25 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 26 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 27 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 28 +select `pkey` from `auto_test_remote2`.`tbl_b` where `pkey` = 29 +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_b ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 + +deinit +connection master_1; +DROP DATABASE IF EXISTS auto_test_local; +connection child2_1; +DROP DATABASE IF EXISTS auto_test_remote; +SET GLOBAL log_output = @old_log_output; +connection child2_2; +DROP DATABASE IF EXISTS auto_test_remote2; +SET GLOBAL log_output = @old_log_output; +connection master_1; +set session spider_quick_mode= @old_spider_quick_mode; +set session spider_quick_page_size= @old_spider_quick_page_size; +set session spider_quick_page_byte= @old_spider_quick_page_byte; +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 + +end of test diff --git a/storage/spider/mysql-test/spider/bugfix/r/slave_trx_isolation.result b/storage/spider/mysql-test/spider/bugfix/r/slave_trx_isolation.result new file mode 100644 index 00000000000..06581a604a2 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/r/slave_trx_isolation.result @@ -0,0 +1,99 @@ +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 +for slave1_1 +connection slave1_1; +set @old_spider_slave_trx_isolation= @@spider_slave_trx_isolation; +set global spider_slave_trx_isolation= 1; + +drop and create databases +connection master_1; +CREATE DATABASE auto_test_local; +USE auto_test_local; +connection slave1_1; +CREATE DATABASE auto_test_local; +USE auto_test_local; +connection child2_1; +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote; +USE auto_test_remote; + +create table and insert +connection child2_1; +CHILD2_1_CREATE_TABLES +TRUNCATE TABLE mysql.general_log; +connection master_1; +connection slave1_1; +connection master_1; +SET SESSION sql_log_bin= 0; +CREATE TABLE tbl_a ( +pkey int NOT NULL, +PRIMARY KEY (pkey) +) MASTER_1_ENGINE2 MASTER_1_CHARSET MASTER_1_COMMENT_2_1 +SET SESSION sql_log_bin= 1; +connection slave1_1; +CREATE TABLE tbl_a ( +pkey int NOT NULL, +PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1 +connection master_1; +INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +connection slave1_1; +connection master_1; +SET SESSION sql_log_bin= 0; +connection child2_1; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%set %'; +argument +set session time_zone = '+00:00' +SET NAMES utf8 +set session transaction isolation level read committed;set session autocommit = 1;start transaction +SELECT argument FROM mysql.general_log WHERE argument LIKE '%set %' +SELECT pkey FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +connection slave1_1; +SELECT pkey FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 + +deinit +connection master_1; +DROP DATABASE IF EXISTS auto_test_local; +connection slave1_1; +DROP DATABASE IF EXISTS auto_test_local; +connection child2_1; +DROP DATABASE IF EXISTS auto_test_remote; +SET GLOBAL log_output = @old_log_output; +connection slave1_1; +set global spider_slave_trx_isolation= @old_spider_slave_trx_isolation; +for slave1_1 +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 + +end of test diff --git a/storage/spider/mysql-test/spider/bugfix/r/wrapper_mariadb.result b/storage/spider/mysql-test/spider/bugfix/r/wrapper_mariadb.result new file mode 100644 index 00000000000..7c01421fa13 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/r/wrapper_mariadb.result @@ -0,0 +1,78 @@ +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 + +this test is for MDEV-18313 + +drop and create databases +connection master_1; +CREATE DATABASE auto_test_local; +USE auto_test_local; +connection child2_1; +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote; +USE auto_test_remote; + +create table and insert +connection child2_1; +CHILD2_1_CREATE_TABLES +TRUNCATE TABLE mysql.general_log; +connection master_1; +CREATE TABLE tbl_a ( +pkey int NOT NULL, +PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1 +INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); + +select test +connection child2_1; +TRUNCATE TABLE mysql.general_log; +connection master_1; +SELECT * FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +connection child2_1; +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %'; +argument +select t0.`pkey` `pkey` from `auto_test_remote`.`tbl_a` t0 order by `pkey` +SELECT argument FROM mysql.general_log WHERE argument LIKE '%select %' +SELECT pkey FROM tbl_a ORDER BY pkey; +pkey +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 + +deinit +connection master_1; +DROP DATABASE IF EXISTS auto_test_local; +connection child2_1; +DROP DATABASE IF EXISTS auto_test_remote; +SET GLOBAL log_output = @old_log_output; +for master_1 +for child2 +child2_1 +child2_2 +child2_3 +for child3 + +end of test diff --git a/storage/spider/mysql-test/spider/bugfix/suite.opt b/storage/spider/mysql-test/spider/bugfix/suite.opt new file mode 100644 index 00000000000..672a3b37d4f --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/suite.opt @@ -0,0 +1 @@ +--loose-innodb --loose-skip-performance-schema diff --git a/storage/spider/mysql-test/spider/bugfix/suite.pm b/storage/spider/mysql-test/spider/bugfix/suite.pm new file mode 100644 index 00000000000..f106147deb6 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/suite.pm @@ -0,0 +1,12 @@ +package My::Suite::Spider; + +@ISA = qw(My::Suite); + +return "No Spider engine" unless $ENV{HA_SPIDER_SO}; +return "Not run for embedded server" if $::opt_embedded_server; +return "Test needs --big-test" unless $::opt_big_test; + +sub is_default { 1 } + +bless { }; + diff --git a/storage/spider/mysql-test/spider/bugfix/t/checksum_table_with_quick_mode_3.cnf b/storage/spider/mysql-test/spider/bugfix/t/checksum_table_with_quick_mode_3.cnf new file mode 100644 index 00000000000..05dfd8a0bce --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/checksum_table_with_quick_mode_3.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/checksum_table_with_quick_mode_3.test b/storage/spider/mysql-test/spider/bugfix/t/checksum_table_with_quick_mode_3.test new file mode 100644 index 00000000000..5dc4a88c842 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/checksum_table_with_quick_mode_3.test @@ -0,0 +1,72 @@ +--source ../include/checksum_table_with_quick_mode_3_init.inc +--echo +--echo this test is for MDEV-16279 +--echo +--echo drop and create databases + +--connection master_1 +--disable_warnings +CREATE DATABASE auto_test_local; +USE auto_test_local; + +--connection child2_1 +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote; +USE auto_test_remote; +--enable_warnings + +--echo +--echo create table and insert + +--connection child2_1 +--disable_query_log +echo CHILD2_1_CREATE_TABLES; +eval $CHILD2_1_CREATE_TABLES; +--enable_query_log +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +--disable_query_log +echo CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1; +eval CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1; +--enable_query_log +INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_a (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_a (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); +FLUSH TABLES; + +--echo +--echo select test 1 + +--connection child2_1 +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +CHECKSUM TABLE tbl_a EXTENDED; + +--connection child2_1 +eval $CHILD2_1_SELECT_ARGUMENT1; +eval $CHILD2_1_SELECT_TABLES; + +--echo +--echo deinit +--disable_warnings + +--connection master_1 +DROP DATABASE IF EXISTS auto_test_local; + +--connection child2_1 +DROP DATABASE IF EXISTS auto_test_remote; +SET GLOBAL log_output = @old_log_output; + +--enable_warnings +--source ../include/checksum_table_with_quick_mode_3_deinit.inc +--echo +--echo end of test diff --git a/storage/spider/mysql-test/spider/bugfix/t/direct_sql_with_tmp_table.cnf b/storage/spider/mysql-test/spider/bugfix/t/direct_sql_with_tmp_table.cnf new file mode 100644 index 00000000000..05dfd8a0bce --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/direct_sql_with_tmp_table.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/direct_sql_with_tmp_table.test b/storage/spider/mysql-test/spider/bugfix/t/direct_sql_with_tmp_table.test new file mode 100644 index 00000000000..139af5c83c9 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/direct_sql_with_tmp_table.test @@ -0,0 +1,35 @@ +--source ../include/direct_sql_with_tmp_table_init.inc +--echo +--echo drop and create databases + +--connection master_1 +--disable_warnings +CREATE DATABASE auto_test_local; +USE auto_test_local; +--enable_warnings + +--disable_query_log +echo CREATE TEMPORARY TABLE tmp_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) MASTER_1_ENGINE2; +eval CREATE TEMPORARY TABLE tmp_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) $MASTER_1_ENGINE2; +--enable_query_log + +eval $DIRECT_SQL_COMMAND; +SELECT pkey FROM tmp_a; + +--echo +--echo deinit +--disable_warnings + +--connection master_1 +DROP DATABASE IF EXISTS auto_test_local; + +--enable_warnings +--source ../include/direct_sql_with_tmp_table_deinit.inc +--echo +--echo end of test diff --git a/storage/spider/mysql-test/spider/bugfix/t/quick_mode_0.cnf b/storage/spider/mysql-test/spider/bugfix/t/quick_mode_0.cnf new file mode 100644 index 00000000000..e0ffb99c38e --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/quick_mode_0.cnf @@ -0,0 +1,4 @@ +!include include/default_mysqld.cnf +!include ../my_1_1.cnf +!include ../my_2_1.cnf +!include ../my_2_2.cnf diff --git a/storage/spider/mysql-test/spider/bugfix/t/quick_mode_0.test b/storage/spider/mysql-test/spider/bugfix/t/quick_mode_0.test new file mode 100644 index 00000000000..235edc10d12 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/quick_mode_0.test @@ -0,0 +1,156 @@ +--source ../include/quick_mode_0_init.inc +--echo +--echo this test is for MDEV-16520 +--echo +--echo drop and create databases +--connection master_1 +--disable_warnings +CREATE DATABASE auto_test_local; +USE auto_test_local; + +--connection child2_1 +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote; +USE auto_test_remote; + +--connection child2_2 +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote2; +USE auto_test_remote2; +--enable_warnings + +--echo +--echo create table and insert + +--connection child2_1 +--disable_query_log +echo CHILD2_1_CREATE_TABLES; +eval $CHILD2_1_CREATE_TABLES; +--enable_query_log +TRUNCATE TABLE mysql.general_log; + +--connection child2_2 +--disable_query_log +echo CHILD2_2_CREATE_TABLES; +eval $CHILD2_2_CREATE_TABLES; +--enable_query_log +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +--disable_query_log +echo CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1; +echo CREATE TABLE tbl_b ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_2; +eval CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1; +eval CREATE TABLE tbl_b ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_2; +--enable_query_log +INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_a (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_a (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); +INSERT INTO tbl_b (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_b (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_b (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); + +--echo +--echo select test 1 + +--connection child2_1 +TRUNCATE TABLE mysql.general_log; + +--connection child2_2 +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; + +--connection child2_1 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_1_SELECT_ARGUMENT1; +eval $CHILD2_1_SELECT_TABLES; + +--connection child2_2 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_2_SELECT_ARGUMENT1; +eval $CHILD2_2_SELECT_TABLES; + +--connection master_1 +eval $MASTER_1_SET_QUICK_PAGE_BYTE_6; + +--echo +--echo select test 2 + +--connection child2_1 +TRUNCATE TABLE mysql.general_log; + +--connection child2_2 +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; + +--connection child2_1 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_1_SELECT_ARGUMENT1; +eval $CHILD2_1_SELECT_TABLES; + +--connection child2_2 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_2_SELECT_ARGUMENT1; +eval $CHILD2_2_SELECT_TABLES; + +--connection master_1 +eval $MASTER_1_SET_QUICK_PAGE_BYTE_0; + +--echo +--echo select test 3 + +--connection child2_1 +TRUNCATE TABLE mysql.general_log; + +--connection child2_2 +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; + +--connection child2_1 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_1_SELECT_ARGUMENT1; +eval $CHILD2_1_SELECT_TABLES; + +--connection child2_2 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_2_SELECT_ARGUMENT1; +eval $CHILD2_2_SELECT_TABLES; + +--echo +--echo deinit +--disable_warnings +--connection master_1 +DROP DATABASE IF EXISTS auto_test_local; + +--connection child2_1 +DROP DATABASE IF EXISTS auto_test_remote; +SET GLOBAL log_output = @old_log_output; + +--connection child2_2 +DROP DATABASE IF EXISTS auto_test_remote2; +SET GLOBAL log_output = @old_log_output; + +--enable_warnings +--source ../include/quick_mode_0_deinit.inc +--echo +--echo end of test diff --git a/storage/spider/mysql-test/spider/bugfix/t/quick_mode_1.cnf b/storage/spider/mysql-test/spider/bugfix/t/quick_mode_1.cnf new file mode 100644 index 00000000000..e0ffb99c38e --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/quick_mode_1.cnf @@ -0,0 +1,4 @@ +!include include/default_mysqld.cnf +!include ../my_1_1.cnf +!include ../my_2_1.cnf +!include ../my_2_2.cnf diff --git a/storage/spider/mysql-test/spider/bugfix/t/quick_mode_1.test b/storage/spider/mysql-test/spider/bugfix/t/quick_mode_1.test new file mode 100644 index 00000000000..01fa0cb5128 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/quick_mode_1.test @@ -0,0 +1,156 @@ +--source ../include/quick_mode_1_init.inc +--echo +--echo this test is for MDEV-16520 +--echo +--echo drop and create databases +--connection master_1 +--disable_warnings +CREATE DATABASE auto_test_local; +USE auto_test_local; + +--connection child2_1 +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote; +USE auto_test_remote; + +--connection child2_2 +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote2; +USE auto_test_remote2; +--enable_warnings + +--echo +--echo create table and insert + +--connection child2_1 +--disable_query_log +echo CHILD2_1_CREATE_TABLES; +eval $CHILD2_1_CREATE_TABLES; +--enable_query_log +TRUNCATE TABLE mysql.general_log; + +--connection child2_2 +--disable_query_log +echo CHILD2_2_CREATE_TABLES; +eval $CHILD2_2_CREATE_TABLES; +--enable_query_log +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +--disable_query_log +echo CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1; +echo CREATE TABLE tbl_b ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_2; +eval CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1; +eval CREATE TABLE tbl_b ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_2; +--enable_query_log +INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_a (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_a (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); +INSERT INTO tbl_b (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_b (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_b (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); + +--echo +--echo select test 1 + +--connection child2_1 +TRUNCATE TABLE mysql.general_log; + +--connection child2_2 +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; + +--connection child2_1 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_1_SELECT_ARGUMENT1; +eval $CHILD2_1_SELECT_TABLES; + +--connection child2_2 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_2_SELECT_ARGUMENT1; +eval $CHILD2_2_SELECT_TABLES; + +--connection master_1 +eval $MASTER_1_SET_QUICK_PAGE_BYTE_6; + +--echo +--echo select test 2 + +--connection child2_1 +TRUNCATE TABLE mysql.general_log; + +--connection child2_2 +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; + +--connection child2_1 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_1_SELECT_ARGUMENT1; +eval $CHILD2_1_SELECT_TABLES; + +--connection child2_2 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_2_SELECT_ARGUMENT1; +eval $CHILD2_2_SELECT_TABLES; + +--connection master_1 +eval $MASTER_1_SET_QUICK_PAGE_BYTE_0; + +--echo +--echo select test 3 + +--connection child2_1 +TRUNCATE TABLE mysql.general_log; + +--connection child2_2 +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; + +--connection child2_1 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_1_SELECT_ARGUMENT1; +eval $CHILD2_1_SELECT_TABLES; + +--connection child2_2 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_2_SELECT_ARGUMENT1; +eval $CHILD2_2_SELECT_TABLES; + +--echo +--echo deinit +--disable_warnings +--connection master_1 +DROP DATABASE IF EXISTS auto_test_local; + +--connection child2_1 +DROP DATABASE IF EXISTS auto_test_remote; +SET GLOBAL log_output = @old_log_output; + +--connection child2_2 +DROP DATABASE IF EXISTS auto_test_remote2; +SET GLOBAL log_output = @old_log_output; + +--enable_warnings +--source ../include/quick_mode_1_deinit.inc +--echo +--echo end of test diff --git a/storage/spider/mysql-test/spider/bugfix/t/quick_mode_2.cnf b/storage/spider/mysql-test/spider/bugfix/t/quick_mode_2.cnf new file mode 100644 index 00000000000..e0ffb99c38e --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/quick_mode_2.cnf @@ -0,0 +1,4 @@ +!include include/default_mysqld.cnf +!include ../my_1_1.cnf +!include ../my_2_1.cnf +!include ../my_2_2.cnf diff --git a/storage/spider/mysql-test/spider/bugfix/t/quick_mode_2.test b/storage/spider/mysql-test/spider/bugfix/t/quick_mode_2.test new file mode 100644 index 00000000000..3ea8138e755 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/quick_mode_2.test @@ -0,0 +1,156 @@ +--source ../include/quick_mode_2_init.inc +--echo +--echo this test is for MDEV-16520 +--echo +--echo drop and create databases +--connection master_1 +--disable_warnings +CREATE DATABASE auto_test_local; +USE auto_test_local; + +--connection child2_1 +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote; +USE auto_test_remote; + +--connection child2_2 +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote2; +USE auto_test_remote2; +--enable_warnings + +--echo +--echo create table and insert + +--connection child2_1 +--disable_query_log +echo CHILD2_1_CREATE_TABLES; +eval $CHILD2_1_CREATE_TABLES; +--enable_query_log +TRUNCATE TABLE mysql.general_log; + +--connection child2_2 +--disable_query_log +echo CHILD2_2_CREATE_TABLES; +eval $CHILD2_2_CREATE_TABLES; +--enable_query_log +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +--disable_query_log +echo CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1; +echo CREATE TABLE tbl_b ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_2; +eval CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1; +eval CREATE TABLE tbl_b ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_2; +--enable_query_log +INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_a (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_a (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); +INSERT INTO tbl_b (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_b (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_b (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); + +--echo +--echo select test 1 + +--connection child2_1 +TRUNCATE TABLE mysql.general_log; + +--connection child2_2 +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; + +--connection child2_1 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_1_SELECT_ARGUMENT1; +eval $CHILD2_1_SELECT_TABLES; + +--connection child2_2 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_2_SELECT_ARGUMENT1; +eval $CHILD2_2_SELECT_TABLES; + +--connection master_1 +eval $MASTER_1_SET_QUICK_PAGE_BYTE_6; + +--echo +--echo select test 2 + +--connection child2_1 +TRUNCATE TABLE mysql.general_log; + +--connection child2_2 +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; + +--connection child2_1 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_1_SELECT_ARGUMENT1; +eval $CHILD2_1_SELECT_TABLES; + +--connection child2_2 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_2_SELECT_ARGUMENT1; +eval $CHILD2_2_SELECT_TABLES; + +--connection master_1 +eval $MASTER_1_SET_QUICK_PAGE_BYTE_0; + +--echo +--echo select test 3 + +--connection child2_1 +TRUNCATE TABLE mysql.general_log; + +--connection child2_2 +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; + +--connection child2_1 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_1_SELECT_ARGUMENT1; +eval $CHILD2_1_SELECT_TABLES; + +--connection child2_2 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_2_SELECT_ARGUMENT1; +eval $CHILD2_2_SELECT_TABLES; + +--echo +--echo deinit +--disable_warnings +--connection master_1 +DROP DATABASE IF EXISTS auto_test_local; + +--connection child2_1 +DROP DATABASE IF EXISTS auto_test_remote; +SET GLOBAL log_output = @old_log_output; + +--connection child2_2 +DROP DATABASE IF EXISTS auto_test_remote2; +SET GLOBAL log_output = @old_log_output; + +--enable_warnings +--source ../include/quick_mode_2_deinit.inc +--echo +--echo end of test diff --git a/storage/spider/mysql-test/spider/bugfix/t/quick_mode_3.cnf b/storage/spider/mysql-test/spider/bugfix/t/quick_mode_3.cnf new file mode 100644 index 00000000000..e0ffb99c38e --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/quick_mode_3.cnf @@ -0,0 +1,4 @@ +!include include/default_mysqld.cnf +!include ../my_1_1.cnf +!include ../my_2_1.cnf +!include ../my_2_2.cnf diff --git a/storage/spider/mysql-test/spider/bugfix/t/quick_mode_3.test b/storage/spider/mysql-test/spider/bugfix/t/quick_mode_3.test new file mode 100644 index 00000000000..bc926b0a296 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/quick_mode_3.test @@ -0,0 +1,157 @@ +--source ../include/quick_mode_3_init.inc +--echo +--echo this test is for MDEV-16520 +--echo +--echo drop and create databases + +--connection master_1 +--disable_warnings +CREATE DATABASE auto_test_local; +USE auto_test_local; + +--connection child2_1 +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote; +USE auto_test_remote; + +--connection child2_2 +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote2; +USE auto_test_remote2; +--enable_warnings + +--echo +--echo create table and insert + +--connection child2_1 +--disable_query_log +echo CHILD2_1_CREATE_TABLES; +eval $CHILD2_1_CREATE_TABLES; +--enable_query_log +TRUNCATE TABLE mysql.general_log; + +--connection child2_2 +--disable_query_log +echo CHILD2_2_CREATE_TABLES; +eval $CHILD2_2_CREATE_TABLES; +--enable_query_log +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +--disable_query_log +echo CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1; +echo CREATE TABLE tbl_b ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_2; +eval CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1; +eval CREATE TABLE tbl_b ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_2; +--enable_query_log +INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_a (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_a (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); +INSERT INTO tbl_b (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +INSERT INTO tbl_b (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); +INSERT INTO tbl_b (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); + +--echo +--echo select test 1 + +--connection child2_1 +TRUNCATE TABLE mysql.general_log; + +--connection child2_2 +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; + +--connection child2_1 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_1_SELECT_ARGUMENT1; +eval $CHILD2_1_SELECT_TABLES; + +--connection child2_2 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_2_SELECT_ARGUMENT1; +eval $CHILD2_2_SELECT_TABLES; + +--connection master_1 +eval $MASTER_1_SET_QUICK_PAGE_BYTE_6; + +--echo +--echo select test 2 + +--connection child2_1 +TRUNCATE TABLE mysql.general_log; + +--connection child2_2 +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; + +--connection child2_1 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_1_SELECT_ARGUMENT1; +eval $CHILD2_1_SELECT_TABLES; + +--connection child2_2 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_2_SELECT_ARGUMENT1; +eval $CHILD2_2_SELECT_TABLES; + +--connection master_1 +eval $MASTER_1_SET_QUICK_PAGE_BYTE_0; + +--echo +--echo select test 3 + +--connection child2_1 +TRUNCATE TABLE mysql.general_log; + +--connection child2_2 +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey; + +--connection child2_1 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_1_SELECT_ARGUMENT1; +eval $CHILD2_1_SELECT_TABLES; + +--connection child2_2 +--replace_regex /tmp_spider_bka_0x[0-9a-f]*/tmp_spider_bka_xxxx/ +eval $CHILD2_2_SELECT_ARGUMENT1; +eval $CHILD2_2_SELECT_TABLES; + +--echo +--echo deinit +--disable_warnings +--connection master_1 +DROP DATABASE IF EXISTS auto_test_local; + +--connection child2_1 +DROP DATABASE IF EXISTS auto_test_remote; +SET GLOBAL log_output = @old_log_output; + +--connection child2_2 +DROP DATABASE IF EXISTS auto_test_remote2; +SET GLOBAL log_output = @old_log_output; + +--enable_warnings +--source ../include/quick_mode_3_deinit.inc +--echo +--echo end of test diff --git a/storage/spider/mysql-test/spider/bugfix/t/slave_trx_isolation.cnf b/storage/spider/mysql-test/spider/bugfix/t/slave_trx_isolation.cnf new file mode 100644 index 00000000000..45019d6c537 --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/slave_trx_isolation.cnf @@ -0,0 +1,4 @@ +!include include/default_mysqld.cnf +!include ../my_1_1.cnf +!include ../my_2_1.cnf +!include ../my_4_1.cnf diff --git a/storage/spider/mysql-test/spider/bugfix/t/slave_trx_isolation.test b/storage/spider/mysql-test/spider/bugfix/t/slave_trx_isolation.test new file mode 100644 index 00000000000..652fbb1c11c --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/slave_trx_isolation.test @@ -0,0 +1,95 @@ +--source ../include/slave_trx_isolation_init.inc +--echo +--echo drop and create databases +--connection master_1 +--disable_warnings +CREATE DATABASE auto_test_local; +USE auto_test_local; + +--connection slave1_1 +CREATE DATABASE auto_test_local; +USE auto_test_local; + +--connection child2_1 +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote; +USE auto_test_remote; +--enable_warnings + +--echo +--echo create table and insert + +--connection child2_1 +--disable_query_log +echo CHILD2_1_CREATE_TABLES; +eval $CHILD2_1_CREATE_TABLES; +--enable_query_log +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +save_master_pos; + +--connection slave1_1 +sync_with_master; + +--connection master_1 +SET SESSION sql_log_bin= 0; +--disable_query_log +echo CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) MASTER_1_ENGINE2 MASTER_1_CHARSET MASTER_1_COMMENT_2_1; +eval CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) $MASTER_1_ENGINE2 $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1; +--enable_query_log +SET SESSION sql_log_bin= 1; + +--connection slave1_1 +--disable_query_log +echo CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1; +eval CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1; +--enable_query_log + +--connection master_1 +INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +save_master_pos; + +--connection slave1_1 +sync_with_master; + +--connection master_1 +SET SESSION sql_log_bin= 0; + +--connection child2_1 +eval $CHILD2_1_SELECT_ARGUMENT1; +eval $CHILD2_1_SELECT_TABLES; + +--connection slave1_1 +SELECT pkey FROM tbl_a ORDER BY pkey; + +--echo +--echo deinit +--disable_warnings +--connection master_1 +DROP DATABASE IF EXISTS auto_test_local; + +--connection slave1_1 +DROP DATABASE IF EXISTS auto_test_local; + +--connection child2_1 +DROP DATABASE IF EXISTS auto_test_remote; +SET GLOBAL log_output = @old_log_output; + +--enable_warnings +--source ../include/slave_trx_isolation_deinit.inc +--echo +--echo end of test diff --git a/storage/spider/mysql-test/spider/bugfix/t/wrapper_mariadb.cnf b/storage/spider/mysql-test/spider/bugfix/t/wrapper_mariadb.cnf new file mode 100644 index 00000000000..05dfd8a0bce --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/wrapper_mariadb.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/wrapper_mariadb.test b/storage/spider/mysql-test/spider/bugfix/t/wrapper_mariadb.test new file mode 100644 index 00000000000..0102155b5ab --- /dev/null +++ b/storage/spider/mysql-test/spider/bugfix/t/wrapper_mariadb.test @@ -0,0 +1,69 @@ +--source ../include/wrapper_mariadb_init.inc +--echo +--echo this test is for MDEV-18313 +--echo +--echo drop and create databases + +--connection master_1 +--disable_warnings +CREATE DATABASE auto_test_local; +USE auto_test_local; + +--connection child2_1 +SET @old_log_output = @@global.log_output; +SET GLOBAL log_output = 'TABLE,FILE'; +CREATE DATABASE auto_test_remote; +USE auto_test_remote; +--enable_warnings + +--echo +--echo create table and insert + +--connection child2_1 +--disable_query_log +echo CHILD2_1_CREATE_TABLES; +eval $CHILD2_1_CREATE_TABLES; +--enable_query_log +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +--disable_query_log +echo CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1; +eval CREATE TABLE tbl_a ( + pkey int NOT NULL, + PRIMARY KEY (pkey) +) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1; +--enable_query_log +INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); + +--echo +--echo select test + +--connection child2_1 +TRUNCATE TABLE mysql.general_log; + +--connection master_1 +SELECT * FROM tbl_a ORDER BY pkey; + +--connection child2_1 +eval $CHILD2_1_SELECT_ARGUMENT1; +eval $CHILD2_1_SELECT_TABLES; + +--echo +--echo deinit +--disable_warnings + +--connection master_1 +DROP DATABASE IF EXISTS auto_test_local; + +--connection child2_1 +DROP DATABASE IF EXISTS auto_test_remote; +SET GLOBAL log_output = @old_log_output; + +--enable_warnings +--source ../include/wrapper_mariadb_deinit.inc +--echo +--echo end of test diff --git a/storage/spider/mysql-test/spider/include/checksum_table_with_quick_mode_3_deinit.inc b/storage/spider/mysql-test/spider/include/checksum_table_with_quick_mode_3_deinit.inc index 3316472c773..7db871c700f 100644 --- a/storage/spider/mysql-test/spider/include/checksum_table_with_quick_mode_3_deinit.inc +++ b/storage/spider/mysql-test/spider/include/checksum_table_with_quick_mode_3_deinit.inc @@ -1,11 +1,10 @@ ---let $MASTER_1_COMMENT_2_1= $MASTER_1_COMMENT_2_1_BACKUP ---let $CHILD2_1_DROP_TABLES= $CHILD2_1_DROP_TABLES_BACKUP --let $CHILD2_1_CREATE_TABLES= $CHILD2_1_CREATE_TABLES_BACKUP --let $CHILD2_1_SELECT_TABLES= $CHILD2_1_SELECT_TABLES_BACKUP --let $OUTPUT_CHILD_GROUP2= $OUTPUT_CHILD_GROUP2_BACKUP --let $USE_GENERAL_LOG= $USE_GENERAL_LOG_BACKUP --connection master_1 set session spider_quick_mode= @old_spider_quick_mode; +set session spider_quick_page_size= @old_spider_quick_page_size; --disable_warnings --disable_query_log --disable_result_log diff --git a/storage/spider/mysql-test/spider/include/checksum_table_with_quick_mode_3_init.inc b/storage/spider/mysql-test/spider/include/checksum_table_with_quick_mode_3_init.inc index 1cc6ca4ee32..9ec61a1cb77 100644 --- a/storage/spider/mysql-test/spider/include/checksum_table_with_quick_mode_3_init.inc +++ b/storage/spider/mysql-test/spider/include/checksum_table_with_quick_mode_3_init.inc @@ -29,3 +29,5 @@ let $CHILD2_1_SELECT_ARGUMENT1= --connection master_1 set @old_spider_quick_mode= @@spider_quick_mode; set session spider_quick_mode= 3; +set @old_spider_quick_page_size= @@spider_quick_page_size; +set session spider_quick_page_size= 3; diff --git a/storage/spider/mysql-test/spider/r/checksum_table_with_quick_mode_3.result b/storage/spider/mysql-test/spider/r/checksum_table_with_quick_mode_3.result index fd748dc8590..ee8e1f056f3 100644 --- a/storage/spider/mysql-test/spider/r/checksum_table_with_quick_mode_3.result +++ b/storage/spider/mysql-test/spider/r/checksum_table_with_quick_mode_3.result @@ -10,26 +10,24 @@ child3_3 connection master_1; set @old_spider_quick_mode= @@spider_quick_mode; set session spider_quick_mode= 3; +set @old_spider_quick_page_size= @@spider_quick_page_size; +set session spider_quick_page_size= 3; drop and create databases connection master_1; -DROP DATABASE IF EXISTS auto_test_local; CREATE DATABASE auto_test_local; USE auto_test_local; connection child2_1; SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; -DROP DATABASE IF EXISTS auto_test_remote; CREATE DATABASE auto_test_remote; USE auto_test_remote; create table and insert connection child2_1; -CHILD2_1_DROP_TABLES CHILD2_1_CREATE_TABLES TRUNCATE TABLE mysql.general_log; connection master_1; -DROP TABLE IF EXISTS tbl_a; CREATE TABLE tbl_a ( pkey int NOT NULL, PRIMARY KEY (pkey) @@ -37,6 +35,7 @@ PRIMARY KEY (pkey) INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); INSERT INTO tbl_a (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); INSERT INTO tbl_a (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); +FLUSH TABLES; select test 1 connection child2_1; @@ -91,6 +90,7 @@ DROP DATABASE IF EXISTS auto_test_remote; SET GLOBAL log_output = @old_log_output; connection master_1; set session spider_quick_mode= @old_spider_quick_mode; +set session spider_quick_page_size= @old_spider_quick_page_size; for master_1 for child2 child2_1 diff --git a/storage/spider/mysql-test/spider/r/quick_mode_0.result b/storage/spider/mysql-test/spider/r/quick_mode_0.result index 1cf79124b8c..239c3ee1175 100644 --- a/storage/spider/mysql-test/spider/r/quick_mode_0.result +++ b/storage/spider/mysql-test/spider/r/quick_mode_0.result @@ -16,34 +16,27 @@ set @old_spider_quick_page_byte= @@spider_quick_page_byte; drop and create databases connection master_1; -DROP DATABASE IF EXISTS auto_test_local; CREATE DATABASE auto_test_local; USE auto_test_local; connection child2_1; SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; -DROP DATABASE IF EXISTS auto_test_remote; CREATE DATABASE auto_test_remote; USE auto_test_remote; connection child2_2; SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; -DROP DATABASE IF EXISTS auto_test_remote2; CREATE DATABASE auto_test_remote2; USE auto_test_remote2; create table and insert connection child2_1; -CHILD2_1_DROP_TABLES CHILD2_1_CREATE_TABLES TRUNCATE TABLE mysql.general_log; connection child2_2; -CHILD2_2_DROP_TABLES CHILD2_2_CREATE_TABLES TRUNCATE TABLE mysql.general_log; connection master_1; -DROP TABLE IF EXISTS tbl_a; -DROP TABLE IF EXISTS tbl_b; CREATE TABLE tbl_a ( pkey int NOT NULL, PRIMARY KEY (pkey) diff --git a/storage/spider/mysql-test/spider/r/quick_mode_1.result b/storage/spider/mysql-test/spider/r/quick_mode_1.result index 1d56cff3e36..d0db0729c39 100644 --- a/storage/spider/mysql-test/spider/r/quick_mode_1.result +++ b/storage/spider/mysql-test/spider/r/quick_mode_1.result @@ -16,34 +16,27 @@ set @old_spider_quick_page_byte= @@spider_quick_page_byte; drop and create databases connection master_1; -DROP DATABASE IF EXISTS auto_test_local; CREATE DATABASE auto_test_local; USE auto_test_local; connection child2_1; SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; -DROP DATABASE IF EXISTS auto_test_remote; CREATE DATABASE auto_test_remote; USE auto_test_remote; connection child2_2; SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; -DROP DATABASE IF EXISTS auto_test_remote2; CREATE DATABASE auto_test_remote2; USE auto_test_remote2; create table and insert connection child2_1; -CHILD2_1_DROP_TABLES CHILD2_1_CREATE_TABLES TRUNCATE TABLE mysql.general_log; connection child2_2; -CHILD2_2_DROP_TABLES CHILD2_2_CREATE_TABLES TRUNCATE TABLE mysql.general_log; connection master_1; -DROP TABLE IF EXISTS tbl_a; -DROP TABLE IF EXISTS tbl_b; CREATE TABLE tbl_a ( pkey int NOT NULL, PRIMARY KEY (pkey) diff --git a/storage/spider/mysql-test/spider/r/quick_mode_2.result b/storage/spider/mysql-test/spider/r/quick_mode_2.result index 5b0cd75af34..538057e3cda 100644 --- a/storage/spider/mysql-test/spider/r/quick_mode_2.result +++ b/storage/spider/mysql-test/spider/r/quick_mode_2.result @@ -16,34 +16,27 @@ set @old_spider_quick_page_byte= @@spider_quick_page_byte; drop and create databases connection master_1; -DROP DATABASE IF EXISTS auto_test_local; CREATE DATABASE auto_test_local; USE auto_test_local; connection child2_1; SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; -DROP DATABASE IF EXISTS auto_test_remote; CREATE DATABASE auto_test_remote; USE auto_test_remote; connection child2_2; SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; -DROP DATABASE IF EXISTS auto_test_remote2; CREATE DATABASE auto_test_remote2; USE auto_test_remote2; create table and insert connection child2_1; -CHILD2_1_DROP_TABLES CHILD2_1_CREATE_TABLES TRUNCATE TABLE mysql.general_log; connection child2_2; -CHILD2_2_DROP_TABLES CHILD2_2_CREATE_TABLES TRUNCATE TABLE mysql.general_log; connection master_1; -DROP TABLE IF EXISTS tbl_a; -DROP TABLE IF EXISTS tbl_b; CREATE TABLE tbl_a ( pkey int NOT NULL, PRIMARY KEY (pkey) diff --git a/storage/spider/mysql-test/spider/r/quick_mode_3.result b/storage/spider/mysql-test/spider/r/quick_mode_3.result index 4261cde2e36..9232dd152de 100644 --- a/storage/spider/mysql-test/spider/r/quick_mode_3.result +++ b/storage/spider/mysql-test/spider/r/quick_mode_3.result @@ -16,34 +16,27 @@ set @old_spider_quick_page_byte= @@spider_quick_page_byte; drop and create databases connection master_1; -DROP DATABASE IF EXISTS auto_test_local; CREATE DATABASE auto_test_local; USE auto_test_local; connection child2_1; SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; -DROP DATABASE IF EXISTS auto_test_remote; CREATE DATABASE auto_test_remote; USE auto_test_remote; connection child2_2; SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; -DROP DATABASE IF EXISTS auto_test_remote2; CREATE DATABASE auto_test_remote2; USE auto_test_remote2; create table and insert connection child2_1; -CHILD2_1_DROP_TABLES CHILD2_1_CREATE_TABLES TRUNCATE TABLE mysql.general_log; connection child2_2; -CHILD2_2_DROP_TABLES CHILD2_2_CREATE_TABLES TRUNCATE TABLE mysql.general_log; connection master_1; -DROP TABLE IF EXISTS tbl_a; -DROP TABLE IF EXISTS tbl_b; CREATE TABLE tbl_a ( pkey int NOT NULL, PRIMARY KEY (pkey) diff --git a/storage/spider/mysql-test/spider/r/slave_trx_isolation.result b/storage/spider/mysql-test/spider/r/slave_trx_isolation.result index 167739beaad..7d9ba40cab3 100644 --- a/storage/spider/mysql-test/spider/r/slave_trx_isolation.result +++ b/storage/spider/mysql-test/spider/r/slave_trx_isolation.result @@ -14,37 +14,31 @@ set global spider_slave_trx_isolation= 1; drop and create databases connection master_1; -DROP DATABASE IF EXISTS auto_test_local; CREATE DATABASE auto_test_local; USE auto_test_local; connection slave1_1; -DROP DATABASE IF EXISTS auto_test_local; CREATE DATABASE auto_test_local; USE auto_test_local; connection child2_1; SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; -DROP DATABASE IF EXISTS auto_test_remote; CREATE DATABASE auto_test_remote; USE auto_test_remote; create table and insert connection child2_1; -CHILD2_1_DROP_TABLES CHILD2_1_CREATE_TABLES TRUNCATE TABLE mysql.general_log; connection master_1; connection slave1_1; connection master_1; -DROP TABLE IF EXISTS tbl_a; +SET SESSION sql_log_bin= 0; CREATE TABLE tbl_a ( pkey int NOT NULL, PRIMARY KEY (pkey) ) MASTER_1_ENGINE2 MASTER_1_CHARSET MASTER_1_COMMENT_2_1 -connection master_1; SET SESSION sql_log_bin= 1; connection slave1_1; -DROP TABLE IF EXISTS tbl_a; CREATE TABLE tbl_a ( pkey int NOT NULL, PRIMARY KEY (pkey) @@ -53,6 +47,7 @@ connection master_1; INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); connection slave1_1; connection master_1; +SET SESSION sql_log_bin= 0; connection child2_1; SELECT argument FROM mysql.general_log WHERE argument LIKE '%set %'; argument diff --git a/storage/spider/mysql-test/spider/t/checksum_table_with_quick_mode_3.test b/storage/spider/mysql-test/spider/t/checksum_table_with_quick_mode_3.test index bf0d8bfa0a0..d108fda7e41 100644 --- a/storage/spider/mysql-test/spider/t/checksum_table_with_quick_mode_3.test +++ b/storage/spider/mysql-test/spider/t/checksum_table_with_quick_mode_3.test @@ -3,7 +3,6 @@ --echo drop and create databases --connection master_1 --disable_warnings -DROP DATABASE IF EXISTS auto_test_local; CREATE DATABASE auto_test_local; USE auto_test_local; if ($USE_CHILD_GROUP2) @@ -14,7 +13,6 @@ if ($USE_CHILD_GROUP2) SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; } - DROP DATABASE IF EXISTS auto_test_remote; CREATE DATABASE auto_test_remote; USE auto_test_remote; } @@ -33,12 +31,8 @@ if ($USE_CHILD_GROUP2) if ($OUTPUT_CHILD_GROUP2) { --disable_query_log - echo CHILD2_1_DROP_TABLES; echo CHILD2_1_CREATE_TABLES; } - --disable_warnings - eval $CHILD2_1_DROP_TABLES; - --enable_warnings eval $CHILD2_1_CREATE_TABLES; if ($OUTPUT_CHILD_GROUP2) { @@ -55,9 +49,6 @@ if ($USE_CHILD_GROUP2) } } --connection master_1 ---disable_warnings -DROP TABLE IF EXISTS tbl_a; ---enable_warnings --disable_query_log echo CREATE TABLE tbl_a ( pkey int NOT NULL, @@ -71,6 +62,7 @@ eval CREATE TABLE tbl_a ( INSERT INTO tbl_a (pkey) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); INSERT INTO tbl_a (pkey) VALUES (10),(11),(12),(13),(14),(15),(16),(17),(18),(19); INSERT INTO tbl_a (pkey) VALUES (20),(21),(22),(23),(24),(25),(26),(27),(28),(29); +FLUSH TABLES; --echo --echo select test 1 diff --git a/storage/spider/mysql-test/spider/t/quick_mode_0.test b/storage/spider/mysql-test/spider/t/quick_mode_0.test index ffb665c0604..6945d97a049 100644 --- a/storage/spider/mysql-test/spider/t/quick_mode_0.test +++ b/storage/spider/mysql-test/spider/t/quick_mode_0.test @@ -3,7 +3,6 @@ --echo drop and create databases --connection master_1 --disable_warnings -DROP DATABASE IF EXISTS auto_test_local; CREATE DATABASE auto_test_local; USE auto_test_local; if ($USE_CHILD_GROUP2) @@ -14,7 +13,6 @@ if ($USE_CHILD_GROUP2) SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; } - DROP DATABASE IF EXISTS auto_test_remote; CREATE DATABASE auto_test_remote; USE auto_test_remote; --connection child2_2 @@ -23,7 +21,6 @@ if ($USE_CHILD_GROUP2) SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; } - DROP DATABASE IF EXISTS auto_test_remote2; CREATE DATABASE auto_test_remote2; USE auto_test_remote2; } @@ -42,12 +39,8 @@ if ($USE_CHILD_GROUP2) if ($OUTPUT_CHILD_GROUP2) { --disable_query_log - echo CHILD2_1_DROP_TABLES; echo CHILD2_1_CREATE_TABLES; } - --disable_warnings - eval $CHILD2_1_DROP_TABLES; - --enable_warnings eval $CHILD2_1_CREATE_TABLES; if ($OUTPUT_CHILD_GROUP2) { @@ -61,12 +54,8 @@ if ($USE_CHILD_GROUP2) if ($OUTPUT_CHILD_GROUP2) { --disable_query_log - echo CHILD2_2_DROP_TABLES; echo CHILD2_2_CREATE_TABLES; } - --disable_warnings - eval $CHILD2_2_DROP_TABLES; - --enable_warnings eval $CHILD2_2_CREATE_TABLES; if ($OUTPUT_CHILD_GROUP2) { @@ -83,10 +72,6 @@ if ($USE_CHILD_GROUP2) } } --connection master_1 ---disable_warnings -DROP TABLE IF EXISTS tbl_a; -DROP TABLE IF EXISTS tbl_b; ---enable_warnings --disable_query_log echo CREATE TABLE tbl_a ( pkey int NOT NULL, diff --git a/storage/spider/mysql-test/spider/t/quick_mode_1.test b/storage/spider/mysql-test/spider/t/quick_mode_1.test index 70d61d087e3..d382d5dbe95 100644 --- a/storage/spider/mysql-test/spider/t/quick_mode_1.test +++ b/storage/spider/mysql-test/spider/t/quick_mode_1.test @@ -3,7 +3,6 @@ --echo drop and create databases --connection master_1 --disable_warnings -DROP DATABASE IF EXISTS auto_test_local; CREATE DATABASE auto_test_local; USE auto_test_local; if ($USE_CHILD_GROUP2) @@ -14,7 +13,6 @@ if ($USE_CHILD_GROUP2) SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; } - DROP DATABASE IF EXISTS auto_test_remote; CREATE DATABASE auto_test_remote; USE auto_test_remote; --connection child2_2 @@ -23,7 +21,6 @@ if ($USE_CHILD_GROUP2) SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; } - DROP DATABASE IF EXISTS auto_test_remote2; CREATE DATABASE auto_test_remote2; USE auto_test_remote2; } @@ -42,12 +39,8 @@ if ($USE_CHILD_GROUP2) if ($OUTPUT_CHILD_GROUP2) { --disable_query_log - echo CHILD2_1_DROP_TABLES; echo CHILD2_1_CREATE_TABLES; } - --disable_warnings - eval $CHILD2_1_DROP_TABLES; - --enable_warnings eval $CHILD2_1_CREATE_TABLES; if ($OUTPUT_CHILD_GROUP2) { @@ -61,12 +54,8 @@ if ($USE_CHILD_GROUP2) if ($OUTPUT_CHILD_GROUP2) { --disable_query_log - echo CHILD2_2_DROP_TABLES; echo CHILD2_2_CREATE_TABLES; } - --disable_warnings - eval $CHILD2_2_DROP_TABLES; - --enable_warnings eval $CHILD2_2_CREATE_TABLES; if ($OUTPUT_CHILD_GROUP2) { @@ -83,10 +72,6 @@ if ($USE_CHILD_GROUP2) } } --connection master_1 ---disable_warnings -DROP TABLE IF EXISTS tbl_a; -DROP TABLE IF EXISTS tbl_b; ---enable_warnings --disable_query_log echo CREATE TABLE tbl_a ( pkey int NOT NULL, diff --git a/storage/spider/mysql-test/spider/t/quick_mode_2.test b/storage/spider/mysql-test/spider/t/quick_mode_2.test index 71e7b0338dc..ebb889868a6 100644 --- a/storage/spider/mysql-test/spider/t/quick_mode_2.test +++ b/storage/spider/mysql-test/spider/t/quick_mode_2.test @@ -3,7 +3,6 @@ --echo drop and create databases --connection master_1 --disable_warnings -DROP DATABASE IF EXISTS auto_test_local; CREATE DATABASE auto_test_local; USE auto_test_local; if ($USE_CHILD_GROUP2) @@ -14,7 +13,6 @@ if ($USE_CHILD_GROUP2) SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; } - DROP DATABASE IF EXISTS auto_test_remote; CREATE DATABASE auto_test_remote; USE auto_test_remote; --connection child2_2 @@ -23,7 +21,6 @@ if ($USE_CHILD_GROUP2) SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; } - DROP DATABASE IF EXISTS auto_test_remote2; CREATE DATABASE auto_test_remote2; USE auto_test_remote2; } @@ -42,12 +39,8 @@ if ($USE_CHILD_GROUP2) if ($OUTPUT_CHILD_GROUP2) { --disable_query_log - echo CHILD2_1_DROP_TABLES; echo CHILD2_1_CREATE_TABLES; } - --disable_warnings - eval $CHILD2_1_DROP_TABLES; - --enable_warnings eval $CHILD2_1_CREATE_TABLES; if ($OUTPUT_CHILD_GROUP2) { @@ -61,12 +54,8 @@ if ($USE_CHILD_GROUP2) if ($OUTPUT_CHILD_GROUP2) { --disable_query_log - echo CHILD2_2_DROP_TABLES; echo CHILD2_2_CREATE_TABLES; } - --disable_warnings - eval $CHILD2_2_DROP_TABLES; - --enable_warnings eval $CHILD2_2_CREATE_TABLES; if ($OUTPUT_CHILD_GROUP2) { @@ -83,10 +72,6 @@ if ($USE_CHILD_GROUP2) } } --connection master_1 ---disable_warnings -DROP TABLE IF EXISTS tbl_a; -DROP TABLE IF EXISTS tbl_b; ---enable_warnings --disable_query_log echo CREATE TABLE tbl_a ( pkey int NOT NULL, diff --git a/storage/spider/mysql-test/spider/t/quick_mode_3.test b/storage/spider/mysql-test/spider/t/quick_mode_3.test index 000edd4fdff..5992284f301 100644 --- a/storage/spider/mysql-test/spider/t/quick_mode_3.test +++ b/storage/spider/mysql-test/spider/t/quick_mode_3.test @@ -3,7 +3,6 @@ --echo drop and create databases --connection master_1 --disable_warnings -DROP DATABASE IF EXISTS auto_test_local; CREATE DATABASE auto_test_local; USE auto_test_local; if ($USE_CHILD_GROUP2) @@ -14,7 +13,6 @@ if ($USE_CHILD_GROUP2) SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; } - DROP DATABASE IF EXISTS auto_test_remote; CREATE DATABASE auto_test_remote; USE auto_test_remote; --connection child2_2 @@ -23,7 +21,6 @@ if ($USE_CHILD_GROUP2) SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; } - DROP DATABASE IF EXISTS auto_test_remote2; CREATE DATABASE auto_test_remote2; USE auto_test_remote2; } @@ -42,12 +39,8 @@ if ($USE_CHILD_GROUP2) if ($OUTPUT_CHILD_GROUP2) { --disable_query_log - echo CHILD2_1_DROP_TABLES; echo CHILD2_1_CREATE_TABLES; } - --disable_warnings - eval $CHILD2_1_DROP_TABLES; - --enable_warnings eval $CHILD2_1_CREATE_TABLES; if ($OUTPUT_CHILD_GROUP2) { @@ -61,12 +54,8 @@ if ($USE_CHILD_GROUP2) if ($OUTPUT_CHILD_GROUP2) { --disable_query_log - echo CHILD2_2_DROP_TABLES; echo CHILD2_2_CREATE_TABLES; } - --disable_warnings - eval $CHILD2_2_DROP_TABLES; - --enable_warnings eval $CHILD2_2_CREATE_TABLES; if ($OUTPUT_CHILD_GROUP2) { @@ -83,10 +72,6 @@ if ($USE_CHILD_GROUP2) } } --connection master_1 ---disable_warnings -DROP TABLE IF EXISTS tbl_a; -DROP TABLE IF EXISTS tbl_b; ---enable_warnings --disable_query_log echo CREATE TABLE tbl_a ( pkey int NOT NULL, diff --git a/storage/spider/mysql-test/spider/t/slave_trx_isolation.test b/storage/spider/mysql-test/spider/t/slave_trx_isolation.test index d1dea8546b9..507e5340779 100644 --- a/storage/spider/mysql-test/spider/t/slave_trx_isolation.test +++ b/storage/spider/mysql-test/spider/t/slave_trx_isolation.test @@ -3,13 +3,11 @@ --echo drop and create databases --connection master_1 --disable_warnings -DROP DATABASE IF EXISTS auto_test_local; CREATE DATABASE auto_test_local; USE auto_test_local; if ($USE_REPLICATION) { --connection slave1_1 - DROP DATABASE IF EXISTS auto_test_local; CREATE DATABASE auto_test_local; USE auto_test_local; } @@ -21,7 +19,6 @@ if ($USE_CHILD_GROUP2) SET @old_log_output = @@global.log_output; SET GLOBAL log_output = 'TABLE,FILE'; } - DROP DATABASE IF EXISTS auto_test_remote; CREATE DATABASE auto_test_remote; USE auto_test_remote; } @@ -40,12 +37,8 @@ if ($USE_CHILD_GROUP2) if ($OUTPUT_CHILD_GROUP2) { --disable_query_log - echo CHILD2_1_DROP_TABLES; echo CHILD2_1_CREATE_TABLES; } - --disable_warnings - eval $CHILD2_1_DROP_TABLES; - --enable_warnings eval $CHILD2_1_CREATE_TABLES; if ($OUTPUT_CHILD_GROUP2) { @@ -68,13 +61,8 @@ if ($USE_REPLICATION) --connection slave1_1 sync_with_master; --connection master_1 - --disable_query_log SET SESSION sql_log_bin= 0; - --enable_query_log } ---disable_warnings -DROP TABLE IF EXISTS tbl_a; ---enable_warnings --disable_query_log echo CREATE TABLE tbl_a ( pkey int NOT NULL, @@ -85,14 +73,10 @@ eval CREATE TABLE tbl_a ( PRIMARY KEY (pkey) ) $MASTER_1_ENGINE2 $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1; --enable_query_log ---connection master_1 if ($USE_REPLICATION) { SET SESSION sql_log_bin= 1; --connection slave1_1 - --disable_warnings - DROP TABLE IF EXISTS tbl_a; - --enable_warnings --disable_query_log echo CREATE TABLE tbl_a ( pkey int NOT NULL, @@ -112,9 +96,7 @@ if ($USE_REPLICATION) --connection slave1_1 sync_with_master; --connection master_1 - --disable_query_log SET SESSION sql_log_bin= 0; - --enable_query_log } if ($USE_CHILD_GROUP2) { diff --git a/storage/spider/spd_db_handlersocket.cc b/storage/spider/spd_db_handlersocket.cc index 4aebc7811b4..37bbe530723 100644 --- a/storage/spider/spd_db_handlersocket.cc +++ b/storage/spider/spd_db_handlersocket.cc @@ -500,7 +500,7 @@ SPIDER_DB_ROW *spider_db_handlersocket_row::clone() uint i; DBUG_ENTER("spider_db_handlersocket_row::clone"); DBUG_PRINT("info",("spider this=%p", this)); - if (!(clone_row = new spider_db_handlersocket_row())) + if (!(clone_row = new spider_db_handlersocket_row(dbton_id))) { DBUG_RETURN(NULL); } @@ -603,7 +603,7 @@ bool spider_db_handlersocket_result_buffer::check_size( spider_db_handlersocket_result::spider_db_handlersocket_result( SPIDER_DB_CONN *in_db_conn -) : spider_db_result(in_db_conn, spider_dbton_handlersocket.dbton_id) +) : spider_db_result(in_db_conn), row(in_db_conn->dbton_id) { DBUG_ENTER("spider_db_handlersocket_result::spider_db_handlersocket_result"); DBUG_PRINT("info",("spider this=%p", this)); @@ -3953,7 +3953,8 @@ int spider_db_handlersocket_util::append_having( spider_handlersocket_share::spider_handlersocket_share( st_spider_share *share ) : spider_db_share( - share + share, + spider_dbton_handlersocket.dbton_id ), table_names_str(NULL), db_names_str(NULL), diff --git a/storage/spider/spd_db_include.cc b/storage/spider/spd_db_include.cc new file mode 100644 index 00000000000..2910aa97690 --- /dev/null +++ b/storage/spider/spd_db_include.cc @@ -0,0 +1,51 @@ +/* Copyright (C) 2018-2019 Kentoku Shiba + + 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 Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#define MYSQL_SERVER 1 +#include <my_global.h> +#include "mysql_version.h" +#include "spd_environ.h" +#if MYSQL_VERSION_ID < 50500 +#include "mysql_priv.h" +#include <mysql/plugin.h> +#else +#include "sql_priv.h" +#include "probes_mysql.h" +#include "sql_class.h" +#endif +#include "sql_common.h" +#include <mysql.h> +#include <errmsg.h> +#include "spd_err.h" +#include "spd_db_include.h" +#include "spd_include.h" + +spider_db_result::spider_db_result( + SPIDER_DB_CONN *in_db_conn +) : db_conn(in_db_conn), dbton_id(in_db_conn->dbton_id) +{ + DBUG_ENTER("spider_db_result::spider_db_result"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_db_conn::spider_db_conn( + SPIDER_CONN *in_conn +) : conn(in_conn), dbton_id(in_conn->dbton_id) +{ + DBUG_ENTER("spider_db_conn::spider_db_conn"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} diff --git a/storage/spider/spd_db_include.h b/storage/spider/spd_db_include.h index cc4d2bcd3a1..64cee006c65 100644 --- a/storage/spider/spd_db_include.h +++ b/storage/spider/spd_db_include.h @@ -21,6 +21,7 @@ #define SPIDER_DBTON_SIZE 15 #define SPIDER_DB_WRAPPER_MYSQL "mysql" +#define SPIDER_DB_WRAPPER_MARIADB "mariadb" #if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 100204 #define PLUGIN_VAR_CAN_MEMALLOC @@ -795,6 +796,7 @@ struct st_spider_db_request_key class spider_db_util { public: + uint dbton_id; spider_db_util() {} virtual ~spider_db_util() {} virtual int append_name( @@ -961,8 +963,7 @@ protected: SPIDER_DB_CONN *db_conn; public: uint dbton_id; - spider_db_result(SPIDER_DB_CONN *in_db_conn, uint in_dbton_id) : - db_conn(in_db_conn), dbton_id(in_dbton_id) {} + spider_db_result(SPIDER_DB_CONN *in_db_conn); virtual ~spider_db_result() {} virtual bool has_result() = 0; virtual void free_result() = 0; @@ -1028,9 +1029,10 @@ class spider_db_conn protected: SPIDER_CONN *conn; public: + uint dbton_id; spider_db_conn( - SPIDER_CONN *conn - ) : conn(conn) {} + SPIDER_CONN *in_conn + ); virtual ~spider_db_conn() {} virtual int init() = 0; virtual bool is_connected() = 0; @@ -1229,8 +1231,12 @@ protected: const char *mem_calc_file_name; ulong mem_calc_line_no; public: + uint dbton_id; st_spider_share *spider_share; - spider_db_share(st_spider_share *share) : spider_share(share) {} + spider_db_share( + st_spider_share *share, + uint dbton_id + ) : dbton_id(dbton_id), spider_share(share) {} virtual ~spider_db_share() {} virtual int init() = 0; virtual uint get_column_name_length( @@ -1264,6 +1270,7 @@ protected: const char *mem_calc_file_name; ulong mem_calc_line_no; public: + uint dbton_id; ha_spider *spider; spider_db_share *db_share; int first_link_idx; @@ -1271,7 +1278,8 @@ public: SPIDER_LINK_IDX_CHAIN *link_idx_chain; #endif spider_db_handler(ha_spider *spider, spider_db_share *db_share) : - spider(spider), db_share(db_share), first_link_idx(-1) {} + dbton_id(db_share->dbton_id), spider(spider), db_share(db_share), + first_link_idx(-1) {} virtual ~spider_db_handler() {} virtual int init() = 0; virtual int append_index_hint( @@ -1750,9 +1758,10 @@ public: class spider_db_copy_table { public: + uint dbton_id; spider_db_share *db_share; spider_db_copy_table(spider_db_share *db_share) : - db_share(db_share) {} + dbton_id(db_share->dbton_id), db_share(db_share) {} virtual ~spider_db_copy_table() {} virtual int init() = 0; virtual void set_sql_charset( diff --git a/storage/spider/spd_db_mysql.cc b/storage/spider/spd_db_mysql.cc index ceb38f886aa..262e47120ce 100644 --- a/storage/spider/spd_db_mysql.cc +++ b/storage/spider/spd_db_mysql.cc @@ -57,6 +57,9 @@ extern HASH spider_ipport_conns; extern SPIDER_DBTON spider_dbton[SPIDER_DBTON_SIZE]; extern const char spider_dig_upper[]; +spider_db_mysql_util spider_db_mysql_utility; +spider_db_mariadb_util spider_db_mariadb_utility; + #define SPIDER_SQL_NAME_QUOTE_STR "`" #define SPIDER_SQL_NAME_QUOTE_LEN (sizeof(SPIDER_SQL_NAME_QUOTE_STR) - 1) static const char *name_quote_str = SPIDER_SQL_NAME_QUOTE_STR; @@ -197,12 +200,24 @@ int spider_mysql_init() DBUG_RETURN(0); } +int spider_mariadb_init() +{ + DBUG_ENTER("spider_mariadb_init"); + DBUG_RETURN(0); +} + int spider_mysql_deinit() { DBUG_ENTER("spider_mysql_deinit"); DBUG_RETURN(0); } +int spider_mariadb_deinit() +{ + DBUG_ENTER("spider_mariadb_deinit"); + DBUG_RETURN(0); +} + spider_db_share *spider_mysql_create_share( SPIDER_SHARE *share ) { @@ -210,13 +225,29 @@ spider_db_share *spider_mysql_create_share( DBUG_RETURN(new spider_mysql_share(share)); } +spider_db_share *spider_mariadb_create_share( + SPIDER_SHARE *share +) { + DBUG_ENTER("spider_mariadb_create_share"); + DBUG_RETURN(new spider_mariadb_share(share)); +} + spider_db_handler *spider_mysql_create_handler( ha_spider *spider, spider_db_share *db_share ) { DBUG_ENTER("spider_mysql_create_handler"); DBUG_RETURN(new spider_mysql_handler(spider, - (spider_mysql_share *) db_share)); + (spider_mbase_share *) db_share)); +} + +spider_db_handler *spider_mariadb_create_handler( + ha_spider *spider, + spider_db_share *db_share +) { + DBUG_ENTER("spider_mariadb_create_handler"); + DBUG_RETURN(new spider_mariadb_handler(spider, + (spider_mbase_share *) db_share)); } spider_db_copy_table *spider_mysql_create_copy_table( @@ -224,7 +255,15 @@ spider_db_copy_table *spider_mysql_create_copy_table( ) { DBUG_ENTER("spider_mysql_create_copy_table"); DBUG_RETURN(new spider_mysql_copy_table( - (spider_mysql_share *) db_share)); + (spider_mbase_share *) db_share)); +} + +spider_db_copy_table *spider_mariadb_create_copy_table( + spider_db_share *db_share +) { + DBUG_ENTER("spider_mariadb_create_copy_table"); + DBUG_RETURN(new spider_mariadb_copy_table( + (spider_mbase_share *) db_share)); } SPIDER_DB_CONN *spider_mysql_create_conn( @@ -234,13 +273,24 @@ SPIDER_DB_CONN *spider_mysql_create_conn( DBUG_RETURN(new spider_db_mysql(conn)); } +SPIDER_DB_CONN *spider_mariadb_create_conn( + SPIDER_CONN *conn +) { + DBUG_ENTER("spider_mariadb_create_conn"); + DBUG_RETURN(new spider_db_mariadb(conn)); +} + bool spider_mysql_support_direct_join( ) { DBUG_ENTER("spider_mysql_support_direct_join"); DBUG_RETURN(TRUE); } -spider_db_mysql_util spider_db_mysql_utility; +bool spider_mariadb_support_direct_join( +) { + DBUG_ENTER("spider_mariadb_support_direct_join"); + DBUG_RETURN(TRUE); +} SPIDER_DBTON spider_dbton_mysql = { 0, @@ -256,18 +306,49 @@ SPIDER_DBTON spider_dbton_mysql = { &spider_db_mysql_utility }; -spider_db_mysql_row::spider_db_mysql_row() : - spider_db_row(spider_dbton_mysql.dbton_id), +SPIDER_DBTON spider_dbton_mariadb = { + 0, + SPIDER_DB_WRAPPER_MARIADB, + SPIDER_DB_ACCESS_TYPE_SQL, + spider_mariadb_init, + spider_mariadb_deinit, + spider_mariadb_create_share, + spider_mariadb_create_handler, + spider_mariadb_create_copy_table, + spider_mariadb_create_conn, + spider_mariadb_support_direct_join, + &spider_db_mariadb_utility +}; + +spider_db_mbase_row::spider_db_mbase_row( + uint dbton_id +) : spider_db_row(dbton_id), row(NULL), lengths(NULL), cloned(FALSE) { + DBUG_ENTER("spider_db_mbase_row::spider_db_mbase_row"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_db_mysql_row::spider_db_mysql_row() : + spider_db_mbase_row(spider_db_mysql_utility.dbton_id) +{ DBUG_ENTER("spider_db_mysql_row::spider_db_mysql_row"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_VOID_RETURN; } -spider_db_mysql_row::~spider_db_mysql_row() +spider_db_mariadb_row::spider_db_mariadb_row() : + spider_db_mbase_row(spider_db_mariadb_utility.dbton_id) { - DBUG_ENTER("spider_db_mysql_row::~spider_db_mysql_row"); + DBUG_ENTER("spider_db_mariadb_row::spider_db_mariadb_row"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_db_mbase_row::~spider_db_mbase_row() +{ + DBUG_ENTER("spider_db_mbase_row::~spider_db_mbase_row"); DBUG_PRINT("info",("spider this=%p", this)); if (cloned) { @@ -276,11 +357,25 @@ spider_db_mysql_row::~spider_db_mysql_row() DBUG_VOID_RETURN; } -int spider_db_mysql_row::store_to_field( +spider_db_mysql_row::~spider_db_mysql_row() +{ + DBUG_ENTER("spider_db_mysql_row::~spider_db_mysql_row"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_db_mariadb_row::~spider_db_mariadb_row() +{ + DBUG_ENTER("spider_db_mariadb_row::~spider_db_mariadb_row"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +int spider_db_mbase_row::store_to_field( Field *field, CHARSET_INFO *access_charset ) { - DBUG_ENTER("spider_db_mysql_row::store_to_field"); + DBUG_ENTER("spider_db_mbase_row::store_to_field"); DBUG_PRINT("info",("spider this=%p", this)); if (!*row) { @@ -317,10 +412,10 @@ int spider_db_mysql_row::store_to_field( DBUG_RETURN(0); } -int spider_db_mysql_row::append_to_str( +int spider_db_mbase_row::append_to_str( spider_string *str ) { - DBUG_ENTER("spider_db_mysql_row::append_to_str"); + DBUG_ENTER("spider_db_mbase_row::append_to_str"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(*lengths)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -328,11 +423,11 @@ int spider_db_mysql_row::append_to_str( DBUG_RETURN(0); } -int spider_db_mysql_row::append_escaped_to_str( +int spider_db_mbase_row::append_escaped_to_str( spider_string *str, uint dbton_id ) { - DBUG_ENTER("spider_db_mysql_row::append_escaped_to_str"); + DBUG_ENTER("spider_db_mbase_row::append_escaped_to_str"); DBUG_PRINT("info",("spider this=%p", this)); spider_string tmp_str(*row, *lengths + 1, str->charset()); tmp_str.init_calc_mem(133); @@ -343,50 +438,50 @@ int spider_db_mysql_row::append_escaped_to_str( DBUG_RETURN(0); } -void spider_db_mysql_row::first() +void spider_db_mbase_row::first() { - DBUG_ENTER("spider_db_mysql_row::first"); + DBUG_ENTER("spider_db_mbase_row::first"); DBUG_PRINT("info",("spider this=%p", this)); row = row_first; lengths = lengths_first; DBUG_VOID_RETURN; } -void spider_db_mysql_row::next() +void spider_db_mbase_row::next() { - DBUG_ENTER("spider_db_mysql_row::next"); + DBUG_ENTER("spider_db_mbase_row::next"); DBUG_PRINT("info",("spider this=%p", this)); row++; lengths++; DBUG_VOID_RETURN; } -bool spider_db_mysql_row::is_null() +bool spider_db_mbase_row::is_null() { - DBUG_ENTER("spider_db_mysql_row::is_null"); + DBUG_ENTER("spider_db_mbase_row::is_null"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(!(*row)); } -int spider_db_mysql_row::val_int() +int spider_db_mbase_row::val_int() { - DBUG_ENTER("spider_db_mysql_row::val_int"); + DBUG_ENTER("spider_db_mbase_row::val_int"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(*row ? atoi(*row) : 0); } -double spider_db_mysql_row::val_real() +double spider_db_mbase_row::val_real() { - DBUG_ENTER("spider_db_mysql_row::val_real"); + DBUG_ENTER("spider_db_mbase_row::val_real"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(*row ? my_atof(*row) : 0.0); } -my_decimal *spider_db_mysql_row::val_decimal( +my_decimal *spider_db_mbase_row::val_decimal( my_decimal *decimal_value, CHARSET_INFO *access_charset ) { - DBUG_ENTER("spider_db_mysql_row::val_decimal"); + DBUG_ENTER("spider_db_mbase_row::val_decimal"); DBUG_PRINT("info",("spider this=%p", this)); if (!*row) DBUG_RETURN(NULL); @@ -402,16 +497,16 @@ my_decimal *spider_db_mysql_row::val_decimal( DBUG_RETURN(decimal_value); } -SPIDER_DB_ROW *spider_db_mysql_row::clone() +SPIDER_DB_ROW *spider_db_mbase_row::clone() { - spider_db_mysql_row *clone_row; + spider_db_mbase_row *clone_row; char *tmp_char; MYSQL_ROW tmp_row = row_first, ctmp_row; ulong *tmp_lengths = lengths_first; uint row_size, i; - DBUG_ENTER("spider_db_mysql_row::clone"); + DBUG_ENTER("spider_db_mbase_row::clone"); DBUG_PRINT("info",("spider this=%p", this)); - if (!(clone_row = new spider_db_mysql_row())) + if (!(clone_row = new spider_db_mbase_row(dbton_id))) { DBUG_RETURN(NULL); } @@ -464,14 +559,14 @@ SPIDER_DB_ROW *spider_db_mysql_row::clone() DBUG_RETURN((SPIDER_DB_ROW *) clone_row); } -int spider_db_mysql_row::store_to_tmp_table( +int spider_db_mbase_row::store_to_tmp_table( TABLE *tmp_table, spider_string *str ) { uint i; MYSQL_ROW tmp_row = row; ulong *tmp_lengths = lengths; - DBUG_ENTER("spider_db_mysql_row::store_to_tmp_table"); + DBUG_ENTER("spider_db_mbase_row::store_to_tmp_table"); DBUG_PRINT("info",("spider this=%p", this)); str->length(0); for (i = 0; i < field_count; i++) @@ -500,11 +595,11 @@ int spider_db_mysql_row::store_to_tmp_table( DBUG_RETURN(tmp_table->file->ha_write_row(tmp_table->record[0])); } -uint spider_db_mysql_row::get_byte_size() +uint spider_db_mbase_row::get_byte_size() { ulong *tmp_lengths = lengths_first; uint i; - DBUG_ENTER("spider_db_mysql_row::get_byte_size"); + DBUG_ENTER("spider_db_mbase_row::get_byte_size"); DBUG_PRINT("info",("spider this=%p", this)); if (!record_size) { @@ -517,18 +612,37 @@ uint spider_db_mysql_row::get_byte_size() DBUG_RETURN(record_size); } -spider_db_mysql_result::spider_db_mysql_result(SPIDER_DB_CONN *in_db_conn) : - spider_db_result(in_db_conn, spider_dbton_mysql.dbton_id), - db_result(NULL) +spider_db_mbase_result::spider_db_mbase_result( + SPIDER_DB_CONN *in_db_conn +) : spider_db_result(in_db_conn), + db_result(NULL), row(in_db_conn->dbton_id) +{ + DBUG_ENTER("spider_db_mbase_result::spider_db_mbase_result"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_db_mysql_result::spider_db_mysql_result( + SPIDER_DB_CONN *in_db_conn +) : spider_db_mbase_result(in_db_conn) { DBUG_ENTER("spider_db_mysql_result::spider_db_mysql_result"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_VOID_RETURN; } -spider_db_mysql_result::~spider_db_mysql_result() +spider_db_mariadb_result::spider_db_mariadb_result( + SPIDER_DB_CONN *in_db_conn +) : spider_db_mbase_result(in_db_conn) { - DBUG_ENTER("spider_db_mysql_result::~spider_db_mysql_result"); + DBUG_ENTER("spider_db_mariadb_result::spider_db_mariadb_result"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_db_mbase_result::~spider_db_mbase_result() +{ + DBUG_ENTER("spider_db_mbase_result::~spider_db_mbase_result"); DBUG_PRINT("info",("spider this=%p", this)); if (db_result) { @@ -537,16 +651,30 @@ spider_db_mysql_result::~spider_db_mysql_result() DBUG_VOID_RETURN; } -bool spider_db_mysql_result::has_result() +spider_db_mysql_result::~spider_db_mysql_result() +{ + DBUG_ENTER("spider_db_mysql_result::~spider_db_mysql_result"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_db_mariadb_result::~spider_db_mariadb_result() +{ + DBUG_ENTER("spider_db_mariadb_result::~spider_db_mariadb_result"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +bool spider_db_mbase_result::has_result() { - DBUG_ENTER("spider_db_mysql_result::has_result"); + DBUG_ENTER("spider_db_mbase_result::has_result"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(db_result); } -void spider_db_mysql_result::free_result() +void spider_db_mbase_result::free_result() { - DBUG_ENTER("spider_db_mysql_result::free_result"); + DBUG_ENTER("spider_db_mbase_result::free_result"); DBUG_PRINT("info",("spider this=%p", this)); /* need 2 times execution design */ if (db_result) @@ -557,24 +685,24 @@ void spider_db_mysql_result::free_result() DBUG_VOID_RETURN; } -SPIDER_DB_ROW *spider_db_mysql_result::current_row() +SPIDER_DB_ROW *spider_db_mbase_result::current_row() { - DBUG_ENTER("spider_db_mysql_result::current_row"); + DBUG_ENTER("spider_db_mbase_result::current_row"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN((SPIDER_DB_ROW *) row.clone()); } -SPIDER_DB_ROW *spider_db_mysql_result::fetch_row() +SPIDER_DB_ROW *spider_db_mbase_result::fetch_row() { - DBUG_ENTER("spider_db_mysql_result::fetch_row"); + DBUG_ENTER("spider_db_mbase_result::fetch_row"); DBUG_PRINT("info",("spider this=%p", this)); if (!(row.row = mysql_fetch_row(db_result))) { - if (mysql_errno(((spider_db_mysql *) db_conn)->db_conn)) + if (mysql_errno(((spider_db_mbase *) db_conn)->db_conn)) { - store_error_num = mysql_errno(((spider_db_mysql *) db_conn)->db_conn); + store_error_num = mysql_errno(((spider_db_mbase *) db_conn)->db_conn); my_message(store_error_num, - mysql_error(((spider_db_mysql *) db_conn)->db_conn), MYF(0)); + mysql_error(((spider_db_mbase *) db_conn)->db_conn), MYF(0)); } else store_error_num = HA_ERR_END_OF_FILE; DBUG_RETURN(NULL); @@ -587,18 +715,18 @@ SPIDER_DB_ROW *spider_db_mysql_result::fetch_row() DBUG_RETURN((SPIDER_DB_ROW *) &row); } -SPIDER_DB_ROW *spider_db_mysql_result::fetch_row_from_result_buffer( +SPIDER_DB_ROW *spider_db_mbase_result::fetch_row_from_result_buffer( spider_db_result_buffer *spider_res_buf ) { - DBUG_ENTER("spider_db_mysql_result::fetch_row_from_result_buffer"); + DBUG_ENTER("spider_db_mbase_result::fetch_row_from_result_buffer"); DBUG_PRINT("info",("spider this=%p", this)); if (!(row.row = mysql_fetch_row(db_result))) { - if (mysql_errno(((spider_db_mysql *) db_conn)->db_conn)) + if (mysql_errno(((spider_db_mbase *) db_conn)->db_conn)) { - store_error_num = mysql_errno(((spider_db_mysql *) db_conn)->db_conn); + store_error_num = mysql_errno(((spider_db_mbase *) db_conn)->db_conn); my_message(store_error_num, - mysql_error(((spider_db_mysql *) db_conn)->db_conn), MYF(0)); + mysql_error(((spider_db_mbase *) db_conn)->db_conn), MYF(0)); } else store_error_num = HA_ERR_END_OF_FILE; DBUG_RETURN(NULL); @@ -611,7 +739,7 @@ SPIDER_DB_ROW *spider_db_mysql_result::fetch_row_from_result_buffer( DBUG_RETURN((SPIDER_DB_ROW *) &row); } -SPIDER_DB_ROW *spider_db_mysql_result::fetch_row_from_tmp_table( +SPIDER_DB_ROW *spider_db_mbase_result::fetch_row_from_tmp_table( TABLE *tmp_table ) { uint i; @@ -620,7 +748,7 @@ SPIDER_DB_ROW *spider_db_mysql_result::fetch_row_from_tmp_table( MYSQL_ROW tmp_row; ulong *tmp_lengths; uint field_count; - DBUG_ENTER("spider_db_mysql_result::fetch_row_from_tmp_table"); + DBUG_ENTER("spider_db_mbase_result::fetch_row_from_tmp_table"); DBUG_PRINT("info",("spider this=%p", this)); tmp_str1.init_calc_mem(117); tmp_str2.init_calc_mem(118); @@ -654,7 +782,7 @@ SPIDER_DB_ROW *spider_db_mysql_result::fetch_row_from_tmp_table( DBUG_RETURN((SPIDER_DB_ROW *) &row); } -int spider_db_mysql_result::fetch_table_status( +int spider_db_mbase_result::fetch_table_status( int mode, ha_rows &records, ulong &mean_rec_length, @@ -680,15 +808,15 @@ int spider_db_mysql_result::fetch_table_status( int time_status; #endif long not_used_long; - DBUG_ENTER("spider_db_mysql_result::fetch_table_status"); + DBUG_ENTER("spider_db_mbase_result::fetch_table_status"); DBUG_PRINT("info",("spider this=%p", this)); if (!(mysql_row = mysql_fetch_row(db_result))) { DBUG_PRINT("info",("spider fetch row is null")); - if ((error_num = mysql_errno(((spider_db_mysql *) db_conn)->db_conn))) + if ((error_num = mysql_errno(((spider_db_mbase *) db_conn)->db_conn))) { my_message(error_num, - mysql_error(((spider_db_mysql *) db_conn)->db_conn), MYF(0)); + mysql_error(((spider_db_mbase *) db_conn)->db_conn), MYF(0)); DBUG_RETURN(error_num); } DBUG_RETURN(ER_SPIDER_REMOTE_TABLE_NOT_FOUND_NUM); @@ -941,21 +1069,21 @@ int spider_db_mysql_result::fetch_table_status( DBUG_RETURN(0); } -int spider_db_mysql_result::fetch_table_records( +int spider_db_mbase_result::fetch_table_records( int mode, ha_rows &records ) { int error_num; MYSQL_ROW mysql_row; - DBUG_ENTER("spider_db_mysql_result::fetch_table_records"); + DBUG_ENTER("spider_db_mbase_result::fetch_table_records"); DBUG_PRINT("info",("spider this=%p", this)); if (!(mysql_row = mysql_fetch_row(db_result))) { DBUG_PRINT("info",("spider fetch row is null")); - if ((error_num = mysql_errno(((spider_db_mysql *) db_conn)->db_conn))) + if ((error_num = mysql_errno(((spider_db_mbase *) db_conn)->db_conn))) { my_message(error_num, - mysql_error(((spider_db_mysql *) db_conn)->db_conn), MYF(0)); + mysql_error(((spider_db_mbase *) db_conn)->db_conn), MYF(0)); DBUG_RETURN(error_num); } DBUG_RETURN(ER_QUERY_ON_FOREIGN_DATA_SOURCE); @@ -986,7 +1114,7 @@ int spider_db_mysql_result::fetch_table_records( DBUG_RETURN(0); } -int spider_db_mysql_result::fetch_table_cardinality( +int spider_db_mbase_result::fetch_table_cardinality( int mode, TABLE *table, longlong *cardinality, @@ -996,16 +1124,16 @@ int spider_db_mysql_result::fetch_table_cardinality( int error_num; MYSQL_ROW mysql_row; Field *field; - DBUG_ENTER("spider_db_mysql_result::fetch_table_cardinality"); + DBUG_ENTER("spider_db_mbase_result::fetch_table_cardinality"); DBUG_PRINT("info",("spider this=%p", this)); memset((uchar *) cardinality_upd, 0, sizeof(uchar) * bitmap_size); if (!(mysql_row = mysql_fetch_row(db_result))) { DBUG_PRINT("info",("spider fetch row is null")); - if ((error_num = mysql_errno(((spider_db_mysql *) db_conn)->db_conn))) + if ((error_num = mysql_errno(((spider_db_mbase *) db_conn)->db_conn))) { my_message(error_num, - mysql_error(((spider_db_mysql *) db_conn)->db_conn), MYF(0)); + mysql_error(((spider_db_mbase *) db_conn)->db_conn), MYF(0)); DBUG_RETURN(error_num); } /* no index */ @@ -1074,29 +1202,29 @@ int spider_db_mysql_result::fetch_table_cardinality( mysql_row = mysql_fetch_row(db_result); } } - if ((error_num = mysql_errno(((spider_db_mysql *) db_conn)->db_conn))) + if ((error_num = mysql_errno(((spider_db_mbase *) db_conn)->db_conn))) { my_message(error_num, - mysql_error(((spider_db_mysql *) db_conn)->db_conn), MYF(0)); + mysql_error(((spider_db_mbase *) db_conn)->db_conn), MYF(0)); DBUG_RETURN(error_num); } DBUG_RETURN(0); } -int spider_db_mysql_result::fetch_table_mon_status( +int spider_db_mbase_result::fetch_table_mon_status( int &status ) { int error_num; MYSQL_ROW mysql_row; - DBUG_ENTER("spider_db_mysql_result::fetch_table_mon_status"); + DBUG_ENTER("spider_db_mbase_result::fetch_table_mon_status"); DBUG_PRINT("info",("spider this=%p", this)); if (!(mysql_row = mysql_fetch_row(db_result))) { DBUG_PRINT("info",("spider fetch row is null")); - if ((error_num = mysql_errno(((spider_db_mysql *) db_conn)->db_conn))) + if ((error_num = mysql_errno(((spider_db_mbase *) db_conn)->db_conn))) { my_message(error_num, - mysql_error(((spider_db_mysql *) db_conn)->db_conn), MYF(0)); + mysql_error(((spider_db_mbase *) db_conn)->db_conn), MYF(0)); DBUG_RETURN(error_num); } DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -1115,21 +1243,21 @@ int spider_db_mysql_result::fetch_table_mon_status( DBUG_RETURN(0); } -int spider_db_mysql_result::fetch_show_master_status( +int spider_db_mbase_result::fetch_show_master_status( const char **binlog_file_name, const char **binlog_pos ) { int error_num; MYSQL_ROW mysql_row; - DBUG_ENTER("spider_db_mysql_result::fetch_show_master_status"); + DBUG_ENTER("spider_db_mbase_result::fetch_show_master_status"); DBUG_PRINT("info",("spider this=%p", this)); if (!(mysql_row = mysql_fetch_row(db_result))) { DBUG_PRINT("info",("spider fetch row is null")); - if ((error_num = mysql_errno(((spider_db_mysql *) db_conn)->db_conn))) + if ((error_num = mysql_errno(((spider_db_mbase *) db_conn)->db_conn))) { my_message(error_num, - mysql_error(((spider_db_mysql *) db_conn)->db_conn), MYF(0)); + mysql_error(((spider_db_mbase *) db_conn)->db_conn), MYF(0)); DBUG_RETURN(error_num); } DBUG_RETURN(ER_QUERY_ON_FOREIGN_DATA_SOURCE); @@ -1146,20 +1274,20 @@ int spider_db_mysql_result::fetch_show_master_status( DBUG_RETURN(0); } -int spider_db_mysql_result::fetch_select_binlog_gtid_pos( +int spider_db_mbase_result::fetch_select_binlog_gtid_pos( const char **gtid_pos ) { int error_num; MYSQL_ROW mysql_row; - DBUG_ENTER("spider_db_mysql_result::fetch_select_binlog_gtid_pos"); + DBUG_ENTER("spider_db_mbase_result::fetch_select_binlog_gtid_pos"); DBUG_PRINT("info",("spider this=%p", this)); if (!(mysql_row = mysql_fetch_row(db_result))) { DBUG_PRINT("info",("spider fetch row is null")); - if ((error_num = mysql_errno(((spider_db_mysql *) db_conn)->db_conn))) + if ((error_num = mysql_errno(((spider_db_mbase *) db_conn)->db_conn))) { my_message(error_num, - mysql_error(((spider_db_mysql *) db_conn)->db_conn), MYF(0)); + mysql_error(((spider_db_mbase *) db_conn)->db_conn), MYF(0)); DBUG_RETURN(error_num); } DBUG_RETURN(ER_QUERY_ON_FOREIGN_DATA_SOURCE); @@ -1174,24 +1302,24 @@ int spider_db_mysql_result::fetch_select_binlog_gtid_pos( DBUG_RETURN(0); } -longlong spider_db_mysql_result::num_rows() +longlong spider_db_mbase_result::num_rows() { - DBUG_ENTER("spider_db_mysql_result::num_rows"); + DBUG_ENTER("spider_db_mbase_result::num_rows"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN((longlong) mysql_num_rows(db_result)); } -uint spider_db_mysql_result::num_fields() +uint spider_db_mbase_result::num_fields() { - DBUG_ENTER("spider_db_mysql_result::num_fields"); + DBUG_ENTER("spider_db_mbase_result::num_fields"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(mysql_num_fields(db_result)); } -void spider_db_mysql_result::move_to_pos( +void spider_db_mbase_result::move_to_pos( longlong pos ) { - DBUG_ENTER("spider_db_mysql_result::move_to_pos"); + DBUG_ENTER("spider_db_mbase_result::move_to_pos"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_PRINT("info",("spider pos=%lld", pos)); /* @@ -1201,31 +1329,31 @@ void spider_db_mysql_result::move_to_pos( DBUG_VOID_RETURN; } -int spider_db_mysql_result::get_errno() +int spider_db_mbase_result::get_errno() { - DBUG_ENTER("spider_db_mysql_result::get_errno"); + DBUG_ENTER("spider_db_mbase_result::get_errno"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_PRINT("info",("spider store_error_num=%d", store_error_num)); DBUG_RETURN(store_error_num); } #ifdef SPIDER_HAS_DISCOVER_TABLE_STRUCTURE -int spider_db_mysql_result::fetch_columns_for_discover_table_structure( +int spider_db_mbase_result::fetch_columns_for_discover_table_structure( spider_string *str, CHARSET_INFO *access_charset ) { int error_num; uint length; MYSQL_ROW mysql_row; - DBUG_ENTER("spider_db_mysql_result::fetch_columns_for_discover_table_structure"); + DBUG_ENTER("spider_db_mbase_result::fetch_columns_for_discover_table_structure"); DBUG_PRINT("info",("spider this=%p", this)); if (!(mysql_row = mysql_fetch_row(db_result))) { DBUG_PRINT("info",("spider fetch row is null")); - if ((error_num = mysql_errno(((spider_db_mysql *) db_conn)->db_conn))) + if ((error_num = mysql_errno(((spider_db_mbase *) db_conn)->db_conn))) { my_message(error_num, - mysql_error(((spider_db_mysql *) db_conn)->db_conn), MYF(0)); + mysql_error(((spider_db_mbase *) db_conn)->db_conn), MYF(0)); DBUG_RETURN(error_num); } DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -1327,30 +1455,30 @@ int spider_db_mysql_result::fetch_columns_for_discover_table_structure( } str->q_append(SPIDER_SQL_COMMA_STR, SPIDER_SQL_COMMA_LEN); } while ((mysql_row = mysql_fetch_row(db_result))); - if ((error_num = mysql_errno(((spider_db_mysql *) db_conn)->db_conn))) + if ((error_num = mysql_errno(((spider_db_mbase *) db_conn)->db_conn))) { my_message(error_num, - mysql_error(((spider_db_mysql *) db_conn)->db_conn), MYF(0)); + mysql_error(((spider_db_mbase *) db_conn)->db_conn), MYF(0)); DBUG_RETURN(error_num); } DBUG_RETURN(0); } -int spider_db_mysql_result::fetch_index_for_discover_table_structure( +int spider_db_mbase_result::fetch_index_for_discover_table_structure( spider_string *str, CHARSET_INFO *access_charset ) { int error_num; MYSQL_ROW mysql_row; - DBUG_ENTER("spider_db_mysql_result::fetch_index_for_discover_table_structure"); + DBUG_ENTER("spider_db_mbase_result::fetch_index_for_discover_table_structure"); DBUG_PRINT("info",("spider this=%p", this)); if (!(mysql_row = mysql_fetch_row(db_result))) { DBUG_PRINT("info",("spider fetch row is null")); - if ((error_num = mysql_errno(((spider_db_mysql *) db_conn)->db_conn))) + if ((error_num = mysql_errno(((spider_db_mbase *) db_conn)->db_conn))) { my_message(error_num, - mysql_error(((spider_db_mysql *) db_conn)->db_conn), MYF(0)); + mysql_error(((spider_db_mbase *) db_conn)->db_conn), MYF(0)); DBUG_RETURN(error_num); } DBUG_RETURN(0); @@ -1519,10 +1647,10 @@ int spider_db_mysql_result::fetch_index_for_discover_table_structure( else using_hash = FALSE; } while ((mysql_row = mysql_fetch_row(db_result))); - if ((error_num = mysql_errno(((spider_db_mysql *) db_conn)->db_conn))) + if ((error_num = mysql_errno(((spider_db_mbase *) db_conn)->db_conn))) { my_message(error_num, - mysql_error(((spider_db_mysql *) db_conn)->db_conn), MYF(0)); + mysql_error(((spider_db_mbase *) db_conn)->db_conn), MYF(0)); DBUG_RETURN(error_num); } if (!first) @@ -1540,22 +1668,22 @@ int spider_db_mysql_result::fetch_index_for_discover_table_structure( DBUG_RETURN(0); } -int spider_db_mysql_result::fetch_table_for_discover_table_structure( +int spider_db_mbase_result::fetch_table_for_discover_table_structure( spider_string *str, SPIDER_SHARE *spider_share, CHARSET_INFO *access_charset ) { int error_num; MYSQL_ROW mysql_row; - DBUG_ENTER("spider_db_mysql_result::fetch_table_for_discover_table_structure"); + DBUG_ENTER("spider_db_mbase_result::fetch_table_for_discover_table_structure"); DBUG_PRINT("info",("spider this=%p", this)); if (!(mysql_row = mysql_fetch_row(db_result))) { DBUG_PRINT("info",("spider fetch row is null")); - if ((error_num = mysql_errno(((spider_db_mysql *) db_conn)->db_conn))) + if ((error_num = mysql_errno(((spider_db_mbase *) db_conn)->db_conn))) { my_message(error_num, - mysql_error(((spider_db_mysql *) db_conn)->db_conn), MYF(0)); + mysql_error(((spider_db_mbase *) db_conn)->db_conn), MYF(0)); DBUG_RETURN(error_num); } DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -1581,20 +1709,39 @@ int spider_db_mysql_result::fetch_table_for_discover_table_structure( } #endif +spider_db_mbase::spider_db_mbase( + SPIDER_CONN *conn, + spider_db_mbase_util *spider_db_mbase_utility +) : spider_db_conn(conn), spider_db_mbase_utility(spider_db_mbase_utility), + lock_table_hash_inited(FALSE), handler_open_array_inited(FALSE) +{ + DBUG_ENTER("spider_db_mbase::spider_db_mbase"); + DBUG_PRINT("info",("spider this=%p", this)); + db_conn = NULL; + DBUG_VOID_RETURN; +} + spider_db_mysql::spider_db_mysql( SPIDER_CONN *conn -) : spider_db_conn(conn), lock_table_hash_inited(FALSE), - handler_open_array_inited(FALSE) +) : spider_db_mbase(conn, &spider_db_mysql_utility) { DBUG_ENTER("spider_db_mysql::spider_db_mysql"); DBUG_PRINT("info",("spider this=%p", this)); - db_conn = NULL; DBUG_VOID_RETURN; } -spider_db_mysql::~spider_db_mysql() +spider_db_mariadb::spider_db_mariadb( + SPIDER_CONN *conn +) : spider_db_mbase(conn, &spider_db_mariadb_utility) { - DBUG_ENTER("spider_db_mysql::~spider_db_mysql"); + DBUG_ENTER("spider_db_mariadb::spider_db_mariadb"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_db_mbase::~spider_db_mbase() +{ + DBUG_ENTER("spider_db_mbase::~spider_db_mbase"); DBUG_PRINT("info",("spider this=%p", this)); if (handler_open_array_inited) { @@ -1616,9 +1763,23 @@ spider_db_mysql::~spider_db_mysql() DBUG_VOID_RETURN; } -int spider_db_mysql::init() +spider_db_mysql::~spider_db_mysql() +{ + DBUG_ENTER("spider_db_mysql::~spider_db_mysql"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_db_mariadb::~spider_db_mariadb() +{ + DBUG_ENTER("spider_db_mariadb::~spider_db_mariadb"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +int spider_db_mbase::init() { - DBUG_ENTER("spider_db_mysql::init"); + DBUG_ENTER("spider_db_mbase::init"); DBUG_PRINT("info",("spider this=%p", this)); if ( my_hash_init(&lock_table_hash, spd_charset_utf8_bin, 32, 0, 0, @@ -1648,21 +1809,21 @@ int spider_db_mysql::init() DBUG_RETURN(0); } -bool spider_db_mysql::is_connected() +bool spider_db_mbase::is_connected() { - DBUG_ENTER("spider_db_mysql::is_connected"); + DBUG_ENTER("spider_db_mbase::is_connected"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(db_conn); } -void spider_db_mysql::bg_connect() +void spider_db_mbase::bg_connect() { - DBUG_ENTER("spider_db_mysql::bg_connect"); + DBUG_ENTER("spider_db_mbase::bg_connect"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_VOID_RETURN; } -int spider_db_mysql::connect( +int spider_db_mbase::connect( char *tgt_host, char *tgt_username, char *tgt_password, @@ -1674,7 +1835,7 @@ int spider_db_mysql::connect( ) { int error_num; my_bool connect_mutex = spider_param_connect_mutex(); - DBUG_ENTER("spider_db_mysql::connect"); + DBUG_ENTER("spider_db_mbase::connect"); DBUG_PRINT("info",("spider this=%p", this)); while (TRUE) { @@ -1795,25 +1956,25 @@ int spider_db_mysql::connect( DBUG_RETURN(0); } -int spider_db_mysql::ping( +int spider_db_mbase::ping( ) { - DBUG_ENTER("spider_db_mysql::ping"); + DBUG_ENTER("spider_db_mbase::ping"); DBUG_PRINT("info",("spider this=%p", this)); if (spider_param_dry_access()) DBUG_RETURN(0); DBUG_RETURN(simple_command(db_conn, COM_PING, 0, 0, 0)); } -void spider_db_mysql::bg_disconnect() +void spider_db_mbase::bg_disconnect() { - DBUG_ENTER("spider_db_mysql::bg_disconnect"); + DBUG_ENTER("spider_db_mbase::bg_disconnect"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_VOID_RETURN; } -void spider_db_mysql::disconnect() +void spider_db_mbase::disconnect() { - DBUG_ENTER("spider_db_mysql::disconnect"); + DBUG_ENTER("spider_db_mbase::disconnect"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_PRINT("info",("spider db_conn=%p", db_conn)); if (db_conn) @@ -1824,9 +1985,9 @@ void spider_db_mysql::disconnect() DBUG_VOID_RETURN; } -int spider_db_mysql::set_net_timeout() +int spider_db_mbase::set_net_timeout() { - DBUG_ENTER("spider_db_mysql::set_net_timeout"); + DBUG_ENTER("spider_db_mbase::set_net_timeout"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_PRINT("info",("spider conn=%p", conn)); my_net_set_read_timeout(&db_conn->net, conn->net_read_timeout); @@ -1834,14 +1995,14 @@ int spider_db_mysql::set_net_timeout() DBUG_RETURN(0); } -int spider_db_mysql::exec_query( +int spider_db_mbase::exec_query( const char *query, uint length, int quick_mode ) { int error_num = 0; uint log_result_errors = spider_param_log_result_errors(); - DBUG_ENTER("spider_db_mysql::exec_query"); + DBUG_ENTER("spider_db_mbase::exec_query"); DBUG_PRINT("info",("spider this=%p", this)); if (spider_param_general_log()) { @@ -1945,30 +2106,30 @@ int spider_db_mysql::exec_query( DBUG_RETURN(error_num); } -int spider_db_mysql::get_errno() +int spider_db_mbase::get_errno() { - DBUG_ENTER("spider_db_mysql::get_errno"); + DBUG_ENTER("spider_db_mbase::get_errno"); DBUG_PRINT("info",("spider this=%p", this)); stored_error = mysql_errno(db_conn); DBUG_PRINT("info",("spider stored_error=%d", stored_error)); DBUG_RETURN(stored_error); } -const char *spider_db_mysql::get_error() +const char *spider_db_mbase::get_error() { const char *error_ptr; - DBUG_ENTER("spider_db_mysql::get_error"); + DBUG_ENTER("spider_db_mbase::get_error"); DBUG_PRINT("info",("spider this=%p", this)); error_ptr = mysql_error(db_conn); DBUG_PRINT("info",("spider error=%s", error_ptr)); DBUG_RETURN(error_ptr); } -bool spider_db_mysql::is_server_gone_error( +bool spider_db_mbase::is_server_gone_error( int error_num ) { bool server_gone; - DBUG_ENTER("spider_db_mysql::is_server_gone_error"); + DBUG_ENTER("spider_db_mbase::is_server_gone_error"); DBUG_PRINT("info",("spider this=%p", this)); server_gone = (error_num == CR_SERVER_GONE_ERROR || error_num == CR_SERVER_LOST); @@ -1976,11 +2137,11 @@ bool spider_db_mysql::is_server_gone_error( DBUG_RETURN(server_gone); } -bool spider_db_mysql::is_dup_entry_error( +bool spider_db_mbase::is_dup_entry_error( int error_num ) { bool dup_entry; - DBUG_ENTER("spider_db_mysql::is_dup_entry_error"); + DBUG_ENTER("spider_db_mbase::is_dup_entry_error"); DBUG_PRINT("info",("spider this=%p", this)); dup_entry = ( @@ -1992,11 +2153,11 @@ bool spider_db_mysql::is_dup_entry_error( DBUG_RETURN(dup_entry); } -bool spider_db_mysql::is_xa_nota_error( +bool spider_db_mbase::is_xa_nota_error( int error_num ) { bool xa_nota; - DBUG_ENTER("spider_db_mysql::is_xa_nota_error"); + DBUG_ENTER("spider_db_mbase::is_xa_nota_error"); DBUG_PRINT("info",("spider this=%p", this)); xa_nota = ( @@ -2008,10 +2169,10 @@ bool spider_db_mysql::is_xa_nota_error( DBUG_RETURN(xa_nota); } -void spider_db_mysql::print_warnings( +void spider_db_mbase::print_warnings( struct tm *l_time ) { - DBUG_ENTER("spider_db_mysql::print_warnings"); + DBUG_ENTER("spider_db_mbase::print_warnings"); DBUG_PRINT("info",("spider this=%p", this)); if (db_conn->status == MYSQL_STATUS_READY) { @@ -2083,16 +2244,16 @@ void spider_db_mysql::print_warnings( DBUG_VOID_RETURN; } -spider_db_result *spider_db_mysql::store_result( +spider_db_result *spider_db_mbase::store_result( spider_db_result_buffer **spider_res_buf, st_spider_db_request_key *request_key, int *error_num ) { - spider_db_mysql_result *result; - DBUG_ENTER("spider_db_mysql::store_result"); + spider_db_mbase_result *result; + DBUG_ENTER("spider_db_mbase::store_result"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_ASSERT(!spider_res_buf); - if ((result = new spider_db_mysql_result(this))) + if ((result = new spider_db_mbase_result(this))) { *error_num = 0; if ( @@ -2111,14 +2272,14 @@ spider_db_result *spider_db_mysql::store_result( DBUG_RETURN(result); } -spider_db_result *spider_db_mysql::use_result( +spider_db_result *spider_db_mbase::use_result( st_spider_db_request_key *request_key, int *error_num ) { - spider_db_mysql_result *result; - DBUG_ENTER("spider_db_mysql::use_result"); + spider_db_mbase_result *result; + DBUG_ENTER("spider_db_mbase::use_result"); DBUG_PRINT("info",("spider this=%p", this)); - if ((result = new spider_db_mysql_result(this))) + if ((result = new spider_db_mbase_result(this))) { *error_num = 0; if ( @@ -2136,10 +2297,10 @@ spider_db_result *spider_db_mysql::use_result( DBUG_RETURN(result); } -int spider_db_mysql::next_result() +int spider_db_mbase::next_result() { int status; - DBUG_ENTER("spider_db_mysql::next_result"); + DBUG_ENTER("spider_db_mbase::next_result"); DBUG_PRINT("info",("spider this=%p", this)); if (db_conn->status != MYSQL_STATUS_READY) { @@ -2165,10 +2326,10 @@ int spider_db_mysql::next_result() DBUG_RETURN(-1); } -uint spider_db_mysql::affected_rows() +uint spider_db_mbase::affected_rows() { MYSQL *last_used_con; - DBUG_ENTER("spider_db_mysql::affected_rows"); + DBUG_ENTER("spider_db_mbase::affected_rows"); DBUG_PRINT("info",("spider this=%p", this)); #if MYSQL_VERSION_ID < 50500 last_used_con = db_conn->last_used_con; @@ -2178,10 +2339,10 @@ uint spider_db_mysql::affected_rows() DBUG_RETURN((uint) last_used_con->affected_rows); } -ulonglong spider_db_mysql::last_insert_id() +ulonglong spider_db_mbase::last_insert_id() { MYSQL *last_used_con; - DBUG_ENTER("spider_db_mysql::last_insert_id"); + DBUG_ENTER("spider_db_mbase::last_insert_id"); DBUG_PRINT("info",("spider this=%p", this)); #if MYSQL_VERSION_ID < 50500 last_used_con = db_conn->last_used_con; @@ -2191,30 +2352,30 @@ ulonglong spider_db_mysql::last_insert_id() DBUG_RETURN((uint) last_used_con->insert_id); } -int spider_db_mysql::set_character_set( +int spider_db_mbase::set_character_set( const char *csname ) { - DBUG_ENTER("spider_db_mysql::set_character_set"); + DBUG_ENTER("spider_db_mbase::set_character_set"); DBUG_PRINT("info",("spider this=%p", this)); if (spider_param_dry_access()) DBUG_RETURN(0); DBUG_RETURN(mysql_set_character_set(db_conn, csname)); } -int spider_db_mysql::select_db( +int spider_db_mbase::select_db( const char *dbname ) { - DBUG_ENTER("spider_db_mysql::select_db"); + DBUG_ENTER("spider_db_mbase::select_db"); DBUG_PRINT("info",("spider this=%p", this)); if (spider_param_dry_access()) DBUG_RETURN(0); DBUG_RETURN(mysql_select_db(db_conn, dbname)); } -int spider_db_mysql::consistent_snapshot( +int spider_db_mbase::consistent_snapshot( int *need_mon ) { - DBUG_ENTER("spider_db_mysql::consistent_snapshot"); + DBUG_ENTER("spider_db_mbase::consistent_snapshot"); DBUG_PRINT("info",("spider this=%p", this)); if (spider_db_query( conn, @@ -2229,17 +2390,17 @@ int spider_db_mysql::consistent_snapshot( DBUG_RETURN(0); } -bool spider_db_mysql::trx_start_in_bulk_sql() +bool spider_db_mbase::trx_start_in_bulk_sql() { - DBUG_ENTER("spider_db_mysql::trx_start_in_bulk_sql"); + DBUG_ENTER("spider_db_mbase::trx_start_in_bulk_sql"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(TRUE); } -int spider_db_mysql::start_transaction( +int spider_db_mbase::start_transaction( int *need_mon ) { - DBUG_ENTER("spider_db_mysql::start_transaction"); + DBUG_ENTER("spider_db_mbase::start_transaction"); DBUG_PRINT("info",("spider this=%p", this)); if (spider_db_query( conn, @@ -2254,10 +2415,10 @@ int spider_db_mysql::start_transaction( DBUG_RETURN(0); } -int spider_db_mysql::commit( +int spider_db_mbase::commit( int *need_mon ) { - DBUG_ENTER("spider_db_mysql::commit"); + DBUG_ENTER("spider_db_mbase::commit"); DBUG_PRINT("info",("spider this=%p", this)); if (spider_db_query( conn, @@ -2272,12 +2433,12 @@ int spider_db_mysql::commit( DBUG_RETURN(0); } -int spider_db_mysql::rollback( +int spider_db_mbase::rollback( int *need_mon ) { bool is_error; int error_num; - DBUG_ENTER("spider_db_mysql::rollback"); + DBUG_ENTER("spider_db_mbase::rollback"); DBUG_PRINT("info",("spider this=%p", this)); conn->mta_conn_mutex_unlock_later = TRUE; if (spider_db_query( @@ -2307,30 +2468,30 @@ int spider_db_mysql::rollback( DBUG_RETURN(0); } -int spider_db_mysql::xa_start( +int spider_db_mbase::xa_start( XID *xid, int *need_mon ) { - DBUG_ENTER("spider_db_mysql::xa_start"); + DBUG_ENTER("spider_db_mbase::xa_start"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_ASSERT(0); DBUG_RETURN(0); } -bool spider_db_mysql::xa_start_in_bulk_sql() +bool spider_db_mbase::xa_start_in_bulk_sql() { - DBUG_ENTER("spider_db_mysql::xa_start_in_bulk_sql"); + DBUG_ENTER("spider_db_mbase::xa_start_in_bulk_sql"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(TRUE); } -int spider_db_mysql::xa_end( +int spider_db_mbase::xa_end( XID *xid, int *need_mon ) { char sql_buf[SPIDER_SQL_XA_END_LEN + XIDDATASIZE + sizeof(long) + 9]; spider_string sql_str(sql_buf, sizeof(sql_buf), &my_charset_bin); - DBUG_ENTER("spider_db_mysql::xa_end"); + DBUG_ENTER("spider_db_mbase::xa_end"); DBUG_PRINT("info",("spider this=%p", this)); sql_str.init_calc_mem(108); @@ -2350,13 +2511,13 @@ int spider_db_mysql::xa_end( DBUG_RETURN(0); } -int spider_db_mysql::xa_prepare( +int spider_db_mbase::xa_prepare( XID *xid, int *need_mon ) { char sql_buf[SPIDER_SQL_XA_PREPARE_LEN + XIDDATASIZE + sizeof(long) + 9]; spider_string sql_str(sql_buf, sizeof(sql_buf), &my_charset_bin); - DBUG_ENTER("spider_db_mysql::xa_prepare"); + DBUG_ENTER("spider_db_mbase::xa_prepare"); DBUG_PRINT("info",("spider this=%p", this)); sql_str.init_calc_mem(109); @@ -2376,13 +2537,13 @@ int spider_db_mysql::xa_prepare( DBUG_RETURN(0); } -int spider_db_mysql::xa_commit( +int spider_db_mbase::xa_commit( XID *xid, int *need_mon ) { char sql_buf[SPIDER_SQL_XA_COMMIT_LEN + XIDDATASIZE + sizeof(long) + 9]; spider_string sql_str(sql_buf, sizeof(sql_buf), &my_charset_bin); - DBUG_ENTER("spider_db_mysql::xa_commit"); + DBUG_ENTER("spider_db_mbase::xa_commit"); DBUG_PRINT("info",("spider this=%p", this)); sql_str.init_calc_mem(110); @@ -2402,13 +2563,13 @@ int spider_db_mysql::xa_commit( DBUG_RETURN(0); } -int spider_db_mysql::xa_rollback( +int spider_db_mbase::xa_rollback( XID *xid, int *need_mon ) { char sql_buf[SPIDER_SQL_XA_ROLLBACK_LEN + XIDDATASIZE + sizeof(long) + 9]; spider_string sql_str(sql_buf, sizeof(sql_buf), &my_charset_bin); - DBUG_ENTER("spider_db_mysql::xa_rollback"); + DBUG_ENTER("spider_db_mbase::xa_rollback"); DBUG_PRINT("info",("spider this=%p", this)); sql_str.init_calc_mem(111); @@ -2428,18 +2589,18 @@ int spider_db_mysql::xa_rollback( DBUG_RETURN(0); } -bool spider_db_mysql::set_trx_isolation_in_bulk_sql() +bool spider_db_mbase::set_trx_isolation_in_bulk_sql() { - DBUG_ENTER("spider_db_mysql::set_trx_isolation_in_bulk_sql"); + DBUG_ENTER("spider_db_mbase::set_trx_isolation_in_bulk_sql"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(TRUE); } -int spider_db_mysql::set_trx_isolation( +int spider_db_mbase::set_trx_isolation( int trx_isolation, int *need_mon ) { - DBUG_ENTER("spider_db_mysql::set_trx_isolation"); + DBUG_ENTER("spider_db_mbase::set_trx_isolation"); DBUG_PRINT("info",("spider this=%p", this)); switch (trx_isolation) { @@ -2497,18 +2658,18 @@ int spider_db_mysql::set_trx_isolation( DBUG_RETURN(0); } -bool spider_db_mysql::set_autocommit_in_bulk_sql() +bool spider_db_mbase::set_autocommit_in_bulk_sql() { - DBUG_ENTER("spider_db_mysql::set_autocommit_in_bulk_sql"); + DBUG_ENTER("spider_db_mbase::set_autocommit_in_bulk_sql"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(TRUE); } -int spider_db_mysql::set_autocommit( +int spider_db_mbase::set_autocommit( bool autocommit, int *need_mon ) { - DBUG_ENTER("spider_db_mysql::set_autocommit"); + DBUG_ENTER("spider_db_mbase::set_autocommit"); DBUG_PRINT("info",("spider this=%p", this)); if (autocommit) { @@ -2537,18 +2698,18 @@ int spider_db_mysql::set_autocommit( DBUG_RETURN(0); } -bool spider_db_mysql::set_sql_log_off_in_bulk_sql() +bool spider_db_mbase::set_sql_log_off_in_bulk_sql() { - DBUG_ENTER("spider_db_mysql::set_sql_log_off_in_bulk_sql"); + DBUG_ENTER("spider_db_mbase::set_sql_log_off_in_bulk_sql"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(TRUE); } -int spider_db_mysql::set_sql_log_off( +int spider_db_mbase::set_sql_log_off( bool sql_log_off, int *need_mon ) { - DBUG_ENTER("spider_db_mysql::set_sql_log_off"); + DBUG_ENTER("spider_db_mbase::set_sql_log_off"); DBUG_PRINT("info",("spider this=%p", this)); if (sql_log_off) { @@ -2577,21 +2738,21 @@ int spider_db_mysql::set_sql_log_off( DBUG_RETURN(0); } -bool spider_db_mysql::set_time_zone_in_bulk_sql() +bool spider_db_mbase::set_time_zone_in_bulk_sql() { - DBUG_ENTER("spider_db_mysql::set_time_zone_in_bulk_sql"); + DBUG_ENTER("spider_db_mbase::set_time_zone_in_bulk_sql"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(TRUE); } -int spider_db_mysql::set_time_zone( +int spider_db_mbase::set_time_zone( Time_zone *time_zone, int *need_mon ) { const String *tz_str = time_zone->get_name(); char sql_buf[MAX_FIELD_WIDTH]; spider_string sql_str(sql_buf, sizeof(sql_buf), &my_charset_bin); - DBUG_ENTER("spider_db_mysql::set_time_zone"); + DBUG_ENTER("spider_db_mbase::set_time_zone"); DBUG_PRINT("info",("spider this=%p", this)); sql_str.init_calc_mem(214); sql_str.length(0); @@ -2614,7 +2775,7 @@ int spider_db_mysql::set_time_zone( DBUG_RETURN(0); } -int spider_db_mysql::exec_simple_sql_with_result( +int spider_db_mbase::exec_simple_sql_with_result( SPIDER_TRX *trx, SPIDER_SHARE *share, const char *sql, @@ -2624,7 +2785,7 @@ int spider_db_mysql::exec_simple_sql_with_result( SPIDER_DB_RESULT **res ) { int error_num; - DBUG_ENTER("spider_db_mysql::exec_simple_sql_with_result"); + DBUG_ENTER("spider_db_mbase::exec_simple_sql_with_result"); pthread_mutex_lock(&conn->mta_conn_mutex); SPIDER_SET_FILE_POS(&conn->mta_conn_mutex_file_pos); conn->need_mon = need_mon; @@ -2714,7 +2875,7 @@ int spider_db_mysql::exec_simple_sql_with_result( DBUG_RETURN(0); } -int spider_db_mysql::show_master_status( +int spider_db_mbase::show_master_status( SPIDER_TRX *trx, SPIDER_SHARE *share, int all_link_idx, @@ -2728,7 +2889,7 @@ int spider_db_mysql::show_master_status( int error_num; const char *binlog_file_name, *binlog_pos; uint binlog_file_name_length, binlog_pos_length; - DBUG_ENTER("spider_db_mysql::show_master_status"); + DBUG_ENTER("spider_db_mbase::show_master_status"); if ((error_num = exec_simple_sql_with_result(trx, share, SPIDER_SQL_SHOW_MASTER_STATUS_STR, SPIDER_SQL_SHOW_MASTER_STATUS_LEN, all_link_idx, need_mon, res1)) @@ -2737,7 +2898,7 @@ int spider_db_mysql::show_master_status( DBUG_RETURN(error_num); } - if (!(error_num = ((spider_db_mysql_result *)*res1)->fetch_show_master_status( + if (!(error_num = ((spider_db_mbase_result *)*res1)->fetch_show_master_status( &binlog_file_name, &binlog_pos)) ) { binlog_file_name_length = strlen(binlog_file_name); @@ -2776,7 +2937,7 @@ int spider_db_mysql::show_master_status( DBUG_RETURN(0); } -int spider_db_mysql::select_binlog_gtid_pos( +int spider_db_mbase::select_binlog_gtid_pos( SPIDER_TRX *trx, SPIDER_SHARE *share, int all_link_idx, @@ -2792,7 +2953,7 @@ int spider_db_mysql::select_binlog_gtid_pos( int error_num; size_t length; const char *gtid_pos; - DBUG_ENTER("spider_db_mysql::select_binlog_gtid_pos"); + DBUG_ENTER("spider_db_mbase::select_binlog_gtid_pos"); str->length(0); if (str->reserve( SPIDER_SQL_BINLOG_GTID_POS_LEN + @@ -2829,7 +2990,7 @@ int spider_db_mysql::select_binlog_gtid_pos( DBUG_PRINT("info", ("spider error_num=%d 1", error_num)); DBUG_RETURN(error_num); } - if (!(error_num = ((spider_db_mysql_result *)*res)->fetch_select_binlog_gtid_pos(>id_pos))) + if (!(error_num = ((spider_db_mbase_result *)*res)->fetch_select_binlog_gtid_pos(>id_pos))) { spider_store_binlog_pos_gtid(table, gtid_pos, strlen(gtid_pos), conn->access_charset); } @@ -2846,18 +3007,18 @@ int spider_db_mysql::select_binlog_gtid_pos( } #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) -int spider_db_mysql::append_sql( +int spider_db_mbase::append_sql( char *sql, ulong sql_length, st_spider_db_request_key *request_key ) { - DBUG_ENTER("spider_db_mysql::append_sql"); + DBUG_ENTER("spider_db_mbase::append_sql"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_ASSERT(0); DBUG_RETURN(0); } -int spider_db_mysql::append_open_handler( +int spider_db_mbase::append_open_handler( uint handler_id, const char *db_name, const char *table_name, @@ -2865,13 +3026,13 @@ int spider_db_mysql::append_open_handler( const char *sql, st_spider_db_request_key *request_key ) { - DBUG_ENTER("spider_db_mysql::append_open_handler"); + DBUG_ENTER("spider_db_mbase::append_open_handler"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_ASSERT(0); DBUG_RETURN(0); } -int spider_db_mysql::append_select( +int spider_db_mbase::append_select( uint handler_id, spider_string *sql, SPIDER_DB_HS_STRING_REF_BUFFER *keys, @@ -2879,24 +3040,24 @@ int spider_db_mysql::append_select( int skip, st_spider_db_request_key *request_key ) { - DBUG_ENTER("spider_db_mysql::append_select"); + DBUG_ENTER("spider_db_mbase::append_select"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_ASSERT(0); DBUG_RETURN(0); } -int spider_db_mysql::append_insert( +int spider_db_mbase::append_insert( uint handler_id, SPIDER_DB_HS_STRING_REF_BUFFER *upds, st_spider_db_request_key *request_key ) { - DBUG_ENTER("spider_db_mysql::append_insert"); + DBUG_ENTER("spider_db_mbase::append_insert"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_ASSERT(0); DBUG_RETURN(0); } -int spider_db_mysql::append_update( +int spider_db_mbase::append_update( uint handler_id, spider_string *sql, SPIDER_DB_HS_STRING_REF_BUFFER *keys, @@ -2907,13 +3068,13 @@ int spider_db_mysql::append_update( bool decrement, st_spider_db_request_key *request_key ) { - DBUG_ENTER("spider_db_mysql::append_update"); + DBUG_ENTER("spider_db_mbase::append_update"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_ASSERT(0); DBUG_RETURN(0); } -int spider_db_mysql::append_delete( +int spider_db_mbase::append_delete( uint handler_id, spider_string *sql, SPIDER_DB_HS_STRING_REF_BUFFER *keys, @@ -2921,27 +3082,27 @@ int spider_db_mysql::append_delete( int skip, st_spider_db_request_key *request_key ) { - DBUG_ENTER("spider_db_mysql::append_delete"); + DBUG_ENTER("spider_db_mbase::append_delete"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_ASSERT(0); DBUG_RETURN(0); } -void spider_db_mysql::reset_request_queue() +void spider_db_mbase::reset_request_queue() { - DBUG_ENTER("spider_db_mysql::reset_request_queue"); + DBUG_ENTER("spider_db_mbase::reset_request_queue"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_ASSERT(0); DBUG_VOID_RETURN; } #endif -size_t spider_db_mysql::escape_string( +size_t spider_db_mbase::escape_string( char *to, const char *from, size_t from_length ) { - DBUG_ENTER("spider_db_mysql::escape_string"); + DBUG_ENTER("spider_db_mbase::escape_string"); DBUG_PRINT("info",("spider this=%p", this)); if (db_conn->server_status & SERVER_STATUS_NO_BACKSLASH_ESCAPES) DBUG_RETURN(escape_quotes_for_mysql(db_conn->charset, to, 0, @@ -2950,14 +3111,14 @@ size_t spider_db_mysql::escape_string( from, from_length)); } -bool spider_db_mysql::have_lock_table_list() +bool spider_db_mbase::have_lock_table_list() { - DBUG_ENTER("spider_db_mysql::have_lock_table_list"); + DBUG_ENTER("spider_db_mbase::have_lock_table_list"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(lock_table_hash.records); } -int spider_db_mysql::append_lock_tables( +int spider_db_mbase::append_lock_tables( spider_string *str ) { int error_num; @@ -2972,9 +3133,9 @@ int spider_db_mysql::append_lock_tables( const char *table_name; uint table_name_length; CHARSET_INFO *table_name_charset; - DBUG_ENTER("spider_db_mysql::lock_tables"); + DBUG_ENTER("spider_db_mbase::lock_tables"); DBUG_PRINT("info",("spider this=%p", this)); - if ((error_num = spider_db_mysql_utility.append_lock_table_head(str))) + if ((error_num = spider_db_mbase_utility->append_lock_table_head(str))) { DBUG_RETURN(error_num); } @@ -3003,7 +3164,7 @@ int spider_db_mysql::append_lock_tables( DBUG_RETURN(0); } conn_link_idx = tmp_spider->conn_link_idx[tmp_link_idx]; - spider_mysql_share *db_share = (spider_mysql_share *) + spider_mbase_share *db_share = (spider_mbase_share *) tmp_spider->share->dbton_share[conn->dbton_id]; if (&db_share->db_names_str[conn_link_idx]) { @@ -3026,7 +3187,7 @@ int spider_db_mysql::append_lock_tables( tmp_spider->share->tgt_table_names_lengths[conn_link_idx]; table_name_charset = system_charset_info; } - if ((error_num = spider_db_mysql_utility. + if ((error_num = spider_db_mbase_utility-> append_lock_table_body( str, db_name, @@ -3048,54 +3209,54 @@ int spider_db_mysql::append_lock_tables( my_hash_delete(&lock_table_hash, (uchar*) tmp_link_for_hash); #endif } - if ((error_num = spider_db_mysql_utility.append_lock_table_tail(str))) + if ((error_num = spider_db_mbase_utility->append_lock_table_tail(str))) { DBUG_RETURN(error_num); } DBUG_RETURN(0); } -int spider_db_mysql::append_unlock_tables( +int spider_db_mbase::append_unlock_tables( spider_string *str ) { int error_num; - DBUG_ENTER("spider_db_mysql::append_unlock_tables"); + DBUG_ENTER("spider_db_mbase::append_unlock_tables"); DBUG_PRINT("info",("spider this=%p", this)); - if ((error_num = spider_db_mysql_utility.append_unlock_table(str))) + if ((error_num = spider_db_mbase_utility->append_unlock_table(str))) { DBUG_RETURN(error_num); } DBUG_RETURN(0); } -uint spider_db_mysql::get_lock_table_hash_count() +uint spider_db_mbase::get_lock_table_hash_count() { - DBUG_ENTER("spider_db_mysql::get_lock_table_hash_count"); + DBUG_ENTER("spider_db_mbase::get_lock_table_hash_count"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(lock_table_hash.records); } -void spider_db_mysql::reset_lock_table_hash() +void spider_db_mbase::reset_lock_table_hash() { - DBUG_ENTER("spider_db_mysql::reset_lock_table_hash"); + DBUG_ENTER("spider_db_mbase::reset_lock_table_hash"); DBUG_PRINT("info",("spider this=%p", this)); my_hash_reset(&lock_table_hash); DBUG_VOID_RETURN; } -uint spider_db_mysql::get_opened_handler_count() +uint spider_db_mbase::get_opened_handler_count() { - DBUG_ENTER("spider_db_mysql::get_opened_handler_count"); + DBUG_ENTER("spider_db_mbase::get_opened_handler_count"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(handler_open_array.elements); } -void spider_db_mysql::reset_opened_handler() +void spider_db_mbase::reset_opened_handler() { ha_spider *tmp_spider; int tmp_link_idx; SPIDER_LINK_FOR_HASH **tmp_link_for_hash; - DBUG_ENTER("spider_db_mysql::reset_opened_handler"); + DBUG_ENTER("spider_db_mbase::reset_opened_handler"); DBUG_PRINT("info",("spider this=%p", this)); while ((tmp_link_for_hash = (SPIDER_LINK_FOR_HASH **) pop_dynamic(&handler_open_array))) @@ -3107,7 +3268,7 @@ void spider_db_mysql::reset_opened_handler() DBUG_VOID_RETURN; } -void spider_db_mysql::set_dup_key_idx( +void spider_db_mbase::set_dup_key_idx( ha_spider *spider, int link_idx ) { @@ -3116,7 +3277,7 @@ void spider_db_mysql::set_dup_key_idx( int key_name_length; int max_length = 0; const char *key_name; - DBUG_ENTER("spider_db_mysql::set_dup_key_idx"); + DBUG_ENTER("spider_db_mbase::set_dup_key_idx"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_PRINT("info",("spider error_str=%s", conn->error_str)); for (roop_count = 0; roop_count < table->s->keys; roop_count++) @@ -3156,21 +3317,42 @@ void spider_db_mysql::set_dup_key_idx( DBUG_VOID_RETURN; } -bool spider_db_mysql::cmp_request_key_to_snd( +bool spider_db_mbase::cmp_request_key_to_snd( st_spider_db_request_key *request_key ) { - DBUG_ENTER("spider_db_mysql::cmp_request_key_to_snd"); + DBUG_ENTER("spider_db_mbase::cmp_request_key_to_snd"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(TRUE); } -spider_db_mysql_util::spider_db_mysql_util() : spider_db_util() +spider_db_mbase_util::spider_db_mbase_util() : spider_db_util() +{ + DBUG_ENTER("spider_db_mbase_util::spider_db_mbase_util"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_db_mysql_util::spider_db_mysql_util() : spider_db_mbase_util() { DBUG_ENTER("spider_db_mysql_util::spider_db_mysql_util"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_VOID_RETURN; } +spider_db_mariadb_util::spider_db_mariadb_util() : spider_db_mbase_util() +{ + DBUG_ENTER("spider_db_mariadb_util::spider_db_mariadb_util"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_db_mbase_util::~spider_db_mbase_util() +{ + DBUG_ENTER("spider_db_mbase_util::~spider_db_mbase_util"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + spider_db_mysql_util::~spider_db_mysql_util() { DBUG_ENTER("spider_db_mysql_util::~spider_db_mysql_util"); @@ -3178,25 +3360,32 @@ spider_db_mysql_util::~spider_db_mysql_util() DBUG_VOID_RETURN; } -int spider_db_mysql_util::append_name( +spider_db_mariadb_util::~spider_db_mariadb_util() +{ + DBUG_ENTER("spider_db_mariadb_util::~spider_db_mariadb_util"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +int spider_db_mbase_util::append_name( spider_string *str, const char *name, uint name_length ) { - DBUG_ENTER("spider_db_mysql_util::append_name"); + DBUG_ENTER("spider_db_mbase_util::append_name"); str->q_append(SPIDER_SQL_NAME_QUOTE_STR, SPIDER_SQL_NAME_QUOTE_LEN); str->q_append(name, name_length); str->q_append(SPIDER_SQL_NAME_QUOTE_STR, SPIDER_SQL_NAME_QUOTE_LEN); DBUG_RETURN(0); } -int spider_db_mysql_util::append_name_with_charset( +int spider_db_mbase_util::append_name_with_charset( spider_string *str, const char *name, uint name_length, CHARSET_INFO *name_charset ) { - DBUG_ENTER("spider_db_mysql_util::append_name_with_charset"); + DBUG_ENTER("spider_db_mbase_util::append_name_with_charset"); if (str->reserve(SPIDER_SQL_NAME_QUOTE_LEN * 2 + name_length * 2)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); str->q_append(SPIDER_SQL_NAME_QUOTE_STR, SPIDER_SQL_NAME_QUOTE_LEN); @@ -3207,17 +3396,17 @@ int spider_db_mysql_util::append_name_with_charset( DBUG_RETURN(0); } -bool spider_db_mysql_util::is_name_quote( +bool spider_db_mbase_util::is_name_quote( const char head_code ) { - DBUG_ENTER("spider_db_mysql_util::is_name_quote"); + DBUG_ENTER("spider_db_mbase_util::is_name_quote"); DBUG_RETURN(head_code == *name_quote_str); } -int spider_db_mysql_util::append_escaped_name_quote( +int spider_db_mbase_util::append_escaped_name_quote( spider_string *str ) { - DBUG_ENTER("spider_db_mysql_util::append_escaped_name_quote"); + DBUG_ENTER("spider_db_mbase_util::append_escaped_name_quote"); if (str->reserve(SPIDER_SQL_NAME_QUOTE_LEN * 2)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); str->q_append(SPIDER_SQL_NAME_QUOTE_STR, SPIDER_SQL_NAME_QUOTE_LEN); @@ -3225,7 +3414,7 @@ int spider_db_mysql_util::append_escaped_name_quote( DBUG_RETURN(0); } -int spider_db_mysql_util::append_column_value( +int spider_db_mbase_util::append_column_value( ha_spider *spider, spider_string *str, Field *field, @@ -3238,7 +3427,7 @@ int spider_db_mysql_util::append_column_value( uint length; THD *thd = field->table->in_use; Time_zone *saved_time_zone = thd->variables.time_zone; - DBUG_ENTER("spider_db_mysql_util::append_column_value"); + DBUG_ENTER("spider_db_mbase_util::append_column_value"); tmp_str.init_calc_mem(113); thd->variables.time_zone = UTC; @@ -3403,7 +3592,7 @@ int spider_db_mysql_util::append_column_value( DBUG_RETURN(0); } -int spider_db_mysql_util::append_from_with_alias( +int spider_db_mbase_util::append_from_with_alias( spider_string *str, const char **table_names, uint *table_name_lengths, @@ -3414,7 +3603,7 @@ int spider_db_mysql_util::append_from_with_alias( bool over_write ) { uint roop_count, length = 0; - DBUG_ENTER("spider_db_mysql_util::append_from_with_alias"); + DBUG_ENTER("spider_db_mbase_util::append_from_with_alias"); DBUG_PRINT("info",("spider this=%p", this)); if (!over_write) { @@ -3437,11 +3626,11 @@ int spider_db_mysql_util::append_from_with_alias( DBUG_RETURN(0); } -int spider_db_mysql_util::append_trx_isolation( +int spider_db_mbase_util::append_trx_isolation( spider_string *str, int trx_isolation ) { - DBUG_ENTER("spider_db_mysql_util::append_trx_isolation"); + DBUG_ENTER("spider_db_mbase_util::append_trx_isolation"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_SEMICOLON_LEN + SPIDER_SQL_ISO_READ_UNCOMMITTED_LEN)) @@ -3474,11 +3663,11 @@ int spider_db_mysql_util::append_trx_isolation( DBUG_RETURN(0); } -int spider_db_mysql_util::append_autocommit( +int spider_db_mbase_util::append_autocommit( spider_string *str, bool autocommit ) { - DBUG_ENTER("spider_db_mysql_util::append_autocommit"); + DBUG_ENTER("spider_db_mbase_util::append_autocommit"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_SEMICOLON_LEN + SPIDER_SQL_AUTOCOMMIT_OFF_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -3497,11 +3686,11 @@ int spider_db_mysql_util::append_autocommit( DBUG_RETURN(0); } -int spider_db_mysql_util::append_sql_log_off( +int spider_db_mbase_util::append_sql_log_off( spider_string *str, bool sql_log_off ) { - DBUG_ENTER("spider_db_mysql_util::append_sql_log_off"); + DBUG_ENTER("spider_db_mbase_util::append_sql_log_off"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_SEMICOLON_LEN + SPIDER_SQL_SQL_LOG_OFF_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -3518,12 +3707,12 @@ int spider_db_mysql_util::append_sql_log_off( DBUG_RETURN(0); } -int spider_db_mysql_util::append_time_zone( +int spider_db_mbase_util::append_time_zone( spider_string *str, Time_zone *time_zone ) { const String *tz_str = time_zone->get_name(); - DBUG_ENTER("spider_db_mysql_util::append_time_zone"); + DBUG_ENTER("spider_db_mbase_util::append_time_zone"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_SEMICOLON_LEN + SPIDER_SQL_TIME_ZONE_LEN + tz_str->length() + SPIDER_SQL_VALUE_QUOTE_LEN)) @@ -3536,10 +3725,10 @@ int spider_db_mysql_util::append_time_zone( DBUG_RETURN(0); } -int spider_db_mysql_util::append_start_transaction( +int spider_db_mbase_util::append_start_transaction( spider_string *str ) { - DBUG_ENTER("spider_db_mysql_util::append_start_transaction"); + DBUG_ENTER("spider_db_mbase_util::append_start_transaction"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_SEMICOLON_LEN + SPIDER_SQL_START_TRANSACTION_LEN)) @@ -3553,11 +3742,11 @@ int spider_db_mysql_util::append_start_transaction( DBUG_RETURN(0); } -int spider_db_mysql_util::append_xa_start( +int spider_db_mbase_util::append_xa_start( spider_string *str, XID *xid ) { - DBUG_ENTER("spider_db_mysql_util::append_xa_start"); + DBUG_ENTER("spider_db_mbase_util::append_xa_start"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_SEMICOLON_LEN + SPIDER_SQL_XA_START_LEN + XIDDATASIZE + sizeof(long) + 9)) @@ -3571,10 +3760,10 @@ int spider_db_mysql_util::append_xa_start( DBUG_RETURN(0); } -int spider_db_mysql_util::append_lock_table_head( +int spider_db_mbase_util::append_lock_table_head( spider_string *str ) { - DBUG_ENTER("spider_db_mysql_util::append_lock_table_head"); + DBUG_ENTER("spider_db_mbase_util::append_lock_table_head"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_LOCK_TABLE_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -3582,7 +3771,7 @@ int spider_db_mysql_util::append_lock_table_head( DBUG_RETURN(0); } -int spider_db_mysql_util::append_lock_table_body( +int spider_db_mbase_util::append_lock_table_body( spider_string *str, const char *db_name, uint db_name_length, @@ -3592,7 +3781,7 @@ int spider_db_mysql_util::append_lock_table_body( CHARSET_INFO *table_name_charset, int lock_type ) { - DBUG_ENTER("spider_db_mysql_util::append_lock_table_body"); + DBUG_ENTER("spider_db_mbase_util::append_lock_table_body"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_NAME_QUOTE_LEN)) { @@ -3621,19 +3810,19 @@ int spider_db_mysql_util::append_lock_table_body( DBUG_RETURN(0); } -int spider_db_mysql_util::append_lock_table_tail( +int spider_db_mbase_util::append_lock_table_tail( spider_string *str ) { - DBUG_ENTER("spider_db_mysql_util::append_lock_table_tail"); + DBUG_ENTER("spider_db_mbase_util::append_lock_table_tail"); DBUG_PRINT("info",("spider this=%p", this)); str->length(str->length() - SPIDER_SQL_COMMA_LEN); DBUG_RETURN(0); } -int spider_db_mysql_util::append_unlock_table( +int spider_db_mbase_util::append_unlock_table( spider_string *str ) { - DBUG_ENTER("spider_db_mysql_util::append_unlock_table"); + DBUG_ENTER("spider_db_mbase_util::append_unlock_table"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_UNLOCK_TABLE_LEN)) { @@ -3643,7 +3832,7 @@ int spider_db_mysql_util::append_unlock_table( DBUG_RETURN(0); } -int spider_db_mysql_util::open_item_func( +int spider_db_mbase_util::open_item_func( Item_func *item_func, ha_spider *spider, spider_string *str, @@ -3652,7 +3841,6 @@ int spider_db_mysql_util::open_item_func( bool use_fields, spider_fields *fields ) { - uint dbton_id = spider_dbton_mysql.dbton_id; int error_num; Item *item, **item_list = item_func->arguments(); Field *field; @@ -3665,7 +3853,7 @@ int spider_db_mysql_util::open_item_func( last_str_length = SPIDER_SQL_NULL_CHAR_LEN; int use_pushdown_udf; bool merge_func = FALSE; - DBUG_ENTER("spider_db_mysql_util::open_item_func"); + DBUG_ENTER("spider_db_mbase_util::open_item_func"); if (str) { if (str->reserve(SPIDER_SQL_OPEN_PAREN_LEN)) @@ -4730,7 +4918,7 @@ int spider_db_mysql_util::open_item_func( } #ifdef HANDLER_HAS_DIRECT_AGGREGATE -int spider_db_mysql_util::open_item_sum_func( +int spider_db_mbase_util::open_item_sum_func( Item_sum *item_sum, ha_spider *spider, spider_string *str, @@ -4739,10 +4927,9 @@ int spider_db_mysql_util::open_item_sum_func( bool use_fields, spider_fields *fields ) { - uint dbton_id = spider_dbton_mysql.dbton_id; uint roop_count, item_count = item_sum->get_arg_count(); int error_num; - DBUG_ENTER("spider_db_mysql_util::open_item_sum_func"); + DBUG_ENTER("spider_db_mbase_util::open_item_sum_func"); DBUG_PRINT("info",("spider Sumfunctype = %d", item_sum->sum_func())); switch (item_sum->sum_func()) { @@ -4848,11 +5035,11 @@ int spider_db_mysql_util::open_item_sum_func( } #endif -int spider_db_mysql_util::append_escaped_util( +int spider_db_mbase_util::append_escaped_util( spider_string *to, String *from ) { - DBUG_ENTER("spider_db_mysql_util::append_escaped_util"); + DBUG_ENTER("spider_db_mbase_util::append_escaped_util"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_PRINT("info",("spider from=%s", from->charset()->csname)); DBUG_PRINT("info",("spider to=%s", to->charset()->csname)); @@ -4861,7 +5048,7 @@ int spider_db_mysql_util::append_escaped_util( } #ifdef SPIDER_HAS_GROUP_BY_HANDLER -int spider_db_mysql_util::append_table( +int spider_db_mbase_util::append_table( ha_spider *spider, spider_fields *fields, spider_string *str, @@ -4874,13 +5061,12 @@ int spider_db_mysql_util::append_table( ) { int error_num; bool use_cond_table_list = FALSE; - spider_mysql_share *db_share; - spider_mysql_handler *dbton_hdl; + spider_mbase_share *db_share; + spider_mbase_handler *dbton_hdl; SPIDER_TABLE_HOLDER *table_holder; - uint dbton_id = spider_dbton_mysql.dbton_id; TABLE_LIST *cond_table_list = *cond_table_list_ptr; ha_spider *spd; - DBUG_ENTER("spider_db_mysql_util::append_table"); + DBUG_ENTER("spider_db_mbase_util::append_table"); DBUG_PRINT("info",("spider table_list=%p", table_list)); DBUG_PRINT("info",("spider table_list->outer_join=%u", table_list->outer_join)); @@ -4987,9 +5173,9 @@ int spider_db_mysql_util::append_table( { table_holder = fields->get_table_holder(table_list->table); spd = table_holder->spider; - db_share = (spider_mysql_share *) + db_share = (spider_mbase_share *) spd->share->dbton_share[dbton_id]; - dbton_hdl = (spider_mysql_handler *) + dbton_hdl = (spider_mbase_handler *) spd->dbton_handler[dbton_id]; dbton_hdl->table_name_pos = str->length(); @@ -5084,7 +5270,7 @@ int spider_db_mysql_util::append_table( DBUG_RETURN(0); } -int spider_db_mysql_util::append_tables_top_down( +int spider_db_mbase_util::append_tables_top_down( ha_spider *spider, spider_fields *fields, spider_string *str, @@ -5097,7 +5283,7 @@ int spider_db_mysql_util::append_tables_top_down( uint outer_join_backup; TABLE_LIST *cur_table_list, *prev_table_list = NULL, *cond_table_list = NULL; bool first; - DBUG_ENTER("spider_db_mysql_util::append_tables_top_down"); + DBUG_ENTER("spider_db_mbase_util::append_tables_top_down"); DBUG_PRINT("info",("spider this=%p", this)); if ( table_list->outer_join || @@ -5223,7 +5409,7 @@ int spider_db_mysql_util::append_tables_top_down( str->q_append(SPIDER_SQL_ON_STR, SPIDER_SQL_ON_LEN); } if ((error_num = spider_db_print_item_type(on_expr, NULL, - spider, str, NULL, 0, spider_dbton_mysql.dbton_id, TRUE, fields))) + spider, str, NULL, 0, dbton_id, TRUE, fields))) { DBUG_RETURN(error_num); } @@ -5232,14 +5418,14 @@ int spider_db_mysql_util::append_tables_top_down( DBUG_RETURN(0); } -int spider_db_mysql_util::append_tables_top_down_check( +int spider_db_mbase_util::append_tables_top_down_check( TABLE_LIST *table_list, TABLE_LIST **used_table_list, uint *current_pos ) { int error_num; TABLE_LIST *cur_table_list; - DBUG_ENTER("spider_db_mysql_util::append_tables_top_down_check"); + DBUG_ENTER("spider_db_mbase_util::append_tables_top_down_check"); DBUG_PRINT("info",("spider this=%p", this)); List_iterator_fast<TABLE_LIST> it1(table_list->nested_join->join_list); while ((cur_table_list = it1++)) @@ -5256,7 +5442,7 @@ int spider_db_mysql_util::append_tables_top_down_check( DBUG_RETURN(0); } -int spider_db_mysql_util::append_embedding_tables( +int spider_db_mbase_util::append_embedding_tables( ha_spider *spider, spider_fields *fields, spider_string *str, @@ -5267,7 +5453,7 @@ int spider_db_mysql_util::append_embedding_tables( ) { int error_num; TABLE_LIST *embedding = table_list->embedding; - DBUG_ENTER("spider_db_mysql_util::append_embedding_tables"); + DBUG_ENTER("spider_db_mbase_util::append_embedding_tables"); DBUG_PRINT("info",("spider this=%p", this)); if (embedding) { @@ -5310,7 +5496,7 @@ int spider_db_mysql_util::append_embedding_tables( DBUG_RETURN(0); } -int spider_db_mysql_util::append_from_and_tables( +int spider_db_mbase_util::append_from_and_tables( ha_spider *spider, spider_fields *fields, spider_string *str, @@ -5322,7 +5508,7 @@ int spider_db_mysql_util::append_from_and_tables( TABLE *table; TABLE_LIST **used_table_list, *prev_table_list = NULL, *cond_table_list = NULL; - DBUG_ENTER("spider_db_mysql_util::append_from_and_tables"); + DBUG_ENTER("spider_db_mbase_util::append_from_and_tables"); DBUG_PRINT("info",("spider this=%p", this)); used_table_list = (TABLE_LIST **) my_alloca(sizeof(TABLE_LIST *) * table_count); @@ -5387,19 +5573,19 @@ int spider_db_mysql_util::append_from_and_tables( DBUG_RETURN(0); } -int spider_db_mysql_util::reappend_tables( +int spider_db_mbase_util::reappend_tables( spider_fields *fields, SPIDER_LINK_IDX_CHAIN *link_idx_chain, spider_string *str ) { int error_num; - uint dbton_id = spider_dbton_mysql.dbton_id, length; + uint32 length; ha_spider *spider; - spider_mysql_share *db_share; - spider_mysql_handler *dbton_hdl; + spider_mbase_share *db_share; + spider_mbase_handler *dbton_hdl; SPIDER_TABLE_HOLDER *table_holder; SPIDER_LINK_IDX_HOLDER *link_idx_holder; - DBUG_ENTER("spider_db_mysql_util::reappend_tables"); + DBUG_ENTER("spider_db_mbase_util::reappend_tables"); DBUG_PRINT("info",("spider this=%p", this)); length = str->length(); fields->set_pos_to_first_table_on_link_idx_chain(link_idx_chain); @@ -5409,11 +5595,11 @@ int spider_db_mysql_util::reappend_tables( link_idx_holder = fields->get_next_table_on_link_idx_chain(link_idx_chain); spider = table_holder->spider; - db_share = (spider_mysql_share *) + db_share = (spider_mbase_share *) spider->share->dbton_share[dbton_id]; if (!db_share->same_db_table_name) { - dbton_hdl = (spider_mysql_handler *) spider->dbton_handler[dbton_id]; + dbton_hdl = (spider_mbase_handler *) spider->dbton_handler[dbton_id]; str->length(dbton_hdl->table_name_pos); if ((error_num = db_share->append_table_name_with_adjusting(str, spider->conn_link_idx[link_idx_holder->link_idx]))) @@ -5426,10 +5612,10 @@ int spider_db_mysql_util::reappend_tables( DBUG_RETURN(0); } -int spider_db_mysql_util::append_where( +int spider_db_mbase_util::append_where( spider_string *str ) { - DBUG_ENTER("spider_db_mysql_util::append_where"); + DBUG_ENTER("spider_db_mbase_util::append_where"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_WHERE_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -5437,10 +5623,10 @@ int spider_db_mysql_util::append_where( DBUG_RETURN(0); } -int spider_db_mysql_util::append_having( +int spider_db_mbase_util::append_having( spider_string *str ) { - DBUG_ENTER("spider_db_mysql_util::append_having"); + DBUG_ENTER("spider_db_mbase_util::append_having"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_HAVING_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -5449,11 +5635,15 @@ int spider_db_mysql_util::append_having( } #endif -spider_mysql_share::spider_mysql_share( - st_spider_share *share +spider_mbase_share::spider_mbase_share( + st_spider_share *share, + uint dbton_id, + spider_db_mbase_util *spider_db_mbase_utility ) : spider_db_share( - share + share, + dbton_id ), + spider_db_mbase_utility(spider_db_mbase_utility), table_select(NULL), table_select_pos(0), key_select(NULL), @@ -5474,16 +5664,39 @@ spider_mysql_share::spider_mysql_share( same_db_table_name(TRUE), first_all_link_idx(-1) { - DBUG_ENTER("spider_mysql_share::spider_mysql_share"); + DBUG_ENTER("spider_mbase_share::spider_mbase_share"); DBUG_PRINT("info",("spider this=%p", this)); spider_alloc_calc_mem_init(mem_calc, 71); spider_alloc_calc_mem(spider_current_trx, mem_calc, sizeof(*this)); DBUG_VOID_RETURN; } -spider_mysql_share::~spider_mysql_share() +spider_mysql_share::spider_mysql_share( + st_spider_share *share +) : spider_mbase_share( + share, + spider_db_mysql_utility.dbton_id, + &spider_db_mysql_utility +) { + DBUG_ENTER("spider_mysql_share::spider_mysql_share"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} +spider_mariadb_share::spider_mariadb_share( + st_spider_share *share +) : spider_mbase_share( + share, + spider_db_mariadb_utility.dbton_id, + &spider_db_mariadb_utility +) { + DBUG_ENTER("spider_mariadb_share::spider_mariadb_share"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_mbase_share::~spider_mbase_share() { - DBUG_ENTER("spider_mysql_share::~spider_mysql_share"); + DBUG_ENTER("spider_mbase_share::~spider_mbase_share"); DBUG_PRINT("info",("spider this=%p", this)); if (table_select) delete [] table_select; @@ -5504,13 +5717,27 @@ spider_mysql_share::~spider_mysql_share() DBUG_VOID_RETURN; } -int spider_mysql_share::init() +spider_mysql_share::~spider_mysql_share() +{ + DBUG_ENTER("spider_mysql_share::~spider_mysql_share"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_mariadb_share::~spider_mariadb_share() +{ + DBUG_ENTER("spider_mariadb_share::~spider_mariadb_share"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +int spider_mbase_share::init() { int error_num; uint roop_count; TABLE_SHARE *table_share = spider_share->table_share; uint keys = table_share ? table_share->keys : 0; - DBUG_ENTER("spider_mysql_share::init"); + DBUG_ENTER("spider_mbase_share::init"); DBUG_PRINT("info",("spider this=%p", this)); if (!(key_select_pos = (int *) spider_bulk_alloc_mem(spider_current_trx, 112, @@ -5571,33 +5798,33 @@ int spider_mysql_share::init() DBUG_RETURN(error_num); } -uint spider_mysql_share::get_column_name_length( +uint spider_mbase_share::get_column_name_length( uint field_index ) { - DBUG_ENTER("spider_mysql_share::get_column_name_length"); + DBUG_ENTER("spider_mbase_share::get_column_name_length"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(column_name_str[field_index].length()); } -int spider_mysql_share::append_column_name( +int spider_mbase_share::append_column_name( spider_string *str, uint field_index ) { int error_num; - DBUG_ENTER("spider_mysql_share::append_column_name"); + DBUG_ENTER("spider_mbase_share::append_column_name"); DBUG_PRINT("info",("spider this=%p", this)); - error_num = spider_db_mysql_utility.append_name(str, + error_num = spider_db_mbase_utility->append_name(str, column_name_str[field_index].ptr(), column_name_str[field_index].length()); DBUG_RETURN(error_num); } -int spider_mysql_share::append_column_name_with_alias( +int spider_mbase_share::append_column_name_with_alias( spider_string *str, uint field_index, const char *alias, uint alias_length ) { - DBUG_ENTER("spider_mysql_share::append_column_name_with_alias"); + DBUG_ENTER("spider_mbase_share::append_column_name_with_alias"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve( alias_length + @@ -5609,7 +5836,7 @@ int spider_mysql_share::append_column_name_with_alias( DBUG_RETURN(0); } -int spider_mysql_share::append_table_name( +int spider_mbase_share::append_table_name( spider_string *str, int all_link_idx ) { @@ -5617,20 +5844,20 @@ int spider_mysql_share::append_table_name( uint db_nm_len = db_names_str[all_link_idx].length(); const char *table_nm = table_names_str[all_link_idx].ptr(); uint table_nm_len = table_names_str[all_link_idx].length(); - DBUG_ENTER("spider_mysql_share::append_table_name"); + DBUG_ENTER("spider_mbase_share::append_table_name"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(db_nm_len + SPIDER_SQL_DOT_LEN + table_nm_len + /* SPIDER_SQL_NAME_QUOTE_LEN */ 4)) { DBUG_RETURN(HA_ERR_OUT_OF_MEM); } - spider_db_mysql_utility.append_name(str, db_nm, db_nm_len); + spider_db_mbase_utility->append_name(str, db_nm, db_nm_len); str->q_append(SPIDER_SQL_DOT_STR, SPIDER_SQL_DOT_LEN); - spider_db_mysql_utility.append_name(str, table_nm, table_nm_len); + spider_db_mbase_utility->append_name(str, table_nm, table_nm_len); DBUG_RETURN(0); } -int spider_mysql_share::append_table_name_with_adjusting( +int spider_mbase_share::append_table_name_with_adjusting( spider_string *str, int all_link_idx ) { @@ -5640,11 +5867,11 @@ int spider_mysql_share::append_table_name_with_adjusting( const char *table_nm = table_names_str[all_link_idx].ptr(); uint table_nm_len = table_names_str[all_link_idx].length(); uint table_nm_max_len = table_nm_max_length; - DBUG_ENTER("spider_mysql_share::append_table_name_with_adjusting"); + DBUG_ENTER("spider_mbase_share::append_table_name_with_adjusting"); DBUG_PRINT("info",("spider this=%p", this)); - spider_db_mysql_utility.append_name(str, db_nm, db_nm_len); + spider_db_mbase_utility->append_name(str, db_nm, db_nm_len); str->q_append(SPIDER_SQL_DOT_STR, SPIDER_SQL_DOT_LEN); - spider_db_mysql_utility.append_name(str, table_nm, table_nm_len); + spider_db_mbase_utility->append_name(str, table_nm, table_nm_len); uint length = db_nm_max_len - db_nm_len + table_nm_max_len - table_nm_len; @@ -5653,7 +5880,7 @@ int spider_mysql_share::append_table_name_with_adjusting( DBUG_RETURN(0); } -int spider_mysql_share::append_from_with_adjusted_table_name( +int spider_mbase_share::append_from_with_adjusted_table_name( spider_string *str, int *table_name_pos ) { @@ -5663,7 +5890,7 @@ int spider_mysql_share::append_from_with_adjusted_table_name( const char *table_nm = table_names_str[0].ptr(); uint table_nm_len = table_names_str[0].length(); uint table_nm_max_len = table_nm_max_length; - DBUG_ENTER("spider_mysql_share::append_from_with_adjusted_table_name"); + DBUG_ENTER("spider_mbase_share::append_from_with_adjusted_table_name"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_FROM_LEN + db_nm_max_length + SPIDER_SQL_DOT_LEN + table_nm_max_length + @@ -5673,9 +5900,9 @@ int spider_mysql_share::append_from_with_adjusted_table_name( } str->q_append(SPIDER_SQL_FROM_STR, SPIDER_SQL_FROM_LEN); *table_name_pos = str->length(); - spider_db_mysql_utility.append_name(str, db_nm, db_nm_len); + spider_db_mbase_utility->append_name(str, db_nm, db_nm_len); str->q_append(SPIDER_SQL_DOT_STR, SPIDER_SQL_DOT_LEN); - spider_db_mysql_utility.append_name(str, table_nm, table_nm_len); + spider_db_mbase_utility->append_name(str, table_nm, table_nm_len); uint length = db_nm_max_len - db_nm_len + table_nm_max_len - table_nm_len; @@ -5684,14 +5911,13 @@ int spider_mysql_share::append_from_with_adjusted_table_name( DBUG_RETURN(0); } -int spider_mysql_share::create_table_names_str() +int spider_mbase_share::create_table_names_str() { int error_num, roop_count; uint table_nm_len, db_nm_len; spider_string *str, *first_tbl_nm_str, *first_db_nm_str, *first_db_tbl_str; char *first_tbl_nm, *first_db_nm; - uint dbton_id = spider_dbton_mysql.dbton_id; - DBUG_ENTER("spider_mysql_share::create_table_names_str"); + DBUG_ENTER("spider_mbase_share::create_table_names_str"); table_names_str = NULL; db_names_str = NULL; db_table_str = NULL; @@ -5822,9 +6048,9 @@ error: DBUG_RETURN(error_num); } -void spider_mysql_share::free_table_names_str() +void spider_mbase_share::free_table_names_str() { - DBUG_ENTER("spider_mysql_share::free_table_names_str"); + DBUG_ENTER("spider_mbase_share::free_table_names_str"); if (db_table_str) { delete [] db_table_str; @@ -5843,14 +6069,13 @@ void spider_mysql_share::free_table_names_str() DBUG_VOID_RETURN; } -int spider_mysql_share::create_column_name_str() +int spider_mbase_share::create_column_name_str() { spider_string *str; int error_num; Field **field; TABLE_SHARE *table_share = spider_share->table_share; - uint dbton_id = spider_dbton_mysql.dbton_id; - DBUG_ENTER("spider_mysql_share::create_column_name_str"); + DBUG_ENTER("spider_mbase_share::create_column_name_str"); if ( table_share->fields && !(column_name_str = new spider_string[table_share->fields]) @@ -5876,9 +6101,9 @@ error: DBUG_RETURN(error_num); } -void spider_mysql_share::free_column_name_str() +void spider_mbase_share::free_column_name_str() { - DBUG_ENTER("spider_mysql_share::free_column_name_str"); + DBUG_ENTER("spider_mbase_share::free_column_name_str"); if (column_name_str) { delete [] column_name_str; @@ -5887,12 +6112,12 @@ void spider_mysql_share::free_column_name_str() DBUG_VOID_RETURN; } -int spider_mysql_share::convert_key_hint_str() +int spider_mbase_share::convert_key_hint_str() { spider_string *tmp_key_hint; int roop_count; TABLE_SHARE *table_share = spider_share->table_share; - DBUG_ENTER("spider_mysql_share::convert_key_hint_str"); + DBUG_ENTER("spider_mbase_share::convert_key_hint_str"); if (spider_share->access_charset->cset != system_charset_info->cset) { /* need conversion */ @@ -5915,11 +6140,10 @@ int spider_mysql_share::convert_key_hint_str() DBUG_RETURN(0); } -int spider_mysql_share::append_show_table_status() +int spider_mbase_share::append_show_table_status() { int roop_count; spider_string *str; - uint dbton_id = spider_dbton_mysql.dbton_id; DBUG_ENTER("spider_mysql_append_show_table_status"); if (!(show_table_status = new spider_string[2 * spider_share->all_link_count])) @@ -5987,7 +6211,7 @@ error: DBUG_RETURN(HA_ERR_OUT_OF_MEM); } -void spider_mysql_share::free_show_table_status() +void spider_mbase_share::free_show_table_status() { DBUG_ENTER("spider_mysql_free_show_table_status"); if (show_table_status) @@ -5998,12 +6222,11 @@ void spider_mysql_share::free_show_table_status() DBUG_VOID_RETURN; } -int spider_mysql_share::append_show_records() +int spider_mbase_share::append_show_records() { int roop_count; spider_string *str; - uint dbton_id = spider_dbton_mysql.dbton_id; - DBUG_ENTER("spider_mysql_share::append_show_records"); + DBUG_ENTER("spider_mbase_share::append_show_records"); if (!(show_records = new spider_string[spider_share->all_link_count])) goto error; @@ -6038,9 +6261,9 @@ error: DBUG_RETURN(HA_ERR_OUT_OF_MEM); } -void spider_mysql_share::free_show_records() +void spider_mbase_share::free_show_records() { - DBUG_ENTER("spider_mysql_share::free_show_records"); + DBUG_ENTER("spider_mbase_share::free_show_records"); if (show_records) { delete [] show_records; @@ -6049,12 +6272,11 @@ void spider_mysql_share::free_show_records() DBUG_VOID_RETURN; } -int spider_mysql_share::append_show_index() +int spider_mbase_share::append_show_index() { int roop_count; spider_string *str; - uint dbton_id = spider_dbton_mysql.dbton_id; - DBUG_ENTER("spider_mysql_share::append_show_index"); + DBUG_ENTER("spider_mbase_share::append_show_index"); if (!(show_index = new spider_string[2 * spider_share->all_link_count])) goto error; @@ -6113,9 +6335,9 @@ error: DBUG_RETURN(HA_ERR_OUT_OF_MEM); } -void spider_mysql_share::free_show_index() +void spider_mbase_share::free_show_index() { - DBUG_ENTER("spider_mysql_share::free_show_index"); + DBUG_ENTER("spider_mbase_share::free_show_index"); if (show_index) { delete [] show_index; @@ -6124,13 +6346,13 @@ void spider_mysql_share::free_show_index() DBUG_VOID_RETURN; } -int spider_mysql_share::append_table_select() +int spider_mbase_share::append_table_select() { Field **field; uint field_length; spider_string *str = table_select; TABLE_SHARE *table_share = spider_share->table_share; - DBUG_ENTER("spider_mysql_share::append_table_select"); + DBUG_ENTER("spider_mbase_share::append_table_select"); if (!*table_share->field) DBUG_RETURN(0); @@ -6148,7 +6370,7 @@ int spider_mysql_share::append_table_select() DBUG_RETURN(append_from_with_adjusted_table_name(str, &table_select_pos)); } -int spider_mysql_share::append_key_select( +int spider_mbase_share::append_key_select( uint idx ) { KEY_PART_INFO *key_part; @@ -6158,7 +6380,7 @@ int spider_mysql_share::append_key_select( spider_string *str = &key_select[idx]; TABLE_SHARE *table_share = spider_share->table_share; const KEY *key_info = &table_share->key_info[idx]; - DBUG_ENTER("spider_mysql_share::append_key_select"); + DBUG_ENTER("spider_mbase_share::append_key_select"); if (!spider_user_defined_key_parts(key_info)) DBUG_RETURN(0); @@ -6178,14 +6400,14 @@ int spider_mysql_share::append_key_select( DBUG_RETURN(append_from_with_adjusted_table_name(str, &key_select_pos[idx])); } -bool spider_mysql_share::need_change_db_table_name() +bool spider_mbase_share::need_change_db_table_name() { - DBUG_ENTER("spider_mysql_share::need_change_db_table_name"); + DBUG_ENTER("spider_mbase_share::need_change_db_table_name"); DBUG_RETURN(!same_db_table_name); } #ifdef SPIDER_HAS_DISCOVER_TABLE_STRUCTURE -int spider_mysql_share::discover_table_structure( +int spider_mbase_share::discover_table_structure( SPIDER_TRX *trx, SPIDER_SHARE *spider_share, spider_string *str @@ -6193,9 +6415,8 @@ int spider_mysql_share::discover_table_structure( int roop_count, error_num = HA_ERR_WRONG_COMMAND; char sql_buf[MAX_FIELD_WIDTH]; spider_string sql_str(sql_buf, sizeof(sql_buf), system_charset_info); - uint dbton_id = spider_dbton_mysql.dbton_id; uint strlen = str->length(); - DBUG_ENTER("spider_mysql_share::discover_table_structure"); + DBUG_ENTER("spider_mbase_share::discover_table_structure"); DBUG_PRINT("info",("spider this=%p", this)); sql_str.init_calc_mem(228); for (roop_count = 0; roop_count < (int) spider_share->all_link_count; @@ -6454,13 +6675,15 @@ int spider_mysql_share::discover_table_structure( } #endif -spider_mysql_handler::spider_mysql_handler( +spider_mbase_handler::spider_mbase_handler( ha_spider *spider, - spider_mysql_share *db_share + spider_mbase_share *db_share, + spider_db_mbase_util *spider_db_mbase_utility ) : spider_db_handler( spider, db_share ), + spider_db_mbase_utility(spider_db_mbase_utility), where_pos(0), order_pos(0), limit_pos(0), @@ -6484,16 +6707,42 @@ spider_mysql_handler::spider_mysql_handler( mysql_share(db_share), link_for_hash(NULL) { - DBUG_ENTER("spider_mysql_handler::spider_mysql_handler"); + DBUG_ENTER("spider_mbase_handler::spider_mbase_handler"); DBUG_PRINT("info",("spider this=%p", this)); spider_alloc_calc_mem_init(mem_calc, 183); spider_alloc_calc_mem(spider_current_trx, mem_calc, sizeof(*this)); DBUG_VOID_RETURN; } -spider_mysql_handler::~spider_mysql_handler() +spider_mysql_handler::spider_mysql_handler( + ha_spider *spider, + spider_mbase_share *db_share +) : spider_mbase_handler( + spider, + db_share, + &spider_db_mysql_utility +) { + DBUG_ENTER("spider_mysql_handler::spider_mysql_handler"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_mariadb_handler::spider_mariadb_handler( + ha_spider *spider, + spider_mbase_share *db_share +) : spider_mbase_handler( + spider, + db_share, + &spider_db_mariadb_utility +) { + DBUG_ENTER("spider_mariadb_handler::spider_mariadb_handler"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_mbase_handler::~spider_mbase_handler() { - DBUG_ENTER("spider_mysql_handler::~spider_mysql_handler"); + DBUG_ENTER("spider_mbase_handler::~spider_mbase_handler"); DBUG_PRINT("info",("spider this=%p", this)); while (union_table_name_pos_first) { @@ -6509,7 +6758,21 @@ spider_mysql_handler::~spider_mysql_handler() DBUG_VOID_RETURN; } -int spider_mysql_handler::init() +spider_mysql_handler::~spider_mysql_handler() +{ + DBUG_ENTER("spider_mysql_handler::~spider_mysql_handler"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_mariadb_handler::~spider_mariadb_handler() +{ + DBUG_ENTER("spider_mariadb_handler::~spider_mariadb_handler"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +int spider_mbase_handler::init() { uint roop_count; THD *thd = spider->trx->thd; @@ -6517,7 +6780,7 @@ int spider_mysql_handler::init() int init_sql_alloc_size = spider_param_init_sql_alloc_size(thd, share->init_sql_alloc_size); TABLE *table = spider->get_table(); - DBUG_ENTER("spider_mysql_handler::init"); + DBUG_ENTER("spider_mbase_handler::init"); DBUG_PRINT("info",("spider this=%p", this)); sql.init_calc_mem(59); sql_part.init_calc_mem(60); @@ -6572,7 +6835,7 @@ int spider_mysql_handler::init() } -int spider_mysql_handler::append_index_hint( +int spider_mbase_handler::append_index_hint( spider_string *str, int link_idx, ulong sql_type @@ -6583,7 +6846,7 @@ int spider_mysql_handler::append_index_hint( Index_hint *hint; // THD *thd = current_thd; int error_num = 0; - DBUG_ENTER("spider_mysql_handler::append_index_hint"); + DBUG_ENTER("spider_mbase_handler::append_index_hint"); DBUG_PRINT("info",("spider this=%p", this)); while(index_hints && (hint = iter++)) @@ -6626,13 +6889,13 @@ int spider_mysql_handler::append_index_hint( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_table_name_with_adjusting( +int spider_mbase_handler::append_table_name_with_adjusting( spider_string *str, int link_idx, ulong sql_type ) { int error_num = 0; - DBUG_ENTER("spider_mysql_handler::append_table_name_with_adjusting"); + DBUG_ENTER("spider_mbase_handler::append_table_name_with_adjusting"); DBUG_PRINT("info",("spider this=%p", this)); if (sql_type == SPIDER_SQL_TYPE_HANDLER) { @@ -6644,7 +6907,7 @@ int spider_mysql_handler::append_table_name_with_adjusting( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_key_column_types( +int spider_mbase_handler::append_key_column_types( const key_range *start_key, spider_string *str ) { @@ -6658,7 +6921,7 @@ int spider_mysql_handler::append_key_column_types( Field *field; char tmp_buf[MAX_FIELD_WIDTH]; spider_string tmp_str(tmp_buf, sizeof(tmp_buf), system_charset_info); - DBUG_ENTER("spider_mysql_handler::append_key_column_types"); + DBUG_ENTER("spider_mbase_handler::append_key_column_types"); DBUG_PRINT("info",("spider this=%p", this)); tmp_str.init_calc_mem(115); @@ -6712,7 +6975,7 @@ int spider_mysql_handler::append_key_column_types( DBUG_RETURN(0); } -int spider_mysql_handler::append_key_join_columns_for_bka( +int spider_mbase_handler::append_key_join_columns_for_bka( const key_range *start_key, spider_string *str, const char **table_aliases, @@ -6727,7 +6990,7 @@ int spider_mysql_handler::append_key_join_columns_for_bka( Field *field; char tmp_buf[MAX_FIELD_WIDTH]; bool start_where = ((int) str->length() == where_pos); - DBUG_ENTER("spider_mysql_handler::append_key_join_columns_for_bka"); + DBUG_ENTER("spider_mbase_handler::append_key_join_columns_for_bka"); DBUG_PRINT("info",("spider this=%p", this)); start_key_part_map = start_key->keypart_map & full_key_part_map; DBUG_PRINT("info", ("spider spider_user_defined_key_parts=%u", @@ -6776,11 +7039,11 @@ int spider_mysql_handler::append_key_join_columns_for_bka( DBUG_RETURN(0); } -int spider_mysql_handler::append_tmp_table_and_sql_for_bka( +int spider_mbase_handler::append_tmp_table_and_sql_for_bka( const key_range *start_key ) { int error_num; - DBUG_ENTER("spider_mysql_handler::append_tmp_table_and_sql_for_bka"); + DBUG_ENTER("spider_mbase_handler::append_tmp_table_and_sql_for_bka"); DBUG_PRINT("info",("spider this=%p", this)); char tmp_table_name[MAX_FIELD_WIDTH * 2], tgt_table_name[MAX_FIELD_WIDTH * 2]; @@ -6838,7 +7101,7 @@ int spider_mysql_handler::append_tmp_table_and_sql_for_bka( if ( (error_num = append_select_columns_with_alias(&sql, SPIDER_SQL_B_DOT_STR, SPIDER_SQL_B_DOT_LEN)) || - (error_num = spider_db_mysql_utility.append_from_with_alias(&sql, + (error_num = spider_db_mbase_utility->append_from_with_alias(&sql, table_names, table_name_lengths, table_aliases, table_alias_lengths, 2, &table_name_pos, FALSE)) @@ -6878,9 +7141,9 @@ int spider_mysql_handler::append_tmp_table_and_sql_for_bka( DBUG_RETURN(0); } -int spider_mysql_handler::reuse_tmp_table_and_sql_for_bka() +int spider_mbase_handler::reuse_tmp_table_and_sql_for_bka() { - DBUG_ENTER("spider_mysql_handler::reuse_tmp_table_and_sql_for_bka"); + DBUG_ENTER("spider_mbase_handler::reuse_tmp_table_and_sql_for_bka"); DBUG_PRINT("info",("spider this=%p", this)); tmp_sql.length(tmp_sql_pos4); sql.length(limit_pos); @@ -6888,13 +7151,13 @@ int spider_mysql_handler::reuse_tmp_table_and_sql_for_bka() DBUG_RETURN(0); } -void spider_mysql_handler::create_tmp_bka_table_name( +void spider_mbase_handler::create_tmp_bka_table_name( char *tmp_table_name, int *tmp_table_name_length, int link_idx ) { uint adjust_length, length; - DBUG_ENTER("spider_mysql_handler::create_tmp_bka_table_name"); + DBUG_ENTER("spider_mbase_handler::create_tmp_bka_table_name"); if (spider_param_bka_table_name_type(current_thd, mysql_share->spider_share-> bka_table_name_types[spider->conn_link_idx[link_idx]]) == 1) @@ -6936,7 +7199,7 @@ void spider_mysql_handler::create_tmp_bka_table_name( DBUG_VOID_RETURN; } -int spider_mysql_handler::append_create_tmp_bka_table( +int spider_mbase_handler::append_create_tmp_bka_table( const key_range *start_key, spider_string *str, char *tmp_table_name, @@ -6951,7 +7214,7 @@ int spider_mysql_handler::append_create_tmp_bka_table( uint bka_engine_length = strlen(bka_engine), cset_length = strlen(table_charset->csname), coll_length = strlen(table_charset->name); - DBUG_ENTER("spider_mysql_handler::append_create_tmp_bka_table"); + DBUG_ENTER("spider_mbase_handler::append_create_tmp_bka_table"); if (str->reserve(SPIDER_SQL_CREATE_TMP_LEN + tmp_table_name_length + SPIDER_SQL_OPEN_PAREN_LEN + SPIDER_SQL_ID_LEN + SPIDER_SQL_ID_TYPE_LEN + SPIDER_SQL_COMMA_LEN)) @@ -6979,7 +7242,7 @@ int spider_mysql_handler::append_create_tmp_bka_table( DBUG_RETURN(0); } -int spider_mysql_handler::append_drop_tmp_bka_table( +int spider_mbase_handler::append_drop_tmp_bka_table( spider_string *str, char *tmp_table_name, int tmp_table_name_length, @@ -6987,7 +7250,7 @@ int spider_mysql_handler::append_drop_tmp_bka_table( int *drop_table_end_pos, bool with_semicolon ) { - DBUG_ENTER("spider_mysql_handler::append_drop_tmp_bka_table"); + DBUG_ENTER("spider_mbase_handler::append_drop_tmp_bka_table"); if (str->reserve(SPIDER_SQL_DROP_TMP_LEN + tmp_table_name_length + (with_semicolon ? SPIDER_SQL_SEMICOLON_LEN : 0))) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -7000,7 +7263,7 @@ int spider_mysql_handler::append_drop_tmp_bka_table( DBUG_RETURN(0); } -int spider_mysql_handler::append_insert_tmp_bka_table( +int spider_mbase_handler::append_insert_tmp_bka_table( const key_range *start_key, spider_string *str, char *tmp_table_name, @@ -7008,7 +7271,7 @@ int spider_mysql_handler::append_insert_tmp_bka_table( int *db_name_pos ) { int error_num; - DBUG_ENTER("spider_mysql_handler::append_insert_tmp_bka_table"); + DBUG_ENTER("spider_mbase_handler::append_insert_tmp_bka_table"); if (str->reserve(SPIDER_SQL_INSERT_LEN + SPIDER_SQL_INTO_LEN + tmp_table_name_length + SPIDER_SQL_OPEN_PAREN_LEN + SPIDER_SQL_ID_LEN + SPIDER_SQL_COMMA_LEN)) @@ -7031,11 +7294,11 @@ int spider_mysql_handler::append_insert_tmp_bka_table( DBUG_RETURN(0); } -int spider_mysql_handler::append_union_table_and_sql_for_bka( +int spider_mbase_handler::append_union_table_and_sql_for_bka( const key_range *start_key ) { int error_num; - DBUG_ENTER("spider_mysql_handler::append_union_table_and_sql_for_bka"); + DBUG_ENTER("spider_mbase_handler::append_union_table_and_sql_for_bka"); DBUG_PRINT("info",("spider this=%p", this)); char tgt_table_name[MAX_FIELD_WIDTH * 2]; spider_string tgt_table_name_str(tgt_table_name, MAX_FIELD_WIDTH * 2, @@ -7082,7 +7345,7 @@ int spider_mysql_handler::append_union_table_and_sql_for_bka( tmp_sql_pos1 = sql.length(); if ( - (error_num = spider_db_mysql_utility.append_from_with_alias(&tmp_sql, + (error_num = spider_db_mbase_utility->append_from_with_alias(&tmp_sql, table_names, table_name_lengths, table_aliases, table_alias_lengths, 2, &table_name_pos, FALSE)) @@ -7124,15 +7387,15 @@ int spider_mysql_handler::append_union_table_and_sql_for_bka( DBUG_RETURN(0); } -int spider_mysql_handler::reuse_union_table_and_sql_for_bka() +int spider_mbase_handler::reuse_union_table_and_sql_for_bka() { - DBUG_ENTER("spider_mysql_handler::reuse_union_table_and_sql_for_bka"); + DBUG_ENTER("spider_mbase_handler::reuse_union_table_and_sql_for_bka"); DBUG_PRINT("info",("spider this=%p", this)); sql.length(tmp_sql_pos1); DBUG_RETURN(0); } -int spider_mysql_handler::append_insert_for_recovery( +int spider_mbase_handler::append_insert_for_recovery( ulong sql_type, int link_idx ) { @@ -7142,7 +7405,7 @@ int spider_mysql_handler::append_insert_for_recovery( uint field_name_length = 0; bool add_value = FALSE; spider_string *insert_sql; - DBUG_ENTER("spider_mysql_handler::append_insert_for_recovery"); + DBUG_ENTER("spider_mbase_handler::append_insert_for_recovery"); DBUG_PRINT("info",("spider this=%p", this)); if (sql_type == SPIDER_SQL_TYPE_INSERT_SQL) { @@ -7190,7 +7453,7 @@ int spider_mysql_handler::append_insert_for_recovery( insert_sql->q_append(SPIDER_SQL_NULL_STR, SPIDER_SQL_NULL_LEN); } else { if ( - spider_db_mysql_utility. + spider_db_mbase_utility-> append_column_value(spider, insert_sql, *field, NULL, share->access_charset) || insert_sql->reserve(SPIDER_SQL_COMMA_LEN) @@ -7211,13 +7474,13 @@ int spider_mysql_handler::append_insert_for_recovery( DBUG_RETURN(0); } -int spider_mysql_handler::append_update( +int spider_mbase_handler::append_update( const TABLE *table, my_ptrdiff_t ptr_diff ) { int error_num; spider_string *str = &update_sql; - DBUG_ENTER("spider_mysql_handler::append_update"); + DBUG_ENTER("spider_mbase_handler::append_update"); DBUG_PRINT("info",("spider this=%p", this)); if (str->length() > 0) { @@ -7236,7 +7499,7 @@ int spider_mysql_handler::append_update( DBUG_RETURN(0); } -int spider_mysql_handler::append_update( +int spider_mbase_handler::append_update( const TABLE *table, my_ptrdiff_t ptr_diff, int link_idx @@ -7244,7 +7507,7 @@ int spider_mysql_handler::append_update( int error_num; SPIDER_SHARE *share = spider->share; spider_string *str = &spider->result_list.update_sqls[link_idx]; - DBUG_ENTER("spider_mysql_handler::append_update"); + DBUG_ENTER("spider_mbase_handler::append_update"); DBUG_PRINT("info",("spider this=%p", this)); if (str->length() > 0) { @@ -7277,13 +7540,13 @@ int spider_mysql_handler::append_update( DBUG_RETURN(0); } -int spider_mysql_handler::append_delete( +int spider_mbase_handler::append_delete( const TABLE *table, my_ptrdiff_t ptr_diff ) { int error_num; spider_string *str = &update_sql; - DBUG_ENTER("spider_mysql_handler::append_delete"); + DBUG_ENTER("spider_mbase_handler::append_delete"); DBUG_PRINT("info",("spider this=%p", this)); if (str->length() > 0) { @@ -7303,14 +7566,14 @@ int spider_mysql_handler::append_delete( DBUG_RETURN(0); } -int spider_mysql_handler::append_delete( +int spider_mbase_handler::append_delete( const TABLE *table, my_ptrdiff_t ptr_diff, int link_idx ) { int error_num; spider_string *str = &spider->result_list.update_sqls[link_idx]; - DBUG_ENTER("spider_mysql_handler::append_delete"); + DBUG_ENTER("spider_mbase_handler::append_delete"); DBUG_PRINT("info",("spider this=%p", this)); if (str->length() > 0) { @@ -7330,21 +7593,21 @@ int spider_mysql_handler::append_delete( DBUG_RETURN(0); } -int spider_mysql_handler::append_insert_part() +int spider_mbase_handler::append_insert_part() { int error_num; - DBUG_ENTER("spider_mysql_handler::append_insert_part"); + DBUG_ENTER("spider_mbase_handler::append_insert_part"); DBUG_PRINT("info",("spider this=%p", this)); error_num = append_insert(&insert_sql, 0); DBUG_RETURN(error_num); } -int spider_mysql_handler::append_insert( +int spider_mbase_handler::append_insert( spider_string *str, int link_idx ) { SPIDER_SHARE *share = spider->share; - DBUG_ENTER("spider_mysql_handler::append_insert"); + DBUG_ENTER("spider_mbase_handler::append_insert"); if ( ( spider->write_can_replace || @@ -7408,20 +7671,20 @@ int spider_mysql_handler::append_insert( DBUG_RETURN(0); } -int spider_mysql_handler::append_update_part() +int spider_mbase_handler::append_update_part() { int error_num; - DBUG_ENTER("spider_mysql_handler::append_update_part"); + DBUG_ENTER("spider_mbase_handler::append_update_part"); DBUG_PRINT("info",("spider this=%p", this)); error_num = append_update(&update_sql, 0); DBUG_RETURN(error_num); } -int spider_mysql_handler::append_update( +int spider_mbase_handler::append_update( spider_string *str, int link_idx ) { - DBUG_ENTER("spider_mysql_handler::append_update"); + DBUG_ENTER("spider_mbase_handler::append_update"); if (str->reserve(SPIDER_SQL_UPDATE_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); str->q_append(SPIDER_SQL_UPDATE_STR, SPIDER_SQL_UPDATE_LEN); @@ -7448,19 +7711,19 @@ int spider_mysql_handler::append_update( DBUG_RETURN(0); } -int spider_mysql_handler::append_delete_part() +int spider_mbase_handler::append_delete_part() { int error_num; - DBUG_ENTER("spider_mysql_handler::append_delete_part"); + DBUG_ENTER("spider_mbase_handler::append_delete_part"); DBUG_PRINT("info",("spider this=%p", this)); error_num = append_delete(&update_sql); DBUG_RETURN(error_num); } -int spider_mysql_handler::append_delete( +int spider_mbase_handler::append_delete( spider_string *str ) { - DBUG_ENTER("spider_mysql_handler::append_delete"); + DBUG_ENTER("spider_mbase_handler::append_delete"); if (str->reserve(SPIDER_SQL_DELETE_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); str->q_append(SPIDER_SQL_DELETE_STR, SPIDER_SQL_DELETE_LEN); @@ -7489,22 +7752,22 @@ int spider_mysql_handler::append_delete( #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS -int spider_mysql_handler::append_increment_update_set_part() +int spider_mbase_handler::append_increment_update_set_part() { int error_num; - DBUG_ENTER("spider_mysql_handler::append_increment_update_set_part"); + DBUG_ENTER("spider_mbase_handler::append_increment_update_set_part"); DBUG_PRINT("info",("spider this=%p", this)); error_num = append_increment_update_set(&update_sql); DBUG_RETURN(error_num); } -int spider_mysql_handler::append_increment_update_set( +int spider_mbase_handler::append_increment_update_set( spider_string *str ) { uint field_name_length; uint roop_count; Field *field; - DBUG_ENTER("spider_mysql_handler::append_increment_update_set"); + DBUG_ENTER("spider_mbase_handler::append_increment_update_set"); if (str->reserve(SPIDER_SQL_SET_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); str->q_append(SPIDER_SQL_SET_STR, SPIDER_SQL_SET_LEN); @@ -7548,24 +7811,24 @@ int spider_mysql_handler::append_increment_update_set( #endif #endif -int spider_mysql_handler::append_update_set_part() +int spider_mbase_handler::append_update_set_part() { int error_num; - DBUG_ENTER("spider_mysql_handler::append_update_set_part"); + DBUG_ENTER("spider_mbase_handler::append_update_set_part"); DBUG_PRINT("info",("spider this=%p", this)); error_num = append_update_set(&update_sql); where_pos = update_sql.length(); DBUG_RETURN(error_num); } -int spider_mysql_handler::append_update_set( +int spider_mbase_handler::append_update_set( spider_string *str ) { uint field_name_length; SPIDER_SHARE *share = spider->share; TABLE *table = spider->get_table(); Field **fields; - DBUG_ENTER("spider_mysql_handler::append_update_set"); + DBUG_ENTER("spider_mbase_handler::append_update_set"); if (str->reserve(SPIDER_SQL_SET_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); str->q_append(SPIDER_SQL_SET_STR, SPIDER_SQL_SET_LEN); @@ -7595,7 +7858,7 @@ int spider_mysql_handler::append_update_set( table->read_set); #endif if ( - spider_db_mysql_utility. + spider_db_mbase_utility-> append_column_value(spider, str, *fields, NULL, share->access_charset) || str->reserve(SPIDER_SQL_COMMA_LEN) @@ -7617,17 +7880,17 @@ int spider_mysql_handler::append_update_set( } #ifdef HANDLER_HAS_DIRECT_UPDATE_ROWS -int spider_mysql_handler::append_direct_update_set_part() +int spider_mbase_handler::append_direct_update_set_part() { int error_num; - DBUG_ENTER("spider_mysql_handler::append_direct_update_set_part"); + DBUG_ENTER("spider_mbase_handler::append_direct_update_set_part"); DBUG_PRINT("info",("spider this=%p", this)); error_num = append_direct_update_set(&update_sql); where_pos = update_sql.length(); DBUG_RETURN(error_num); } -int spider_mysql_handler::append_direct_update_set( +int spider_mbase_handler::append_direct_update_set( spider_string *str ) { #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) @@ -7637,7 +7900,7 @@ int spider_mysql_handler::append_direct_update_set( TABLE *table = spider->get_table(); #endif #endif - DBUG_ENTER("spider_mysql_handler::append_direct_update_set"); + DBUG_ENTER("spider_mbase_handler::append_direct_update_set"); if ( spider->direct_update_kinds == SPIDER_SQL_KIND_SQL && spider->direct_update_fields @@ -7646,7 +7909,7 @@ int spider_mysql_handler::append_direct_update_set( DBUG_RETURN(HA_ERR_OUT_OF_MEM); str->q_append(SPIDER_SQL_SET_STR, SPIDER_SQL_SET_LEN); DBUG_RETURN(spider_db_append_update_columns(spider, str, NULL, 0, - spider_dbton_mysql.dbton_id, FALSE, NULL)); + dbton_id, FALSE, NULL)); } if ( @@ -7687,7 +7950,7 @@ int spider_mysql_handler::append_direct_update_set( table->read_set); #endif if ( - spider_db_mysql_utility. + spider_db_mbase_utility-> append_column_value(spider, str, top_table_field, NULL, share->access_charset) || str->reserve(SPIDER_SQL_COMMA_LEN) @@ -7711,57 +7974,57 @@ int spider_mysql_handler::append_direct_update_set( DBUG_RETURN(0); } -int spider_mysql_handler::append_dup_update_pushdown_part( +int spider_mbase_handler::append_dup_update_pushdown_part( const char *alias, uint alias_length ) { int error_num; - DBUG_ENTER("spider_mysql_handler::append_dup_update_pushdown_part"); + DBUG_ENTER("spider_mbase_handler::append_dup_update_pushdown_part"); DBUG_PRINT("info",("spider this=%p", this)); dup_update_sql.length(0); error_num = append_update_columns(&dup_update_sql, alias, alias_length); DBUG_RETURN(error_num); } -int spider_mysql_handler::append_update_columns_part( +int spider_mbase_handler::append_update_columns_part( const char *alias, uint alias_length ) { int error_num; - DBUG_ENTER("spider_mysql_handler::append_update_columns_part"); + DBUG_ENTER("spider_mbase_handler::append_update_columns_part"); DBUG_PRINT("info",("spider this=%p", this)); error_num = append_update_columns(&update_sql, alias, alias_length); DBUG_RETURN(error_num); } -int spider_mysql_handler::check_update_columns_part() +int spider_mbase_handler::check_update_columns_part() { int error_num; - DBUG_ENTER("spider_mysql_handler::check_update_columns_part"); + DBUG_ENTER("spider_mbase_handler::check_update_columns_part"); DBUG_PRINT("info",("spider this=%p", this)); error_num = append_update_columns(NULL, NULL, 0); DBUG_RETURN(error_num); } -int spider_mysql_handler::append_update_columns( +int spider_mbase_handler::append_update_columns( spider_string *str, const char *alias, uint alias_length ) { int error_num; - DBUG_ENTER("spider_mysql_handler::append_update_columns"); + DBUG_ENTER("spider_mbase_handler::append_update_columns"); error_num = spider_db_append_update_columns(spider, str, - alias, alias_length, spider_dbton_mysql.dbton_id, FALSE, NULL); + alias, alias_length, dbton_id, FALSE, NULL); DBUG_RETURN(error_num); } #endif -int spider_mysql_handler::append_select_part( +int spider_mbase_handler::append_select_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_select_part"); + DBUG_ENTER("spider_mbase_handler::append_select_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -7778,12 +8041,12 @@ int spider_mysql_handler::append_select_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_select( +int spider_mbase_handler::append_select( spider_string *str, ulong sql_type ) { SPIDER_RESULT_LIST *result_list = &spider->result_list; - DBUG_ENTER("spider_mysql_handler::append_select"); + DBUG_ENTER("spider_mbase_handler::append_select"); if (sql_type == SPIDER_SQL_TYPE_HANDLER) { if (str->reserve(SPIDER_SQL_HANDLER_LEN)) @@ -7854,12 +8117,12 @@ int spider_mysql_handler::append_select( DBUG_RETURN(0); } -int spider_mysql_handler::append_table_select_part( +int spider_mbase_handler::append_table_select_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_table_select_part"); + DBUG_ENTER("spider_mbase_handler::append_table_select_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -7873,23 +8136,23 @@ int spider_mysql_handler::append_table_select_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_table_select( +int spider_mbase_handler::append_table_select( spider_string *str ) { - DBUG_ENTER("spider_mysql_handler::append_table_select"); + DBUG_ENTER("spider_mbase_handler::append_table_select"); table_name_pos = str->length() + mysql_share->table_select_pos; if (str->append(*(mysql_share->table_select))) DBUG_RETURN(HA_ERR_OUT_OF_MEM); DBUG_RETURN(0); } -int spider_mysql_handler::append_key_select_part( +int spider_mbase_handler::append_key_select_part( ulong sql_type, uint idx ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_key_select_part"); + DBUG_ENTER("spider_mbase_handler::append_key_select_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -7903,23 +8166,23 @@ int spider_mysql_handler::append_key_select_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_key_select( +int spider_mbase_handler::append_key_select( spider_string *str, uint idx ) { - DBUG_ENTER("spider_mysql_handler::append_key_select"); + DBUG_ENTER("spider_mbase_handler::append_key_select"); table_name_pos = str->length() + mysql_share->key_select_pos[idx]; if (str->append(mysql_share->key_select[idx])) DBUG_RETURN(HA_ERR_OUT_OF_MEM); DBUG_RETURN(0); } -int spider_mysql_handler::append_minimum_select_part( +int spider_mbase_handler::append_minimum_select_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_minimum_select_part"); + DBUG_ENTER("spider_mbase_handler::append_minimum_select_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -7933,7 +8196,7 @@ int spider_mysql_handler::append_minimum_select_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_minimum_select( +int spider_mbase_handler::append_minimum_select( spider_string *str, ulong sql_type ) { @@ -7941,7 +8204,7 @@ int spider_mysql_handler::append_minimum_select( Field **field; int field_length; bool appended = FALSE; - DBUG_ENTER("spider_mysql_handler::append_minimum_select"); + DBUG_ENTER("spider_mbase_handler::append_minimum_select"); minimum_select_bitmap_create(); for (field = table->field; *field; field++) { @@ -7970,7 +8233,7 @@ int spider_mysql_handler::append_minimum_select( DBUG_RETURN(append_from(str, sql_type, first_link_idx)); } -int spider_mysql_handler::append_table_select_with_alias( +int spider_mbase_handler::append_table_select_with_alias( spider_string *str, const char *alias, uint alias_length @@ -7978,7 +8241,7 @@ int spider_mysql_handler::append_table_select_with_alias( TABLE *table = spider->get_table(); Field **field; int field_length; - DBUG_ENTER("spider_mysql_handler::append_table_select_with_alias"); + DBUG_ENTER("spider_mbase_handler::append_table_select_with_alias"); for (field = table->field; *field; field++) { field_length = @@ -7994,7 +8257,7 @@ int spider_mysql_handler::append_table_select_with_alias( DBUG_RETURN(0); } -int spider_mysql_handler::append_key_select_with_alias( +int spider_mbase_handler::append_key_select_with_alias( spider_string *str, const KEY *key_info, const char *alias, @@ -8004,7 +8267,7 @@ int spider_mysql_handler::append_key_select_with_alias( Field *field; uint part_num; int field_length; - DBUG_ENTER("spider_mysql_handler::append_key_select_with_alias"); + DBUG_ENTER("spider_mbase_handler::append_key_select_with_alias"); for (key_part = key_info->key_part, part_num = 0; part_num < spider_user_defined_key_parts(key_info); key_part++, part_num++) { @@ -8021,7 +8284,7 @@ int spider_mysql_handler::append_key_select_with_alias( DBUG_RETURN(0); } -int spider_mysql_handler::append_minimum_select_with_alias( +int spider_mbase_handler::append_minimum_select_with_alias( spider_string *str, const char *alias, uint alias_length @@ -8030,7 +8293,7 @@ int spider_mysql_handler::append_minimum_select_with_alias( Field **field; int field_length; bool appended = FALSE; - DBUG_ENTER("spider_mysql_handler::append_minimum_select_with_alias"); + DBUG_ENTER("spider_mbase_handler::append_minimum_select_with_alias"); minimum_select_bitmap_create(); for (field = table->field; *field; field++) { @@ -8060,14 +8323,14 @@ int spider_mysql_handler::append_minimum_select_with_alias( DBUG_RETURN(0); } -int spider_mysql_handler::append_select_columns_with_alias( +int spider_mbase_handler::append_select_columns_with_alias( spider_string *str, const char *alias, uint alias_length ) { int error_num; SPIDER_RESULT_LIST *result_list = &spider->result_list; - DBUG_ENTER("spider_mysql_handler::append_select_columns_with_alias"); + DBUG_ENTER("spider_mbase_handler::append_select_columns_with_alias"); #ifdef HANDLER_HAS_DIRECT_AGGREGATE if ( result_list->direct_aggregate && @@ -8089,12 +8352,12 @@ int spider_mysql_handler::append_select_columns_with_alias( DBUG_RETURN(append_minimum_select_with_alias(str, alias, alias_length)); } -int spider_mysql_handler::append_hint_after_table_part( +int spider_mbase_handler::append_hint_after_table_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_hint_after_table_part"); + DBUG_ENTER("spider_mbase_handler::append_hint_after_table_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -8118,11 +8381,11 @@ int spider_mysql_handler::append_hint_after_table_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_hint_after_table( +int spider_mbase_handler::append_hint_after_table( spider_string *str ) { int error_num; - DBUG_ENTER("spider_mysql_handler::append_hint_after_table"); + DBUG_ENTER("spider_mbase_handler::append_hint_after_table"); DBUG_PRINT("info",("spider this=%p", this)); if ( mysql_share->key_hint && @@ -8133,10 +8396,10 @@ int spider_mysql_handler::append_hint_after_table( DBUG_RETURN(0); } -void spider_mysql_handler::set_where_pos( +void spider_mbase_handler::set_where_pos( ulong sql_type ) { - DBUG_ENTER("spider_mysql_handler::set_where_pos"); + DBUG_ENTER("spider_mbase_handler::set_where_pos"); switch (sql_type) { case SPIDER_SQL_TYPE_SELECT_SQL: @@ -8158,10 +8421,10 @@ void spider_mysql_handler::set_where_pos( DBUG_VOID_RETURN; } -void spider_mysql_handler::set_where_to_pos( +void spider_mbase_handler::set_where_to_pos( ulong sql_type ) { - DBUG_ENTER("spider_mysql_handler::set_where_to_pos"); + DBUG_ENTER("spider_mbase_handler::set_where_to_pos"); switch (sql_type) { case SPIDER_SQL_TYPE_SELECT_SQL: @@ -8183,23 +8446,23 @@ void spider_mysql_handler::set_where_to_pos( DBUG_VOID_RETURN; } -int spider_mysql_handler::check_item_type( +int spider_mbase_handler::check_item_type( Item *item ) { int error_num; - DBUG_ENTER("spider_mysql_handler::check_item_type"); + DBUG_ENTER("spider_mbase_handler::check_item_type"); DBUG_PRINT("info",("spider this=%p", this)); error_num = spider_db_print_item_type(item, NULL, spider, NULL, NULL, 0, - spider_dbton_mysql.dbton_id, FALSE, NULL); + dbton_id, FALSE, NULL); DBUG_RETURN(error_num); } -int spider_mysql_handler::append_values_connector_part( +int spider_mbase_handler::append_values_connector_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_values_connector_part"); + DBUG_ENTER("spider_mbase_handler::append_values_connector_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -8216,10 +8479,10 @@ int spider_mysql_handler::append_values_connector_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_values_connector( +int spider_mbase_handler::append_values_connector( spider_string *str ) { - DBUG_ENTER("spider_mysql_handler::append_values_connector"); + DBUG_ENTER("spider_mbase_handler::append_values_connector"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_CLOSE_PAREN_LEN + SPIDER_SQL_COMMA_LEN + SPIDER_SQL_OPEN_PAREN_LEN)) @@ -8230,12 +8493,12 @@ int spider_mysql_handler::append_values_connector( DBUG_RETURN(0); } -int spider_mysql_handler::append_values_terminator_part( +int spider_mbase_handler::append_values_terminator_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_values_terminator_part"); + DBUG_ENTER("spider_mbase_handler::append_values_terminator_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -8252,22 +8515,22 @@ int spider_mysql_handler::append_values_terminator_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_values_terminator( +int spider_mbase_handler::append_values_terminator( spider_string *str ) { - DBUG_ENTER("spider_mysql_handler::append_values_terminator"); + DBUG_ENTER("spider_mbase_handler::append_values_terminator"); DBUG_PRINT("info",("spider this=%p", this)); str->length(str->length() - SPIDER_SQL_COMMA_LEN - SPIDER_SQL_OPEN_PAREN_LEN); DBUG_RETURN(0); } -int spider_mysql_handler::append_union_table_connector_part( +int spider_mbase_handler::append_union_table_connector_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_union_table_connector_part"); + DBUG_ENTER("spider_mbase_handler::append_union_table_connector_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -8284,10 +8547,10 @@ int spider_mysql_handler::append_union_table_connector_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_union_table_connector( +int spider_mbase_handler::append_union_table_connector( spider_string *str ) { - DBUG_ENTER("spider_mysql_handler::append_union_table_connector"); + DBUG_ENTER("spider_mbase_handler::append_union_table_connector"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve((SPIDER_SQL_SPACE_LEN * 2) + SPIDER_SQL_UNION_ALL_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -8297,12 +8560,12 @@ int spider_mysql_handler::append_union_table_connector( DBUG_RETURN(0); } -int spider_mysql_handler::append_union_table_terminator_part( +int spider_mbase_handler::append_union_table_terminator_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_union_table_terminator_part"); + DBUG_ENTER("spider_mbase_handler::append_union_table_terminator_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -8316,10 +8579,10 @@ int spider_mysql_handler::append_union_table_terminator_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_union_table_terminator( +int spider_mbase_handler::append_union_table_terminator( spider_string *str ) { - DBUG_ENTER("spider_mysql_handler::append_union_table_terminator"); + DBUG_ENTER("spider_mbase_handler::append_union_table_terminator"); DBUG_PRINT("info",("spider this=%p", this)); str->length(str->length() - ((SPIDER_SQL_SPACE_LEN * 2) + SPIDER_SQL_UNION_ALL_LEN)); @@ -8334,13 +8597,13 @@ int spider_mysql_handler::append_union_table_terminator( DBUG_RETURN(0); } -int spider_mysql_handler::append_key_column_values_part( +int spider_mbase_handler::append_key_column_values_part( const key_range *start_key, ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_key_column_values_part"); + DBUG_ENTER("spider_mbase_handler::append_key_column_values_part"); switch (sql_type) { case SPIDER_SQL_TYPE_SELECT_SQL: @@ -8356,7 +8619,7 @@ int spider_mysql_handler::append_key_column_values_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_key_column_values( +int spider_mbase_handler::append_key_column_values( spider_string *str, const key_range *start_key ) { @@ -8372,7 +8635,7 @@ int spider_mysql_handler::append_key_column_values( key_part_map start_key_part_map; KEY_PART_INFO *key_part; Field *field; - DBUG_ENTER("spider_mysql_handler::append_key_column_values"); + DBUG_ENTER("spider_mbase_handler::append_key_column_values"); start_key_part_map = start_key->keypart_map & full_key_part_map; DBUG_PRINT("info", ("spider spider_user_defined_key_parts=%u", spider_user_defined_key_parts(key_info))); @@ -8398,7 +8661,7 @@ int spider_mysql_handler::append_key_column_values( if (error_num > 0) DBUG_RETURN(error_num); } else { - if (spider_db_mysql_utility.append_column_value(spider, str, field, ptr, + if (spider_db_mbase_utility->append_column_value(spider, str, field, ptr, share->access_charset)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); } @@ -8411,13 +8674,13 @@ int spider_mysql_handler::append_key_column_values( DBUG_RETURN(0); } -int spider_mysql_handler::append_key_column_values_with_name_part( +int spider_mbase_handler::append_key_column_values_with_name_part( const key_range *start_key, ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_key_column_values_with_name_part"); + DBUG_ENTER("spider_mbase_handler::append_key_column_values_with_name_part"); switch (sql_type) { case SPIDER_SQL_TYPE_SELECT_SQL: @@ -8433,7 +8696,7 @@ int spider_mysql_handler::append_key_column_values_with_name_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_key_column_values_with_name( +int spider_mbase_handler::append_key_column_values_with_name( spider_string *str, const key_range *start_key ) { @@ -8451,7 +8714,7 @@ int spider_mysql_handler::append_key_column_values_with_name( KEY_PART_INFO *key_part; Field *field; char tmp_buf[MAX_FIELD_WIDTH]; - DBUG_ENTER("spider_mysql_handler::append_key_column_values_with_name"); + DBUG_ENTER("spider_mbase_handler::append_key_column_values_with_name"); start_key_part_map = start_key->keypart_map & full_key_part_map; DBUG_PRINT("info", ("spider spider_user_defined_key_parts=%u", spider_user_defined_key_parts(key_info))); @@ -8479,7 +8742,7 @@ int spider_mysql_handler::append_key_column_values_with_name( if (error_num > 0) DBUG_RETURN(error_num); } else { - if (spider_db_mysql_utility.append_column_value(spider, str, field, ptr, + if (spider_db_mbase_utility->append_column_value(spider, str, field, ptr, share->access_charset)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); } @@ -8496,7 +8759,7 @@ int spider_mysql_handler::append_key_column_values_with_name( DBUG_RETURN(0); } -int spider_mysql_handler::append_key_where_part( +int spider_mbase_handler::append_key_where_part( const key_range *start_key, const key_range *end_key, ulong sql_type @@ -8504,7 +8767,7 @@ int spider_mysql_handler::append_key_where_part( int error_num; spider_string *str, *str_part = NULL, *str_part2 = NULL; bool set_order; - DBUG_ENTER("spider_mysql_handler::append_key_where_part"); + DBUG_ENTER("spider_mbase_handler::append_key_where_part"); switch (sql_type) { case SPIDER_SQL_TYPE_SELECT_SQL: @@ -8539,7 +8802,7 @@ int spider_mysql_handler::append_key_where_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_key_where( +int spider_mbase_handler::append_key_where( spider_string *str, spider_string *str_part, spider_string *str_part2, @@ -8549,14 +8812,14 @@ int spider_mysql_handler::append_key_where( bool set_order ) { int error_num; - DBUG_ENTER("spider_mysql_handler::append_key_where"); + DBUG_ENTER("spider_mbase_handler::append_key_where"); error_num = spider_db_append_key_where_internal(str, str_part, str_part2, start_key, end_key, spider, set_order, sql_type, - spider_dbton_mysql.dbton_id); + dbton_id); DBUG_RETURN(error_num); } -int spider_mysql_handler::append_is_null_part( +int spider_mbase_handler::append_is_null_part( ulong sql_type, KEY_PART_INFO *key_part, const key_range *key, @@ -8566,7 +8829,7 @@ int spider_mysql_handler::append_is_null_part( ) { int error_num; spider_string *str, *str_part = NULL, *str_part2 = NULL; - DBUG_ENTER("spider_mysql_handler::append_is_null_part"); + DBUG_ENTER("spider_mbase_handler::append_is_null_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -8593,7 +8856,7 @@ int spider_mysql_handler::append_is_null_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_is_null( +int spider_mbase_handler::append_is_null( ulong sql_type, spider_string *str, spider_string *str_part, @@ -8604,7 +8867,7 @@ int spider_mysql_handler::append_is_null( bool key_eq, bool tgt_final ) { - DBUG_ENTER("spider_mysql_handler::append_is_null"); + DBUG_ENTER("spider_mbase_handler::append_is_null"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_PRINT("info",("spider key_eq=%s", key_eq ? "TRUE" : "FALSE")); if (key_part->null_bit) @@ -8677,14 +8940,14 @@ int spider_mysql_handler::append_is_null( DBUG_RETURN(0); } -int spider_mysql_handler::append_where_terminator_part( +int spider_mbase_handler::append_where_terminator_part( ulong sql_type, bool set_order, int key_count ) { int error_num; spider_string *str, *str_part = NULL, *str_part2 = NULL; - DBUG_ENTER("spider_mysql_handler::append_where_terminator_part"); + DBUG_ENTER("spider_mbase_handler::append_where_terminator_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -8711,7 +8974,7 @@ int spider_mysql_handler::append_where_terminator_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_where_terminator( +int spider_mbase_handler::append_where_terminator( ulong sql_type, spider_string *str, spider_string *str_part, @@ -8720,7 +8983,7 @@ int spider_mysql_handler::append_where_terminator( int key_count ) { SPIDER_RESULT_LIST *result_list = &spider->result_list; - DBUG_ENTER("spider_mysql_handler::append_where_terminator"); + DBUG_ENTER("spider_mbase_handler::append_where_terminator"); DBUG_PRINT("info",("spider this=%p", this)); if (sql_type != SPIDER_SQL_TYPE_HANDLER) { @@ -8750,12 +9013,12 @@ int spider_mysql_handler::append_where_terminator( DBUG_RETURN(0); } -int spider_mysql_handler::append_match_where_part( +int spider_mbase_handler::append_match_where_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_match_where_part"); + DBUG_ENTER("spider_mbase_handler::append_match_where_part"); switch (sql_type) { case SPIDER_SQL_TYPE_SELECT_SQL: @@ -8769,13 +9032,13 @@ int spider_mysql_handler::append_match_where_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_match_where( +int spider_mbase_handler::append_match_where( spider_string *str ) { int error_num; bool first = TRUE; st_spider_ft_info *ft_info = spider->ft_first; - DBUG_ENTER("spider_mysql_handler::append_match_where"); + DBUG_ENTER("spider_mbase_handler::append_match_where"); if (spider->ft_current) { while (TRUE) @@ -8806,7 +9069,7 @@ int spider_mysql_handler::append_match_where( DBUG_RETURN(0); } -int spider_mysql_handler::append_update_where( +int spider_mbase_handler::append_update_where( spider_string *str, const TABLE *table, my_ptrdiff_t ptr_diff @@ -8816,7 +9079,7 @@ int spider_mysql_handler::append_update_where( THD *thd = spider->trx->thd; SPIDER_SHARE *share = spider->share; bool no_pk = (table->s->primary_key == MAX_KEY); - DBUG_ENTER("spider_mysql_handler::append_update_where"); + DBUG_ENTER("spider_mbase_handler::append_update_where"); DBUG_PRINT("info", ("spider table->s->primary_key=%s", table->s->primary_key != MAX_KEY ? "TRUE" : "FALSE")); uint str_len_bakup = str->length(); @@ -8853,7 +9116,7 @@ int spider_mysql_handler::append_update_where( str->q_append(SPIDER_SQL_EQUAL_STR, SPIDER_SQL_EQUAL_LEN); (*field)->move_field_offset(ptr_diff); if ( - spider_db_mysql_utility. + spider_db_mbase_utility-> append_column_value(spider, str, *field, NULL, share->access_charset) || str->reserve(SPIDER_SQL_AND_LEN) @@ -8893,7 +9156,7 @@ int spider_mysql_handler::append_update_where( str->q_append(SPIDER_SQL_EQUAL_STR, SPIDER_SQL_EQUAL_LEN); (*field)->move_field_offset(ptr_diff); if ( - spider_db_mysql_utility. + spider_db_mbase_utility-> append_column_value(spider, str, *field, NULL, share->access_charset) || str->reserve(SPIDER_SQL_AND_LEN) @@ -8917,7 +9180,7 @@ int spider_mysql_handler::append_update_where( DBUG_RETURN(0); } -int spider_mysql_handler::append_condition_part( +int spider_mbase_handler::append_condition_part( const char *alias, uint alias_length, ulong sql_type, @@ -8926,7 +9189,7 @@ int spider_mysql_handler::append_condition_part( int error_num; spider_string *str; bool start_where = FALSE; - DBUG_ENTER("spider_mysql_handler::append_condition_part"); + DBUG_ENTER("spider_mbase_handler::append_condition_part"); switch (sql_type) { case SPIDER_SQL_TYPE_SELECT_SQL: @@ -9000,7 +9263,7 @@ int spider_mysql_handler::append_condition_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_condition( +int spider_mbase_handler::append_condition( spider_string *str, const char *alias, uint alias_length, @@ -9009,7 +9272,7 @@ int spider_mysql_handler::append_condition( ) { int error_num, restart_pos = 0, start_where_pos; SPIDER_CONDITION *tmp_cond = spider->condition; - DBUG_ENTER("spider_mysql_handler::append_condition"); + DBUG_ENTER("spider_mbase_handler::append_condition"); if (str && start_where) { start_where_pos = str->length(); @@ -9041,7 +9304,7 @@ int spider_mysql_handler::append_condition( } if ((error_num = spider_db_print_item_type( (Item *) tmp_cond->cond, NULL, spider, str, alias, alias_length, - spider_dbton_mysql.dbton_id, FALSE, NULL))) + dbton_id, FALSE, NULL))) { if (str && error_num == ER_SPIDER_COND_SKIP_NUM) { @@ -9056,7 +9319,7 @@ int spider_mysql_handler::append_condition( DBUG_RETURN(0); } -int spider_mysql_handler::append_match_against_part( +int spider_mbase_handler::append_match_against_part( ulong sql_type, st_spider_ft_info *ft_info, const char *alias, @@ -9064,7 +9327,7 @@ int spider_mysql_handler::append_match_against_part( ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_match_against_part"); + DBUG_ENTER("spider_mbase_handler::append_match_against_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -9078,7 +9341,7 @@ int spider_mysql_handler::append_match_against_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_match_against( +int spider_mbase_handler::append_match_against( spider_string *str, st_spider_ft_info *ft_info, const char *alias, @@ -9092,7 +9355,7 @@ int spider_mysql_handler::append_match_against( int key_count; KEY_PART_INFO *key_part; Field *field; - DBUG_ENTER("spider_mysql_handler::append_match_against"); + DBUG_ENTER("spider_mbase_handler::append_match_against"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_MATCH_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -9141,7 +9404,7 @@ int spider_mysql_handler::append_match_against( tmp_str.append(ft_init_key->ptr(), ft_init_key->length(), ft_init_key->charset()) || str->reserve(tmp_str.length() * 2) || - spider_db_mysql_utility.append_escaped_util(str, tmp_str.get_str()) + spider_db_mbase_utility->append_escaped_util(str, tmp_str.get_str()) ) DBUG_RETURN(HA_ERR_OUT_OF_MEM); str->mem_calc(); @@ -9164,14 +9427,14 @@ int spider_mysql_handler::append_match_against( DBUG_RETURN(0); } -int spider_mysql_handler::append_match_select_part( +int spider_mbase_handler::append_match_select_part( ulong sql_type, const char *alias, uint alias_length ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_match_select_part"); + DBUG_ENTER("spider_mbase_handler::append_match_select_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -9185,13 +9448,13 @@ int spider_mysql_handler::append_match_select_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_match_select( +int spider_mbase_handler::append_match_select( spider_string *str, const char *alias, uint alias_length ) { int error_num; - DBUG_ENTER("spider_mysql_handler::append_match_select"); + DBUG_ENTER("spider_mbase_handler::append_match_select"); DBUG_PRINT("info",("spider this=%p", this)); if (spider->ft_current) { @@ -9213,14 +9476,14 @@ int spider_mysql_handler::append_match_select( } #ifdef HANDLER_HAS_DIRECT_AGGREGATE -int spider_mysql_handler::append_sum_select_part( +int spider_mbase_handler::append_sum_select_part( ulong sql_type, const char *alias, uint alias_length ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_sum_select_part"); + DBUG_ENTER("spider_mbase_handler::append_sum_select_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -9234,21 +9497,21 @@ int spider_mysql_handler::append_sum_select_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_sum_select( +int spider_mbase_handler::append_sum_select( spider_string *str, const char *alias, uint alias_length ) { int error_num; st_select_lex *select_lex; - DBUG_ENTER("spider_mysql_handler::append_sum_select"); + DBUG_ENTER("spider_mbase_handler::append_sum_select"); DBUG_PRINT("info",("spider this=%p", this)); select_lex = spider_get_select_lex(spider); JOIN *join = select_lex->join; Item_sum **item_sum_ptr; for (item_sum_ptr = join->sum_funcs; *item_sum_ptr; ++item_sum_ptr) { - if ((error_num = spider_db_mysql_utility.open_item_sum_func(*item_sum_ptr, + if ((error_num = spider_db_mbase_utility->open_item_sum_func(*item_sum_ptr, spider, str, alias, alias_length, FALSE, NULL))) { DBUG_RETURN(error_num); @@ -9261,10 +9524,10 @@ int spider_mysql_handler::append_sum_select( } #endif -void spider_mysql_handler::set_order_pos( +void spider_mbase_handler::set_order_pos( ulong sql_type ) { - DBUG_ENTER("spider_mysql_handler::set_order_pos"); + DBUG_ENTER("spider_mbase_handler::set_order_pos"); switch (sql_type) { case SPIDER_SQL_TYPE_SELECT_SQL: @@ -9287,10 +9550,10 @@ void spider_mysql_handler::set_order_pos( DBUG_VOID_RETURN; } -void spider_mysql_handler::set_order_to_pos( +void spider_mbase_handler::set_order_to_pos( ulong sql_type ) { - DBUG_ENTER("spider_mysql_handler::set_order_to_pos"); + DBUG_ENTER("spider_mbase_handler::set_order_to_pos"); switch (sql_type) { case SPIDER_SQL_TYPE_SELECT_SQL: @@ -9314,14 +9577,14 @@ void spider_mysql_handler::set_order_to_pos( } #ifdef HANDLER_HAS_DIRECT_AGGREGATE -int spider_mysql_handler::append_group_by_part( +int spider_mbase_handler::append_group_by_part( const char *alias, uint alias_length, ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_group_by_part"); + DBUG_ENTER("spider_mbase_handler::append_group_by_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -9345,14 +9608,14 @@ int spider_mysql_handler::append_group_by_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_group_by( +int spider_mbase_handler::append_group_by( spider_string *str, const char *alias, uint alias_length ) { int error_num; st_select_lex *select_lex; - DBUG_ENTER("spider_mysql_handler::append_group_by"); + DBUG_ENTER("spider_mbase_handler::append_group_by"); DBUG_PRINT("info",("spider this=%p", this)); select_lex = spider_get_select_lex(spider); ORDER *group = (ORDER *) select_lex->group_list.first; @@ -9364,7 +9627,7 @@ int spider_mysql_handler::append_group_by( for (; group; group = group->next) { if ((error_num = spider_db_print_item_type((*group->item), NULL, spider, - str, alias, alias_length, spider_dbton_mysql.dbton_id, FALSE, NULL))) + str, alias, alias_length, dbton_id, FALSE, NULL))) { DBUG_RETURN(error_num); } @@ -9378,14 +9641,14 @@ int spider_mysql_handler::append_group_by( } #endif -int spider_mysql_handler::append_key_order_for_merge_with_alias_part( +int spider_mbase_handler::append_key_order_for_merge_with_alias_part( const char *alias, uint alias_length, ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_key_order_for_merge_with_alias_part"); + DBUG_ENTER("spider_mbase_handler::append_key_order_for_merge_with_alias_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -9410,7 +9673,7 @@ int spider_mysql_handler::append_key_order_for_merge_with_alias_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_key_order_for_merge_with_alias( +int spider_mbase_handler::append_key_order_for_merge_with_alias( spider_string *str, const char *alias, uint alias_length @@ -9420,7 +9683,7 @@ int spider_mysql_handler::append_key_order_for_merge_with_alias( int length; Field *field; uint key_name_length; - DBUG_ENTER("spider_mysql_handler::append_key_order_for_merge_with_alias"); + DBUG_ENTER("spider_mbase_handler::append_key_order_for_merge_with_alias"); DBUG_PRINT("info",("spider this=%p", this)); #ifdef HANDLER_HAS_DIRECT_AGGREGATE if (spider->result_list.direct_aggregate) @@ -9494,14 +9757,14 @@ int spider_mysql_handler::append_key_order_for_merge_with_alias( DBUG_RETURN(0); } -int spider_mysql_handler::append_key_order_for_direct_order_limit_with_alias_part( +int spider_mbase_handler::append_key_order_for_direct_order_limit_with_alias_part( const char *alias, uint alias_length, ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_key_order_for_direct_order_limit_with_alias_part"); + DBUG_ENTER("spider_mbase_handler::append_key_order_for_direct_order_limit_with_alias_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -9526,7 +9789,7 @@ int spider_mysql_handler::append_key_order_for_direct_order_limit_with_alias_par DBUG_RETURN(error_num); } -int spider_mysql_handler::append_key_order_for_direct_order_limit_with_alias( +int spider_mbase_handler::append_key_order_for_direct_order_limit_with_alias( spider_string *str, const char *alias, uint alias_length @@ -9536,7 +9799,7 @@ int spider_mysql_handler::append_key_order_for_direct_order_limit_with_alias( st_select_lex *select_lex; longlong select_limit; longlong offset_limit; - DBUG_ENTER("spider_mysql_handler::append_key_order_for_direct_order_limit_with_alias"); + DBUG_ENTER("spider_mbase_handler::append_key_order_for_direct_order_limit_with_alias"); DBUG_PRINT("info",("spider this=%p", this)); #ifdef HANDLER_HAS_DIRECT_AGGREGATE if (spider->result_list.direct_aggregate) @@ -9557,7 +9820,7 @@ int spider_mysql_handler::append_key_order_for_direct_order_limit_with_alias( { if ((error_num = spider_db_print_item_type((*order->item), NULL, spider, str, alias, - alias_length, spider_dbton_mysql.dbton_id, FALSE, NULL))) + alias_length, dbton_id, FALSE, NULL))) { DBUG_PRINT("info",("spider error=%d", error_num)); DBUG_RETURN(error_num); @@ -9580,14 +9843,14 @@ int spider_mysql_handler::append_key_order_for_direct_order_limit_with_alias( DBUG_RETURN(0); } -int spider_mysql_handler::append_key_order_with_alias_part( +int spider_mbase_handler::append_key_order_with_alias_part( const char *alias, uint alias_length, ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_key_order_with_alias_part"); + DBUG_ENTER("spider_mbase_handler::append_key_order_with_alias_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -9612,12 +9875,12 @@ int spider_mysql_handler::append_key_order_with_alias_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_key_order_for_handler( +int spider_mbase_handler::append_key_order_for_handler( spider_string *str, const char *alias, uint alias_length ) { - DBUG_ENTER("spider_mysql_handler::append_key_order_for_handler"); + DBUG_ENTER("spider_mbase_handler::append_key_order_for_handler"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_PRINT("info",("spider ha_next_pos=%d", ha_next_pos)); DBUG_PRINT("info",("spider ha_where_pos=%d", ha_where_pos)); @@ -9627,7 +9890,7 @@ int spider_mysql_handler::append_key_order_for_handler( DBUG_RETURN(0); } -int spider_mysql_handler::append_key_order_with_alias( +int spider_mbase_handler::append_key_order_with_alias( spider_string *str, const char *alias, uint alias_length @@ -9638,7 +9901,7 @@ int spider_mysql_handler::append_key_order_with_alias( KEY_PART_INFO *key_part; Field *field; uint key_name_length; - DBUG_ENTER("spider_mysql_handler::append_key_order_with_alias"); + DBUG_ENTER("spider_mbase_handler::append_key_order_with_alias"); DBUG_PRINT("info",("spider this=%p", this)); #ifdef HANDLER_HAS_DIRECT_AGGREGATE if (spider->result_list.direct_aggregate) @@ -9793,14 +10056,14 @@ int spider_mysql_handler::append_key_order_with_alias( DBUG_RETURN(0); } -int spider_mysql_handler::append_limit_part( +int spider_mbase_handler::append_limit_part( longlong offset, longlong limit, ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_limit_part"); + DBUG_ENTER("spider_mbase_handler::append_limit_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -9830,14 +10093,14 @@ int spider_mysql_handler::append_limit_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::reappend_limit_part( +int spider_mbase_handler::reappend_limit_part( longlong offset, longlong limit, ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::reappend_limit_part"); + DBUG_ENTER("spider_mbase_handler::reappend_limit_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -9867,14 +10130,14 @@ int spider_mysql_handler::reappend_limit_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_limit( +int spider_mbase_handler::append_limit( spider_string *str, longlong offset, longlong limit ) { char buf[SPIDER_LONGLONG_LEN + 1]; uint32 length; - DBUG_ENTER("spider_mysql_handler::append_limit"); + DBUG_ENTER("spider_mbase_handler::append_limit"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_PRINT("info", ("spider offset=%lld", offset)); DBUG_PRINT("info", ("spider limit=%lld", limit)); @@ -9898,12 +10161,12 @@ int spider_mysql_handler::append_limit( DBUG_RETURN(0); } -int spider_mysql_handler::append_select_lock_part( +int spider_mbase_handler::append_select_lock_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_select_lock_part"); + DBUG_ENTER("spider_mbase_handler::append_select_lock_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -9917,11 +10180,11 @@ int spider_mysql_handler::append_select_lock_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_select_lock( +int spider_mbase_handler::append_select_lock( spider_string *str ) { int lock_mode = spider_conn_lock_mode(spider); - DBUG_ENTER("spider_mysql_handler::append_select_lock"); + DBUG_ENTER("spider_mbase_handler::append_select_lock"); DBUG_PRINT("info",("spider this=%p", this)); if (lock_mode == SPIDER_LOCK_MODE_EXCLUSIVE) { @@ -9937,12 +10200,12 @@ int spider_mysql_handler::append_select_lock( DBUG_RETURN(0); } -int spider_mysql_handler::append_union_all_start_part( +int spider_mbase_handler::append_union_all_start_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_union_all_start_part"); + DBUG_ENTER("spider_mbase_handler::append_union_all_start_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -9956,10 +10219,10 @@ int spider_mysql_handler::append_union_all_start_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_union_all_start( +int spider_mbase_handler::append_union_all_start( spider_string *str ) { - DBUG_ENTER("spider_mysql_handler::append_union_all_start"); + DBUG_ENTER("spider_mbase_handler::append_union_all_start"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_OPEN_PAREN_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -9967,12 +10230,12 @@ int spider_mysql_handler::append_union_all_start( DBUG_RETURN(0); } -int spider_mysql_handler::append_union_all_part( +int spider_mbase_handler::append_union_all_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_union_all_part"); + DBUG_ENTER("spider_mbase_handler::append_union_all_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -9986,10 +10249,10 @@ int spider_mysql_handler::append_union_all_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_union_all( +int spider_mbase_handler::append_union_all( spider_string *str ) { - DBUG_ENTER("spider_mysql_handler::append_union_all"); + DBUG_ENTER("spider_mbase_handler::append_union_all"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_UNION_ALL_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -9997,12 +10260,12 @@ int spider_mysql_handler::append_union_all( DBUG_RETURN(0); } -int spider_mysql_handler::append_union_all_end_part( +int spider_mbase_handler::append_union_all_end_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_union_all_end_part"); + DBUG_ENTER("spider_mbase_handler::append_union_all_end_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10016,24 +10279,24 @@ int spider_mysql_handler::append_union_all_end_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_union_all_end( +int spider_mbase_handler::append_union_all_end( spider_string *str ) { - DBUG_ENTER("spider_mysql_handler::append_union_all_end"); + DBUG_ENTER("spider_mbase_handler::append_union_all_end"); DBUG_PRINT("info",("spider this=%p", this)); str->length(str->length() - SPIDER_SQL_UNION_ALL_LEN + SPIDER_SQL_CLOSE_PAREN_LEN); DBUG_RETURN(0); } -int spider_mysql_handler::append_multi_range_cnt_part( +int spider_mbase_handler::append_multi_range_cnt_part( ulong sql_type, uint multi_range_cnt, bool with_comma ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_multi_range_cnt_part"); + DBUG_ENTER("spider_mbase_handler::append_multi_range_cnt_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10050,14 +10313,14 @@ int spider_mysql_handler::append_multi_range_cnt_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_multi_range_cnt( +int spider_mbase_handler::append_multi_range_cnt( spider_string *str, uint multi_range_cnt, bool with_comma ) { int range_cnt_length; char range_cnt_str[SPIDER_SQL_INT_LEN]; - DBUG_ENTER("spider_mysql_handler::append_multi_range_cnt"); + DBUG_ENTER("spider_mbase_handler::append_multi_range_cnt"); DBUG_PRINT("info",("spider this=%p", this)); range_cnt_length = my_sprintf(range_cnt_str, (range_cnt_str, "%u", multi_range_cnt)); @@ -10075,13 +10338,13 @@ int spider_mysql_handler::append_multi_range_cnt( DBUG_RETURN(0); } -int spider_mysql_handler::append_multi_range_cnt_with_name_part( +int spider_mbase_handler::append_multi_range_cnt_with_name_part( ulong sql_type, uint multi_range_cnt ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_multi_range_cnt_with_name_part"); + DBUG_ENTER("spider_mbase_handler::append_multi_range_cnt_with_name_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10098,13 +10361,13 @@ int spider_mysql_handler::append_multi_range_cnt_with_name_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_multi_range_cnt_with_name( +int spider_mbase_handler::append_multi_range_cnt_with_name( spider_string *str, uint multi_range_cnt ) { int range_cnt_length; char range_cnt_str[SPIDER_SQL_INT_LEN]; - DBUG_ENTER("spider_mysql_handler::append_multi_range_cnt_with_name"); + DBUG_ENTER("spider_mbase_handler::append_multi_range_cnt_with_name"); DBUG_PRINT("info",("spider this=%p", this)); range_cnt_length = my_sprintf(range_cnt_str, (range_cnt_str, "%u", multi_range_cnt)); @@ -10118,7 +10381,7 @@ int spider_mysql_handler::append_multi_range_cnt_with_name( DBUG_RETURN(0); } -int spider_mysql_handler::append_open_handler_part( +int spider_mbase_handler::append_open_handler_part( ulong sql_type, uint handler_id, SPIDER_CONN *conn, @@ -10126,7 +10389,7 @@ int spider_mysql_handler::append_open_handler_part( ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_open_handler_part"); + DBUG_ENTER("spider_mbase_handler::append_open_handler_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10141,14 +10404,14 @@ int spider_mysql_handler::append_open_handler_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_open_handler( +int spider_mbase_handler::append_open_handler( spider_string *str, uint handler_id, SPIDER_CONN *conn, int link_idx ) { int error_num; - DBUG_ENTER("spider_mysql_handler::append_open_handler"); + DBUG_ENTER("spider_mbase_handler::append_open_handler"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_PRINT("info",("spider link_idx=%d", link_idx)); DBUG_PRINT("info",("spider m_handler_cid=%s", @@ -10172,13 +10435,13 @@ int spider_mysql_handler::append_open_handler( DBUG_RETURN(0); } -int spider_mysql_handler::append_close_handler_part( +int spider_mbase_handler::append_close_handler_part( ulong sql_type, int link_idx ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_close_handler_part"); + DBUG_ENTER("spider_mbase_handler::append_close_handler_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10193,11 +10456,11 @@ int spider_mysql_handler::append_close_handler_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_close_handler( +int spider_mbase_handler::append_close_handler( spider_string *str, int link_idx ) { - DBUG_ENTER("spider_mysql_handler::append_close_handler"); + DBUG_ENTER("spider_mbase_handler::append_close_handler"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_HANDLER_LEN + SPIDER_SQL_CLOSE_LEN + SPIDER_SQL_HANDLER_CID_LEN)) @@ -10209,12 +10472,12 @@ int spider_mysql_handler::append_close_handler( DBUG_RETURN(0); } -int spider_mysql_handler::append_insert_terminator_part( +int spider_mbase_handler::append_insert_terminator_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_insert_terminator_part"); + DBUG_ENTER("spider_mbase_handler::append_insert_terminator_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10228,10 +10491,10 @@ int spider_mysql_handler::append_insert_terminator_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_insert_terminator( +int spider_mbase_handler::append_insert_terminator( spider_string *str ) { - DBUG_ENTER("spider_mysql_handler::append_insert_terminator"); + DBUG_ENTER("spider_mbase_handler::append_insert_terminator"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_PRINT("info",("spider dup_update_sql.length=%u", dup_update_sql.length())); if ( @@ -10256,12 +10519,12 @@ int spider_mysql_handler::append_insert_terminator( DBUG_RETURN(0); } -int spider_mysql_handler::append_insert_values_part( +int spider_mbase_handler::append_insert_values_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_insert_values_part"); + DBUG_ENTER("spider_mbase_handler::append_insert_values_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10275,14 +10538,14 @@ int spider_mysql_handler::append_insert_values_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_insert_values( +int spider_mbase_handler::append_insert_values( spider_string *str ) { SPIDER_SHARE *share = spider->share; TABLE *table = spider->get_table(); Field **field; bool add_value = FALSE; - DBUG_ENTER("spider_mysql_handler::append_insert_values"); + DBUG_ENTER("spider_mbase_handler::append_insert_values"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_OPEN_PAREN_LEN)) { @@ -10329,7 +10592,7 @@ int spider_mysql_handler::append_insert_values( str->q_append(SPIDER_SQL_NULL_STR, SPIDER_SQL_NULL_LEN); } else { if ( - spider_db_mysql_utility. + spider_db_mbase_utility-> append_column_value(spider, str, *field, NULL, share->access_charset) || str->reserve(SPIDER_SQL_COMMA_LEN) @@ -10359,12 +10622,12 @@ int spider_mysql_handler::append_insert_values( DBUG_RETURN(0); } -int spider_mysql_handler::append_into_part( +int spider_mbase_handler::append_into_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_into_part"); + DBUG_ENTER("spider_mbase_handler::append_into_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10378,13 +10641,13 @@ int spider_mysql_handler::append_into_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_into( +int spider_mbase_handler::append_into( spider_string *str ) { const TABLE *table = spider->get_table(); Field **field; uint field_name_length = 0; - DBUG_ENTER("spider_mysql_handler::append_into"); + DBUG_ENTER("spider_mbase_handler::append_into"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_INTO_LEN + mysql_share->db_nm_max_length + SPIDER_SQL_DOT_LEN + mysql_share->table_nm_max_length + @@ -10420,10 +10683,10 @@ int spider_mysql_handler::append_into( DBUG_RETURN(0); } -void spider_mysql_handler::set_insert_to_pos( +void spider_mbase_handler::set_insert_to_pos( ulong sql_type ) { - DBUG_ENTER("spider_mysql_handler::set_insert_to_pos"); + DBUG_ENTER("spider_mbase_handler::set_insert_to_pos"); switch (sql_type) { case SPIDER_SQL_TYPE_INSERT_SQL: @@ -10436,13 +10699,13 @@ void spider_mysql_handler::set_insert_to_pos( DBUG_VOID_RETURN; } -int spider_mysql_handler::append_from_part( +int spider_mbase_handler::append_from_part( ulong sql_type, int link_idx ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_from_part"); + DBUG_ENTER("spider_mbase_handler::append_from_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10462,12 +10725,12 @@ int spider_mysql_handler::append_from_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_from( +int spider_mbase_handler::append_from( spider_string *str, ulong sql_type, int link_idx ) { - DBUG_ENTER("spider_mysql_handler::append_from"); + DBUG_ENTER("spider_mbase_handler::append_from"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_PRINT("info",("spider link_idx=%d", link_idx)); int error_num = 0; @@ -10501,14 +10764,14 @@ int spider_mysql_handler::append_from( DBUG_RETURN(0); } -int spider_mysql_handler::append_flush_tables_part( +int spider_mbase_handler::append_flush_tables_part( ulong sql_type, int link_idx, bool lock ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_flush_tables_part"); + DBUG_ENTER("spider_mbase_handler::append_flush_tables_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10522,12 +10785,12 @@ int spider_mysql_handler::append_flush_tables_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_flush_tables( +int spider_mbase_handler::append_flush_tables( spider_string *str, int link_idx, bool lock ) { - DBUG_ENTER("spider_mysql_handler::append_flush_tables"); + DBUG_ENTER("spider_mbase_handler::append_flush_tables"); DBUG_PRINT("info",("spider this=%p", this)); if (lock) { @@ -10545,13 +10808,13 @@ int spider_mysql_handler::append_flush_tables( DBUG_RETURN(0); } -int spider_mysql_handler::append_optimize_table_part( +int spider_mbase_handler::append_optimize_table_part( ulong sql_type, int link_idx ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_optimize_table_part"); + DBUG_ENTER("spider_mbase_handler::append_optimize_table_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10565,7 +10828,7 @@ int spider_mysql_handler::append_optimize_table_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_optimize_table( +int spider_mbase_handler::append_optimize_table( spider_string *str, int link_idx ) { @@ -10573,7 +10836,7 @@ int spider_mysql_handler::append_optimize_table( int conn_link_idx = spider->conn_link_idx[link_idx]; int local_length = spider_param_internal_optimize_local(spider->trx->thd, share->internal_optimize_local) * SPIDER_SQL_SQL_LOCAL_LEN; - DBUG_ENTER("spider_mysql_handler::append_optimize_table"); + DBUG_ENTER("spider_mbase_handler::append_optimize_table"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_SQL_OPTIMIZE_LEN + SPIDER_SQL_SQL_TABLE_LEN + local_length + @@ -10590,13 +10853,13 @@ int spider_mysql_handler::append_optimize_table( DBUG_RETURN(0); } -int spider_mysql_handler::append_analyze_table_part( +int spider_mbase_handler::append_analyze_table_part( ulong sql_type, int link_idx ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_analyze_table_part"); + DBUG_ENTER("spider_mbase_handler::append_analyze_table_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10610,7 +10873,7 @@ int spider_mysql_handler::append_analyze_table_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_analyze_table( +int spider_mbase_handler::append_analyze_table( spider_string *str, int link_idx ) { @@ -10618,7 +10881,7 @@ int spider_mysql_handler::append_analyze_table( int conn_link_idx = spider->conn_link_idx[link_idx]; int local_length = spider_param_internal_optimize_local(spider->trx->thd, share->internal_optimize_local) * SPIDER_SQL_SQL_LOCAL_LEN; - DBUG_ENTER("spider_mysql_handler::append_analyze_table"); + DBUG_ENTER("spider_mbase_handler::append_analyze_table"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_SQL_ANALYZE_LEN + SPIDER_SQL_SQL_TABLE_LEN + local_length + @@ -10635,14 +10898,14 @@ int spider_mysql_handler::append_analyze_table( DBUG_RETURN(0); } -int spider_mysql_handler::append_repair_table_part( +int spider_mbase_handler::append_repair_table_part( ulong sql_type, int link_idx, HA_CHECK_OPT* check_opt ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_repair_table_part"); + DBUG_ENTER("spider_mbase_handler::append_repair_table_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10656,7 +10919,7 @@ int spider_mysql_handler::append_repair_table_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_repair_table( +int spider_mbase_handler::append_repair_table( spider_string *str, int link_idx, HA_CHECK_OPT* check_opt @@ -10665,7 +10928,7 @@ int spider_mysql_handler::append_repair_table( int conn_link_idx = spider->conn_link_idx[link_idx]; int local_length = spider_param_internal_optimize_local(spider->trx->thd, share->internal_optimize_local) * SPIDER_SQL_SQL_LOCAL_LEN; - DBUG_ENTER("spider_mysql_handler::append_repair_table"); + DBUG_ENTER("spider_mbase_handler::append_repair_table"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_SQL_REPAIR_LEN + SPIDER_SQL_SQL_TABLE_LEN + local_length + @@ -10700,14 +10963,14 @@ int spider_mysql_handler::append_repair_table( DBUG_RETURN(0); } -int spider_mysql_handler::append_check_table_part( +int spider_mbase_handler::append_check_table_part( ulong sql_type, int link_idx, HA_CHECK_OPT* check_opt ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_check_table_part"); + DBUG_ENTER("spider_mbase_handler::append_check_table_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10721,13 +10984,13 @@ int spider_mysql_handler::append_check_table_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_check_table( +int spider_mbase_handler::append_check_table( spider_string *str, int link_idx, HA_CHECK_OPT* check_opt ) { int conn_link_idx = spider->conn_link_idx[link_idx]; - DBUG_ENTER("spider_mysql_handler::append_check_table"); + DBUG_ENTER("spider_mbase_handler::append_check_table"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_SQL_CHECK_TABLE_LEN + mysql_share->db_names_str[conn_link_idx].length() + @@ -10765,13 +11028,13 @@ int spider_mysql_handler::append_check_table( DBUG_RETURN(0); } -int spider_mysql_handler::append_enable_keys_part( +int spider_mbase_handler::append_enable_keys_part( ulong sql_type, int link_idx ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_enable_keys_part"); + DBUG_ENTER("spider_mbase_handler::append_enable_keys_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10785,12 +11048,12 @@ int spider_mysql_handler::append_enable_keys_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_enable_keys( +int spider_mbase_handler::append_enable_keys( spider_string *str, int link_idx ) { int conn_link_idx = spider->conn_link_idx[link_idx]; - DBUG_ENTER("spider_mysql_handler::append_enable_keys"); + DBUG_ENTER("spider_mbase_handler::append_enable_keys"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_SQL_ALTER_TABLE_LEN + mysql_share->db_names_str[conn_link_idx].length() + @@ -10806,13 +11069,13 @@ int spider_mysql_handler::append_enable_keys( DBUG_RETURN(0); } -int spider_mysql_handler::append_disable_keys_part( +int spider_mbase_handler::append_disable_keys_part( ulong sql_type, int link_idx ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_disable_keys_part"); + DBUG_ENTER("spider_mbase_handler::append_disable_keys_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10826,12 +11089,12 @@ int spider_mysql_handler::append_disable_keys_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_disable_keys( +int spider_mbase_handler::append_disable_keys( spider_string *str, int link_idx ) { int conn_link_idx = spider->conn_link_idx[link_idx]; - DBUG_ENTER("spider_mysql_handler::append_disable_keys"); + DBUG_ENTER("spider_mbase_handler::append_disable_keys"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_SQL_ALTER_TABLE_LEN + mysql_share->db_names_str[conn_link_idx].length() + @@ -10847,12 +11110,12 @@ int spider_mysql_handler::append_disable_keys( DBUG_RETURN(0); } -int spider_mysql_handler::append_delete_all_rows_part( +int spider_mbase_handler::append_delete_all_rows_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_delete_all_rows_part"); + DBUG_ENTER("spider_mbase_handler::append_delete_all_rows_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10866,12 +11129,12 @@ int spider_mysql_handler::append_delete_all_rows_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_delete_all_rows( +int spider_mbase_handler::append_delete_all_rows( spider_string *str, ulong sql_type ) { int error_num; - DBUG_ENTER("spider_mysql_handler::append_delete_all_rows"); + DBUG_ENTER("spider_mbase_handler::append_delete_all_rows"); DBUG_PRINT("info",("spider this=%p", this)); if (spider->sql_command == SQLCOM_TRUNCATE) { @@ -10887,12 +11150,12 @@ int spider_mysql_handler::append_delete_all_rows( DBUG_RETURN(0); } -int spider_mysql_handler::append_truncate( +int spider_mbase_handler::append_truncate( spider_string *str, ulong sql_type, int link_idx ) { - DBUG_ENTER("spider_mysql_handler::append_truncate"); + DBUG_ENTER("spider_mbase_handler::append_truncate"); if (str->reserve(SPIDER_SQL_TRUNCATE_TABLE_LEN + mysql_share->db_nm_max_length + SPIDER_SQL_DOT_LEN + mysql_share->table_nm_max_length + @@ -10904,7 +11167,7 @@ int spider_mysql_handler::append_truncate( DBUG_RETURN(0); } -int spider_mysql_handler::append_explain_select_part( +int spider_mbase_handler::append_explain_select_part( key_range *start_key, key_range *end_key, ulong sql_type, @@ -10912,7 +11175,7 @@ int spider_mysql_handler::append_explain_select_part( ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_explain_select_part"); + DBUG_ENTER("spider_mbase_handler::append_explain_select_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -10927,7 +11190,7 @@ int spider_mysql_handler::append_explain_select_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_explain_select( +int spider_mbase_handler::append_explain_select( spider_string *str, key_range *start_key, key_range *end_key, @@ -10935,7 +11198,7 @@ int spider_mysql_handler::append_explain_select( int link_idx ) { int error_num; - DBUG_ENTER("spider_mysql_handler::append_explain_select"); + DBUG_ENTER("spider_mbase_handler::append_explain_select"); DBUG_PRINT("info",("spider this=%p", this)); if (str->reserve(SPIDER_SQL_EXPLAIN_SELECT_LEN)) { @@ -10964,7 +11227,7 @@ int spider_mysql_handler::append_explain_select( * solely of the specified column. * FALSE - otherwise. ********************************************************************/ -bool spider_mysql_handler::is_sole_projection_field( +bool spider_mbase_handler::is_sole_projection_field( uint16 field_index ) { // Determine whether the projection list consists solely of the field of interest @@ -10973,7 +11236,7 @@ bool spider_mysql_handler::is_sole_projection_field( uint16 projection_field_count = 0; uint16 projection_field_index; Field** field; - DBUG_ENTER( "spider_mysql_handler::is_sole_projection_field" ); + DBUG_ENTER( "spider_mbase_handler::is_sole_projection_field" ); for ( field = table->field; *field ; field++ ) { @@ -11012,10 +11275,10 @@ bool spider_mysql_handler::is_sole_projection_field( DBUG_RETURN( FALSE ); } -bool spider_mysql_handler::is_bulk_insert_exec_period( +bool spider_mbase_handler::is_bulk_insert_exec_period( bool bulk_end ) { - DBUG_ENTER("spider_mysql_handler::is_bulk_insert_exec_period"); + DBUG_ENTER("spider_mbase_handler::is_bulk_insert_exec_period"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_PRINT("info",("spider insert_sql.length=%u", insert_sql.length())); DBUG_PRINT("info",("spider insert_pos=%d", insert_pos)); @@ -11029,19 +11292,19 @@ bool spider_mysql_handler::is_bulk_insert_exec_period( DBUG_RETURN(FALSE); } -bool spider_mysql_handler::sql_is_filled_up( +bool spider_mbase_handler::sql_is_filled_up( ulong sql_type ) { - DBUG_ENTER("spider_mysql_handler::sql_is_filled_up"); + DBUG_ENTER("spider_mbase_handler::sql_is_filled_up"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(filled_up); } -bool spider_mysql_handler::sql_is_empty( +bool spider_mbase_handler::sql_is_empty( ulong sql_type ) { bool is_empty; - DBUG_ENTER("spider_mysql_handler::sql_is_empty"); + DBUG_ENTER("spider_mbase_handler::sql_is_empty"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -11069,34 +11332,34 @@ bool spider_mysql_handler::sql_is_empty( DBUG_RETURN(is_empty); } -bool spider_mysql_handler::support_multi_split_read() +bool spider_mbase_handler::support_multi_split_read() { - DBUG_ENTER("spider_mysql_handler::support_multi_split_read"); + DBUG_ENTER("spider_mbase_handler::support_multi_split_read"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(TRUE); } -bool spider_mysql_handler::support_bulk_update() +bool spider_mbase_handler::support_bulk_update() { - DBUG_ENTER("spider_mysql_handler::support_bulk_update"); + DBUG_ENTER("spider_mbase_handler::support_bulk_update"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(TRUE); } -int spider_mysql_handler::bulk_tmp_table_insert() +int spider_mbase_handler::bulk_tmp_table_insert() { int error_num; - DBUG_ENTER("spider_mysql_handler::bulk_tmp_table_insert"); + DBUG_ENTER("spider_mbase_handler::bulk_tmp_table_insert"); DBUG_PRINT("info",("spider this=%p", this)); error_num = store_sql_to_bulk_tmp_table(&update_sql, upd_tmp_tbl); DBUG_RETURN(error_num); } -int spider_mysql_handler::bulk_tmp_table_insert( +int spider_mbase_handler::bulk_tmp_table_insert( int link_idx ) { int error_num; - DBUG_ENTER("spider_mysql_handler::bulk_tmp_table_insert"); + DBUG_ENTER("spider_mbase_handler::bulk_tmp_table_insert"); DBUG_PRINT("info",("spider this=%p", this)); error_num = store_sql_to_bulk_tmp_table( &spider->result_list.update_sqls[link_idx], @@ -11104,10 +11367,10 @@ int spider_mysql_handler::bulk_tmp_table_insert( DBUG_RETURN(error_num); } -int spider_mysql_handler::bulk_tmp_table_end_bulk_insert() +int spider_mbase_handler::bulk_tmp_table_end_bulk_insert() { int error_num; - DBUG_ENTER("spider_mysql_handler::bulk_tmp_table_end_bulk_insert"); + DBUG_ENTER("spider_mbase_handler::bulk_tmp_table_end_bulk_insert"); DBUG_PRINT("info",("spider this=%p", this)); if ((error_num = upd_tmp_tbl->file->ha_end_bulk_insert())) { @@ -11116,10 +11379,10 @@ int spider_mysql_handler::bulk_tmp_table_end_bulk_insert() DBUG_RETURN(0); } -int spider_mysql_handler::bulk_tmp_table_rnd_init() +int spider_mbase_handler::bulk_tmp_table_rnd_init() { int error_num; - DBUG_ENTER("spider_mysql_handler::bulk_tmp_table_rnd_init"); + DBUG_ENTER("spider_mbase_handler::bulk_tmp_table_rnd_init"); DBUG_PRINT("info",("spider this=%p", this)); upd_tmp_tbl->file->extra(HA_EXTRA_CACHE); if ((error_num = upd_tmp_tbl->file->ha_rnd_init(TRUE))) @@ -11130,10 +11393,10 @@ int spider_mysql_handler::bulk_tmp_table_rnd_init() DBUG_RETURN(0); } -int spider_mysql_handler::bulk_tmp_table_rnd_next() +int spider_mbase_handler::bulk_tmp_table_rnd_next() { int error_num; - DBUG_ENTER("spider_mysql_handler::bulk_tmp_table_rnd_next"); + DBUG_ENTER("spider_mbase_handler::bulk_tmp_table_rnd_next"); DBUG_PRINT("info",("spider this=%p", this)); #if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 50200 error_num = upd_tmp_tbl->file->ha_rnd_next(upd_tmp_tbl->record[0]); @@ -11147,10 +11410,10 @@ int spider_mysql_handler::bulk_tmp_table_rnd_next() DBUG_RETURN(error_num); } -int spider_mysql_handler::bulk_tmp_table_rnd_end() +int spider_mbase_handler::bulk_tmp_table_rnd_end() { int error_num; - DBUG_ENTER("spider_mysql_handler::bulk_tmp_table_rnd_end"); + DBUG_ENTER("spider_mbase_handler::bulk_tmp_table_rnd_end"); DBUG_PRINT("info",("spider this=%p", this)); reading_from_bulk_tmp_table = FALSE; if ((error_num = upd_tmp_tbl->file->ha_rnd_end())) @@ -11160,28 +11423,28 @@ int spider_mysql_handler::bulk_tmp_table_rnd_end() DBUG_RETURN(0); } -bool spider_mysql_handler::need_copy_for_update( +bool spider_mbase_handler::need_copy_for_update( int link_idx ) { int all_link_idx = spider->conn_link_idx[link_idx]; - DBUG_ENTER("spider_mysql_handler::need_copy_for_update"); + DBUG_ENTER("spider_mbase_handler::need_copy_for_update"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(!mysql_share->same_db_table_name || spider->share->link_statuses[all_link_idx] == SPIDER_LINK_STATUS_RECOVERY); } -bool spider_mysql_handler::bulk_tmp_table_created() +bool spider_mbase_handler::bulk_tmp_table_created() { - DBUG_ENTER("spider_mysql_handler::bulk_tmp_table_created"); + DBUG_ENTER("spider_mbase_handler::bulk_tmp_table_created"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(upd_tmp_tbl); } -int spider_mysql_handler::mk_bulk_tmp_table_and_bulk_start() +int spider_mbase_handler::mk_bulk_tmp_table_and_bulk_start() { THD *thd = spider->trx->thd; TABLE *table = spider->get_table(); - DBUG_ENTER("spider_mysql_handler::mk_bulk_tmp_table_and_bulk_start"); + DBUG_ENTER("spider_mbase_handler::mk_bulk_tmp_table_and_bulk_start"); DBUG_PRINT("info",("spider this=%p", this)); if (!upd_tmp_tbl) { @@ -11202,9 +11465,9 @@ int spider_mysql_handler::mk_bulk_tmp_table_and_bulk_start() DBUG_RETURN(0); } -void spider_mysql_handler::rm_bulk_tmp_table() +void spider_mbase_handler::rm_bulk_tmp_table() { - DBUG_ENTER("spider_mysql_handler::rm_bulk_tmp_table"); + DBUG_ENTER("spider_mbase_handler::rm_bulk_tmp_table"); DBUG_PRINT("info",("spider this=%p", this)); if (upd_tmp_tbl) { @@ -11214,12 +11477,12 @@ void spider_mysql_handler::rm_bulk_tmp_table() DBUG_VOID_RETURN; } -int spider_mysql_handler::store_sql_to_bulk_tmp_table( +int spider_mbase_handler::store_sql_to_bulk_tmp_table( spider_string *str, TABLE *tmp_table ) { int error_num; - DBUG_ENTER("spider_mysql_handler::store_sql_to_bulk_tmp_table"); + DBUG_ENTER("spider_mbase_handler::store_sql_to_bulk_tmp_table"); DBUG_PRINT("info",("spider this=%p", this)); tmp_table->field[0]->set_notnull(); tmp_table->field[0]->store(str->ptr(), str->length(), str->charset()); @@ -11228,24 +11491,24 @@ int spider_mysql_handler::store_sql_to_bulk_tmp_table( DBUG_RETURN(0); } -int spider_mysql_handler::restore_sql_from_bulk_tmp_table( +int spider_mbase_handler::restore_sql_from_bulk_tmp_table( spider_string *str, TABLE *tmp_table ) { - DBUG_ENTER("spider_mysql_handler::restore_sql_from_bulk_tmp_table"); + DBUG_ENTER("spider_mbase_handler::restore_sql_from_bulk_tmp_table"); DBUG_PRINT("info",("spider this=%p", this)); tmp_table->field[0]->val_str(str->get_str()); str->mem_calc(); DBUG_RETURN(0); } -int spider_mysql_handler::insert_lock_tables_list( +int spider_mbase_handler::insert_lock_tables_list( SPIDER_CONN *conn, int link_idx ) { - spider_db_mysql *db_conn = (spider_db_mysql *) conn->db_conn; + spider_db_mbase *db_conn = (spider_db_mbase *) conn->db_conn; SPIDER_LINK_FOR_HASH *tmp_link_for_hash2 = &link_for_hash[link_idx]; - DBUG_ENTER("spider_mysql_handler::insert_lock_tables_list"); + DBUG_ENTER("spider_mbase_handler::insert_lock_tables_list"); DBUG_PRINT("info",("spider this=%p", this)); uint old_elements = db_conn->lock_table_hash.array.max_element; @@ -11271,7 +11534,7 @@ int spider_mysql_handler::insert_lock_tables_list( DBUG_RETURN(0); } -int spider_mysql_handler::append_lock_tables_list( +int spider_mbase_handler::append_lock_tables_list( SPIDER_CONN *conn, int link_idx, int *appended @@ -11279,8 +11542,8 @@ int spider_mysql_handler::append_lock_tables_list( int error_num; SPIDER_LINK_FOR_HASH *tmp_link_for_hash, *tmp_link_for_hash2; int conn_link_idx = spider->conn_link_idx[link_idx]; - spider_db_mysql *db_conn = (spider_db_mysql *) conn->db_conn; - DBUG_ENTER("spider_mysql_handler::append_lock_tables_list"); + spider_db_mbase *db_conn = (spider_db_mbase *) conn->db_conn; + DBUG_ENTER("spider_mbase_handler::append_lock_tables_list"); DBUG_PRINT("info",("spider this=%p", this)); tmp_link_for_hash2 = &link_for_hash[link_idx]; tmp_link_for_hash2->db_table_str = @@ -11342,14 +11605,14 @@ int spider_mysql_handler::append_lock_tables_list( DBUG_RETURN(0); } -int spider_mysql_handler::realloc_sql( +int spider_mbase_handler::realloc_sql( ulong *realloced ) { THD *thd = spider->trx->thd; st_spider_share *share = spider->share; int init_sql_alloc_size = spider_param_init_sql_alloc_size(thd, share->init_sql_alloc_size); - DBUG_ENTER("spider_mysql_handler::realloc_sql"); + DBUG_ENTER("spider_mbase_handler::realloc_sql"); DBUG_PRINT("info",("spider this=%p", this)); if ((int) sql.alloced_length() > init_sql_alloc_size * 2) { @@ -11396,10 +11659,10 @@ int spider_mysql_handler::realloc_sql( DBUG_RETURN(0); } -int spider_mysql_handler::reset_sql( +int spider_mbase_handler::reset_sql( ulong sql_type ) { - DBUG_ENTER("spider_mysql_handler::reset_sql"); + DBUG_ENTER("spider_mbase_handler::reset_sql"); DBUG_PRINT("info",("spider this=%p", this)); if (sql_type & SPIDER_SQL_TYPE_SELECT_SQL) { @@ -11426,73 +11689,73 @@ int spider_mysql_handler::reset_sql( } #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) -int spider_mysql_handler::reset_keys( +int spider_mbase_handler::reset_keys( ulong sql_type ) { - DBUG_ENTER("spider_mysql_handler::reset_keys"); + DBUG_ENTER("spider_mbase_handler::reset_keys"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_ASSERT(0); DBUG_RETURN(0); } -int spider_mysql_handler::reset_upds( +int spider_mbase_handler::reset_upds( ulong sql_type ) { - DBUG_ENTER("spider_mysql_handler::reset_upds"); + DBUG_ENTER("spider_mbase_handler::reset_upds"); DBUG_PRINT("info",("spider this=%p", this)); hs_upds.clear(); DBUG_RETURN(0); } -int spider_mysql_handler::reset_strs( +int spider_mbase_handler::reset_strs( ulong sql_type ) { - DBUG_ENTER("spider_mysql_handler::reset_strs"); + DBUG_ENTER("spider_mbase_handler::reset_strs"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_ASSERT(0); DBUG_RETURN(0); } -int spider_mysql_handler::reset_strs_pos( +int spider_mbase_handler::reset_strs_pos( ulong sql_type ) { - DBUG_ENTER("spider_mysql_handler::reset_strs_pos"); + DBUG_ENTER("spider_mbase_handler::reset_strs_pos"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_ASSERT(0); DBUG_RETURN(0); } -int spider_mysql_handler::push_back_upds( +int spider_mbase_handler::push_back_upds( SPIDER_HS_STRING_REF &info ) { int error_num; - DBUG_ENTER("spider_mysql_handler::push_back_upds"); + DBUG_ENTER("spider_mbase_handler::push_back_upds"); DBUG_PRINT("info",("spider this=%p", this)); error_num = hs_upds.push_back(info); DBUG_RETURN(error_num); } #endif -bool spider_mysql_handler::need_lock_before_set_sql_for_exec( +bool spider_mbase_handler::need_lock_before_set_sql_for_exec( ulong sql_type ) { - DBUG_ENTER("spider_mysql_handler::need_lock_before_set_sql_for_exec"); + DBUG_ENTER("spider_mbase_handler::need_lock_before_set_sql_for_exec"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(FALSE); } #ifdef SPIDER_HAS_GROUP_BY_HANDLER -int spider_mysql_handler::set_sql_for_exec( +int spider_mbase_handler::set_sql_for_exec( ulong sql_type, int link_idx, SPIDER_LINK_IDX_CHAIN *link_idx_chain ) { int error_num; - DBUG_ENTER("spider_mysql_handler::set_sql_for_exec"); + DBUG_ENTER("spider_mbase_handler::set_sql_for_exec"); DBUG_PRINT("info",("spider this=%p", this)); if (sql_type & SPIDER_SQL_TYPE_SELECT_SQL) { - if ((error_num = spider_db_mysql_utility.reappend_tables( + if ((error_num = spider_db_mbase_utility->reappend_tables( spider->fields, link_idx_chain, &sql))) DBUG_RETURN(error_num); exec_sql = &sql; @@ -11501,7 +11764,7 @@ int spider_mysql_handler::set_sql_for_exec( } #endif -int spider_mysql_handler::set_sql_for_exec( +int spider_mbase_handler::set_sql_for_exec( ulong sql_type, int link_idx ) { @@ -11510,7 +11773,7 @@ int spider_mysql_handler::set_sql_for_exec( SPIDER_SHARE *share = spider->share; SPIDER_RESULT_LIST *result_list = &spider->result_list; int all_link_idx = spider->conn_link_idx[link_idx]; - DBUG_ENTER("spider_mysql_handler::set_sql_for_exec"); + DBUG_ENTER("spider_mbase_handler::set_sql_for_exec"); DBUG_PRINT("info",("spider this=%p", this)); if (sql_type & (SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_TMP_SQL)) { @@ -11561,7 +11824,7 @@ int spider_mysql_handler::set_sql_for_exec( exec_sql->length(table_name_pos); if (result_list->tmp_table_join && spider->bka_mode != 2) { - if ((error_num = spider_db_mysql_utility.append_from_with_alias( + if ((error_num = spider_db_mbase_utility->append_from_with_alias( exec_sql, table_names, table_name_lengths, table_aliases, table_alias_lengths, 2, &table_name_pos, TRUE)) @@ -11683,12 +11946,12 @@ int spider_mysql_handler::set_sql_for_exec( DBUG_RETURN(0); } -int spider_mysql_handler::set_sql_for_exec( +int spider_mbase_handler::set_sql_for_exec( spider_db_copy_table *tgt_ct, ulong sql_type ) { - spider_mysql_copy_table *mysql_ct = (spider_mysql_copy_table *) tgt_ct; - DBUG_ENTER("spider_mysql_handler::set_sql_for_exec"); + spider_mbase_copy_table *mysql_ct = (spider_mbase_copy_table *) tgt_ct; + DBUG_ENTER("spider_mbase_handler::set_sql_for_exec"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -11702,7 +11965,7 @@ int spider_mysql_handler::set_sql_for_exec( DBUG_RETURN(0); } -int spider_mysql_handler::execute_sql( +int spider_mbase_handler::execute_sql( ulong sql_type, SPIDER_CONN *conn, int quick_mode, @@ -11710,7 +11973,7 @@ int spider_mysql_handler::execute_sql( ) { spider_string *tgt_sql; uint tgt_length; - DBUG_ENTER("spider_mysql_handler::execute_sql"); + DBUG_ENTER("spider_mbase_handler::execute_sql"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -11764,23 +12027,23 @@ int spider_mysql_handler::execute_sql( )); } -int spider_mysql_handler::reset() +int spider_mbase_handler::reset() { - DBUG_ENTER("spider_mysql_handler::reset"); + DBUG_ENTER("spider_mbase_handler::reset"); DBUG_PRINT("info",("spider this=%p", this)); update_sql.length(0); DBUG_RETURN(0); } -int spider_mysql_handler::sts_mode_exchange( +int spider_mbase_handler::sts_mode_exchange( int sts_mode ) { - DBUG_ENTER("spider_mysql_handler::sts_mode_exchange"); + DBUG_ENTER("spider_mbase_handler::sts_mode_exchange"); DBUG_PRINT("info",("spider sts_mode=%d", sts_mode)); DBUG_RETURN(sts_mode); } -int spider_mysql_handler::show_table_status( +int spider_mbase_handler::show_table_status( int link_idx, int sts_mode, uint flag @@ -11791,7 +12054,7 @@ int spider_mysql_handler::show_table_status( SPIDER_SHARE *share = spider->share; uint pos = (2 * spider->conn_link_idx[link_idx]); ulonglong auto_increment_value = 0; - DBUG_ENTER("spider_mysql_handler::show_table_status"); + DBUG_ENTER("spider_mbase_handler::show_table_status"); DBUG_PRINT("info",("spider sts_mode=%d", sts_mode)); if (sts_mode == 1) @@ -12087,15 +12350,15 @@ int spider_mysql_handler::show_table_status( DBUG_RETURN(0); } -int spider_mysql_handler::crd_mode_exchange( +int spider_mbase_handler::crd_mode_exchange( int crd_mode ) { - DBUG_ENTER("spider_mysql_handler::crd_mode_exchange"); + DBUG_ENTER("spider_mbase_handler::crd_mode_exchange"); DBUG_PRINT("info",("spider crd_mode=%d", crd_mode)); DBUG_RETURN(crd_mode); } -int spider_mysql_handler::show_index( +int spider_mbase_handler::show_index( int link_idx, int crd_mode ) { @@ -12107,7 +12370,7 @@ int spider_mysql_handler::show_index( int roop_count; longlong *tmp_cardinality; uint pos = (2 * spider->conn_link_idx[link_idx]); - DBUG_ENTER("spider_mysql_handler::show_index"); + DBUG_ENTER("spider_mbase_handler::show_index"); DBUG_PRINT("info",("spider crd_mode=%d", crd_mode)); if (crd_mode == 1) { @@ -12380,7 +12643,7 @@ int spider_mysql_handler::show_index( DBUG_RETURN(0); } -int spider_mysql_handler::show_records( +int spider_mbase_handler::show_records( int link_idx ) { int error_num; @@ -12388,7 +12651,7 @@ int spider_mysql_handler::show_records( SPIDER_DB_RESULT *res; SPIDER_SHARE *share = spider->share; uint pos = spider->conn_link_idx[link_idx]; - DBUG_ENTER("spider_mysql_handler::show_records"); + DBUG_ENTER("spider_mbase_handler::show_records"); pthread_mutex_lock(&conn->mta_conn_mutex); SPIDER_SET_FILE_POS(&conn->mta_conn_mutex_file_pos); conn->need_mon = &spider->need_mons[link_idx]; @@ -12493,17 +12756,17 @@ int spider_mysql_handler::show_records( DBUG_RETURN(0); } -int spider_mysql_handler::show_last_insert_id( +int spider_mbase_handler::show_last_insert_id( int link_idx, ulonglong &last_insert_id ) { SPIDER_CONN *conn = spider->conns[link_idx]; - DBUG_ENTER("spider_mysql_handler::show_last_insert_id"); + DBUG_ENTER("spider_mbase_handler::show_last_insert_id"); last_insert_id = conn->db_conn->last_insert_id(); DBUG_RETURN(0); } -ha_rows spider_mysql_handler::explain_select( +ha_rows spider_mbase_handler::explain_select( key_range *start_key, key_range *end_key, int link_idx @@ -12515,7 +12778,7 @@ ha_rows spider_mysql_handler::explain_select( SPIDER_DB_RESULT *res; ha_rows rows; spider_db_handler *dbton_hdl = spider->dbton_handler[conn->dbton_id]; - DBUG_ENTER("spider_mysql_handler::explain_select"); + DBUG_ENTER("spider_mbase_handler::explain_select"); if ((error_num = dbton_hdl->append_explain_select_part( start_key, end_key, SPIDER_SQL_TYPE_OTHER_SQL, link_idx))) { @@ -12639,13 +12902,13 @@ ha_rows spider_mysql_handler::explain_select( DBUG_RETURN(rows); } -int spider_mysql_handler::lock_tables( +int spider_mbase_handler::lock_tables( int link_idx ) { int error_num; SPIDER_CONN *conn = spider->conns[link_idx]; spider_string *str = &sql; - DBUG_ENTER("spider_mysql_handler::lock_tables"); + DBUG_ENTER("spider_mbase_handler::lock_tables"); str->length(0); if ((error_num = conn->db_conn->append_lock_tables(str))) { @@ -12692,12 +12955,12 @@ int spider_mysql_handler::lock_tables( DBUG_RETURN(0); } -int spider_mysql_handler::unlock_tables( +int spider_mbase_handler::unlock_tables( int link_idx ) { int error_num; SPIDER_CONN *conn = spider->conns[link_idx]; - DBUG_ENTER("spider_mysql_handler::unlock_tables"); + DBUG_ENTER("spider_mbase_handler::unlock_tables"); if (conn->table_locked) { spider_string *str = &sql; @@ -12728,14 +12991,14 @@ int spider_mysql_handler::unlock_tables( DBUG_RETURN(0); } -int spider_mysql_handler::disable_keys( +int spider_mbase_handler::disable_keys( SPIDER_CONN *conn, int link_idx ) { int error_num; SPIDER_SHARE *share = spider->share; spider_string *str = &spider->result_list.sqls[link_idx]; - DBUG_ENTER("spider_mysql_handler::disable_keys"); + DBUG_ENTER("spider_mbase_handler::disable_keys"); DBUG_PRINT("info",("spider this=%p", this)); str->length(0); if ((error_num = append_disable_keys_part(SPIDER_SQL_TYPE_OTHER_HS, @@ -12777,14 +13040,14 @@ int spider_mysql_handler::disable_keys( DBUG_RETURN(0); } -int spider_mysql_handler::enable_keys( +int spider_mbase_handler::enable_keys( SPIDER_CONN *conn, int link_idx ) { int error_num; SPIDER_SHARE *share = spider->share; spider_string *str = &spider->result_list.sqls[link_idx]; - DBUG_ENTER("spider_mysql_handler::enable_keys"); + DBUG_ENTER("spider_mbase_handler::enable_keys"); DBUG_PRINT("info",("spider this=%p", this)); str->length(0); if ((error_num = append_enable_keys_part(SPIDER_SQL_TYPE_OTHER_HS, @@ -12826,7 +13089,7 @@ int spider_mysql_handler::enable_keys( DBUG_RETURN(0); } -int spider_mysql_handler::check_table( +int spider_mbase_handler::check_table( SPIDER_CONN *conn, int link_idx, HA_CHECK_OPT* check_opt @@ -12834,7 +13097,7 @@ int spider_mysql_handler::check_table( int error_num; SPIDER_SHARE *share = spider->share; spider_string *str = &spider->result_list.sqls[link_idx]; - DBUG_ENTER("spider_mysql_handler::check_table"); + DBUG_ENTER("spider_mbase_handler::check_table"); DBUG_PRINT("info",("spider this=%p", this)); str->length(0); if ((error_num = append_check_table_part(SPIDER_SQL_TYPE_OTHER_HS, @@ -12876,7 +13139,7 @@ int spider_mysql_handler::check_table( DBUG_RETURN(0); } -int spider_mysql_handler::repair_table( +int spider_mbase_handler::repair_table( SPIDER_CONN *conn, int link_idx, HA_CHECK_OPT* check_opt @@ -12884,7 +13147,7 @@ int spider_mysql_handler::repair_table( int error_num; SPIDER_SHARE *share = spider->share; spider_string *str = &spider->result_list.sqls[link_idx]; - DBUG_ENTER("spider_mysql_handler::repair_table"); + DBUG_ENTER("spider_mbase_handler::repair_table"); DBUG_PRINT("info",("spider this=%p", this)); str->length(0); if ((error_num = append_repair_table_part(SPIDER_SQL_TYPE_OTHER_HS, @@ -12926,14 +13189,14 @@ int spider_mysql_handler::repair_table( DBUG_RETURN(0); } -int spider_mysql_handler::analyze_table( +int spider_mbase_handler::analyze_table( SPIDER_CONN *conn, int link_idx ) { int error_num; SPIDER_SHARE *share = spider->share; spider_string *str = &spider->result_list.sqls[link_idx]; - DBUG_ENTER("spider_mysql_handler::analyze_table"); + DBUG_ENTER("spider_mbase_handler::analyze_table"); DBUG_PRINT("info",("spider this=%p", this)); str->length(0); if ((error_num = append_analyze_table_part(SPIDER_SQL_TYPE_OTHER_HS, @@ -12975,14 +13238,14 @@ int spider_mysql_handler::analyze_table( DBUG_RETURN(0); } -int spider_mysql_handler::optimize_table( +int spider_mbase_handler::optimize_table( SPIDER_CONN *conn, int link_idx ) { int error_num; SPIDER_SHARE *share = spider->share; spider_string *str = &spider->result_list.sqls[link_idx]; - DBUG_ENTER("spider_mysql_handler::optimize_table"); + DBUG_ENTER("spider_mbase_handler::optimize_table"); DBUG_PRINT("info",("spider this=%p", this)); str->length(0); if ((error_num = append_optimize_table_part(SPIDER_SQL_TYPE_OTHER_HS, @@ -13024,7 +13287,7 @@ int spider_mysql_handler::optimize_table( DBUG_RETURN(0); } -int spider_mysql_handler::flush_tables( +int spider_mbase_handler::flush_tables( SPIDER_CONN *conn, int link_idx, bool lock @@ -13032,7 +13295,7 @@ int spider_mysql_handler::flush_tables( int error_num; SPIDER_SHARE *share = spider->share; spider_string *str = &spider->result_list.sqls[link_idx]; - DBUG_ENTER("spider_mysql_handler::flush_tables"); + DBUG_ENTER("spider_mbase_handler::flush_tables"); DBUG_PRINT("info",("spider this=%p", this)); str->length(0); if ((error_num = append_flush_tables_part(SPIDER_SQL_TYPE_OTHER_HS, @@ -13057,13 +13320,13 @@ int spider_mysql_handler::flush_tables( DBUG_RETURN(0); } -int spider_mysql_handler::flush_logs( +int spider_mbase_handler::flush_logs( SPIDER_CONN *conn, int link_idx ) { int error_num; SPIDER_SHARE *share = spider->share; - DBUG_ENTER("spider_mysql_handler::flush_logs"); + DBUG_ENTER("spider_mbase_handler::flush_logs"); DBUG_PRINT("info",("spider this=%p", this)); spider_conn_set_timeout_from_share(conn, link_idx, spider->trx->thd, share); @@ -13082,16 +13345,16 @@ int spider_mysql_handler::flush_logs( DBUG_RETURN(0); } -int spider_mysql_handler::insert_opened_handler( +int spider_mbase_handler::insert_opened_handler( SPIDER_CONN *conn, int link_idx ) { - spider_db_mysql *db_conn = (spider_db_mysql *) conn->db_conn; + spider_db_mbase *db_conn = (spider_db_mbase *) conn->db_conn; SPIDER_LINK_FOR_HASH *tmp_link_for_hash = &link_for_hash[link_idx]; DBUG_ASSERT(tmp_link_for_hash->spider == spider); DBUG_ASSERT(tmp_link_for_hash->link_idx == link_idx); uint old_elements = db_conn->handler_open_array.max_element; - DBUG_ENTER("spider_mysql_handler::insert_opened_handler"); + DBUG_ENTER("spider_mbase_handler::insert_opened_handler"); DBUG_PRINT("info",("spider this=%p", this)); if (insert_dynamic(&db_conn->handler_open_array, (uchar*) &tmp_link_for_hash)) @@ -13108,14 +13371,14 @@ int spider_mysql_handler::insert_opened_handler( DBUG_RETURN(0); } -int spider_mysql_handler::delete_opened_handler( +int spider_mbase_handler::delete_opened_handler( SPIDER_CONN *conn, int link_idx ) { - spider_db_mysql *db_conn = (spider_db_mysql *) conn->db_conn; + spider_db_mbase *db_conn = (spider_db_mbase *) conn->db_conn; uint roop_count, elements = db_conn->handler_open_array.elements; SPIDER_LINK_FOR_HASH *tmp_link_for_hash; - DBUG_ENTER("spider_mysql_handler::delete_opened_handler"); + DBUG_ENTER("spider_mbase_handler::delete_opened_handler"); DBUG_PRINT("info",("spider this=%p", this)); for (roop_count = 0; roop_count < elements; roop_count++) { @@ -13131,27 +13394,27 @@ int spider_mysql_handler::delete_opened_handler( DBUG_RETURN(0); } -int spider_mysql_handler::sync_from_clone_source( +int spider_mbase_handler::sync_from_clone_source( spider_db_handler *dbton_hdl ) { - DBUG_ENTER("spider_mysql_handler::sync_from_clone_source"); + DBUG_ENTER("spider_mbase_handler::sync_from_clone_source"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(0); } -bool spider_mysql_handler::support_use_handler( +bool spider_mbase_handler::support_use_handler( int use_handler ) { - DBUG_ENTER("spider_mysql_handler::support_use_handler"); + DBUG_ENTER("spider_mbase_handler::support_use_handler"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_RETURN(TRUE); } -void spider_mysql_handler::minimum_select_bitmap_create() +void spider_mbase_handler::minimum_select_bitmap_create() { TABLE *table = spider->get_table(); Field **field_p; - DBUG_ENTER("spider_mysql_handler::minimum_select_bitmap_create"); + DBUG_ENTER("spider_mbase_handler::minimum_select_bitmap_create"); DBUG_PRINT("info",("spider this=%p", this)); memset(minimum_select_bitmap, 0, no_bytes_in_map(table->read_set)); if ( @@ -13218,10 +13481,10 @@ void spider_mysql_handler::minimum_select_bitmap_create() DBUG_VOID_RETURN; } -bool spider_mysql_handler::minimum_select_bit_is_set( +bool spider_mbase_handler::minimum_select_bit_is_set( uint field_index ) { - DBUG_ENTER("spider_mysql_handler::minimum_select_bit_is_set"); + DBUG_ENTER("spider_mbase_handler::minimum_select_bit_is_set"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_PRINT("info",("spider field_index=%u", field_index)); DBUG_PRINT("info",("spider minimum_select_bitmap=%s", @@ -13230,12 +13493,12 @@ bool spider_mysql_handler::minimum_select_bit_is_set( DBUG_RETURN(spider_bit_is_set(minimum_select_bitmap, field_index)); } -void spider_mysql_handler::copy_minimum_select_bitmap( +void spider_mbase_handler::copy_minimum_select_bitmap( uchar *bitmap ) { int roop_count; TABLE *table = spider->get_table(); - DBUG_ENTER("spider_mysql_handler::copy_minimum_select_bitmap"); + DBUG_ENTER("spider_mbase_handler::copy_minimum_select_bitmap"); for (roop_count = 0; roop_count < (int) ((table->s->fields + 7) / 8); roop_count++) @@ -13249,9 +13512,9 @@ void spider_mysql_handler::copy_minimum_select_bitmap( DBUG_VOID_RETURN; } -int spider_mysql_handler::init_union_table_name_pos() +int spider_mbase_handler::init_union_table_name_pos() { - DBUG_ENTER("spider_mysql_handler::init_union_table_name_pos"); + DBUG_ENTER("spider_mbase_handler::init_union_table_name_pos"); DBUG_PRINT("info",("spider this=%p", this)); if (!union_table_name_pos_first) { @@ -13268,9 +13531,9 @@ int spider_mysql_handler::init_union_table_name_pos() DBUG_RETURN(0); } -int spider_mysql_handler::set_union_table_name_pos() +int spider_mbase_handler::set_union_table_name_pos() { - DBUG_ENTER("spider_mysql_handler::set_union_table_name_pos"); + DBUG_ENTER("spider_mbase_handler::set_union_table_name_pos"); DBUG_PRINT("info",("spider this=%p", this)); if (union_table_name_pos_current->tgt_num >= SPIDER_INT_HLD_TGT_SIZE) { @@ -13293,12 +13556,12 @@ int spider_mysql_handler::set_union_table_name_pos() DBUG_RETURN(0); } -int spider_mysql_handler::reset_union_table_name( +int spider_mbase_handler::reset_union_table_name( spider_string *str, int link_idx, ulong sql_type ) { - DBUG_ENTER("spider_mysql_handler::reset_union_table_name"); + DBUG_ENTER("spider_mbase_handler::reset_union_table_name"); DBUG_PRINT("info",("spider this=%p", this)); if (!union_table_name_pos_current) DBUG_RETURN(0); @@ -13321,7 +13584,7 @@ int spider_mysql_handler::reset_union_table_name( } #ifdef SPIDER_HAS_GROUP_BY_HANDLER -int spider_mysql_handler::append_from_and_tables_part( +int spider_mbase_handler::append_from_and_tables_part( spider_fields *fields, ulong sql_type ) { @@ -13329,7 +13592,7 @@ int spider_mysql_handler::append_from_and_tables_part( spider_string *str; SPIDER_TABLE_HOLDER *table_holder; TABLE_LIST *table_list; - DBUG_ENTER("spider_mysql_handler::append_from_and_tables_part"); + DBUG_ENTER("spider_mbase_handler::append_from_and_tables_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -13342,19 +13605,19 @@ int spider_mysql_handler::append_from_and_tables_part( fields->set_pos_to_first_table_holder(); table_holder = fields->get_next_table_holder(); table_list = table_holder->table->pos_in_table_list; - error_num = spider_db_mysql_utility.append_from_and_tables( + error_num = spider_db_mbase_utility->append_from_and_tables( table_holder->spider, fields, str, table_list, fields->get_table_count()); DBUG_RETURN(error_num); } -int spider_mysql_handler::reappend_tables_part( +int spider_mbase_handler::reappend_tables_part( spider_fields *fields, ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::reappend_tables_part"); + DBUG_ENTER("spider_mbase_handler::reappend_tables_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -13364,17 +13627,17 @@ int spider_mysql_handler::reappend_tables_part( default: DBUG_RETURN(0); } - error_num = spider_db_mysql_utility.reappend_tables(fields, + error_num = spider_db_mbase_utility->reappend_tables(fields, link_idx_chain, str); DBUG_RETURN(error_num); } -int spider_mysql_handler::append_where_part( +int spider_mbase_handler::append_where_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_where_part"); + DBUG_ENTER("spider_mbase_handler::append_where_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -13384,16 +13647,16 @@ int spider_mysql_handler::append_where_part( default: DBUG_RETURN(0); } - error_num = spider_db_mysql_utility.append_where(str); + error_num = spider_db_mbase_utility->append_where(str); DBUG_RETURN(error_num); } -int spider_mysql_handler::append_having_part( +int spider_mbase_handler::append_having_part( ulong sql_type ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_having_part"); + DBUG_ENTER("spider_mbase_handler::append_having_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -13403,11 +13666,11 @@ int spider_mysql_handler::append_having_part( default: DBUG_RETURN(0); } - error_num = spider_db_mysql_utility.append_having(str); + error_num = spider_db_mbase_utility->append_having(str); DBUG_RETURN(error_num); } -int spider_mysql_handler::append_item_type_part( +int spider_mbase_handler::append_item_type_part( Item *item, const char *alias, uint alias_length, @@ -13417,7 +13680,7 @@ int spider_mysql_handler::append_item_type_part( ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_item_type_part"); + DBUG_ENTER("spider_mbase_handler::append_item_type_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -13428,11 +13691,11 @@ int spider_mysql_handler::append_item_type_part( DBUG_RETURN(0); } error_num = spider_db_print_item_type(item, NULL, spider, str, - alias, alias_length, spider_dbton_mysql.dbton_id, use_fields, fields); + alias, alias_length, dbton_id, use_fields, fields); DBUG_RETURN(error_num); } -int spider_mysql_handler::append_list_item_select_part( +int spider_mbase_handler::append_list_item_select_part( List<Item> *select, const char *alias, uint alias_length, @@ -13442,7 +13705,7 @@ int spider_mysql_handler::append_list_item_select_part( ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_list_item_select_part"); + DBUG_ENTER("spider_mbase_handler::append_list_item_select_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -13457,7 +13720,7 @@ int spider_mysql_handler::append_list_item_select_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_list_item_select( +int spider_mbase_handler::append_list_item_select( List<Item> *select, spider_string *str, const char *alias, @@ -13466,12 +13729,12 @@ int spider_mysql_handler::append_list_item_select( spider_fields *fields ) { int error_num; - uint dbton_id = spider_dbton_mysql.dbton_id, length; + uint32 length; List_iterator_fast<Item> it(*select); Item *item; Field *field; const char *item_name; - DBUG_ENTER("spider_mysql_handler::append_list_item_select"); + DBUG_ENTER("spider_mbase_handler::append_list_item_select"); DBUG_PRINT("info",("spider this=%p", this)); while ((item = it++)) { @@ -13495,7 +13758,7 @@ int spider_mysql_handler::append_list_item_select( )) DBUG_RETURN(HA_ERR_OUT_OF_MEM); str->q_append(SPIDER_SQL_SPACE_STR, SPIDER_SQL_SPACE_LEN); - if ((error_num = spider_db_mysql_utility.append_name(str, + if ((error_num = spider_db_mbase_utility->append_name(str, item_name, length))) { DBUG_RETURN(error_num); @@ -13506,7 +13769,7 @@ int spider_mysql_handler::append_list_item_select( DBUG_RETURN(0); } -int spider_mysql_handler::append_group_by_part( +int spider_mbase_handler::append_group_by_part( ORDER *order, const char *alias, uint alias_length, @@ -13516,7 +13779,7 @@ int spider_mysql_handler::append_group_by_part( ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_group_by_part"); + DBUG_ENTER("spider_mbase_handler::append_group_by_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -13531,7 +13794,7 @@ int spider_mysql_handler::append_group_by_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_group_by( +int spider_mbase_handler::append_group_by( ORDER *order, spider_string *str, const char *alias, @@ -13540,8 +13803,7 @@ int spider_mysql_handler::append_group_by( spider_fields *fields ) { int error_num; - uint dbton_id = spider_dbton_mysql.dbton_id; - DBUG_ENTER("spider_mysql_handler::append_group_by"); + DBUG_ENTER("spider_mbase_handler::append_group_by"); DBUG_PRINT("info",("spider this=%p", this)); if (order) { @@ -13564,7 +13826,7 @@ int spider_mysql_handler::append_group_by( DBUG_RETURN(0); } -int spider_mysql_handler::append_order_by_part( +int spider_mbase_handler::append_order_by_part( ORDER *order, const char *alias, uint alias_length, @@ -13574,7 +13836,7 @@ int spider_mysql_handler::append_order_by_part( ) { int error_num; spider_string *str; - DBUG_ENTER("spider_mysql_handler::append_order_by_part"); + DBUG_ENTER("spider_mbase_handler::append_order_by_part"); DBUG_PRINT("info",("spider this=%p", this)); switch (sql_type) { @@ -13589,7 +13851,7 @@ int spider_mysql_handler::append_order_by_part( DBUG_RETURN(error_num); } -int spider_mysql_handler::append_order_by( +int spider_mbase_handler::append_order_by( ORDER *order, spider_string *str, const char *alias, @@ -13598,8 +13860,7 @@ int spider_mysql_handler::append_order_by( spider_fields *fields ) { int error_num; - uint dbton_id = spider_dbton_mysql.dbton_id; - DBUG_ENTER("spider_mysql_handler::append_order_by"); + DBUG_ENTER("spider_mbase_handler::append_order_by"); DBUG_PRINT("info",("spider this=%p", this)); if (order) { @@ -13631,18 +13892,45 @@ int spider_mysql_handler::append_order_by( } #endif -spider_mysql_copy_table::spider_mysql_copy_table( - spider_mysql_share *db_share +spider_mbase_copy_table::spider_mbase_copy_table( + spider_mbase_share *db_share ) : spider_db_copy_table( db_share ), mysql_share(db_share) { + DBUG_ENTER("spider_mbase_copy_table::spider_mbase_copy_table"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_mysql_copy_table::spider_mysql_copy_table( + spider_mbase_share *db_share +) : spider_mbase_copy_table( + db_share +) { DBUG_ENTER("spider_mysql_copy_table::spider_mysql_copy_table"); DBUG_PRINT("info",("spider this=%p", this)); DBUG_VOID_RETURN; } +spider_mariadb_copy_table::spider_mariadb_copy_table( + spider_mbase_share *db_share +) : spider_mbase_copy_table( + db_share +) { + DBUG_ENTER("spider_mariadb_copy_table::spider_mariadb_copy_table"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +spider_mbase_copy_table::~spider_mbase_copy_table() +{ + DBUG_ENTER("spider_mbase_copy_table::~spider_mbase_copy_table"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + spider_mysql_copy_table::~spider_mysql_copy_table() { DBUG_ENTER("spider_mysql_copy_table::~spider_mysql_copy_table"); @@ -13650,26 +13938,33 @@ spider_mysql_copy_table::~spider_mysql_copy_table() DBUG_VOID_RETURN; } -int spider_mysql_copy_table::init() +spider_mariadb_copy_table::~spider_mariadb_copy_table() { - DBUG_ENTER("spider_mysql_copy_table::init"); + DBUG_ENTER("spider_mariadb_copy_table::~spider_mariadb_copy_table"); + DBUG_PRINT("info",("spider this=%p", this)); + DBUG_VOID_RETURN; +} + +int spider_mbase_copy_table::init() +{ + DBUG_ENTER("spider_mbase_copy_table::init"); DBUG_PRINT("info",("spider this=%p", this)); sql.init_calc_mem(78); DBUG_RETURN(0); } -void spider_mysql_copy_table::set_sql_charset( +void spider_mbase_copy_table::set_sql_charset( CHARSET_INFO *cs ) { - DBUG_ENTER("spider_mysql_copy_table::set_sql_charset"); + DBUG_ENTER("spider_mbase_copy_table::set_sql_charset"); DBUG_PRINT("info",("spider this=%p", this)); sql.set_charset(cs); DBUG_VOID_RETURN; } -int spider_mysql_copy_table::append_select_str() +int spider_mbase_copy_table::append_select_str() { - DBUG_ENTER("spider_mysql_copy_table::append_select_str"); + DBUG_ENTER("spider_mbase_copy_table::append_select_str"); DBUG_PRINT("info",("spider this=%p", this)); if (sql.reserve(SPIDER_SQL_SELECT_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -13677,10 +13972,10 @@ int spider_mysql_copy_table::append_select_str() DBUG_RETURN(0); } -int spider_mysql_copy_table::append_insert_str( +int spider_mbase_copy_table::append_insert_str( int insert_flg ) { - DBUG_ENTER("spider_mysql_copy_table::append_insert_str"); + DBUG_ENTER("spider_mbase_copy_table::append_insert_str"); DBUG_PRINT("info",("spider this=%p", this)); if (insert_flg & SPIDER_DB_INSERT_REPLACE) { @@ -13719,12 +14014,12 @@ int spider_mysql_copy_table::append_insert_str( DBUG_RETURN(0); } -int spider_mysql_copy_table::append_table_columns( +int spider_mbase_copy_table::append_table_columns( TABLE_SHARE *table_share ) { int error_num; Field **field; - DBUG_ENTER("spider_mysql_copy_table::append_table_columns"); + DBUG_ENTER("spider_mbase_copy_table::append_table_columns"); DBUG_PRINT("info",("spider this=%p", this)); for (field = table_share->field; *field; field++) { @@ -13732,7 +14027,7 @@ int spider_mysql_copy_table::append_table_columns( DBUG_RETURN(HA_ERR_OUT_OF_MEM); sql.q_append(SPIDER_SQL_NAME_QUOTE_STR, SPIDER_SQL_NAME_QUOTE_LEN); if ((error_num = spider_db_append_name_with_quote_str(&sql, - (*field)->field_name, spider_dbton_mysql.dbton_id))) + (*field)->field_name, dbton_id))) DBUG_RETURN(error_num); if (sql.reserve(SPIDER_SQL_NAME_QUOTE_LEN + SPIDER_SQL_COMMA_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -13743,9 +14038,9 @@ int spider_mysql_copy_table::append_table_columns( DBUG_RETURN(0); } -int spider_mysql_copy_table::append_from_str() +int spider_mbase_copy_table::append_from_str() { - DBUG_ENTER("spider_mysql_copy_table::append_from_str"); + DBUG_ENTER("spider_mbase_copy_table::append_from_str"); DBUG_PRINT("info",("spider this=%p", this)); if (sql.reserve(SPIDER_SQL_FROM_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -13753,40 +14048,40 @@ int spider_mysql_copy_table::append_from_str() DBUG_RETURN(0); } -int spider_mysql_copy_table::append_table_name( +int spider_mbase_copy_table::append_table_name( int link_idx ) { int error_num; - DBUG_ENTER("spider_mysql_copy_table::append_table_name"); + DBUG_ENTER("spider_mbase_copy_table::append_table_name"); DBUG_PRINT("info",("spider this=%p", this)); error_num = mysql_share->append_table_name(&sql, link_idx); DBUG_RETURN(error_num); } -void spider_mysql_copy_table::set_sql_pos() +void spider_mbase_copy_table::set_sql_pos() { - DBUG_ENTER("spider_mysql_copy_table::set_sql_pos"); + DBUG_ENTER("spider_mbase_copy_table::set_sql_pos"); DBUG_PRINT("info",("spider this=%p", this)); pos = sql.length(); DBUG_VOID_RETURN; } -void spider_mysql_copy_table::set_sql_to_pos() +void spider_mbase_copy_table::set_sql_to_pos() { - DBUG_ENTER("spider_mysql_copy_table::set_sql_to_pos"); + DBUG_ENTER("spider_mbase_copy_table::set_sql_to_pos"); DBUG_PRINT("info",("spider this=%p", this)); sql.length(pos); DBUG_VOID_RETURN; } -int spider_mysql_copy_table::append_copy_where( +int spider_mbase_copy_table::append_copy_where( spider_db_copy_table *source_ct, KEY *key_info, ulong *last_row_pos, ulong *last_lengths ) { int error_num, roop_count, roop_count2; - DBUG_ENTER("spider_mysql_copy_table::append_copy_where"); + DBUG_ENTER("spider_mbase_copy_table::append_copy_where"); DBUG_PRINT("info",("spider this=%p", this)); if (sql.reserve(SPIDER_SQL_WHERE_LEN + SPIDER_SQL_OPEN_PAREN_LEN)) { @@ -13832,7 +14127,7 @@ int spider_mysql_copy_table::append_copy_where( DBUG_RETURN(0); } -int spider_mysql_copy_table::append_key_order_str( +int spider_mbase_copy_table::append_key_order_str( KEY *key_info, int start_pos, bool desc_flg @@ -13840,7 +14135,7 @@ int spider_mysql_copy_table::append_key_order_str( int length, error_num; KEY_PART_INFO *key_part; Field *field; - DBUG_ENTER("spider_mysql_copy_table::append_key_order_str"); + DBUG_ENTER("spider_mbase_copy_table::append_key_order_str"); DBUG_PRINT("info",("spider this=%p", this)); if ((int) spider_user_defined_key_parts(key_info) > start_pos) { @@ -13861,7 +14156,7 @@ int spider_mysql_copy_table::append_key_order_str( DBUG_RETURN(HA_ERR_OUT_OF_MEM); sql.q_append(SPIDER_SQL_NAME_QUOTE_STR, SPIDER_SQL_NAME_QUOTE_LEN); if ((error_num = spider_db_append_name_with_quote_str(&sql, - field->field_name, spider_dbton_mysql.dbton_id))) + field->field_name, dbton_id))) DBUG_RETURN(error_num); if (key_part->key_part_flag & HA_REVERSE_SORT) { @@ -13891,7 +14186,7 @@ int spider_mysql_copy_table::append_key_order_str( DBUG_RETURN(HA_ERR_OUT_OF_MEM); sql.q_append(SPIDER_SQL_NAME_QUOTE_STR, SPIDER_SQL_NAME_QUOTE_LEN); if ((error_num = spider_db_append_name_with_quote_str(&sql, - field->field_name, spider_dbton_mysql.dbton_id))) + field->field_name, dbton_id))) DBUG_RETURN(error_num); if (key_part->key_part_flag & HA_REVERSE_SORT) { @@ -13914,13 +14209,13 @@ int spider_mysql_copy_table::append_key_order_str( DBUG_RETURN(0); } -int spider_mysql_copy_table::append_limit( +int spider_mbase_copy_table::append_limit( longlong offset, longlong limit ) { char buf[SPIDER_LONGLONG_LEN + 1]; uint32 length; - DBUG_ENTER("spider_mysql_copy_table::append_limit"); + DBUG_ENTER("spider_mbase_copy_table::append_limit"); DBUG_PRINT("info",("spider this=%p", this)); if (offset || limit < 9223372036854775807LL) { @@ -13942,9 +14237,9 @@ int spider_mysql_copy_table::append_limit( DBUG_RETURN(0); } -int spider_mysql_copy_table::append_into_str() +int spider_mbase_copy_table::append_into_str() { - DBUG_ENTER("spider_mysql_copy_table::append_into_str"); + DBUG_ENTER("spider_mbase_copy_table::append_into_str"); DBUG_PRINT("info",("spider this=%p", this)); if (sql.reserve(SPIDER_SQL_INTO_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -13952,9 +14247,9 @@ int spider_mysql_copy_table::append_into_str() DBUG_RETURN(0); } -int spider_mysql_copy_table::append_open_paren_str() +int spider_mbase_copy_table::append_open_paren_str() { - DBUG_ENTER("spider_mysql_copy_table::append_open_paren_str"); + DBUG_ENTER("spider_mbase_copy_table::append_open_paren_str"); DBUG_PRINT("info",("spider this=%p", this)); if (sql.reserve(SPIDER_SQL_OPEN_PAREN_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -13962,9 +14257,9 @@ int spider_mysql_copy_table::append_open_paren_str() DBUG_RETURN(0); } -int spider_mysql_copy_table::append_values_str() +int spider_mbase_copy_table::append_values_str() { - DBUG_ENTER("spider_mysql_copy_table::append_values_str"); + DBUG_ENTER("spider_mbase_copy_table::append_values_str"); DBUG_PRINT("info",("spider this=%p", this)); if (sql.reserve(SPIDER_SQL_CLOSE_PAREN_LEN + SPIDER_SQL_VALUES_LEN + SPIDER_SQL_OPEN_PAREN_LEN)) @@ -13975,10 +14270,10 @@ int spider_mysql_copy_table::append_values_str() DBUG_RETURN(0); } -int spider_mysql_copy_table::append_select_lock_str( +int spider_mbase_copy_table::append_select_lock_str( int lock_mode ) { - DBUG_ENTER("spider_mysql_copy_table::append_select_lock_str"); + DBUG_ENTER("spider_mbase_copy_table::append_select_lock_str"); DBUG_PRINT("info",("spider this=%p", this)); if (lock_mode == SPIDER_LOCK_MODE_EXCLUSIVE) { @@ -13994,20 +14289,20 @@ int spider_mysql_copy_table::append_select_lock_str( DBUG_RETURN(0); } -int spider_mysql_copy_table::exec_query( +int spider_mbase_copy_table::exec_query( SPIDER_CONN *conn, int quick_mode, int *need_mon ) { int error_num; - DBUG_ENTER("spider_mysql_copy_table::exec_query"); + DBUG_ENTER("spider_mbase_copy_table::exec_query"); DBUG_PRINT("info",("spider this=%p", this)); error_num = spider_db_query(conn, sql.ptr(), sql.length(), quick_mode, need_mon); DBUG_RETURN(error_num); } -int spider_mysql_copy_table::copy_key_row( +int spider_mbase_copy_table::copy_key_row( spider_db_copy_table *source_ct, Field *field, ulong *row_pos, @@ -14016,14 +14311,14 @@ int spider_mysql_copy_table::copy_key_row( const int joint_length ) { int error_num; - spider_string *source_str = &((spider_mysql_copy_table *) source_ct)->sql; - DBUG_ENTER("spider_mysql_copy_table::copy_key_row"); + spider_string *source_str = &((spider_mbase_copy_table *) source_ct)->sql; + DBUG_ENTER("spider_mbase_copy_table::copy_key_row"); DBUG_PRINT("info",("spider this=%p", this)); if (sql.reserve(SPIDER_SQL_NAME_QUOTE_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); sql.q_append(SPIDER_SQL_NAME_QUOTE_STR, SPIDER_SQL_NAME_QUOTE_LEN); if ((error_num = spider_db_append_name_with_quote_str(&sql, - field->field_name, spider_dbton_mysql.dbton_id))) + field->field_name, dbton_id))) DBUG_RETURN(error_num); if (sql.reserve(SPIDER_SQL_NAME_QUOTE_LEN + joint_length + *length + SPIDER_SQL_AND_LEN)) @@ -14035,12 +14330,12 @@ int spider_mysql_copy_table::copy_key_row( DBUG_RETURN(0); } -int spider_mysql_copy_table::copy_row( +int spider_mbase_copy_table::copy_row( Field *field, SPIDER_DB_ROW *row ) { int error_num; - DBUG_ENTER("spider_mysql_copy_table::copy_row"); + DBUG_ENTER("spider_mbase_copy_table::copy_row"); DBUG_PRINT("info",("spider this=%p", this)); if (row->is_null()) { @@ -14053,7 +14348,7 @@ int spider_mysql_copy_table::copy_row( DBUG_RETURN(HA_ERR_OUT_OF_MEM); sql.q_append(SPIDER_SQL_VALUE_QUOTE_STR, SPIDER_SQL_VALUE_QUOTE_LEN); if ((error_num = row->append_escaped_to_str(&sql, - spider_dbton_mysql.dbton_id))) + dbton_id))) DBUG_RETURN(error_num); if (sql.reserve(SPIDER_SQL_VALUE_QUOTE_LEN + SPIDER_SQL_COMMA_LEN)) DBUG_RETURN(HA_ERR_OUT_OF_MEM); @@ -14068,7 +14363,7 @@ int spider_mysql_copy_table::copy_row( DBUG_RETURN(0); } -int spider_mysql_copy_table::copy_rows( +int spider_mbase_copy_table::copy_rows( TABLE *table, SPIDER_DB_ROW *row, ulong **last_row_pos, @@ -14077,7 +14372,7 @@ int spider_mysql_copy_table::copy_rows( int error_num; Field **field; ulong *lengths2, *row_pos2; - DBUG_ENTER("spider_mysql_copy_table::copy_rows"); + DBUG_ENTER("spider_mbase_copy_table::copy_rows"); DBUG_PRINT("info",("spider this=%p", this)); row_pos2 = *last_row_pos; lengths2 = *last_lengths; @@ -14108,13 +14403,13 @@ int spider_mysql_copy_table::copy_rows( DBUG_RETURN(0); } -int spider_mysql_copy_table::copy_rows( +int spider_mbase_copy_table::copy_rows( TABLE *table, SPIDER_DB_ROW *row ) { int error_num; Field **field; - DBUG_ENTER("spider_mysql_copy_table::copy_rows"); + DBUG_ENTER("spider_mbase_copy_table::copy_rows"); DBUG_PRINT("info",("spider this=%p", this)); for ( field = table->field; @@ -14138,22 +14433,22 @@ int spider_mysql_copy_table::copy_rows( DBUG_RETURN(0); } -int spider_mysql_copy_table::append_insert_terminator() +int spider_mbase_copy_table::append_insert_terminator() { - DBUG_ENTER("spider_mysql_copy_table::append_insert_terminator"); + DBUG_ENTER("spider_mbase_copy_table::append_insert_terminator"); DBUG_PRINT("info",("spider this=%p", this)); sql.length(sql.length() - SPIDER_SQL_COMMA_LEN - SPIDER_SQL_OPEN_PAREN_LEN); DBUG_RETURN(0); } -int spider_mysql_copy_table::copy_insert_values( +int spider_mbase_copy_table::copy_insert_values( spider_db_copy_table *source_ct ) { - spider_mysql_copy_table *tmp_ct = (spider_mysql_copy_table *) source_ct; + spider_mbase_copy_table *tmp_ct = (spider_mbase_copy_table *) source_ct; spider_string *source_str = &tmp_ct->sql; int values_length = source_str->length() - tmp_ct->pos; const char *values_ptr = source_str->ptr() + tmp_ct->pos; - DBUG_ENTER("spider_mysql_copy_table::copy_insert_values"); + DBUG_ENTER("spider_mbase_copy_table::copy_insert_values"); DBUG_PRINT("info",("spider this=%p", this)); if (sql.reserve(values_length)) { diff --git a/storage/spider/spd_db_mysql.h b/storage/spider/spd_db_mysql.h index 9a709f46c51..3448cea06cc 100644 --- a/storage/spider/spd_db_mysql.h +++ b/storage/spider/spd_db_mysql.h @@ -13,11 +13,11 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -class spider_db_mysql_util: public spider_db_util +class spider_db_mbase_util: public spider_db_util { public: - spider_db_mysql_util(); - ~spider_db_mysql_util(); + spider_db_mbase_util(); + virtual ~spider_db_mbase_util(); int append_name( spider_string *str, const char *name, @@ -174,7 +174,21 @@ public: #endif }; -class spider_db_mysql_row: public spider_db_row +class spider_db_mysql_util: public spider_db_mbase_util +{ +public: + spider_db_mysql_util(); + ~spider_db_mysql_util(); +}; + +class spider_db_mariadb_util: public spider_db_mbase_util +{ +public: + spider_db_mariadb_util(); + ~spider_db_mariadb_util(); +}; + +class spider_db_mbase_row: public spider_db_row { public: MYSQL_ROW row; @@ -184,8 +198,10 @@ public: uint field_count; uint record_size; bool cloned; - spider_db_mysql_row(); - ~spider_db_mysql_row(); + spider_db_mbase_row( + uint dbton_id + ); + virtual ~spider_db_mbase_row(); int store_to_field( Field *field, CHARSET_INFO *access_charset @@ -214,15 +230,31 @@ public: uint get_byte_size(); }; -class spider_db_mysql_result: public spider_db_result +class spider_db_mysql_row: public spider_db_mbase_row +{ +public: + spider_db_mysql_row(); + ~spider_db_mysql_row(); +}; + +class spider_db_mariadb_row: public spider_db_mbase_row +{ +public: + spider_db_mariadb_row(); + ~spider_db_mariadb_row(); +}; + +class spider_db_mbase_result: public spider_db_result { public: MYSQL_RES *db_result; - spider_db_mysql_row row; + spider_db_mbase_row row; MYSQL_ROW_OFFSET first_row; int store_error_num; - spider_db_mysql_result(SPIDER_DB_CONN *in_db_conn); - ~spider_db_mysql_result(); + spider_db_mbase_result( + SPIDER_DB_CONN *in_db_conn + ); + virtual ~spider_db_mbase_result(); bool has_result(); void free_result(); SPIDER_DB_ROW *current_row(); @@ -289,9 +321,29 @@ public: #endif }; -class spider_db_mysql: public spider_db_conn +class spider_db_mysql_result: public spider_db_mbase_result +{ +public: + spider_db_mysql_result( + SPIDER_DB_CONN *in_db_conn + ); + ~spider_db_mysql_result(); +}; + +class spider_db_mariadb_result: public spider_db_mbase_result +{ +public: + spider_db_mariadb_result( + SPIDER_DB_CONN *in_db_conn + ); + ~spider_db_mariadb_result(); +}; + +class spider_db_mbase: public spider_db_conn { - int stored_error; +protected: + int stored_error; + spider_db_mbase_util *spider_db_mbase_utility; public: MYSQL *db_conn; HASH lock_table_hash; @@ -306,10 +358,11 @@ public: const char *handler_open_array_func_name; const char *handler_open_array_file_name; ulong handler_open_array_line_no; - spider_db_mysql( - SPIDER_CONN *conn + spider_db_mbase( + SPIDER_CONN *conn, + spider_db_mbase_util *spider_db_mbase_utility ); - ~spider_db_mysql(); + virtual ~spider_db_mbase(); int init(); bool is_connected(); void bg_connect(); @@ -524,8 +577,28 @@ public: ); }; -class spider_mysql_share: public spider_db_share +class spider_db_mysql: public spider_db_mbase +{ +public: + spider_db_mysql( + SPIDER_CONN *conn + ); + ~spider_db_mysql(); +}; + +class spider_db_mariadb: public spider_db_mbase +{ +public: + spider_db_mariadb( + SPIDER_CONN *conn + ); + ~spider_db_mariadb(); +}; + +class spider_mbase_share: public spider_db_share { +protected: + spider_db_mbase_util *spider_db_mbase_utility; public: spider_string *table_select; int table_select_pos; @@ -547,10 +620,12 @@ public: bool same_db_table_name; int first_all_link_idx; - spider_mysql_share( - st_spider_share *share + spider_mbase_share( + st_spider_share *share, + uint dbton_id, + spider_db_mbase_util *spider_db_mbase_utility ); - ~spider_mysql_share(); + virtual ~spider_mbase_share(); int init(); uint get_column_name_length( uint field_index @@ -585,7 +660,7 @@ public: spider_string *str ); #endif -private: +protected: int create_table_names_str(); void free_table_names_str(); int create_column_name_str(); @@ -603,8 +678,28 @@ private: ); }; -class spider_mysql_handler: public spider_db_handler +class spider_mysql_share: public spider_mbase_share +{ +public: + spider_mysql_share( + st_spider_share *share + ); + ~spider_mysql_share(); +}; + +class spider_mariadb_share: public spider_mbase_share { +public: + spider_mariadb_share( + st_spider_share *share + ); + ~spider_mariadb_share(); +}; + +class spider_mbase_handler: public spider_db_handler +{ +protected: + spider_db_mbase_util *spider_db_mbase_utility; spider_string sql; spider_string sql_part; spider_string sql_part2; @@ -614,7 +709,7 @@ class spider_mysql_handler: public spider_db_handler int limit_pos; public: int table_name_pos; -private: +protected: int ha_read_pos; int ha_next_pos; int ha_where_pos; @@ -647,14 +742,15 @@ private: SPIDER_INT_HLD *union_table_name_pos_first; SPIDER_INT_HLD *union_table_name_pos_current; public: - spider_mysql_share *mysql_share; + spider_mbase_share *mysql_share; SPIDER_LINK_FOR_HASH *link_for_hash; uchar *minimum_select_bitmap; - spider_mysql_handler( + spider_mbase_handler( ha_spider *spider, - spider_mysql_share *share + spider_mbase_share *share, + spider_db_mbase_util *spider_db_mbase_utility ); - ~spider_mysql_handler(); + virtual ~spider_mbase_handler(); int init(); int append_index_hint( spider_string *str, @@ -1498,16 +1594,36 @@ public: #endif }; -class spider_mysql_copy_table: public spider_db_copy_table +class spider_mysql_handler: public spider_mbase_handler +{ +public: + spider_mysql_handler( + ha_spider *spider, + spider_mbase_share *share + ); + ~spider_mysql_handler(); +}; + +class spider_mariadb_handler: public spider_mbase_handler { public: - spider_mysql_share *mysql_share; + spider_mariadb_handler( + ha_spider *spider, + spider_mbase_share *share + ); + ~spider_mariadb_handler(); +}; + +class spider_mbase_copy_table: public spider_db_copy_table +{ +public: + spider_mbase_share *mysql_share; spider_string sql; uint pos; - spider_mysql_copy_table( - spider_mysql_share *db_share + spider_mbase_copy_table( + spider_mbase_share *db_share ); - ~spider_mysql_copy_table(); + virtual ~spider_mbase_copy_table(); int init(); void set_sql_charset( CHARSET_INFO *cs @@ -1578,3 +1694,21 @@ public: spider_db_copy_table *source_ct ); }; + +class spider_mysql_copy_table: public spider_mbase_copy_table +{ +public: + spider_mysql_copy_table( + spider_mbase_share *db_share + ); + ~spider_mysql_copy_table(); +}; + +class spider_mariadb_copy_table: public spider_mbase_copy_table +{ +public: + spider_mariadb_copy_table( + spider_mbase_share *db_share + ); + ~spider_mariadb_copy_table(); +}; diff --git a/storage/spider/spd_db_oracle.cc b/storage/spider/spd_db_oracle.cc index 82a1e9a0fbc..eae749f6867 100644 --- a/storage/spider/spd_db_oracle.cc +++ b/storage/spider/spd_db_oracle.cc @@ -512,7 +512,7 @@ SPIDER_DB_ROW *spider_db_oracle_row::clone() spider_db_oracle_row *clone_row; DBUG_ENTER("spider_db_oracle_row::clone"); DBUG_PRINT("info",("spider this=%p", this)); - if (!(clone_row = new spider_db_oracle_row())) + if (!(clone_row = new spider_db_oracle_row(dbton_id))) { DBUG_RETURN(NULL); } @@ -772,9 +772,9 @@ int spider_db_oracle_row::fetch() } spider_db_oracle_result::spider_db_oracle_result(SPIDER_DB_CONN *in_db_conn) : - spider_db_result(in_db_conn, spider_dbton_oracle.dbton_id), + spider_db_result(in_db_conn), db_conn(NULL), stmtp(NULL), field_count(0), access_charset(NULL), - fetched(FALSE) + fetched(FALSE), row(in_db_conn->dbton_id) { DBUG_ENTER("spider_db_oracle_result::spider_db_oracle_result"); DBUG_PRINT("info",("spider this=%p", this)); @@ -4365,7 +4365,8 @@ int spider_db_oracle_util::append_having( spider_oracle_share::spider_oracle_share( st_spider_share *share ) : spider_db_share( - share + share, + spider_dbton_oracle.dbton_id ), table_select(NULL), table_select_pos(0), diff --git a/storage/spider/spd_direct_sql.cc b/storage/spider/spd_direct_sql.cc index 65d5142e1f1..aee66d0336b 100644 --- a/storage/spider/spd_direct_sql.cc +++ b/storage/spider/spd_direct_sql.cc @@ -1721,7 +1721,7 @@ long long spider_direct_sql_body( direct_sql->table_names[roop_count]; #endif if (!(direct_sql->tables[roop_count] = - SPIDER_find_temporary_table(thd, &table_list))) + spider_find_temporary_table(thd, &table_list))) { #if MYSQL_VERSION_ID < 50500 #else diff --git a/storage/spider/spd_include.h b/storage/spider/spd_include.h index 23bbff22fbb..37ec2d8c608 100644 --- a/storage/spider/spd_include.h +++ b/storage/spider/spd_include.h @@ -160,9 +160,7 @@ #if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 100201 #define SPIDER_HAS_MY_CHARLEN -#define SPIDER_find_temporary_table(A,B) A->find_temporary_table(B) -#else -#define SPIDER_find_temporary_table(A,B) find_temporary_table(A,B) +#define SPIDER_open_temporary_table #endif #if defined(MARIADB_BASE_VERSION) diff --git a/storage/spider/spd_sys_table.cc b/storage/spider/spd_sys_table.cc index cd1c56a077e..8f8605b85bd 100644 --- a/storage/spider/spd_sys_table.cc +++ b/storage/spider/spd_sys_table.cc @@ -3489,3 +3489,20 @@ void spider_rm_sys_tmp_table_for_result( tmp_tbl_prm->field_count = 3; DBUG_VOID_RETURN; } + +TABLE *spider_find_temporary_table( + THD *thd, + TABLE_LIST *table_list +) { + DBUG_ENTER("spider_find_temporary_table"); +#ifdef SPIDER_open_temporary_table + if (thd->open_temporary_table(table_list)) + { + DBUG_RETURN(NULL); + } else { + DBUG_RETURN(table_list->table); + } +#else + DBUG_RETURN(find_temporary_table(A,B)); +#endif +} diff --git a/storage/spider/spd_sys_table.h b/storage/spider/spd_sys_table.h index 857109edb38..0fdb8cde6a2 100644 --- a/storage/spider/spd_sys_table.h +++ b/storage/spider/spd_sys_table.h @@ -678,3 +678,8 @@ void spider_rm_sys_tmp_table_for_result( TABLE *tmp_table, TMP_TABLE_PARAM *tmp_tbl_prm ); + +TABLE *spider_find_temporary_table( + THD *thd, + TABLE_LIST *table_list +); diff --git a/storage/spider/spd_table.cc b/storage/spider/spd_table.cc index fe5265184b6..0e706219432 100644 --- a/storage/spider/spd_table.cc +++ b/storage/spider/spd_table.cc @@ -128,6 +128,7 @@ extern long spider_conn_mutex_id; handlerton *spider_hton_ptr; SPIDER_DBTON spider_dbton[SPIDER_DBTON_SIZE]; extern SPIDER_DBTON spider_dbton_mysql; +extern SPIDER_DBTON spider_dbton_mariadb; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) extern SPIDER_DBTON spider_dbton_handlersocket; #endif @@ -7362,15 +7363,22 @@ int spider_db_init( #endif spider_dbton_mysql.dbton_id = dbton_id; + spider_dbton_mysql.db_util->dbton_id = dbton_id; spider_dbton[dbton_id] = spider_dbton_mysql; ++dbton_id; + spider_dbton_mariadb.dbton_id = dbton_id; + spider_dbton_mariadb.db_util->dbton_id = dbton_id; + spider_dbton[dbton_id] = spider_dbton_mariadb; + ++dbton_id; #if defined(HS_HAS_SQLCOM) && defined(HAVE_HANDLERSOCKET) spider_dbton_handlersocket.dbton_id = dbton_id; + spider_dbton_handlersocket.db_util->dbton_id = dbton_id; spider_dbton[dbton_id] = spider_dbton_handlersocket; ++dbton_id; #endif #ifdef HAVE_ORACLE_OCI spider_dbton_oracle.dbton_id = dbton_id; + spider_dbton_oracle.db_util->dbton_id = dbton_id; spider_dbton[dbton_id] = spider_dbton_oracle; ++dbton_id; #endif |