Commit f9097b86 authored by patg@govinda.patg.net's avatar patg@govinda.patg.net

Merge pgalbraith@bk-internal.mysql.com:/home/bk/mysql-5.1-arch

into  govinda.patg.net:/home/patg/mysql-build/mysql-5.1-arch-wl3031-merge
parents 23f0c6d7 98062f56
...@@ -72,7 +72,8 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \ ...@@ -72,7 +72,8 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
event_queue.cc event_db_repository.cc \ event_queue.cc event_db_repository.cc \
rpl_filter.cc sql_partition.cc sql_builtin.cc sql_plugin.cc \ rpl_filter.cc sql_partition.cc sql_builtin.cc sql_plugin.cc \
sql_tablespace.cc \ sql_tablespace.cc \
rpl_injector.cc my_user.c partition_info.cc rpl_injector.cc my_user.c partition_info.cc \
sql_servers.cc
libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources) libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources)
libmysqld_a_SOURCES= libmysqld_a_SOURCES=
......
...@@ -114,6 +114,20 @@ REPLACE INTO user VALUES ('127.0.0.1' ,'root','','Y','Y','Y','Y','Y','Y','Y','Y ...@@ -114,6 +114,20 @@ REPLACE INTO user VALUES ('127.0.0.1' ,'root','','Y','Y','Y','Y','Y','Y','Y','Y
INSERT INTO user (host,user) VALUES ('localhost',''); INSERT INTO user (host,user) VALUES ('localhost','');
INSERT INTO user (host,user) VALUES ('@HOSTNAME@%',''); INSERT INTO user (host,user) VALUES ('@HOSTNAME@%','');
CREATE TABLE servers (
Server_name char(64) NOT NULL DEFAULT '',
Host char(64) NOT NULL DEFAULT '',
Db char(64) NOT NULL DEFAULT '',
Username char(64) NOT NULL DEFAULT '',
Password char(64) NOT NULL DEFAULT '',
Port INT(4) NOT NULL DEFAULT '0',
Socket char(64) NOT NULL DEFAULT '',
Wrapper char(64) NOT NULL DEFAULT '',
Owner char(64) NOT NULL DEFAULT '',
PRIMARY KEY (Server_name))
comment='MySQL Foreign Servers table';
INSERT INTO servers VALUES ('test','localhost','test','root','', 0,'','mysql','root');
CREATE TABLE func ( CREATE TABLE func (
name char(64) binary DEFAULT '' NOT NULL, name char(64) binary DEFAULT '' NOT NULL,
......
...@@ -19,6 +19,7 @@ ndb_binlog_index ...@@ -19,6 +19,7 @@ ndb_binlog_index
plugin plugin
proc proc
procs_priv procs_priv
servers
slow_log slow_log
tables_priv tables_priv
time_zone time_zone
......
...@@ -6,26 +6,26 @@ Table Op Msg_type Msg_text ...@@ -6,26 +6,26 @@ Table Op Msg_type Msg_text
test.t4 backup error Failed copying .frm file (errno: X) test.t4 backup error Failed copying .frm file (errno: X)
test.t4 backup status Operation failed test.t4 backup status Operation failed
Warnings: Warnings:
Warning 1541 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead Warning 1543 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
Error 1 Can't create/write to file 'MYSQLTEST_VARDIR/bogus/t4.frm' (Errcode: X) Error 1 Can't create/write to file 'MYSQLTEST_VARDIR/bogus/t4.frm' (Errcode: X)
backup table t4 to '../tmp'; backup table t4 to '../tmp';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t4 backup status OK test.t4 backup status OK
Warnings: Warnings:
Warning 1541 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead Warning 1543 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
backup table t4 to '../tmp'; backup table t4 to '../tmp';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t4 backup error Failed copying .frm file (errno: X) test.t4 backup error Failed copying .frm file (errno: X)
test.t4 backup status Operation failed test.t4 backup status Operation failed
Warnings: Warnings:
Warning 1541 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead Warning 1543 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
Error 1 Can't create/write to file 'MYSQLTEST_VARDIR/tmp/t4.frm' (Errcode: X) Error 1 Can't create/write to file 'MYSQLTEST_VARDIR/tmp/t4.frm' (Errcode: X)
drop table t4; drop table t4;
restore table t4 from '../tmp'; restore table t4 from '../tmp';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t4 restore status OK test.t4 restore status OK
Warnings: Warnings:
Warning 1541 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead Warning 1543 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
select count(*) from t4; select count(*) from t4;
count(*) count(*)
0 0
...@@ -35,19 +35,19 @@ backup table t1 to '../tmp'; ...@@ -35,19 +35,19 @@ backup table t1 to '../tmp';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t1 backup status OK test.t1 backup status OK
Warnings: Warnings:
Warning 1541 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead Warning 1543 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
drop table t1; drop table t1;
restore table t1 from '../bogus'; restore table t1 from '../bogus';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
t1 restore error Failed copying .frm file t1 restore error Failed copying .frm file
Warnings: Warnings:
Warning 1541 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead Warning 1543 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
Error 29 File 'MYSQLTEST_VARDIR/bogus/t1.frm' not found (Errcode: X) Error 29 File 'MYSQLTEST_VARDIR/bogus/t1.frm' not found (Errcode: X)
restore table t1 from '../tmp'; restore table t1 from '../tmp';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t1 restore status OK test.t1 restore status OK
Warnings: Warnings:
Warning 1541 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead Warning 1543 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
select n from t1; select n from t1;
n n
23 23
...@@ -62,7 +62,7 @@ Table Op Msg_type Msg_text ...@@ -62,7 +62,7 @@ Table Op Msg_type Msg_text
test.t2 backup status OK test.t2 backup status OK
test.t3 backup status OK test.t3 backup status OK
Warnings: Warnings:
Warning 1541 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead Warning 1543 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
drop table t1,t2,t3; drop table t1,t2,t3;
restore table t1,t2,t3 from '../tmp'; restore table t1,t2,t3 from '../tmp';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
...@@ -70,7 +70,7 @@ test.t1 restore status OK ...@@ -70,7 +70,7 @@ test.t1 restore status OK
test.t2 restore status OK test.t2 restore status OK
test.t3 restore status OK test.t3 restore status OK
Warnings: Warnings:
Warning 1541 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead Warning 1543 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
select n from t1; select n from t1;
n n
23 23
...@@ -91,7 +91,7 @@ restore table t1 from '../tmp'; ...@@ -91,7 +91,7 @@ restore table t1 from '../tmp';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t1 restore status OK test.t1 restore status OK
Warnings: Warnings:
Warning 1541 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead Warning 1543 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
rename table t1 to t5; rename table t1 to t5;
lock tables t5 write; lock tables t5 write;
backup table t5 to '../tmp'; backup table t5 to '../tmp';
...@@ -99,7 +99,7 @@ unlock tables; ...@@ -99,7 +99,7 @@ unlock tables;
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t5 backup status OK test.t5 backup status OK
Warnings: Warnings:
Warning 1541 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead Warning 1543 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
drop table t5; drop table t5;
DROP TABLE IF EXISTS `t+1`; DROP TABLE IF EXISTS `t+1`;
CREATE TABLE `t+1` (c1 INT); CREATE TABLE `t+1` (c1 INT);
...@@ -108,13 +108,13 @@ BACKUP TABLE `t+1` TO '../tmp'; ...@@ -108,13 +108,13 @@ BACKUP TABLE `t+1` TO '../tmp';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t+1 backup status OK test.t+1 backup status OK
Warnings: Warnings:
Warning 1541 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead Warning 1543 The syntax 'BACKUP TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
DROP TABLE `t+1`; DROP TABLE `t+1`;
RESTORE TABLE `t+1` FROM '../tmp'; RESTORE TABLE `t+1` FROM '../tmp';
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t+1 restore status OK test.t+1 restore status OK
Warnings: Warnings:
Warning 1541 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead Warning 1543 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
SELECT * FROM `t+1`; SELECT * FROM `t+1`;
c1 c1
1 1
......
...@@ -15,6 +15,7 @@ ndb_binlog_index ...@@ -15,6 +15,7 @@ ndb_binlog_index
plugin plugin
proc proc
procs_priv procs_priv
servers
slow_log slow_log
tables_priv tables_priv
time_zone time_zone
...@@ -47,6 +48,7 @@ ndb_binlog_index ...@@ -47,6 +48,7 @@ ndb_binlog_index
plugin plugin
proc proc
procs_priv procs_priv
servers
slow_log slow_log
tables_priv tables_priv
time_zone time_zone
...@@ -87,6 +89,7 @@ ndb_binlog_index ...@@ -87,6 +89,7 @@ ndb_binlog_index
plugin plugin
proc proc
procs_priv procs_priv
servers
slow_log slow_log
tables_priv tables_priv
time_zone time_zone
......
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
stop slave;
DROP DATABASE IF EXISTS federated;
CREATE DATABASE federated;
DROP DATABASE IF EXISTS federated;
CREATE DATABASE federated;
create database first_db;
create database second_db;
use first_db;
DROP TABLE IF EXISTS first_db.t1;
Warnings:
Note 1051 Unknown table 't1'
CREATE TABLE first_db.t1 (
`id` int(20) NOT NULL,
`name` varchar(64) NOT NULL default ''
)
DEFAULT CHARSET=latin1;
use second_db;
DROP TABLE IF EXISTS second_db.t1;
Warnings:
Note 1051 Unknown table 't1'
CREATE TABLE second_db.t1 (
`id` int(20) NOT NULL,
`name` varchar(64) NOT NULL default ''
)
DEFAULT CHARSET=latin1;
drop server if exists 'server_one';
create server 'server_one' foreign data wrapper 'mysql' options
(HOST '127.0.0.1',
DATABASE 'first_db',
USER 'root',
PASSWORD '',
PORT 9308,
SOCKET '',
OWNER 'root');
drop server if exists 'server_two';
create server 'server_two' foreign data wrapper 'mysql' options
(HOST '127.0.0.1',
DATABASE 'second_db',
USER 'root',
PASSWORD '',
PORT 9308,
SOCKET '',
OWNER 'root');
select * from mysql.servers;
Server_name Host Db Username Password Port Socket Wrapper Owner
test localhost test root 0 mysql root
server_one 127.0.0.1 first_db root 9308 mysql root
server_two 127.0.0.1 second_db root 9308 mysql root
DROP TABLE IF EXISTS federated.old;
Warnings:
Note 1051 Unknown table 'old'
CREATE TABLE federated.old (
`id` int(20) NOT NULL,
`name` varchar(64) NOT NULL default ''
)
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
CONNECTION='mysql://root@127.0.0.1:9308/first_db/t1';
INSERT INTO federated.old (id, name) values (1, 'federated.old url');
SELECT * FROM federated.old;
id name
1 federated.old url
DROP TABLE IF EXISTS federated.old2;
Warnings:
Note 1051 Unknown table 'old2'
CREATE TABLE federated.old2 (
`id` int(20) NOT NULL,
`name` varchar(64) NOT NULL default ''
)
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
CONNECTION='mysql://root@127.0.0.1:9308/second_db/t1';
INSERT INTO federated.old2 (id, name) values (1, 'federated.old2 url');
DROP TABLE IF EXISTS federated.t1;
Warnings:
Note 1051 Unknown table 't1'
CREATE TABLE federated.t1 (
`id` int(20) NOT NULL,
`name` varchar(64) NOT NULL default ''
)
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
CONNECTION='server_one';
INSERT INTO federated.t1 (id, name) values (1, 'server_one, new scheme');
SELECT * FROM federated.t1;
id name
1 federated.old url
1 server_one, new scheme
ALTER SERVER 'server_one' options(DATABASE 'second_db');
flush tables;
INSERT INTO federated.t1 (id, name) values (1, 'server_two, new scheme');
SELECT * FROM federated.t1;
id name
1 federated.old2 url
1 server_two, new scheme
drop table federated.t1;
drop server 'server_one';
drop server 'server_two';
select * from mysql.servers;
Server_name Host Db Username Password Port Socket Wrapper Owner
test localhost test root 0 mysql root
drop table first_db.t1;
drop table second_db.t1;
drop database first_db;
drop database second_db;
DROP TABLE IF EXISTS federated.t1;
DROP DATABASE IF EXISTS federated;
DROP TABLE IF EXISTS federated.t1;
DROP DATABASE IF EXISTS federated;
...@@ -76,6 +76,7 @@ host ...@@ -76,6 +76,7 @@ host
plugin plugin
proc proc
procs_priv procs_priv
servers
slow_log slow_log
tables_priv tables_priv
time_zone time_zone
...@@ -852,7 +853,7 @@ flush privileges; ...@@ -852,7 +853,7 @@ flush privileges;
SELECT table_schema, count(*) FROM information_schema.TABLES where table_name<>'ndb_binlog_index' AND table_name<>'ndb_apply_status' GROUP BY TABLE_SCHEMA; SELECT table_schema, count(*) FROM information_schema.TABLES where table_name<>'ndb_binlog_index' AND table_name<>'ndb_apply_status' GROUP BY TABLE_SCHEMA;
table_schema count(*) table_schema count(*)
information_schema 27 information_schema 27
mysql 21 mysql 22
create table t1 (i int, j int); create table t1 (i int, j int);
create trigger trg1 before insert on t1 for each row create trigger trg1 before insert on t1 for each row
begin begin
......
...@@ -172,8 +172,8 @@ ERROR 1049 (42000) at line 1: Unknown database 'invalid' ...@@ -172,8 +172,8 @@ ERROR 1049 (42000) at line 1: Unknown database 'invalid'
ERROR 1049 (42000) at line 1: Unknown database 'invalid' ERROR 1049 (42000) at line 1: Unknown database 'invalid'
Test connect with dbname + hostname Test connect with dbname + hostname
Test connect with dbname + _invalid_ hostname Test connect with dbname + _invalid_ hostname
ERROR 2005 (HY000) at line 1: Unknown MySQL server host 'invalid_hostname' (errno) ERROR 2003 (HY000) at line 1: Can't connect to MySQL server on 'invalid_hostname' (errno)
ERROR 2005 (HY000) at line 1: Unknown MySQL server host 'invalid_hostname' (errno) ERROR 2003 (HY000) at line 1: Can't connect to MySQL server on 'invalid_hostname' (errno)
The commands reported in the bug report The commands reported in the bug report
ERROR 2005 (HY000) at line 1: Unknown MySQL server host 'cyril has found a bug :)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' (errno) ERROR 2005 (HY000) at line 1: Unknown MySQL server host 'cyril has found a bug :)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' (errno)
Too long dbname Too long dbname
......
...@@ -17,6 +17,7 @@ mysql.ndb_binlog_index OK ...@@ -17,6 +17,7 @@ mysql.ndb_binlog_index OK
mysql.plugin OK mysql.plugin OK
mysql.proc OK mysql.proc OK
mysql.procs_priv OK mysql.procs_priv OK
mysql.servers OK
mysql.slow_log mysql.slow_log
note : The storage engine for the table doesn't support optimize note : The storage engine for the table doesn't support optimize
mysql.tables_priv OK mysql.tables_priv OK
...@@ -41,6 +42,7 @@ mysql.ndb_binlog_index OK ...@@ -41,6 +42,7 @@ mysql.ndb_binlog_index OK
mysql.plugin OK mysql.plugin OK
mysql.proc OK mysql.proc OK
mysql.procs_priv OK mysql.procs_priv OK
mysql.servers OK
mysql.slow_log mysql.slow_log
note : The storage engine for the table doesn't support optimize note : The storage engine for the table doesn't support optimize
mysql.tables_priv OK mysql.tables_priv OK
......
...@@ -5,20 +5,20 @@ INITIAL_SIZE 16M ...@@ -5,20 +5,20 @@ INITIAL_SIZE 16M
UNDO_BUFFER_SIZE = 1M UNDO_BUFFER_SIZE = 1M
ENGINE=MYISAM; ENGINE=MYISAM;
Warnings: Warnings:
Error 1465 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP' Error 1466 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
ALTER LOGFILE GROUP lg1 ALTER LOGFILE GROUP lg1
ADD UNDOFILE 'undofile02.dat' ADD UNDOFILE 'undofile02.dat'
INITIAL_SIZE = 4M INITIAL_SIZE = 4M
ENGINE=XYZ; ENGINE=XYZ;
Warnings: Warnings:
Error 1286 Unknown table engine 'XYZ' Error 1286 Unknown table engine 'XYZ'
Error 1465 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP' Error 1466 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
CREATE TABLESPACE ts1 CREATE TABLESPACE ts1
ADD DATAFILE 'datafile.dat' ADD DATAFILE 'datafile.dat'
USE LOGFILE GROUP lg1 USE LOGFILE GROUP lg1
INITIAL_SIZE 12M; INITIAL_SIZE 12M;
Warnings: Warnings:
Error 1465 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP' Error 1466 Table storage engine 'MyISAM' does not support the create option 'TABLESPACE or LOGFILE GROUP'
set storage_engine=ndb; set storage_engine=ndb;
CREATE LOGFILE GROUP lg1 CREATE LOGFILE GROUP lg1
ADD UNDOFILE 'undofile.dat' ADD UNDOFILE 'undofile.dat'
......
...@@ -16,7 +16,7 @@ ERROR HY000: Failed to create LOGFILE GROUP ...@@ -16,7 +16,7 @@ ERROR HY000: Failed to create LOGFILE GROUP
SHOW WARNINGS; SHOW WARNINGS;
Level Code Message Level Code Message
Error 1296 Got error 1514 'Currently there is a limit of one logfile group' from NDB Error 1296 Got error 1514 'Currently there is a limit of one logfile group' from NDB
Error 1515 Failed to create LOGFILE GROUP Error 1516 Failed to create LOGFILE GROUP
CREATE LOGFILE GROUP lg1 CREATE LOGFILE GROUP lg1
ADD UNDOFILE 'undofile.dat' ADD UNDOFILE 'undofile.dat'
INITIAL_SIZE 1M INITIAL_SIZE 1M
......
...@@ -3475,7 +3475,7 @@ SELECT 0.9888889889 * 1.011111411911; ...@@ -3475,7 +3475,7 @@ SELECT 0.9888889889 * 1.011111411911;
0.9998769417899202067879 0.9998769417899202067879
prepare stmt from 'select 1 as " a "'; prepare stmt from 'select 1 as " a "';
Warnings: Warnings:
Warning 1546 Leading spaces are removed from name ' a ' Warning 1548 Leading spaces are removed from name ' a '
execute stmt; execute stmt;
a a
1 1
......
...@@ -712,7 +712,7 @@ drop database mysqltest; ...@@ -712,7 +712,7 @@ drop database mysqltest;
show full plugin; show full plugin;
show warnings; show warnings;
Level Code Message Level Code Message
Warning 1541 The syntax 'SHOW PLUGIN' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW PLUGINS' instead Warning 1543 The syntax 'SHOW PLUGIN' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW PLUGINS' instead
show plugin; show plugin;
show plugins; show plugins;
create database `mysqlttest\1`; create database `mysqlttest\1`;
......
...@@ -5633,7 +5633,7 @@ drop function if exists pi; ...@@ -5633,7 +5633,7 @@ drop function if exists pi;
create function pi() returns varchar(50) create function pi() returns varchar(50)
return "pie, my favorite desert."; return "pie, my favorite desert.";
Warnings: Warnings:
Note 1579 This function 'pi' has the same name as a native function. Note 1580 This function 'pi' has the same name as a native function.
SET @save_sql_mode=@@sql_mode; SET @save_sql_mode=@@sql_mode;
SET SQL_MODE='IGNORE_SPACE'; SET SQL_MODE='IGNORE_SPACE';
select pi(), pi (); select pi(), pi ();
...@@ -5682,15 +5682,15 @@ use test; ...@@ -5682,15 +5682,15 @@ use test;
create function `database`() returns varchar(50) create function `database`() returns varchar(50)
return "Stored function database"; return "Stored function database";
Warnings: Warnings:
Note 1579 This function 'database' has the same name as a native function. Note 1580 This function 'database' has the same name as a native function.
create function `current_user`() returns varchar(50) create function `current_user`() returns varchar(50)
return "Stored function current_user"; return "Stored function current_user";
Warnings: Warnings:
Note 1579 This function 'current_user' has the same name as a native function. Note 1580 This function 'current_user' has the same name as a native function.
create function md5(x varchar(50)) returns varchar(50) create function md5(x varchar(50)) returns varchar(50)
return "Stored function md5"; return "Stored function md5";
Warnings: Warnings:
Note 1579 This function 'md5' has the same name as a native function. Note 1580 This function 'md5' has the same name as a native function.
SET SQL_MODE='IGNORE_SPACE'; SET SQL_MODE='IGNORE_SPACE';
select database(), database (); select database(), database ();
database() database () database() database ()
......
...@@ -7,11 +7,11 @@ return 1; ...@@ -7,11 +7,11 @@ return 1;
create function x() returns int create function x() returns int
return 2; return 2;
Warnings: Warnings:
Note 1579 This function 'x' has the same name as a native function. Note 1580 This function 'x' has the same name as a native function.
create function y() returns int create function y() returns int
return 3; return 3;
Warnings: Warnings:
Note 1579 This function 'y' has the same name as a native function. Note 1580 This function 'y' has the same name as a native function.
select a(); select a();
a() a()
1 1
......
...@@ -535,7 +535,7 @@ use db_bug7787| ...@@ -535,7 +535,7 @@ use db_bug7787|
CREATE PROCEDURE p1() CREATE PROCEDURE p1()
SHOW INNODB STATUS; | SHOW INNODB STATUS; |
Warnings: Warnings:
Warning 1541 The syntax 'SHOW INNODB STATUS' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW ENGINE INNODB STATUS' instead Warning 1543 The syntax 'SHOW INNODB STATUS' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW ENGINE INNODB STATUS' instead
GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost| GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost|
DROP DATABASE db_bug7787| DROP DATABASE db_bug7787|
drop user user_bug7787@localhost| drop user user_bug7787@localhost|
......
...@@ -15,6 +15,7 @@ ndb_binlog_index ...@@ -15,6 +15,7 @@ ndb_binlog_index
plugin plugin
proc proc
procs_priv procs_priv
servers
slow_log slow_log
tables_priv tables_priv
time_zone time_zone
......
...@@ -101,13 +101,13 @@ create table t1 (t2 timestamp(2), t4 timestamp(4), t6 timestamp(6), ...@@ -101,13 +101,13 @@ create table t1 (t2 timestamp(2), t4 timestamp(4), t6 timestamp(6),
t8 timestamp(8), t10 timestamp(10), t12 timestamp(12), t8 timestamp(8), t10 timestamp(10), t12 timestamp(12),
t14 timestamp(14)); t14 timestamp(14));
Warnings: Warnings:
Warning 1541 The syntax 'TIMESTAMP(2)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead Warning 1543 The syntax 'TIMESTAMP(2)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
Warning 1541 The syntax 'TIMESTAMP(4)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead Warning 1543 The syntax 'TIMESTAMP(4)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
Warning 1541 The syntax 'TIMESTAMP(6)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead Warning 1543 The syntax 'TIMESTAMP(6)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
Warning 1541 The syntax 'TIMESTAMP(8)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead Warning 1543 The syntax 'TIMESTAMP(8)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
Warning 1541 The syntax 'TIMESTAMP(10)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead Warning 1543 The syntax 'TIMESTAMP(10)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
Warning 1541 The syntax 'TIMESTAMP(12)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead Warning 1543 The syntax 'TIMESTAMP(12)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
Warning 1541 The syntax 'TIMESTAMP(14)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead Warning 1543 The syntax 'TIMESTAMP(14)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
insert t1 values (0,0,0,0,0,0,0), insert t1 values (0,0,0,0,0,0,0),
("1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59", ("1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
"1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
......
...@@ -175,7 +175,7 @@ Warning 1266 Using storage engine MyISAM for table 't1' ...@@ -175,7 +175,7 @@ Warning 1266 Using storage engine MyISAM for table 't1'
drop table t1; drop table t1;
set table_type=MYISAM; set table_type=MYISAM;
Warnings: Warnings:
Warning 1541 The syntax 'table_type' is deprecated and will be removed in MySQL 5.2. Please use 'storage_engine' instead Warning 1543 The syntax 'table_type' is deprecated and will be removed in MySQL 5.2. Please use 'storage_engine' instead
create table t1 (a int); create table t1 (a int);
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10); insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
update t1 set a='abc'; update t1 set a='abc';
......
...@@ -640,32 +640,32 @@ select extractValue('<a>a','/a'); ...@@ -640,32 +640,32 @@ select extractValue('<a>a','/a');
extractValue('<a>a','/a') extractValue('<a>a','/a')
NULL NULL
Warnings: Warnings:
Warning 1512 Incorrect XML value: 'parse error at line 1 pos 5: unexpected END-OF-INPUT' Warning 1513 Incorrect XML value: 'parse error at line 1 pos 5: unexpected END-OF-INPUT'
select extractValue('<a>a<','/a'); select extractValue('<a>a<','/a');
extractValue('<a>a<','/a') extractValue('<a>a<','/a')
NULL NULL
Warnings: Warnings:
Warning 1512 Incorrect XML value: 'parse error at line 1 pos 6: END-OF-INPUT unexpected (ident or '/' wanted)' Warning 1513 Incorrect XML value: 'parse error at line 1 pos 6: END-OF-INPUT unexpected (ident or '/' wanted)'
select extractValue('<a>a</','/a'); select extractValue('<a>a</','/a');
extractValue('<a>a</','/a') extractValue('<a>a</','/a')
NULL NULL
Warnings: Warnings:
Warning 1512 Incorrect XML value: 'parse error at line 1 pos 7: END-OF-INPUT unexpected (ident wanted)' Warning 1513 Incorrect XML value: 'parse error at line 1 pos 7: END-OF-INPUT unexpected (ident wanted)'
select extractValue('<a>a</a','/a'); select extractValue('<a>a</a','/a');
extractValue('<a>a</a','/a') extractValue('<a>a</a','/a')
NULL NULL
Warnings: Warnings:
Warning 1512 Incorrect XML value: 'parse error at line 1 pos 8: END-OF-INPUT unexpected ('>' wanted)' Warning 1513 Incorrect XML value: 'parse error at line 1 pos 8: END-OF-INPUT unexpected ('>' wanted)'
select extractValue('<a>a</a></b>','/a'); select extractValue('<a>a</a></b>','/a');
extractValue('<a>a</a></b>','/a') extractValue('<a>a</a></b>','/a')
NULL NULL
Warnings: Warnings:
Warning 1512 Incorrect XML value: 'parse error at line 1 pos 12: '</b>' unexpected (END-OF-INPUT wanted)' Warning 1513 Incorrect XML value: 'parse error at line 1 pos 12: '</b>' unexpected (END-OF-INPUT wanted)'
select extractValue('<a b=>a</a>','/a'); select extractValue('<a b=>a</a>','/a');
extractValue('<a b=>a</a>','/a') extractValue('<a b=>a</a>','/a')
NULL NULL
Warnings: Warnings:
Warning 1512 Incorrect XML value: 'parse error at line 1 pos 7: '>' unexpected (ident or string wanted)' Warning 1513 Incorrect XML value: 'parse error at line 1 pos 7: '>' unexpected (ident or string wanted)'
select extractValue('<e>1</e>','position()'); select extractValue('<e>1</e>','position()');
ERROR HY000: XPATH syntax error: '' ERROR HY000: XPATH syntax error: ''
select extractValue('<e>1</e>','last()'); select extractValue('<e>1</e>','last()');
...@@ -716,17 +716,17 @@ select extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','//* ...@@ -716,17 +716,17 @@ select extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','//*
extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','//*') extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','//*')
NULL NULL
Warnings: Warnings:
Warning 1512 Incorrect XML value: 'parse error at line 1 pos 13: unknown token unexpected (ident or '/' wanted)' Warning 1513 Incorrect XML value: 'parse error at line 1 pos 13: unknown token unexpected (ident or '/' wanted)'
select extractValue('<.>test</.>','//*'); select extractValue('<.>test</.>','//*');
extractValue('<.>test</.>','//*') extractValue('<.>test</.>','//*')
NULL NULL
Warnings: Warnings:
Warning 1512 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)' Warning 1513 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)'
select extractValue('<->test</->','//*'); select extractValue('<->test</->','//*');
extractValue('<->test</->','//*') extractValue('<->test</->','//*')
NULL NULL
Warnings: Warnings:
Warning 1512 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)' Warning 1513 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)'
select extractValue('<:>test</:>','//*'); select extractValue('<:>test</:>','//*');
extractValue('<:>test</:>','//*') extractValue('<:>test</:>','//*')
test test
......
# should work with embedded server after mysqltest is fixed
-- source include/not_embedded.inc
source include/federated.inc;
connection slave;
create database first_db;
create database second_db;
use first_db;
DROP TABLE IF EXISTS first_db.t1;
CREATE TABLE first_db.t1 (
`id` int(20) NOT NULL,
`name` varchar(64) NOT NULL default ''
)
DEFAULT CHARSET=latin1;
use second_db;
DROP TABLE IF EXISTS second_db.t1;
CREATE TABLE second_db.t1 (
`id` int(20) NOT NULL,
`name` varchar(64) NOT NULL default ''
)
DEFAULT CHARSET=latin1;
connection master;
drop server if exists 'server_one';
eval create server 'server_one' foreign data wrapper 'mysql' options
(HOST '127.0.0.1',
DATABASE 'first_db',
USER 'root',
PASSWORD '',
PORT $SLAVE_MYPORT,
SOCKET '',
OWNER 'root');
drop server if exists 'server_two';
eval create server 'server_two' foreign data wrapper 'mysql' options
(HOST '127.0.0.1',
DATABASE 'second_db',
USER 'root',
PASSWORD '',
PORT $SLAVE_MYPORT,
SOCKET '',
OWNER 'root');
select * from mysql.servers;
DROP TABLE IF EXISTS federated.old;
eval CREATE TABLE federated.old (
`id` int(20) NOT NULL,
`name` varchar(64) NOT NULL default ''
)
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
CONNECTION='mysql://root@127.0.0.1:$SLAVE_MYPORT/first_db/t1';
INSERT INTO federated.old (id, name) values (1, 'federated.old url');
SELECT * FROM federated.old;
DROP TABLE IF EXISTS federated.old2;
eval CREATE TABLE federated.old2 (
`id` int(20) NOT NULL,
`name` varchar(64) NOT NULL default ''
)
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
CONNECTION='mysql://root@127.0.0.1:$SLAVE_MYPORT/second_db/t1';
INSERT INTO federated.old2 (id, name) values (1, 'federated.old2 url');
DROP TABLE IF EXISTS federated.t1;
CREATE TABLE federated.t1 (
`id` int(20) NOT NULL,
`name` varchar(64) NOT NULL default ''
)
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
CONNECTION='server_one';
INSERT INTO federated.t1 (id, name) values (1, 'server_one, new scheme');
SELECT * FROM federated.t1;
ALTER SERVER 'server_one' options(DATABASE 'second_db');
flush tables;
INSERT INTO federated.t1 (id, name) values (1, 'server_two, new scheme');
SELECT * FROM federated.t1;
drop table federated.t1;
drop server 'server_one';
drop server 'server_two';
select * from mysql.servers;
connection slave;
drop table first_db.t1;
drop table second_db.t1;
drop database first_db;
drop database second_db;
source include/federated_cleanup.inc;
...@@ -30,6 +30,7 @@ windows=$4 ...@@ -30,6 +30,7 @@ windows=$4
# Initialize variables # Initialize variables
c_d="" i_d="" c_d="" i_d=""
c_s="" i_s=""
c_h="" i_h="" c_h="" i_h=""
c_u="" i_u="" c_u="" i_u=""
c_f="" i_f="" c_f="" i_f=""
...@@ -192,6 +193,33 @@ then ...@@ -192,6 +193,33 @@ then
fi fi
fi fi
# Check for old tables
if test ! -f $mdata/servers.frm
then
if test "$1" = "verbose" ; then
echo "Preparing servers table" 1>&2;
fi
c_s="
CREATE TABLE servers ("
c_s="$c_s Server_name char(64) NOT NULL,"
c_s="$c_s Host char(64) NOT NULL,"
c_s="$c_s Db char(64) NOT NULL,"
c_s="$c_s Username char(64) NOT NULL,"
c_s="$c_s Password char(64) NOT NULL,"
c_s="$c_s Port INT(4),"
c_s="$c_s Socket char(64),"
c_s="$c_s Wrapper char(64) NOT NULL,"
c_s="$c_s Owner char(64) NOT NULL,"
c_s="$c_s PRIMARY KEY (Server_name))"
c_s="$c_s comment='MySQL Foreign Servers table';"
i_s="INSERT INTO servers VALUES
('test','localhost','test','root','', 0,
'','mysql','root');
"
fi
if test ! -f $mdata/func.frm if test ! -f $mdata/func.frm
then then
if test "$1" = "verbose" ; then if test "$1" = "verbose" ; then
...@@ -849,6 +877,9 @@ $i_f ...@@ -849,6 +877,9 @@ $i_f
$c_pl $c_pl
$i_pl $i_pl
$c_s
$i_s
$c_t $c_t
$c_c $c_c
......
...@@ -68,7 +68,7 @@ noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \ ...@@ -68,7 +68,7 @@ noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \
event_db_repository.h event_queue.h \ event_db_repository.h event_queue.h \
sql_plugin.h authors.h sql_partition.h event_data_objects.h \ sql_plugin.h authors.h sql_partition.h event_data_objects.h \
partition_info.h partition_element.h event_scheduler.h \ partition_info.h partition_element.h event_scheduler.h \
contributors.h contributors.h sql_servers.h
mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \ mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \
item.cc item_sum.cc item_buff.cc item_func.cc \ item.cc item_sum.cc item_buff.cc item_func.cc \
item_cmpfunc.cc item_strfunc.cc item_timefunc.cc \ item_cmpfunc.cc item_strfunc.cc item_timefunc.cc \
...@@ -106,7 +106,8 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \ ...@@ -106,7 +106,8 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \
event_scheduler.cc event_data_objects.cc \ event_scheduler.cc event_data_objects.cc \
event_queue.cc event_db_repository.cc events.cc \ event_queue.cc event_db_repository.cc events.cc \
sql_plugin.cc sql_binlog.cc \ sql_plugin.cc sql_binlog.cc \
sql_builtin.cc sql_tablespace.cc partition_info.cc sql_builtin.cc sql_tablespace.cc partition_info.cc \
sql_servers.cc
gen_lex_hash_SOURCES = gen_lex_hash.cc gen_lex_hash_SOURCES = gen_lex_hash.cc
......
...@@ -229,6 +229,7 @@ static SYMBOL symbols[] = { ...@@ -229,6 +229,7 @@ static SYMBOL symbols[] = {
{ "HAVING", SYM(HAVING)}, { "HAVING", SYM(HAVING)},
{ "HELP", SYM(HELP_SYM)}, { "HELP", SYM(HELP_SYM)},
{ "HIGH_PRIORITY", SYM(HIGH_PRIORITY)}, { "HIGH_PRIORITY", SYM(HIGH_PRIORITY)},
{ "HOST", SYM(HOST_SYM)},
{ "HOSTS", SYM(HOSTS_SYM)}, { "HOSTS", SYM(HOSTS_SYM)},
{ "HOUR", SYM(HOUR_SYM)}, { "HOUR", SYM(HOUR_SYM)},
{ "HOUR_MICROSECOND", SYM(HOUR_MICROSECOND_SYM)}, { "HOUR_MICROSECOND", SYM(HOUR_MICROSECOND_SYM)},
...@@ -368,6 +369,7 @@ static SYMBOL symbols[] = { ...@@ -368,6 +369,7 @@ static SYMBOL symbols[] = {
{ "ONE_SHOT", SYM(ONE_SHOT_SYM)}, { "ONE_SHOT", SYM(ONE_SHOT_SYM)},
{ "OPEN", SYM(OPEN_SYM)}, { "OPEN", SYM(OPEN_SYM)},
{ "OPTIMIZE", SYM(OPTIMIZE)}, { "OPTIMIZE", SYM(OPTIMIZE)},
{ "OPTIONS", SYM(OPTIONS_SYM)},
{ "OPTION", SYM(OPTION)}, { "OPTION", SYM(OPTION)},
{ "OPTIONALLY", SYM(OPTIONALLY)}, { "OPTIONALLY", SYM(OPTIONALLY)},
{ "OR", SYM(OR_SYM)}, { "OR", SYM(OR_SYM)},
...@@ -375,6 +377,7 @@ static SYMBOL symbols[] = { ...@@ -375,6 +377,7 @@ static SYMBOL symbols[] = {
{ "OUT", SYM(OUT_SYM)}, { "OUT", SYM(OUT_SYM)},
{ "OUTER", SYM(OUTER)}, { "OUTER", SYM(OUTER)},
{ "OUTFILE", SYM(OUTFILE)}, { "OUTFILE", SYM(OUTFILE)},
{ "OWNER", SYM(OWNER_SYM)},
{ "PACK_KEYS", SYM(PACK_KEYS_SYM)}, { "PACK_KEYS", SYM(PACK_KEYS_SYM)},
{ "PARSER", SYM(PARSER_SYM)}, { "PARSER", SYM(PARSER_SYM)},
{ "PARTIAL", SYM(PARTIAL)}, { "PARTIAL", SYM(PARTIAL)},
...@@ -387,6 +390,7 @@ static SYMBOL symbols[] = { ...@@ -387,6 +390,7 @@ static SYMBOL symbols[] = {
{ "PLUGINS", SYM(PLUGINS_SYM)}, { "PLUGINS", SYM(PLUGINS_SYM)},
{ "POINT", SYM(POINT_SYM)}, { "POINT", SYM(POINT_SYM)},
{ "POLYGON", SYM(POLYGON)}, { "POLYGON", SYM(POLYGON)},
{ "PORT", SYM(PORT_SYM)},
{ "PRECISION", SYM(PRECISION)}, { "PRECISION", SYM(PRECISION)},
{ "PREPARE", SYM(PREPARE_SYM)}, { "PREPARE", SYM(PREPARE_SYM)},
{ "PRESERVE", SYM(PRESERVE_SYM)}, { "PRESERVE", SYM(PRESERVE_SYM)},
...@@ -456,6 +460,7 @@ static SYMBOL symbols[] = { ...@@ -456,6 +460,7 @@ static SYMBOL symbols[] = {
{ "SERIAL", SYM(SERIAL_SYM)}, { "SERIAL", SYM(SERIAL_SYM)},
{ "SERIALIZABLE", SYM(SERIALIZABLE_SYM)}, { "SERIALIZABLE", SYM(SERIALIZABLE_SYM)},
{ "SESSION", SYM(SESSION_SYM)}, { "SESSION", SYM(SESSION_SYM)},
{ "SERVER", SYM(SERVER_SYM)},
{ "SET", SYM(SET)}, { "SET", SYM(SET)},
{ "SHARE", SYM(SHARE_SYM)}, { "SHARE", SYM(SHARE_SYM)},
{ "SHOW", SYM(SHOW)}, { "SHOW", SYM(SHOW)},
...@@ -465,6 +470,7 @@ static SYMBOL symbols[] = { ...@@ -465,6 +470,7 @@ static SYMBOL symbols[] = {
{ "SLAVE", SYM(SLAVE)}, { "SLAVE", SYM(SLAVE)},
{ "SNAPSHOT", SYM(SNAPSHOT_SYM)}, { "SNAPSHOT", SYM(SNAPSHOT_SYM)},
{ "SMALLINT", SYM(SMALLINT)}, { "SMALLINT", SYM(SMALLINT)},
{ "SOCKET", SYM(SOCKET_SYM)},
{ "SOME", SYM(ANY_SYM)}, { "SOME", SYM(ANY_SYM)},
{ "SONAME", SYM(SONAME_SYM)}, { "SONAME", SYM(SONAME_SYM)},
{ "SOUNDS", SYM(SOUNDS_SYM)}, { "SOUNDS", SYM(SOUNDS_SYM)},
...@@ -569,6 +575,7 @@ static SYMBOL symbols[] = { ...@@ -569,6 +575,7 @@ static SYMBOL symbols[] = {
{ "VIEW", SYM(VIEW_SYM)}, { "VIEW", SYM(VIEW_SYM)},
{ "WITH", SYM(WITH)}, { "WITH", SYM(WITH)},
{ "WORK", SYM(WORK_SYM)}, { "WORK", SYM(WORK_SYM)},
{ "WRAPPER", SYM(WRAPPER_SYM)},
{ "WRITE", SYM(WRITE_SYM)}, { "WRITE", SYM(WRITE_SYM)},
{ "X509", SYM(X509_SYM)}, { "X509", SYM(X509_SYM)},
{ "XOR", SYM(XOR)}, { "XOR", SYM(XOR)},
......
...@@ -624,6 +624,7 @@ Item *negate_expression(THD *thd, Item *expr); ...@@ -624,6 +624,7 @@ Item *negate_expression(THD *thd, Item *expr);
#include "sql_acl.h" #include "sql_acl.h"
#include "tztime.h" #include "tztime.h"
#ifdef MYSQL_SERVER #ifdef MYSQL_SERVER
#include "sql_servers.h"
#include "opt_range.h" #include "opt_range.h"
#ifdef HAVE_QUERY_CACHE #ifdef HAVE_QUERY_CACHE
......
...@@ -1180,6 +1180,7 @@ void clean_up(bool print_message) ...@@ -1180,6 +1180,7 @@ void clean_up(bool print_message)
my_tz_free(); my_tz_free();
my_database_names_free(); my_database_names_free();
#ifndef NO_EMBEDDED_ACCESS_CHECKS #ifndef NO_EMBEDDED_ACCESS_CHECKS
servers_free(1);
acl_free(1); acl_free(1);
grant_free(); grant_free();
#endif #endif
...@@ -3655,6 +3656,9 @@ we force server id to 2, but this MySQL server will not act as a slave."); ...@@ -3655,6 +3656,9 @@ we force server id to 2, but this MySQL server will not act as a slave.");
if (!opt_noacl) if (!opt_noacl)
(void) grant_init(); (void) grant_init();
if (!opt_bootstrap)
servers_init(0);
if (!opt_noacl) if (!opt_noacl)
{ {
#ifdef HAVE_DLOPEN #ifdef HAVE_DLOPEN
......
...@@ -5607,6 +5607,8 @@ ER_SP_RECURSION_LIMIT ...@@ -5607,6 +5607,8 @@ ER_SP_RECURSION_LIMIT
ER_SP_PROC_TABLE_CORRUPT ER_SP_PROC_TABLE_CORRUPT
eng "Failed to load routine %-.64s. The table mysql.proc is missing, corrupt, or contains bad data (internal code %d)" eng "Failed to load routine %-.64s. The table mysql.proc is missing, corrupt, or contains bad data (internal code %d)"
ger "Routine %-64s konnte nicht geladen werden. Die Tabelle mysql.proc fehlt, ist beschdigt, oder enthlt fehlerhaften Daten (interner Code: %d)" ger "Routine %-64s konnte nicht geladen werden. Die Tabelle mysql.proc fehlt, ist beschdigt, oder enthlt fehlerhaften Daten (interner Code: %d)"
ER_FOREIGN_SERVER_EXISTS
eng "The foreign server, %s, you are trying to create already exists."
ER_SP_WRONG_NAME 42000 ER_SP_WRONG_NAME 42000
eng "Incorrect routine name '%-.64s'" eng "Incorrect routine name '%-.64s'"
ger "Ungltiger Routinenname '%-.64s'" ger "Ungltiger Routinenname '%-.64s'"
...@@ -5847,6 +5849,9 @@ ER_BINLOG_ROW_WRONG_TABLE_DEF ...@@ -5847,6 +5849,9 @@ ER_BINLOG_ROW_WRONG_TABLE_DEF
ER_BINLOG_ROW_RBR_TO_SBR ER_BINLOG_ROW_RBR_TO_SBR
eng "Slave running with --log-slave-updates must use row-based binary logging to be able to replicate row-based binary log events" eng "Slave running with --log-slave-updates must use row-based binary logging to be able to replicate row-based binary log events"
ger "Slave, die mit --log-slave-updates laufen, mssen zeilenbasiertes Loggen verwenden, um zeilenbasierte Binrlog-Ereignisse loggen zu knnen" ger "Slave, die mit --log-slave-updates laufen, mssen zeilenbasiertes Loggen verwenden, um zeilenbasierte Binrlog-Ereignisse loggen zu knnen"
ER_FOREIGN_SERVER_DOESNT_EXIST
eng "The foreign server name you are trying to reference does not exist. Data source error: %-.64s"
ger "Die externe Verbindung, auf die Sie zugreifen wollen, existiert nicht. Datenquellenfehlermeldung: %-.64s"
ER_EVENT_ALREADY_EXISTS ER_EVENT_ALREADY_EXISTS
eng "Event '%-.64s' already exists" eng "Event '%-.64s' already exists"
ger "Event '%-.64s' existiert bereits" ger "Event '%-.64s' existiert bereits"
......
...@@ -183,6 +183,21 @@ void lex_start(THD *thd, const uchar *buf, uint length) ...@@ -183,6 +183,21 @@ void lex_start(THD *thd, const uchar *buf, uint length)
lex->nest_level=0 ; lex->nest_level=0 ;
lex->allow_sum_func= 0; lex->allow_sum_func= 0;
lex->in_sum_func= NULL; lex->in_sum_func= NULL;
/*
ok, there must be a better solution for this, long-term
I tried "bzero" in the sql_yacc.yy code, but that for
some reason made the values zero, even if they were set
*/
lex->server_options.server_name= 0;
lex->server_options.server_name_length= 0;
lex->server_options.host= 0;
lex->server_options.db= 0;
lex->server_options.username= 0;
lex->server_options.password= 0;
lex->server_options.scheme= 0;
lex->server_options.socket= 0;
lex->server_options.owner= 0;
lex->server_options.port= -1;
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
......
...@@ -111,6 +111,7 @@ enum enum_sql_command { ...@@ -111,6 +111,7 @@ enum enum_sql_command {
SQLCOM_SHOW_AUTHORS, SQLCOM_BINLOG_BASE64_EVENT, SQLCOM_SHOW_AUTHORS, SQLCOM_BINLOG_BASE64_EVENT,
SQLCOM_SHOW_PLUGINS, SQLCOM_SHOW_PLUGINS,
SQLCOM_SHOW_CONTRIBUTORS, SQLCOM_SHOW_CONTRIBUTORS,
SQLCOM_CREATE_SERVER, SQLCOM_DROP_SERVER, SQLCOM_ALTER_SERVER,
SQLCOM_CREATE_EVENT, SQLCOM_ALTER_EVENT, SQLCOM_DROP_EVENT, SQLCOM_CREATE_EVENT, SQLCOM_ALTER_EVENT, SQLCOM_DROP_EVENT,
SQLCOM_SHOW_CREATE_EVENT, SQLCOM_SHOW_EVENTS, SQLCOM_SHOW_CREATE_EVENT, SQLCOM_SHOW_EVENTS,
...@@ -174,6 +175,14 @@ enum enum_drop_mode ...@@ -174,6 +175,14 @@ enum enum_drop_mode
typedef List<Item> List_item; typedef List<Item> List_item;
/* SERVERS CACHE CHANGES */
typedef struct st_lex_server_options
{
long port;
uint server_name_length;
char *server_name, *host, *db, *username, *password, *scheme, *socket, *owner;
} LEX_SERVER_OPTIONS;
typedef struct st_lex_master_info typedef struct st_lex_master_info
{ {
char *host, *user, *password, *log_file_name; char *host, *user, *password, *log_file_name;
...@@ -977,6 +986,7 @@ typedef struct st_lex : public Query_tables_list ...@@ -977,6 +986,7 @@ typedef struct st_lex : public Query_tables_list
HA_CREATE_INFO create_info; HA_CREATE_INFO create_info;
KEY_CREATE_INFO key_create_info; KEY_CREATE_INFO key_create_info;
LEX_MASTER_INFO mi; // used by CHANGE MASTER LEX_MASTER_INFO mi; // used by CHANGE MASTER
LEX_SERVER_OPTIONS server_options;
USER_RESOURCES mqh; USER_RESOURCES mqh;
ulong type; ulong type;
/* /*
......
...@@ -5189,6 +5189,58 @@ mysql_execute_command(THD *thd) ...@@ -5189,6 +5189,58 @@ mysql_execute_command(THD *thd)
#endif /* EMBEDDED_LIBRARY */ #endif /* EMBEDDED_LIBRARY */
break; break;
} }
case SQLCOM_CREATE_SERVER:
{
int error;
LEX *lex= thd->lex;
DBUG_PRINT("info", ("case SQLCOM_CREATE_SERVER"));
if ((error= create_server(thd, &lex->server_options)))
{
DBUG_PRINT("info", ("problem creating server",
lex->server_options.server_name));
my_error(error, MYF(0), lex->server_options.server_name);
break;
}
send_ok(thd, 1);
break;
}
case SQLCOM_ALTER_SERVER:
{
int error;
LEX *lex= thd->lex;
DBUG_PRINT("info", ("case SQLCOM_ALTER_SERVER"));
if ((error= alter_server(thd, &lex->server_options)))
{
DBUG_PRINT("info", ("problem altering server",
lex->server_options.server_name));
my_error(error, MYF(0), lex->server_options.server_name);
break;
}
send_ok(thd, 1);
break;
}
case SQLCOM_DROP_SERVER:
{
int err_code;
LEX *lex= thd->lex;
DBUG_PRINT("info", ("case SQLCOM_DROP_SERVER"));
if ((err_code= drop_server(thd, &lex->server_options)))
{
if (! lex->drop_if_exists && err_code == ER_FOREIGN_SERVER_EXISTS)
{
DBUG_PRINT("info", ("problem dropping server %s",
lex->server_options.server_name));
my_error(err_code, MYF(0), lex->server_options.server_name);
}
else
{
send_ok(thd, 0);
}
break;
}
send_ok(thd, 1);
break;
}
default: default:
#ifndef EMBEDDED_LIBRARY #ifndef EMBEDDED_LIBRARY
DBUG_ASSERT(0); /* Impossible */ DBUG_ASSERT(0); /* Impossible */
......
This diff is collapsed.
/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
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; either version 2 of the License, or
(at your option) any later version.
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 */
#include "slave.h" // for tables_ok(), rpl_filter
/* structs */
typedef struct st_federated_server
{
char *server_name;
long port;
uint server_name_length;
char *db, *scheme, *username, *password, *socket, *owner, *host, *sport;
} FOREIGN_SERVER;
/* cache handlers */
my_bool servers_init(bool dont_read_server_table);
static my_bool servers_load(THD *thd, TABLE_LIST *tables);
my_bool servers_reload(THD *thd);
my_bool get_server_from_table_to_cache(TABLE *table);
void servers_free(bool end=0);
/* insert functions */
int create_server(THD *thd, LEX_SERVER_OPTIONS *server_options);
int insert_server(THD *thd, FOREIGN_SERVER *server_options);
int insert_server_record(TABLE *table, FOREIGN_SERVER *server);
int insert_server_record_into_cache(FOREIGN_SERVER *server);
void store_server_fields_for_insert(TABLE *table, FOREIGN_SERVER *server);
void store_server_fields_for_insert(TABLE *table,
FOREIGN_SERVER *existing,
FOREIGN_SERVER *altered);
int prepare_server_struct_for_insert(LEX_SERVER_OPTIONS *server_options,
FOREIGN_SERVER *server);
/* drop functions */
int drop_server(THD *thd, LEX_SERVER_OPTIONS *server_options);
int delete_server_record(TABLE *table,
char *server_name,
int server_name_length);
int delete_server_record_in_cache(LEX_SERVER_OPTIONS *server_options);
/* update functions */
int alter_server(THD *thd, LEX_SERVER_OPTIONS *server_options);
int prepare_server_struct_for_update(LEX_SERVER_OPTIONS *server_options,
FOREIGN_SERVER *existing,
FOREIGN_SERVER *altered);
int update_server(THD *thd, FOREIGN_SERVER *existing, FOREIGN_SERVER *altered);
int update_server_record(TABLE *table, FOREIGN_SERVER *server);
int update_server_record_in_cache(FOREIGN_SERVER *existing,
FOREIGN_SERVER *altered);
/* utility functions */
void merge_server_struct(FOREIGN_SERVER *from, FOREIGN_SERVER *to);
FOREIGN_SERVER *get_server_by_name(const char *server_name);
my_bool server_exists_in_table(THD *thd, char *server_name);
...@@ -364,6 +364,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); ...@@ -364,6 +364,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
%token HELP_SYM %token HELP_SYM
%token HEX_NUM %token HEX_NUM
%token HIGH_PRIORITY %token HIGH_PRIORITY
%token HOST_SYM
%token HOSTS_SYM %token HOSTS_SYM
%token HOUR_MICROSECOND_SYM %token HOUR_MICROSECOND_SYM
%token HOUR_MINUTE_SYM %token HOUR_MINUTE_SYM
...@@ -506,6 +507,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); ...@@ -506,6 +507,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
%token ONE_SYM %token ONE_SYM
%token OPEN_SYM /* SQL-2003-R */ %token OPEN_SYM /* SQL-2003-R */
%token OPTIMIZE %token OPTIMIZE
%token OPTIONS_SYM
%token OPTION /* SQL-2003-N */ %token OPTION /* SQL-2003-N */
%token OPTIONALLY %token OPTIONALLY
%token OR2_SYM %token OR2_SYM
...@@ -515,6 +517,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); ...@@ -515,6 +517,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
%token OUTER %token OUTER
%token OUTFILE %token OUTFILE
%token OUT_SYM /* SQL-2003-R */ %token OUT_SYM /* SQL-2003-R */
%token OWNER_SYM
%token PACK_KEYS_SYM %token PACK_KEYS_SYM
%token PARAM_MARKER %token PARAM_MARKER
%token PARSER_SYM %token PARSER_SYM
...@@ -528,6 +531,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); ...@@ -528,6 +531,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
%token PLUGIN_SYM %token PLUGIN_SYM
%token POINT_SYM %token POINT_SYM
%token POLYGON %token POLYGON
%token PORT_SYM
%token POSITION_SYM /* SQL-2003-N */ %token POSITION_SYM /* SQL-2003-N */
%token PRECISION /* SQL-2003-R */ %token PRECISION /* SQL-2003-R */
%token PREPARE_SYM /* SQL-2003-R */ %token PREPARE_SYM /* SQL-2003-R */
...@@ -596,6 +600,8 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); ...@@ -596,6 +600,8 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
%token SERIALIZABLE_SYM /* SQL-2003-N */ %token SERIALIZABLE_SYM /* SQL-2003-N */
%token SERIAL_SYM %token SERIAL_SYM
%token SESSION_SYM /* SQL-2003-N */ %token SESSION_SYM /* SQL-2003-N */
%token SERVER_SYM
%token SERVER_OPTIONS
%token SET /* SQL-2003-R */ %token SET /* SQL-2003-R */
%token SET_VAR %token SET_VAR
%token SHARE_SYM %token SHARE_SYM
...@@ -608,6 +614,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); ...@@ -608,6 +614,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
%token SLAVE %token SLAVE
%token SMALLINT /* SQL-2003-R */ %token SMALLINT /* SQL-2003-R */
%token SNAPSHOT_SYM %token SNAPSHOT_SYM
%token SOCKET_SYM
%token SONAME_SYM %token SONAME_SYM
%token SOUNDS_SYM %token SOUNDS_SYM
%token SPATIAL_SYM %token SPATIAL_SYM
...@@ -715,6 +722,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); ...@@ -715,6 +722,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
%token WHILE_SYM %token WHILE_SYM
%token WITH /* SQL-2003-R */ %token WITH /* SQL-2003-R */
%token WORK_SYM /* SQL-2003-N */ %token WORK_SYM /* SQL-2003-N */
%token WRAPPER_SYM
%token WRITE_SYM /* SQL-2003-N */ %token WRITE_SYM /* SQL-2003-N */
%token X509_SYM %token X509_SYM
%token XA_SYM %token XA_SYM
...@@ -910,6 +918,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); ...@@ -910,6 +918,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize);
view_check_option trigger_tail sp_tail view_check_option trigger_tail sp_tail
install uninstall partition_entry binlog_base64_event install uninstall partition_entry binlog_base64_event
init_key_options key_options key_opts key_opt key_using_alg init_key_options key_options key_opts key_opt key_using_alg
server_def server_options_list server_option
END_OF_INPUT END_OF_INPUT
%type <NONE> call sp_proc_stmts sp_proc_stmts1 sp_proc_stmt %type <NONE> call sp_proc_stmts sp_proc_stmts1 sp_proc_stmt
...@@ -1303,8 +1312,61 @@ create: ...@@ -1303,8 +1312,61 @@ create:
{ {
Lex->alter_tablespace_info->ts_cmd_type= CREATE_TABLESPACE; Lex->alter_tablespace_info->ts_cmd_type= CREATE_TABLESPACE;
} }
| CREATE server_def
{
Lex->sql_command= SQLCOM_CREATE_SERVER;
}
;
server_def:
SERVER_SYM ident_or_text FOREIGN DATA_SYM WRAPPER_SYM ident_or_text OPTIONS_SYM '(' server_options_list ')'
{
Lex->server_options.server_name= $2.str;
Lex->server_options.server_name_length= $2.length;
Lex->server_options.scheme= $6.str;
}
; ;
server_options_list:
server_option
| server_options_list ',' server_option
;
server_option:
USER TEXT_STRING_sys
{
Lex->server_options.username= $2.str;
}
|
HOST_SYM TEXT_STRING_sys
{
Lex->server_options.host= $2.str;
}
|
DATABASE TEXT_STRING_sys
{
Lex->server_options.db= $2.str;
}
|
OWNER_SYM TEXT_STRING_sys
{
Lex->server_options.owner= $2.str;
}
|
PASSWORD TEXT_STRING_sys
{
Lex->server_options.password= $2.str;
}
|
SOCKET_SYM TEXT_STRING_sys
{
Lex->server_options.socket= $2.str;
}
|
PORT_SYM ulong_num
{
Lex->server_options.port= $2;
}
;
event_tail: event_tail:
EVENT_SYM opt_if_not_exists sp_name EVENT_SYM opt_if_not_exists sp_name
...@@ -4829,6 +4891,13 @@ alter: ...@@ -4829,6 +4891,13 @@ alter:
LEX *lex= Lex; LEX *lex= Lex;
lex->alter_tablespace_info->ts_cmd_type= ALTER_ACCESS_MODE_TABLESPACE; lex->alter_tablespace_info->ts_cmd_type= ALTER_ACCESS_MODE_TABLESPACE;
} }
| ALTER SERVER_SYM ident_or_text OPTIONS_SYM '(' server_options_list ')'
{
LEX *lex= Lex;
Lex->sql_command= SQLCOM_ALTER_SERVER;
Lex->server_options.server_name= $3.str;
Lex->server_options.server_name_length= $3.length;
}
; ;
ev_alter_on_schedule_completion: /* empty */ { $$= 0;} ev_alter_on_schedule_completion: /* empty */ { $$= 0;}
...@@ -7744,6 +7813,13 @@ drop: ...@@ -7744,6 +7813,13 @@ drop:
LEX *lex= Lex; LEX *lex= Lex;
lex->alter_tablespace_info->ts_cmd_type= DROP_LOGFILE_GROUP; lex->alter_tablespace_info->ts_cmd_type= DROP_LOGFILE_GROUP;
} }
| DROP SERVER_SYM if_exists ident_or_text
{
Lex->sql_command = SQLCOM_DROP_SERVER;
Lex->drop_if_exists= $3;
Lex->server_options.server_name= $4.str;
Lex->server_options.server_name_length= $4.length;
}
; ;
table_list: table_list:
...@@ -9310,12 +9386,16 @@ keyword: ...@@ -9310,12 +9386,16 @@ keyword:
| FLUSH_SYM {} | FLUSH_SYM {}
| HANDLER_SYM {} | HANDLER_SYM {}
| HELP_SYM {} | HELP_SYM {}
| HOST_SYM {}
| INSTALL_SYM {} | INSTALL_SYM {}
| LANGUAGE_SYM {} | LANGUAGE_SYM {}
| NO_SYM {} | NO_SYM {}
| OPEN_SYM {} | OPEN_SYM {}
| OPTIONS_SYM {}
| OWNER_SYM {}
| PARSER_SYM {} | PARSER_SYM {}
| PARTITION_SYM {} | PARTITION_SYM {}
| PORT_SYM {}
| PREPARE_SYM {} | PREPARE_SYM {}
| REMOVE_SYM {} | REMOVE_SYM {}
| REPAIR {} | REPAIR {}
...@@ -9324,7 +9404,9 @@ keyword: ...@@ -9324,7 +9404,9 @@ keyword:
| ROLLBACK_SYM {} | ROLLBACK_SYM {}
| SAVEPOINT_SYM {} | SAVEPOINT_SYM {}
| SECURITY_SYM {} | SECURITY_SYM {}
| SERVER_SYM {}
| SIGNED_SYM {} | SIGNED_SYM {}
| SOCKET_SYM {}
| SLAVE {} | SLAVE {}
| SONAME_SYM {} | SONAME_SYM {}
| START_SYM {} | START_SYM {}
...@@ -9332,6 +9414,8 @@ keyword: ...@@ -9332,6 +9414,8 @@ keyword:
| TRUNCATE_SYM {} | TRUNCATE_SYM {}
| UNICODE_SYM {} | UNICODE_SYM {}
| UNINSTALL_SYM {} | UNINSTALL_SYM {}
| USER {}
| WRAPPER_SYM {}
| XA_SYM {} | XA_SYM {}
| UPGRADE_SYM {} | UPGRADE_SYM {}
; ;
......
This diff is collapsed.
This diff is collapsed.
...@@ -43,6 +43,9 @@ ...@@ -43,6 +43,9 @@
The example implements the minimum of what you will probably need. The example implements the minimum of what you will probably need.
*/ */
typedef struct st_federated_share { typedef struct st_federated_share {
bool parsed;
/* this key is unique db/tablename */
const char *share_key;
/* /*
the primary select query to be used in rnd_init the primary select query to be used in rnd_init
*/ */
...@@ -50,6 +53,8 @@ typedef struct st_federated_share { ...@@ -50,6 +53,8 @@ typedef struct st_federated_share {
/* /*
remote host info, parse_url supplies remote host info, parse_url supplies
*/ */
char *server_name;
char *connection_string;
char *scheme; char *scheme;
char *connect_string; char *connect_string;
char *hostname; char *hostname;
...@@ -60,8 +65,9 @@ typedef struct st_federated_share { ...@@ -60,8 +65,9 @@ typedef struct st_federated_share {
char *table; char *table;
char *socket; char *socket;
char *sport; char *sport;
int share_key_length;
ushort port; ushort port;
uint table_name_length, connect_string_length, use_count; uint table_name_length, server_name_length, connect_string_length, use_count;
pthread_mutex_t mutex; pthread_mutex_t mutex;
THR_LOCK lock; THR_LOCK lock;
} FEDERATED_SHARE; } FEDERATED_SHARE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment