mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 21:42:35 +01:00
12d43d55b4
When the same VIEW was created at the master side twice, malformed (truncated after the word 'AS') query string was forwarded to client side, so error messages on the master and client was different, and replication was broken. The mysql_register_view function call failed too early: fields of `view' output argument of this function was not filled yet with correct data required for query replication. The mysql_register_view function also copied pointers to local buffers into a memory allocated by the caller.
115 lines
2.8 KiB
Text
115 lines
2.8 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;
|
|
create table t1(a int, b int);
|
|
insert into t1 values (1, 1), (1, 2), (1, 3);
|
|
create view v1(a, b) as select a, sum(b) from t1 group by a;
|
|
explain v1;
|
|
Field Type Null Key Default Extra
|
|
a int(11) YES NULL
|
|
b decimal(32,0) YES NULL
|
|
show create table v1;
|
|
View Create View
|
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a`,sum(`t1`.`b`) AS `b` from `t1` group by `t1`.`a`
|
|
select * from v1;
|
|
a b
|
|
1 6
|
|
drop table t1;
|
|
drop view v1;
|
|
CREATE TABLE t1(a INT);
|
|
CREATE VIEW v1 AS SELECT * FROM t1;
|
|
CREATE VIEW v1 AS SELECT * FROM t1;
|
|
ERROR 42S01: Table 'v1' already exists
|
|
DROP VIEW v1;
|
|
DROP TABLE t1;
|
|
End of 5.0 tests
|