mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
delete row now pulls error message from remote server.
Added test cases with archive (where delete & update will always fail) http://bugs.mysql.com/bug.php?id=12659 sql/ha_federated.cc: populate the error buffer with error message from remote system
This commit is contained in:
48
mysql-test/r/federated_archive.result
Normal file
48
mysql-test/r/federated_archive.result
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
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;
|
||||||
|
DROP TABLE IF EXISTS federated.archive_table;
|
||||||
|
CREATE TABLE federated.archive_table (
|
||||||
|
`id` int(4) NOT NULL,
|
||||||
|
`name` varchar(54) default NULL
|
||||||
|
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1;
|
||||||
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
|
CREATE TABLE federated.t1 (
|
||||||
|
`id` int(4) NOT NULL,
|
||||||
|
`name` varchar(54) default NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
)
|
||||||
|
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
|
||||||
|
COMMENT='mysql://root@127.0.0.1:SLAVE_PORT/federated/archive_table';
|
||||||
|
INSERT INTO federated.t1 (id, name) VALUES (1, 'foo');
|
||||||
|
INSERT INTO federated.t1 (id, name) VALUES (2, 'bar');
|
||||||
|
SELECT * FROM federated.t1;
|
||||||
|
id name
|
||||||
|
1 foo
|
||||||
|
2 bar
|
||||||
|
DELETE FROM federated.t1 WHERE id = 1;
|
||||||
|
ERROR HY000: There was a problem processing the query on the foreign data source. Data source error: ': 1031 : Table storage engine for 'archive_table' doesn't have t'
|
||||||
|
SELECT * FROM federated.t1;
|
||||||
|
id name
|
||||||
|
1 foo
|
||||||
|
2 bar
|
||||||
|
UPDATE federated.t1 SET name='baz' WHERE id = 1;
|
||||||
|
ERROR HY000: There was a problem processing the query on the foreign data source. Data source error: ': 1031 : Table storage engine for 'archive_table' doesn't have t'
|
||||||
|
SELECT * FROM federated.t1;
|
||||||
|
id name
|
||||||
|
1 foo
|
||||||
|
2 bar
|
||||||
|
DROP TABLE federated.t1;
|
||||||
|
DROP TABLE federated.archive_table;
|
||||||
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
|
DROP DATABASE IF EXISTS federated;
|
||||||
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
|
DROP DATABASE IF EXISTS federated;
|
58
mysql-test/t/federated_archive.test
Normal file
58
mysql-test/t/federated_archive.test
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
source include/have_archive.inc;
|
||||||
|
source include/federated.inc;
|
||||||
|
|
||||||
|
|
||||||
|
connection slave;
|
||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS federated.archive_table;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
CREATE TABLE federated.archive_table (
|
||||||
|
`id` int(4) NOT NULL,
|
||||||
|
`name` varchar(54) default NULL
|
||||||
|
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
--replace_result $SLAVE_MYPORT SLAVE_PORT
|
||||||
|
eval CREATE TABLE federated.t1 (
|
||||||
|
`id` int(4) NOT NULL,
|
||||||
|
`name` varchar(54) default NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
)
|
||||||
|
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
|
||||||
|
COMMENT='mysql://root@127.0.0.1:$SLAVE_MYPORT/federated/archive_table';
|
||||||
|
|
||||||
|
INSERT INTO federated.t1 (id, name) VALUES (1, 'foo');
|
||||||
|
INSERT INTO federated.t1 (id, name) VALUES (2, 'bar');
|
||||||
|
|
||||||
|
SELECT * FROM federated.t1;
|
||||||
|
|
||||||
|
--error 1430
|
||||||
|
DELETE FROM federated.t1 WHERE id = 1;
|
||||||
|
|
||||||
|
SELECT * FROM federated.t1;
|
||||||
|
|
||||||
|
|
||||||
|
--error 1430
|
||||||
|
UPDATE federated.t1 SET name='baz' WHERE id = 1;
|
||||||
|
|
||||||
|
SELECT * FROM federated.t1;
|
||||||
|
|
||||||
|
|
||||||
|
# --error 1430
|
||||||
|
# TRUNCATE federated.t1;
|
||||||
|
#
|
||||||
|
# SELECT * from federated.t1;
|
||||||
|
|
||||||
|
DROP TABLE federated.t1;
|
||||||
|
connection slave;
|
||||||
|
DROP TABLE federated.archive_table;
|
||||||
|
|
||||||
|
|
||||||
|
source include/federated_cleanup.inc;
|
||||||
|
|
@ -1960,6 +1960,8 @@ int ha_federated::delete_row(const byte *buf)
|
|||||||
{
|
{
|
||||||
int error_code= ER_QUERY_ON_FOREIGN_DATA_SOURCE;
|
int error_code= ER_QUERY_ON_FOREIGN_DATA_SOURCE;
|
||||||
char error_buffer[FEDERATED_QUERY_BUFFER_SIZE];
|
char error_buffer[FEDERATED_QUERY_BUFFER_SIZE];
|
||||||
|
my_sprintf(error_buffer, (error_buffer, ": %d : %s",
|
||||||
|
mysql_errno(mysql), mysql_error(mysql)));
|
||||||
my_error(error_code, MYF(0), error_buffer);
|
my_error(error_code, MYF(0), error_buffer);
|
||||||
DBUG_RETURN(error_code);
|
DBUG_RETURN(error_code);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user