mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
d36f578130
can be not replicable. Now CREATE statements for writing in the binlog are created as follows: - the beginning of the statement is re-created; - the rest of the statement is copied from the original query. The problem appears when there is a version-specific comment (produced by mysqldump), started in the re-created part of the statement and closed in the copied part -- there is closing comment-parenthesis, but there is no opening one. The proper fix could be to re-create original statement, but we can not implement it in 5.0. So, for 5.0 the fix is just to cut closing comment-parenthesis. This technique is also used for SHOW CREATE PROCEDURE statement (so we are able to reuse existing code). mysql-test/r/rpl_sp.result: Updated result file. mysql-test/r/rpl_trigger.result: Updated result file. mysql-test/r/rpl_view.result: Updated result file. mysql-test/t/rpl_sp.test: Added test case for BUG#20438. mysql-test/t/rpl_trigger.test: Added test case for BUG#20438. mysql-test/t/rpl_view.test: Added test case for BUG#20438. sql/sp.cc: Trim comments at the end. sql/sp_head.cc: Moved this code to the separate function to be re-used. sql/sql_lex.cc: Added a new function. sql/sql_lex.h: Added a new function. sql/sql_trigger.cc: Trim comments at the end. sql/sql_view.cc: Trim comments at the end.
93 lines
2.1 KiB
Text
93 lines
2.1 KiB
Text
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;
|
|
drop table if exists t1,v1;
|
|
drop view if exists t1,v1;
|
|
reset master;
|
|
create table t1 (a int);
|
|
insert into t1 values (1);
|
|
create view v1 as select a from t1;
|
|
insert into v1 values (2);
|
|
select * from v1 order by a;
|
|
a
|
|
1
|
|
2
|
|
select * from v1 order by a;
|
|
a
|
|
1
|
|
2
|
|
update v1 set a=3 where a=1;
|
|
select * from v1 order by a;
|
|
a
|
|
2
|
|
3
|
|
select * from v1 order by a;
|
|
a
|
|
2
|
|
3
|
|
delete from v1 where a=2;
|
|
select * from v1 order by a;
|
|
a
|
|
3
|
|
select * from v1 order by a;
|
|
a
|
|
3
|
|
alter view v1 as select a as b from t1;
|
|
select * from v1 order by 1;
|
|
b
|
|
3
|
|
drop view v1;
|
|
select * from v1 order by a;
|
|
ERROR 42S02: Table 'test.v1' doesn't exist
|
|
drop table t1;
|
|
show binlog events limit 1,100;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
slave-bin.000001 # Query 1 # use `test`; create table t1 (a int)
|
|
slave-bin.000001 # Query 1 # use `test`; insert into t1 values (1)
|
|
slave-bin.000001 # Query 1 # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER VIEW v1 AS select a from t1
|
|
slave-bin.000001 # Query 1 # use `test`; insert into v1 values (2)
|
|
slave-bin.000001 # Query 1 # use `test`; update v1 set a=3 where a=1
|
|
slave-bin.000001 # Query 1 # use `test`; delete from v1 where a=2
|
|
slave-bin.000001 # Query 1 # use `test`; ALTER ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER VIEW v1 AS select a as b from t1
|
|
slave-bin.000001 # Query 1 # use `test`; drop view v1
|
|
slave-bin.000001 # Query 1 # use `test`; drop table t1
|
|
|
|
---> Test for BUG#20438
|
|
|
|
---> Preparing environment...
|
|
---> connection: master
|
|
DROP TABLE IF EXISTS t1;
|
|
DROP VIEW IF EXISTS v1;
|
|
|
|
---> Synchronizing slave with master...
|
|
|
|
---> connection: master
|
|
|
|
---> Creating objects...
|
|
CREATE TABLE t1(c INT);
|
|
/*!50003 CREATE VIEW v1 AS SELECT * FROM t1 */;
|
|
|
|
---> Inserting value...
|
|
INSERT INTO t1 VALUES(1);
|
|
|
|
---> Checking on master...
|
|
SELECT * FROM t1;
|
|
c
|
|
1
|
|
|
|
---> Synchronizing slave with master...
|
|
---> connection: master
|
|
|
|
---> Checking on slave...
|
|
SELECT * FROM t1;
|
|
c
|
|
1
|
|
|
|
---> connection: master
|
|
|
|
---> Cleaning up...
|
|
DROP VIEW v1;
|
|
DROP TABLE t1;
|