Merge fixes for:
MDEV-4797 - Spider crash on show create table spider table and replication multi source to one of the partitions MDEV-4747 - Spider: add missing install_spider.sql
This commit is contained in:
commit
31007e3422
@ -1,3 +1,6 @@
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_HANDLERSOCKET")
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHAVE_HANDLERSOCKET")
|
||||
|
||||
SET(SPIDER_SOURCES
|
||||
spd_param.cc spd_sys_table.cc spd_trx.cc spd_db_conn.cc spd_conn.cc
|
||||
spd_table.cc spd_direct_sql.cc spd_udf.cc spd_ping_table.cc
|
||||
@ -34,7 +37,11 @@ ELSE()
|
||||
${CMAKE_SOURCE_DIR}/storage/spider/hs_client
|
||||
${ORACLE_INCLUDE_DIR})
|
||||
|
||||
SET(SPIDER_DEB_FILES "usr/lib/mysql/plugin/ha_spider.so" PARENT_SCOPE)
|
||||
INSTALL(FILES
|
||||
${CMAKE_SOURCE_DIR}/storage/spider/scripts/install_spider.sql
|
||||
DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Server
|
||||
)
|
||||
SET(SPIDER_DEB_FILES "usr/lib/mysql/plugin/ha_spider.so usr/share/mysql/install_spider.sql" PARENT_SCOPE)
|
||||
MYSQL_ADD_PLUGIN(spider ${SPIDER_SOURCES} STORAGE_ENGINE MODULE_ONLY MODULE_OUTPUT_NAME "ha_spider")
|
||||
ENDIF()
|
||||
|
||||
|
@ -11347,7 +11347,7 @@ int ha_spider::rnd_handler_init()
|
||||
|
||||
void ha_spider::set_error_mode()
|
||||
{
|
||||
THD *thd = trx->thd;
|
||||
THD *thd = ha_thd();
|
||||
DBUG_ENTER("ha_spider::set_error_mode");
|
||||
DBUG_PRINT("info",("spider this=%p", this));
|
||||
switch (thd_sql_command(thd))
|
||||
|
342
storage/spider/scripts/install_spider.sql
Normal file
342
storage/spider/scripts/install_spider.sql
Normal file
@ -0,0 +1,342 @@
|
||||
# Copyright (C) 2010-2011 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
# This SQL script creates system tables for SPIDER
|
||||
# or fixes incompatibilities if ones already exist.
|
||||
|
||||
-- Create system tables if not exist
|
||||
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;
|
||||
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 default '',
|
||||
username char(64) not null default '',
|
||||
password char(64) not null default '',
|
||||
ssl_ca text default null,
|
||||
ssl_capath text default null,
|
||||
ssl_cert text default null,
|
||||
ssl_cipher char(64) default null,
|
||||
ssl_key text default null,
|
||||
ssl_verify_server_cert tinyint not null default 0,
|
||||
default_file text default null,
|
||||
default_group char(64) default null,
|
||||
key idx1 (data, format_id, gtrid_length, host)
|
||||
) engine=MyISAM default charset=utf8 collate=utf8_bin;
|
||||
create table if not exists mysql.spider_tables(
|
||||
db_name char(64) not null default '',
|
||||
table_name char(64) 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 default null,
|
||||
username char(64) default null,
|
||||
password char(64) default null,
|
||||
ssl_ca text default null,
|
||||
ssl_capath text default null,
|
||||
ssl_cert text default null,
|
||||
ssl_cipher char(64) default null,
|
||||
ssl_key text default null,
|
||||
ssl_verify_server_cert tinyint not null default 0,
|
||||
default_file text default null,
|
||||
default_group 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,
|
||||
primary key (db_name, table_name, link_id),
|
||||
key idx1 (priority)
|
||||
) engine=MyISAM default charset=utf8 collate=utf8_bin;
|
||||
create table if not exists mysql.spider_link_mon_servers(
|
||||
db_name char(64) not null default '',
|
||||
table_name char(64) not null default '',
|
||||
link_id char(5) 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 default null,
|
||||
username char(64) default null,
|
||||
password char(64) default null,
|
||||
ssl_ca text default null,
|
||||
ssl_capath text default null,
|
||||
ssl_cert text default null,
|
||||
ssl_cipher char(64) default null,
|
||||
ssl_key text default null,
|
||||
ssl_verify_server_cert tinyint not null default 0,
|
||||
default_file text default null,
|
||||
default_group char(64) default null,
|
||||
primary key (db_name, table_name, link_id, sid)
|
||||
) engine=MyISAM default charset=utf8 collate=utf8_bin;
|
||||
create table if not exists mysql.spider_link_failed_log(
|
||||
db_name char(64) not null default '',
|
||||
table_name char(64) not null default '',
|
||||
link_id int not null default 0,
|
||||
failed_time timestamp not null default current_timestamp
|
||||
) engine=MyISAM default charset=utf8 collate=utf8_bin;
|
||||
|
||||
-- If tables already exist and their definition differ from the latest ones,
|
||||
-- we fix them here.
|
||||
drop procedure if exists mysql.spider_fix_one_table;
|
||||
drop procedure if exists mysql.spider_fix_system_tables;
|
||||
delimiter //
|
||||
create procedure mysql.spider_fix_one_table
|
||||
(tab_name char(255), test_col_name char(255), _sql text)
|
||||
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;//
|
||||
|
||||
create procedure mysql.spider_fix_system_tables()
|
||||
begin
|
||||
-- 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.25
|
||||
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(5)' then
|
||||
alter table mysql.spider_link_mon_servers
|
||||
modify link_id char(5) not null default '';
|
||||
end if;
|
||||
|
||||
-- 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 default '',
|
||||
modify ssl_ca text default null,
|
||||
modify ssl_capath text default null,
|
||||
modify ssl_cert text default null,
|
||||
modify ssl_key text default null,
|
||||
modify default_file text default null;
|
||||
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 default null,
|
||||
modify ssl_ca text default null,
|
||||
modify ssl_capath text default null,
|
||||
modify ssl_cert text default null,
|
||||
modify ssl_key text default null,
|
||||
modify default_file text default null;
|
||||
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 default null,
|
||||
modify ssl_ca text default null,
|
||||
modify ssl_capath text default null,
|
||||
modify ssl_cert text default null,
|
||||
modify ssl_key text default null,
|
||||
modify default_file text default null;
|
||||
end if;
|
||||
end;//
|
||||
delimiter ;
|
||||
call mysql.spider_fix_system_tables;
|
||||
drop procedure mysql.spider_fix_one_table;
|
||||
drop procedure mysql.spider_fix_system_tables;
|
||||
|
||||
-- Install a plugin and UDFs
|
||||
drop procedure if exists mysql.spider_plugin_installer;
|
||||
delimiter //
|
||||
create procedure mysql.spider_plugin_installer()
|
||||
begin
|
||||
set @win_plugin := IF(@@version_compile_os like 'Win%', 1, 0);
|
||||
set @have_spider_plugin := 0;
|
||||
select @have_spider_plugin := 1 from INFORMATION_SCHEMA.plugins where PLUGIN_NAME = 'SPIDER';
|
||||
if @have_spider_plugin = 0 then
|
||||
if @win_plugin = 0 then
|
||||
install plugin spider soname 'ha_spider.so';
|
||||
else
|
||||
install plugin spider soname 'ha_spider.dll';
|
||||
end if;
|
||||
end if;
|
||||
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';
|
||||
if @have_spider_i_s_alloc_mem_plugin = 0 then
|
||||
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;
|
||||
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;
|
||||
|
||||
end;//
|
||||
delimiter ;
|
||||
call mysql.spider_plugin_installer;
|
||||
drop procedure mysql.spider_plugin_installer;
|
Loading…
x
Reference in New Issue
Block a user