summaryrefslogtreecommitdiffstats
path: root/storage/spider/spd_init_query.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:07:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:07:14 +0000
commita175314c3e5827eb193872241446f2f8f5c9d33c (patch)
treecd3d60ca99ae00829c52a6ca79150a5b6e62528b /storage/spider/spd_init_query.h
parentInitial commit. (diff)
downloadmariadb-10.5-a175314c3e5827eb193872241446f2f8f5c9d33c.tar.xz
mariadb-10.5-a175314c3e5827eb193872241446f2f8f5c9d33c.zip
Adding upstream version 1:10.5.12.upstream/1%10.5.12upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'storage/spider/spd_init_query.h')
-rw-r--r--storage/spider/spd_init_query.h830
1 files changed, 830 insertions, 0 deletions
diff --git a/storage/spider/spd_init_query.h b/storage/spider/spd_init_query.h
new file mode 100644
index 00000000..f1fc558a
--- /dev/null
+++ b/storage/spider/spd_init_query.h
@@ -0,0 +1,830 @@
+/* Copyright (C) 2010-2020 Kentoku Shiba
+ Copyright (C) 2019-2020 MariaDB corp
+
+ 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 */
+
+/*
+ This SQL script creates system tables for SPIDER
+ or fixes incompatibilities if ones already exist.
+*/
+
+static LEX_STRING spider_init_queries[] = {
+ {C_STRING_WITH_LEN(
+ "create table if not exists mysql.spider_xa("
+ " format_id int not null default 0,"
+ " gtrid_length int not null default 0,"
+ " bqual_length int not null default 0,"
+ " data char(128) charset binary not null default '',"
+ " status char(8) not null default '',"
+ " primary key (data, format_id, gtrid_length),"
+ " key idx1 (status)"
+ ") engine=MyISAM default charset=utf8 collate=utf8_bin"
+ )},
+ {C_STRING_WITH_LEN(
+ "create table if not exists mysql.spider_xa_member("
+ " format_id int not null default 0,"
+ " gtrid_length int not null default 0,"
+ " bqual_length int not null default 0,"
+ " data char(128) charset binary not null default '',"
+ " scheme char(64) not null default '',"
+ " host char(64) not null default '',"
+ " port char(5) not null default '',"
+ " socket text not null,"
+ " username char(64) not null default '',"
+ " password char(64) not null default '',"
+ " ssl_ca text,"
+ " ssl_capath text,"
+ " ssl_cert text,"
+ " ssl_cipher char(64) default null,"
+ " ssl_key text,"
+ " ssl_verify_server_cert tinyint not null default 0,"
+ " default_file text,"
+ " default_group char(64) default null,"
+ " dsn char(64) default null,"
+ " key idx1 (data, format_id, gtrid_length, host)"
+ ") engine=MyISAM default charset=utf8 collate=utf8_bin"
+ )},
+ {C_STRING_WITH_LEN(
+ "create table if not exists mysql.spider_xa_failed_log("
+ " format_id int not null default 0,"
+ " gtrid_length int not null default 0,"
+ " bqual_length int not null default 0,"
+ " data char(128) charset binary not null default '',"
+ " scheme char(64) not null default '',"
+ " host char(64) not null default '',"
+ " port char(5) not null default '',"
+ " socket text not null,"
+ " username char(64) not null default '',"
+ " password char(64) not null default '',"
+ " ssl_ca text,"
+ " ssl_capath text,"
+ " ssl_cert text,"
+ " ssl_cipher char(64) default null,"
+ " ssl_key text,"
+ " ssl_verify_server_cert tinyint not null default 0,"
+ " default_file text,"
+ " default_group char(64) default null,"
+ " dsn char(64) default null,"
+ " thread_id int default null,"
+ " status char(8) not null default '',"
+ " failed_time timestamp not null default current_timestamp,"
+ " key idx1 (data, format_id, gtrid_length, host)"
+ ") engine=MyISAM default charset=utf8 collate=utf8_bin"
+ )},
+ {C_STRING_WITH_LEN(
+ "create table if not exists mysql.spider_tables("
+ " db_name char(64) not null default '',"
+ " table_name char(199) not null default '',"
+ " link_id int not null default 0,"
+ " priority bigint not null default 0,"
+ " server char(64) default null,"
+ " scheme char(64) default null,"
+ " host char(64) default null,"
+ " port char(5) default null,"
+ " socket text,"
+ " username char(64) default null,"
+ " password char(64) default null,"
+ " ssl_ca text,"
+ " ssl_capath text,"
+ " ssl_cert text,"
+ " ssl_cipher char(64) default null,"
+ " ssl_key text,"
+ " ssl_verify_server_cert tinyint not null default 0,"
+ " monitoring_binlog_pos_at_failing tinyint not null default 0,"
+ " default_file text,"
+ " default_group char(64) default null,"
+ " dsn char(64) default null,"
+ " tgt_db_name char(64) default null,"
+ " tgt_table_name char(64) default null,"
+ " link_status tinyint not null default 1,"
+ " block_status tinyint not null default 0,"
+ " static_link_id char(64) default null,"
+ " primary key (db_name, table_name, link_id),"
+ " key idx1 (priority),"
+ " unique key uidx1 (db_name, table_name, static_link_id)"
+ ") engine=MyISAM default charset=utf8 collate=utf8_bin"
+ )},
+ {C_STRING_WITH_LEN(
+ "create table if not exists mysql.spider_link_mon_servers("
+ " db_name char(64) not null default '',"
+ " table_name char(199) not null default '',"
+ " link_id char(64) not null default '',"
+ " sid int unsigned not null default 0,"
+ " server char(64) default null,"
+ " scheme char(64) default null,"
+ " host char(64) default null,"
+ " port char(5) default null,"
+ " socket text,"
+ " username char(64) default null,"
+ " password char(64) default null,"
+ " ssl_ca text,"
+ " ssl_capath text,"
+ " ssl_cert text,"
+ " ssl_cipher char(64) default null,"
+ " ssl_key text,"
+ " ssl_verify_server_cert tinyint not null default 0,"
+ " default_file text,"
+ " default_group char(64) default null,"
+ " dsn char(64) default null,"
+ " primary key (db_name, table_name, link_id, sid)"
+ ") engine=MyISAM default charset=utf8 collate=utf8_bin"
+ )},
+ {C_STRING_WITH_LEN(
+ "create table if not exists mysql.spider_link_failed_log("
+ " db_name char(64) not null default '',"
+ " table_name char(199) not null default '',"
+ " link_id char(64) not null default '',"
+ " failed_time timestamp not null default current_timestamp"
+ ") engine=MyISAM default charset=utf8 collate=utf8_bin"
+ )},
+ {C_STRING_WITH_LEN(
+ "create table if not exists mysql.spider_table_position_for_recovery("
+ " db_name char(64) not null default '',"
+ " table_name char(199) not null default '',"
+ " failed_link_id int not null default 0,"
+ " source_link_id int not null default 0,"
+ " file text,"
+ " position text,"
+ " gtid text,"
+ " primary key (db_name, table_name, failed_link_id, source_link_id)"
+ ") engine=MyISAM default charset=utf8 collate=utf8_bin"
+ )},
+ {C_STRING_WITH_LEN(
+ "create table if not exists mysql.spider_table_sts("
+ " db_name char(64) not null default '',"
+ " table_name char(199) not null default '',"
+ " data_file_length bigint unsigned not null default 0,"
+ " max_data_file_length bigint unsigned not null default 0,"
+ " index_file_length bigint unsigned not null default 0,"
+ " records bigint unsigned not null default 0,"
+ " mean_rec_length bigint unsigned not null default 0,"
+ " check_time datetime not null default '0000-00-00 00:00:00',"
+ " create_time datetime not null default '0000-00-00 00:00:00',"
+ " update_time datetime not null default '0000-00-00 00:00:00',"
+ " checksum bigint unsigned default null,"
+ " primary key (db_name, table_name)"
+ ") engine=MyISAM default charset=utf8 collate=utf8_bin"
+ )},
+ {C_STRING_WITH_LEN(
+ "create table if not exists mysql.spider_table_crd("
+ " db_name char(64) not null default '',"
+ " table_name char(199) not null default '',"
+ " key_seq int unsigned not null default 0,"
+ " cardinality bigint not null default 0,"
+ " primary key (db_name, table_name, key_seq)"
+ ") engine=MyISAM default charset=utf8 collate=utf8_bin"
+ )},
+/*
+ If tables already exist and their definition differ
+ from the latest ones, we fix them here.
+*/
+ {C_STRING_WITH_LEN(
+ "drop procedure if exists mysql.spider_fix_one_table"
+ )},
+ {C_STRING_WITH_LEN(
+ "drop procedure if exists mysql.spider_fix_system_tables"
+ )},
+ {C_STRING_WITH_LEN(
+ "create procedure mysql.spider_fix_one_table"
+ " (tab_name char(255) charset utf8 collate utf8_bin,"
+ " test_col_name char(255) charset utf8 collate utf8_bin,"
+ " _sql text charset utf8 collate utf8_bin)"
+ "begin"
+ " set @col_exists := 0;"
+ " select 1 into @col_exists from INFORMATION_SCHEMA.COLUMNS"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = tab_name"
+ " AND COLUMN_NAME = test_col_name;"
+ " if @col_exists = 0 then"
+ " select @stmt := _sql;"
+ " prepare sp_stmt1 from @stmt;"
+ " execute sp_stmt1;"
+ " end if;"
+ "end;"
+ )},
+ {C_STRING_WITH_LEN(
+ "create procedure mysql.spider_fix_system_tables()"
+ "begin"
+ " select substring_index(substring_index(version(), '-', 2), '-', -1)"
+ " into @server_name;"
+ " if @server_name regexp '^[0-9]+$' then"
+ " select substring_index(substring_index(version(), '-', 3), '-', -1)"
+ " into @server_name;"
+ " end if;"
+ " select substring_index(version(), '.', 1)"
+ " into @server_major_version;"
+ " select substring_index(substring_index(version(), '.', 2), '.', -1)"
+ " into @server_minor_version;"
+/*
+ Fix for 0.5
+*/
+ " call mysql.spider_fix_one_table('spider_tables', 'server',"
+ " 'alter table mysql.spider_tables"
+ " add server char(64) default null,"
+ " add scheme char(64) default null,"
+ " add host char(64) default null,"
+ " add port char(5) default null,"
+ " add socket char(64) default null,"
+ " add username char(64) default null,"
+ " add password char(64) default null,"
+ " add tgt_db_name char(64) default null,"
+ " add tgt_table_name char(64) default null');"
+/*
+ Fix for version 0.17
+*/
+ " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_xa'"
+ " AND COLUMN_NAME = 'data';"
+ " if @col_type != 'binary(128)' then"
+ " alter table mysql.spider_xa"
+ " modify data binary(128) not null default '';"
+ " end if;"
+ " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_xa_member'"
+ " AND COLUMN_NAME = 'data';"
+ " if @col_type != 'binary(128)' then"
+ " alter table mysql.spider_xa_member"
+ " modify data binary(128) not null default '';"
+ " end if;"
+/*
+ Fix for version 2.7
+*/
+ " call mysql.spider_fix_one_table('spider_tables', 'link_id',"
+ " 'alter table mysql.spider_tables"
+ " add column link_id int not null default 0 after table_name,"
+ " drop primary key,"
+ " add primary key (db_name, table_name, link_id)');"
+/*
+ Fix for version 2.8
+*/
+ " call mysql.spider_fix_one_table('spider_tables', 'link_status',"
+ " 'alter table mysql.spider_tables"
+ " add column link_status tinyint not null default 1');"
+/*
+ Fix for version 2.10
+*/
+ " call mysql.spider_fix_one_table('spider_xa_member', 'ssl_ca',"
+ " 'alter table mysql.spider_xa_member"
+ " add column ssl_ca char(64) default null after password,"
+ " add column ssl_capath char(64) default null after ssl_ca,"
+ " add column ssl_cert char(64) default null after ssl_capath,"
+ " add column ssl_cipher char(64) default null after ssl_cert,"
+ " add column ssl_key char(64) default null after ssl_cipher,"
+ " add column ssl_verify_server_cert tinyint not null default 0"
+ " after ssl_key,"
+ " add column default_file char(64) default null"
+ " after ssl_verify_server_cert,"
+ " add column default_group char(64) default null after default_file');"
+ " call mysql.spider_fix_one_table('spider_tables', 'ssl_ca',"
+ " 'alter table mysql.spider_tables"
+ " add column ssl_ca char(64) default null after password,"
+ " add column ssl_capath char(64) default null after ssl_ca,"
+ " add column ssl_cert char(64) default null after ssl_capath,"
+ " add column ssl_cipher char(64) default null after ssl_cert,"
+ " add column ssl_key char(64) default null after ssl_cipher,"
+ " add column ssl_verify_server_cert tinyint not null default 0"
+ " after ssl_key,"
+ " add column default_file char(64) default null"
+ " after ssl_verify_server_cert,"
+ " add column default_group char(64) default null after default_file');"
+ " call mysql.spider_fix_one_table('spider_link_mon_servers', 'ssl_ca',"
+ " 'alter table mysql.spider_link_mon_servers"
+ " add column ssl_ca char(64) default null after password,"
+ " add column ssl_capath char(64) default null after ssl_ca,"
+ " add column ssl_cert char(64) default null after ssl_capath,"
+ " add column ssl_cipher char(64) default null after ssl_cert,"
+ " add column ssl_key char(64) default null after ssl_cipher,"
+ " add column ssl_verify_server_cert tinyint not null default 0"
+ " after ssl_key,"
+ " add column default_file char(64) default null"
+ " after ssl_verify_server_cert,"
+ " add column default_group char(64) default null after default_file');"
+/*
+ Fix for version 2.28
+*/
+ " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_link_mon_servers'"
+ " AND COLUMN_NAME = 'sid';"
+ " if @col_type != 'int(10) unsigned' then"
+ " alter table mysql.spider_link_mon_servers"
+ " modify sid int unsigned not null default 0;"
+ " end if;"
+/*
+ Fix for version 3.1
+*/
+ " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_xa_member'"
+ " AND COLUMN_NAME = 'socket';"
+ " if @col_type = 'char(64)' then"
+ " alter table mysql.spider_xa_member"
+ " drop primary key,"
+ " add index idx1 (data, format_id, gtrid_length, host),"
+ " modify socket text not null,"
+ " modify ssl_ca text,"
+ " modify ssl_capath text,"
+ " modify ssl_cert text,"
+ " modify ssl_key text,"
+ " modify default_file text;"
+ " end if;"
+ " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_tables'"
+ " AND COLUMN_NAME = 'socket';"
+ " if @col_type = 'char(64)' then"
+ " alter table mysql.spider_tables"
+ " modify socket text,"
+ " modify ssl_ca text,"
+ " modify ssl_capath text,"
+ " modify ssl_cert text,"
+ " modify ssl_key text,"
+ " modify default_file text;"
+ " end if;"
+ " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_link_mon_servers'"
+ " AND COLUMN_NAME = 'socket';"
+ " if @col_type = 'char(64)' then"
+ " alter table mysql.spider_link_mon_servers"
+ " modify socket text,"
+ " modify ssl_ca text,"
+ " modify ssl_capath text,"
+ " modify ssl_cert text,"
+ " modify ssl_key text,"
+ " modify default_file text;"
+ " end if;"
+/*
+ Fix for version 3.3.0
+*/
+ " call mysql.spider_fix_one_table('spider_tables',"
+ " 'monitoring_binlog_pos_at_failing',"
+ " 'alter table mysql.spider_tables"
+ " add monitoring_binlog_pos_at_failing tinyint not null default 0"
+ " after ssl_verify_server_cert');"
+/*
+ Fix for version 3.3.6
+*/
+ " call mysql.spider_fix_one_table('spider_tables', 'block_status',"
+ " 'alter table mysql.spider_tables"
+ " add column block_status tinyint not null default 0"
+ " after link_status');"
+ " call mysql.spider_fix_one_table('spider_tables', 'static_link_id',"
+ " 'alter table mysql.spider_tables"
+ " add column static_link_id char(64) default null after block_status,"
+ " add unique index uidx1 (db_name, table_name, static_link_id)');"
+ " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_link_mon_servers'"
+ " AND COLUMN_NAME = 'link_id';"
+ " if @col_type != 'char(64)' then"
+ " alter table mysql.spider_link_mon_servers"
+ " modify link_id char(64) not null default '';"
+ " end if;"
+ " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_link_failed_log'"
+ " AND COLUMN_NAME = 'link_id';"
+ " if @col_type != 'char(64)' then"
+ " alter table mysql.spider_link_failed_log"
+ " modify link_id char(64) not null default '';"
+ " end if;"
+/*
+ Fix for version 3.3.10
+*/
+ " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_tables'"
+ " AND COLUMN_NAME = 'table_name';"
+ " if @col_type != 'char(199)' then"
+ " alter table mysql.spider_tables"
+ " modify table_name char(199) not null default '';"
+ " end if;"
+ " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_link_mon_servers'"
+ " AND COLUMN_NAME = 'table_name';"
+ " if @col_type != 'char(199)' then"
+ " alter table mysql.spider_link_mon_servers"
+ " modify table_name char(199) not null default '';"
+ " end if;"
+ " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_link_failed_log'"
+ " AND COLUMN_NAME = 'table_name';"
+ " if @col_type != 'char(199)' then"
+ " alter table mysql.spider_link_failed_log"
+ " modify table_name char(199) not null default '';"
+ " end if;"
+ " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_table_position_for_recovery'"
+ " AND COLUMN_NAME = 'table_name';"
+ " if @col_type != 'char(199)' then"
+ " alter table mysql.spider_table_position_for_recovery"
+ " modify table_name char(199) not null default '';"
+ " end if;"
+ " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_table_sts'"
+ " AND COLUMN_NAME = 'table_name';"
+ " if @col_type != 'char(199)' then"
+ " alter table mysql.spider_table_sts"
+ " modify table_name char(199) not null default '';"
+ " end if;"
+ " select COLUMN_TYPE INTO @col_type from INFORMATION_SCHEMA.COLUMNS"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_table_crd'"
+ " AND COLUMN_NAME = 'table_name';"
+ " if @col_type != 'char(199)' then"
+ " alter table mysql.spider_table_crd"
+ " modify table_name char(199) not null default '';"
+ " end if;"
+/*
+ Fix for version 3.3.15
+*/
+ " call mysql.spider_fix_one_table('spider_table_sts', 'checksum',"
+ " 'alter table mysql.spider_table_sts"
+ " add column checksum bigint unsigned default null after update_time');"
+/*
+ Fix for MariaDB 10.4: Crash-Safe system tables
+*/
+ " if @server_name = 'MariaDB' and"
+ " ("
+ " @server_major_version > 10 or"
+ " ("
+ " @server_major_version = 10 and"
+ " @server_minor_version >= 4"
+ " )"
+ " )"
+ " then"
+ " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_link_failed_log';"
+ " if @engine_name != 'Aria' then"
+ " alter table mysql.spider_link_failed_log"
+ " engine=Aria transactional=1;"
+ " end if;"
+ " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_link_mon_servers';"
+ " if @engine_name != 'Aria' then"
+ " alter table mysql.spider_link_mon_servers"
+ " engine=Aria transactional=1;"
+ " end if;"
+ " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_table_crd';"
+ " if @engine_name != 'Aria' then"
+ " alter table mysql.spider_table_crd"
+ " engine=Aria transactional=1;"
+ " end if;"
+ " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_table_position_for_recovery';"
+ " if @engine_name != 'Aria' then"
+ " alter table mysql.spider_table_position_for_recovery"
+ " engine=Aria transactional=1;"
+ " end if;"
+ " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_table_sts';"
+ " if @engine_name != 'Aria' then"
+ " alter table mysql.spider_table_sts"
+ " engine=Aria transactional=1;"
+ " end if;"
+ " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_tables';"
+ " if @engine_name != 'Aria' then"
+ " alter table mysql.spider_tables"
+ " engine=Aria transactional=1;"
+ " end if;"
+ " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_xa';"
+ " if @engine_name != 'Aria' then"
+ " alter table mysql.spider_xa"
+ " engine=Aria transactional=1;"
+ " end if;"
+ " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_xa_failed_log';"
+ " if @engine_name != 'Aria' then"
+ " alter table mysql.spider_xa_failed_log"
+ " engine=Aria transactional=1;"
+ " end if;"
+ " select ENGINE INTO @engine_name from INFORMATION_SCHEMA.TABLES"
+ " where TABLE_SCHEMA = 'mysql'"
+ " AND TABLE_NAME = 'spider_xa_member';"
+ " if @engine_name != 'Aria' then"
+ " alter table mysql.spider_xa_member"
+ " engine=Aria transactional=1;"
+ " end if;"
+ " end if;"
+ " if @server_name = 'MariaDB' and"
+ " ("
+ " @server_major_version > 10 or"
+ " ("
+ " @server_major_version = 10 and"
+ " @server_minor_version >= 6"
+ " )"
+ " )"
+ " then"
+ " /* table for ddl pushdown */"
+ " create table if not exists mysql.spider_rewrite_tables("
+ " table_id bigint unsigned not null auto_increment,"
+ " db_name char(64) not null default '',"
+ " table_name char(64) not null default '',"
+ " primary key (table_id),"
+ " unique uk1(db_name, table_name)"
+ " ) engine=Aria transactional=1 default charset=utf8 collate=utf8_bin;"
+ " create table if not exists mysql.spider_rewrite_table_tables("
+ " table_id bigint unsigned not null,"
+ " partition_id bigint unsigned not null auto_increment,"
+ " partition_method varchar(18) default '',"
+ " partition_expression varchar(64) default '',"
+ " subpartition_method varchar(12) default '',"
+ " subpartition_expression varchar(64) default '',"
+ " connection_str text not null default '',"
+ " comment_str text not null default '',"
+ " primary key (table_id, partition_id),"
+ " unique uk1(table_id, partition_method, partition_expression,"
+ " subpartition_method, subpartition_expression)"
+ " ) engine=Aria transactional=1 default charset=utf8 collate=utf8_bin;"
+ " create table if not exists mysql.spider_rewrite_table_partitions("
+ " table_id bigint unsigned not null,"
+ " partition_id bigint unsigned not null,"
+ " partition_ordinal_position bigint unsigned not null auto_increment,"
+ " partition_name varchar(64) not null default '',"
+ " partition_description varchar(64) not null default '',"
+ " connection_str text not null default '',"
+ " comment_str text not null default '',"
+ " primary key (table_id, partition_id, partition_ordinal_position),"
+ " unique key uk1 (table_id, partition_id, partition_name)"
+ " ) engine=Aria transactional=1 default charset=utf8 collate=utf8_bin;"
+ " create table if not exists mysql.spider_rewrite_table_subpartitions("
+ " table_id bigint unsigned not null,"
+ " partition_id bigint unsigned not null,"
+ " partition_ordinal_position bigint unsigned not null,"
+ " subpartition_ordinal_position bigint unsigned not null"
+ " auto_increment,"
+ " subpartition_name varchar(64) not null default '',"
+ " subpartition_description varchar(64) not null default '',"
+ " connection_str text not null default '',"
+ " comment_str text not null default '',"
+ " primary key (table_id, partition_id, partition_ordinal_position,"
+ " subpartition_ordinal_position),"
+ " unique key uk1 (table_id, partition_id, partition_ordinal_position,"
+ " subpartition_name)"
+ " ) engine=Aria transactional=1 default charset=utf8 collate=utf8_bin;"
+ " create table if not exists mysql.spider_rewritten_tables("
+ " db_name char(64) not null,"
+ " table_name char(64) not null,"
+ " table_id bigint unsigned not null,"
+ " partition_id bigint unsigned not null,"
+ " primary key (db_name, table_name, table_id, partition_id)"
+ " ) engine=Aria transactional=1 default charset=utf8 collate=utf8_bin;"
+ " end if;"
+/*
+ Fix for version 3.4
+*/
+ " call mysql.spider_fix_one_table('spider_link_mon_servers', 'dsn',"
+ " 'alter table mysql.spider_link_mon_servers"
+ " add column dsn char(64) default null after default_group');"
+ " call mysql.spider_fix_one_table('spider_tables', 'dsn',"
+ " 'alter table mysql.spider_tables"
+ " add column dsn char(64) default null after default_group');"
+ " call mysql.spider_fix_one_table('spider_xa_failed_log', 'dsn',"
+ " 'alter table mysql.spider_xa_failed_log"
+ " add column dsn char(64) default null after default_group');"
+ " call mysql.spider_fix_one_table('spider_xa_member', 'dsn',"
+ " 'alter table mysql.spider_xa_member"
+ " add column dsn char(64) default null after default_group');"
+ "end;"
+ )},
+ {C_STRING_WITH_LEN(
+ "call mysql.spider_fix_system_tables"
+ )},
+ {C_STRING_WITH_LEN(
+ "drop procedure mysql.spider_fix_one_table"
+ )},
+ {C_STRING_WITH_LEN(
+ "drop procedure mysql.spider_fix_system_tables"
+ )},
+/*
+ Install a plugin and UDFs
+*/
+ {C_STRING_WITH_LEN(
+ "drop procedure if exists mysql.spider_plugin_installer"
+ )},
+ {C_STRING_WITH_LEN(
+ "create procedure mysql.spider_plugin_installer()"
+ "begin"
+ " set @win_plugin := IF(@@version_compile_os like 'Win%', 1, 0);"
+/*
+ Install spider plugin
+*/
+/*
+ " set @have_spider_i_s_plugin := 0;"
+ " select @have_spider_i_s_plugin := 1 from INFORMATION_SCHEMA.plugins"
+ " where PLUGIN_NAME = 'SPIDER';"
+ " set @have_spider_plugin := 0;"
+ " select @have_spider_plugin := 1 from mysql.plugin"
+ " where name = 'spider';"
+ " if @have_spider_i_s_plugin = 0 then"
+ " if @have_spider_plugin = 1 then"
+ " / *"
+ " spider plugin is present in mysql.plugin but not in"
+ " information_schema.plugins. Remove spider plugin entry"
+ " in mysql.plugin first."
+ " * /"
+ " delete from mysql.plugin where name = 'spider';"
+ " end if;"
+ " if @win_plugin = 0 then "
+ " install plugin spider soname 'ha_spider.so';"
+ " else"
+ " install plugin spider soname 'ha_spider.dll';"
+ " end if;"
+ " end if;"
+*/
+/*
+ Install spider_alloc_mem plugin
+*/
+ " set @have_spider_i_s_alloc_mem_plugin := 0;"
+ " select @have_spider_i_s_alloc_mem_plugin := 1"
+ " from INFORMATION_SCHEMA.plugins"
+ " where PLUGIN_NAME = 'SPIDER_ALLOC_MEM';"
+ " set @have_spider_alloc_mem_plugin := 0;"
+ " select @have_spider_alloc_mem_plugin := 1 from mysql.plugin"
+ " where name = 'spider_alloc_mem';"
+ " if @have_spider_i_s_alloc_mem_plugin = 0 then"
+ " if @have_spider_alloc_mem_plugin = 1 then"
+ " /*"
+ " spider_alloc_mem plugin is present in mysql.plugin but not in"
+ " information_schema.plugins. Remove spider_alloc_mem plugin entry"
+ " in mysql.plugin first."
+ " */"
+ " delete from mysql.plugin where name = 'spider_alloc_mem';"
+ " end if;"
+ " if @win_plugin = 0 then "
+ " install plugin spider_alloc_mem soname 'ha_spider.so';"
+ " else"
+ " install plugin spider_alloc_mem soname 'ha_spider.dll';"
+ " end if;"
+ " end if;"
+/*
+ Install spider_wrapper_protocols plugin
+*/
+ " set @have_spider_i_s_wrapper_protocols_plugin := 0;"
+ " select @have_spider_i_s_wrapper_protocols_plugin := 1"
+ " from INFORMATION_SCHEMA.plugins"
+ " where PLUGIN_NAME = 'SPIDER_WRAPPER_PROTOCOLS';"
+ " set @have_spider_wrapper_protocols_plugin := 0;"
+ " select @have_spider_wrapper_protocols_plugin := 1 from mysql.plugin"
+ " where name = 'spider_wrapper_protocols';"
+ " if @have_spider_i_s_wrapper_protocols_plugin = 0 then"
+ " if @have_spider_wrapper_protocols_plugin = 1 then"
+ " /*"
+ " spider_wrapper_protocols plugin is present in mysql.plugin but not in"
+ " information_schema.plugins. Remove spider_wrapper_protocols plugin entry"
+ " in mysql.plugin first."
+ " */"
+ " delete from mysql.plugin where name = 'spider_wrapper_protocols';"
+ " end if;"
+ " if @win_plugin = 0 then "
+ " install plugin spider_wrapper_protocols soname 'ha_spider.so';"
+ " else"
+ " install plugin spider_wrapper_protocols soname 'ha_spider.dll';"
+ " end if;"
+ " end if;"
+ " set @have_spider_direct_sql_udf := 0;"
+ " select @have_spider_direct_sql_udf := 1 from mysql.func"
+ " where name = 'spider_direct_sql';"
+ " if @have_spider_direct_sql_udf = 0 then"
+ " if @win_plugin = 0 then "
+ " create function spider_direct_sql returns int"
+ " soname 'ha_spider.so';"
+ " else"
+ " create function spider_direct_sql returns int"
+ " soname 'ha_spider.dll';"
+ " end if;"
+ " end if;"
+ " set @have_spider_bg_direct_sql_udf := 0;"
+ " select @have_spider_bg_direct_sql_udf := 1 from mysql.func"
+ " where name = 'spider_bg_direct_sql';"
+ " if @have_spider_bg_direct_sql_udf = 0 then"
+ " if @win_plugin = 0 then "
+ " create aggregate function spider_bg_direct_sql returns int"
+ " soname 'ha_spider.so';"
+ " else"
+ " create aggregate function spider_bg_direct_sql returns int"
+ " soname 'ha_spider.dll';"
+ " end if;"
+ " end if;"
+ " set @have_spider_ping_table_udf := 0;"
+ " select @have_spider_ping_table_udf := 1 from mysql.func"
+ " where name = 'spider_ping_table';"
+ " if @have_spider_ping_table_udf = 0 then"
+ " if @win_plugin = 0 then "
+ " create function spider_ping_table returns int"
+ " soname 'ha_spider.so';"
+ " else"
+ " create function spider_ping_table returns int"
+ " soname 'ha_spider.dll';"
+ " end if;"
+ " end if;"
+ " set @have_spider_copy_tables_udf := 0;"
+ " select @have_spider_copy_tables_udf := 1 from mysql.func"
+ " where name = 'spider_copy_tables';"
+ " if @have_spider_copy_tables_udf = 0 then"
+ " if @win_plugin = 0 then "
+ " create function spider_copy_tables returns int"
+ " soname 'ha_spider.so';"
+ " else"
+ " create function spider_copy_tables returns int"
+ " soname 'ha_spider.dll';"
+ " end if;"
+ " end if;"
+ " set @have_spider_flush_table_mon_cache_udf := 0;"
+ " select @have_spider_flush_table_mon_cache_udf := 1 from mysql.func"
+ " where name = 'spider_flush_table_mon_cache';"
+ " if @have_spider_flush_table_mon_cache_udf = 0 then"
+ " if @win_plugin = 0 then "
+ " create function spider_flush_table_mon_cache returns int"
+ " soname 'ha_spider.so';"
+ " else"
+ " create function spider_flush_table_mon_cache returns int"
+ " soname 'ha_spider.dll';"
+ " end if;"
+ " end if;"
+ " if @server_name = 'MariaDB' and"
+ " ("
+ " @server_major_version > 10 or"
+ " ("
+ " @server_major_version = 10 and"
+ " @server_minor_version >= 6"
+ " )"
+ " )"
+ " then"
+/*
+ Install spider_rewrite plugin
+*/
+ " set @have_spider_i_s_rewrite_plugin := 0;"
+ " select @have_spider_i_s_rewrite_plugin := 1"
+ " from INFORMATION_SCHEMA.plugins"
+ " where PLUGIN_NAME = 'SPIDER_REWRITE';"
+ " set @have_spider_rewrite_plugin := 0;"
+ " select @have_spider_rewrite_plugin := 1 from mysql.plugin"
+ " where name = 'spider_rewrite';"
+ " if @have_spider_i_s_rewrite_plugin = 0 then"
+ " if @have_spider_rewrite_plugin = 1 then"
+ " /*"
+ " spider_rewrite plugin is present in mysql.plugin but not in"
+ " information_schema.plugins. Remove spider_rewrite plugin entry"
+ " in mysql.plugin first."
+ " */"
+ " delete from mysql.plugin where name = 'spider_rewrite';"
+ " end if;"
+ " if @win_plugin = 0 then "
+ " install plugin spider_rewrite soname 'ha_spider.so';"
+ " else"
+ " install plugin spider_rewrite soname 'ha_spider.dll';"
+ " end if;"
+ " end if;"
+ " set @have_spider_flush_rewrite_cache_udf := 0;"
+ " select @have_spider_flush_rewrite_cache_udf := 1 from mysql.func"
+ " where name = 'spider_flush_rewrite_cache';"
+ " if @have_spider_flush_rewrite_cache_udf = 0 then"
+ " if @win_plugin = 0 then "
+ " create function spider_flush_rewrite_cache returns int"
+ " soname 'ha_spider.so';"
+ " else"
+ " create function spider_flush_rewrite_cache returns int"
+ " soname 'ha_spider.dll';"
+ " end if;"
+ " end if;"
+ " end if;"
+ "end;"
+ )},
+ {C_STRING_WITH_LEN(
+ "call mysql.spider_plugin_installer"
+ )},
+ {C_STRING_WITH_LEN(
+ "drop procedure mysql.spider_plugin_installer"
+ )},
+ {C_STRING_WITH_LEN("")}
+};