summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/mysqltest.cc9
-rw-r--r--extra/mariabackup/backup_mysql.cc2
-rw-r--r--extra/mariabackup/xtrabackup.cc15
-rw-r--r--mysql-test/include/galera_suspend.inc (renamed from mysql-test/suite/galera_3nodes/include/galera_suspend.inc)0
-rw-r--r--mysql-test/include/mtr_check.sql1
-rw-r--r--mysql-test/main/lowercase_table.result4
-rw-r--r--mysql-test/main/lowercase_table.test12
-rw-r--r--mysql-test/main/reset_connection.result20
-rw-r--r--mysql-test/main/reset_connection.test15
-rw-r--r--mysql-test/suite/funcs_1/r/is_routines_embedded.result6
-rw-r--r--mysql-test/suite/galera/disabled.def1
-rw-r--r--mysql-test/suite/galera/r/galera_gcache_recover_manytrx.result29
-rw-r--r--mysql-test/suite/galera_3nodes/r/galera_evs_suspect_timeout.result1
-rw-r--r--mysql-test/suite/galera_3nodes/r/galera_ist_gcache_rollover.result1
-rw-r--r--mysql-test/suite/galera_3nodes/r/galera_safe_to_bootstrap.result10
-rw-r--r--mysql-test/suite/galera_3nodes/t/galera_evs_suspect_timeout.test2
-rw-r--r--mysql-test/suite/galera_3nodes/t/galera_garbd.test4
-rw-r--r--mysql-test/suite/galera_3nodes/t/galera_ist_gcache_rollover.cnf6
-rw-r--r--mysql-test/suite/galera_3nodes/t/galera_ist_gcache_rollover.test1
-rw-r--r--mysql-test/suite/galera_3nodes/t/galera_safe_to_bootstrap.test15
-rw-r--r--mysql-test/suite/innodb/r/alter_varchar_change.result459
-rw-r--r--mysql-test/suite/innodb/t/alter_varchar_change.test336
-rw-r--r--mysql-test/suite/innodb_zip/r/prefix_index_liftedlimit.result2
-rw-r--r--mysql-test/suite/innodb_zip/t/prefix_index_liftedlimit.test2
-rw-r--r--mysql-test/suite/mariabackup/incremental_ddl_before_backup.result32
-rw-r--r--mysql-test/suite/mariabackup/incremental_ddl_before_backup.test50
-rw-r--r--mysql-test/suite/mariabackup/mdev-14447.result1
-rw-r--r--mysql-test/suite/mariabackup/mdev-14447.test14
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_innodb.result28
-rw-r--r--mysql-test/suite/wsrep/r/wsrep-recover-v25,binlogon.rdiff17
-rw-r--r--mysql-test/suite/wsrep/r/wsrep-recover-v25.result28
-rw-r--r--mysql-test/suite/wsrep/t/wsrep-recover-v25.cnf7
-rw-r--r--mysql-test/suite/wsrep/t/wsrep-recover-v25.combinations4
-rw-r--r--mysql-test/suite/wsrep/t/wsrep-recover-v25.test121
-rw-r--r--sql/handler.cc5
-rw-r--r--sql/handler.h5
-rw-r--r--sql/mysqld.cc2
-rw-r--r--sql/sql_class.cc1
-rw-r--r--sql/sql_class.h3
-rw-r--r--sql/sql_connect.cc1
-rw-r--r--sql/sql_db.cc8
-rw-r--r--sql/sql_parse.cc3
-rw-r--r--sql/sql_table.cc34
-rw-r--r--storage/innobase/buf/buf0buf.cc7
-rw-r--r--storage/innobase/fil/fil0fil.cc2
-rw-r--r--storage/innobase/handler/ha_innodb.cc25
-rw-r--r--storage/innobase/handler/handler0alter.cc3
-rw-r--r--storage/innobase/include/fsp0file.h19
-rw-r--r--storage/innobase/log/log0recv.cc30
-rw-r--r--storage/spider/CMakeLists.txt2
-rw-r--r--storage/spider/mysql-test/spider/bugfix/include/checksum_table_with_quick_mode_3_deinit.inc14
-rw-r--r--storage/spider/mysql-test/spider/bugfix/include/checksum_table_with_quick_mode_3_init.inc29
-rw-r--r--storage/spider/mysql-test/spider/bugfix/include/direct_sql_with_tmp_table_deinit.inc7
-rw-r--r--storage/spider/mysql-test/spider/bugfix/include/direct_sql_with_tmp_table_init.inc9
-rw-r--r--storage/spider/mysql-test/spider/bugfix/include/quick_mode_0_deinit.inc19
-rw-r--r--storage/spider/mysql-test/spider/bugfix/include/quick_mode_0_init.inc51
-rw-r--r--storage/spider/mysql-test/spider/bugfix/include/quick_mode_1_deinit.inc19
-rw-r--r--storage/spider/mysql-test/spider/bugfix/include/quick_mode_1_init.inc51
-rw-r--r--storage/spider/mysql-test/spider/bugfix/include/quick_mode_2_deinit.inc19
-rw-r--r--storage/spider/mysql-test/spider/bugfix/include/quick_mode_2_init.inc51
-rw-r--r--storage/spider/mysql-test/spider/bugfix/include/quick_mode_3_deinit.inc19
-rw-r--r--storage/spider/mysql-test/spider/bugfix/include/quick_mode_3_init.inc51
-rw-r--r--storage/spider/mysql-test/spider/bugfix/include/slave_trx_isolation_deinit.inc15
-rw-r--r--storage/spider/mysql-test/spider/bugfix/include/slave_trx_isolation_init.inc35
-rw-r--r--storage/spider/mysql-test/spider/bugfix/include/wrapper_mariadb_deinit.inc11
-rw-r--r--storage/spider/mysql-test/spider/bugfix/include/wrapper_mariadb_init.inc24
-rw-r--r--storage/spider/mysql-test/spider/bugfix/my.cnf2
-rw-r--r--storage/spider/mysql-test/spider/bugfix/my_1_1.cnf44
-rw-r--r--storage/spider/mysql-test/spider/bugfix/my_2_1.cnf56
-rw-r--r--storage/spider/mysql-test/spider/bugfix/my_2_2.cnf38
-rw-r--r--storage/spider/mysql-test/spider/bugfix/my_2_3.cnf8
-rw-r--r--storage/spider/mysql-test/spider/bugfix/my_3_1.cnf11
-rw-r--r--storage/spider/mysql-test/spider/bugfix/my_3_2.cnf9
-rw-r--r--storage/spider/mysql-test/spider/bugfix/my_3_3.cnf9
-rw-r--r--storage/spider/mysql-test/spider/bugfix/my_4_1.cnf9
-rw-r--r--storage/spider/mysql-test/spider/bugfix/r/checksum_table_with_quick_mode_3.result100
-rw-r--r--storage/spider/mysql-test/spider/bugfix/r/direct_sql_with_tmp_table.result33
-rw-r--r--storage/spider/mysql-test/spider/bugfix/r/quick_mode_0.result504
-rw-r--r--storage/spider/mysql-test/spider/bugfix/r/quick_mode_1.result504
-rw-r--r--storage/spider/mysql-test/spider/bugfix/r/quick_mode_2.result504
-rw-r--r--storage/spider/mysql-test/spider/bugfix/r/quick_mode_3.result504
-rw-r--r--storage/spider/mysql-test/spider/bugfix/r/slave_trx_isolation.result99
-rw-r--r--storage/spider/mysql-test/spider/bugfix/r/wrapper_mariadb.result78
-rw-r--r--storage/spider/mysql-test/spider/bugfix/suite.opt1
-rw-r--r--storage/spider/mysql-test/spider/bugfix/suite.pm12
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/checksum_table_with_quick_mode_3.cnf3
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/checksum_table_with_quick_mode_3.test72
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/direct_sql_with_tmp_table.cnf3
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/direct_sql_with_tmp_table.test35
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/quick_mode_0.cnf4
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/quick_mode_0.test156
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/quick_mode_1.cnf4
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/quick_mode_1.test156
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/quick_mode_2.cnf4
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/quick_mode_2.test156
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/quick_mode_3.cnf4
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/quick_mode_3.test157
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/slave_trx_isolation.cnf4
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/slave_trx_isolation.test95
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/wrapper_mariadb.cnf3
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/wrapper_mariadb.test69
-rw-r--r--storage/spider/mysql-test/spider/include/checksum_table_with_quick_mode_3_deinit.inc3
-rw-r--r--storage/spider/mysql-test/spider/include/checksum_table_with_quick_mode_3_init.inc2
-rw-r--r--storage/spider/mysql-test/spider/r/checksum_table_with_quick_mode_3.result8
-rw-r--r--storage/spider/mysql-test/spider/r/quick_mode_0.result7
-rw-r--r--storage/spider/mysql-test/spider/r/quick_mode_1.result7
-rw-r--r--storage/spider/mysql-test/spider/r/quick_mode_2.result7
-rw-r--r--storage/spider/mysql-test/spider/r/quick_mode_3.result7
-rw-r--r--storage/spider/mysql-test/spider/r/slave_trx_isolation.result9
-rw-r--r--storage/spider/mysql-test/spider/t/checksum_table_with_quick_mode_3.test10
-rw-r--r--storage/spider/mysql-test/spider/t/quick_mode_0.test15
-rw-r--r--storage/spider/mysql-test/spider/t/quick_mode_1.test15
-rw-r--r--storage/spider/mysql-test/spider/t/quick_mode_2.test15
-rw-r--r--storage/spider/mysql-test/spider/t/quick_mode_3.test15
-rw-r--r--storage/spider/mysql-test/spider/t/slave_trx_isolation.test18
-rw-r--r--storage/spider/spd_db_handlersocket.cc7
-rw-r--r--storage/spider/spd_db_include.cc51
-rw-r--r--storage/spider/spd_db_include.h23
-rw-r--r--storage/spider/spd_db_mysql.cc2067
-rw-r--r--storage/spider/spd_db_mysql.h196
-rw-r--r--storage/spider/spd_db_oracle.cc9
-rw-r--r--storage/spider/spd_direct_sql.cc2
-rw-r--r--storage/spider/spd_include.h4
-rw-r--r--storage/spider/spd_sys_table.cc17
-rw-r--r--storage/spider/spd_sys_table.h5
-rw-r--r--storage/spider/spd_table.cc8
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(&gtid_pos)))
+ if (!(error_num = ((spider_db_mbase_result *)*res)->fetch_select_binlog_gtid_pos(&gtid_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