diff --git a/mysql-test/r/create_drop_view.result b/mysql-test/r/create_drop_view.result new file mode 100644 index 00000000000..fa54463f51f --- /dev/null +++ b/mysql-test/r/create_drop_view.result @@ -0,0 +1,59 @@ +CREATE TABLE t1(id INT); +CREATE VIEW IF NOT EXISTS v1 AS SELECT * FROM t1 WHERE id>10; +INSERT INTO t1 VALUES (5), (8), (10), (20), (30); +SELECT * FROM t1; +id +5 +8 +10 +20 +30 +SELECT * FROM v1; +id +20 +30 +CREATE VIEW v1 AS SELECT * FROM t1 WHERE id>11; +ERROR 42S01: Table 'v1' already exists +SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME='v1'; +VIEW_DEFINITION +select `test`.`t1`.`id` AS `id` from `test`.`t1` where (`test`.`t1`.`id` > 10) +CREATE VIEW IF NOT EXISTS v1 AS SELECT * FROM t1 WHERE id>12; +Warnings: +Note 1050 Table 'test' already exists +SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME='v1'; +VIEW_DEFINITION +select `test`.`t1`.`id` AS `id` from `test`.`t1` where (`test`.`t1`.`id` > 10) +CREATE OR REPLACE VIEW IF NOT EXISTS v1 AS SELECT * FROM t1 WHERE id>13; +ERROR HY000: Incorrect usage of OR REPLACE and IF NOT EXISTS +SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME='v1'; +VIEW_DEFINITION +select `test`.`t1`.`id` AS `id` from `test`.`t1` where (`test`.`t1`.`id` > 10) +CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1 WHERE id>14; +SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME='v1'; +VIEW_DEFINITION +select `test`.`t1`.`id` AS `id` from `test`.`t1` where (`test`.`t1`.`id` > 14) +INSERT INTO t1 VALUES (50), (80), (3), (2), (40); +SELECT * FROM t1; +id +5 +8 +10 +20 +30 +50 +80 +3 +2 +40 +SELECT * FROM v1; +id +20 +30 +50 +80 +40 +DROP VIEW IF EXISTS v1; +DROP VIEW IF EXISTS v1; +Warnings: +Note 1051 Unknown table 'test.v1' +DROP TABLE t1; diff --git a/mysql-test/suite/rpl/r/rpl_create_drop_view.result b/mysql-test/suite/rpl/r/rpl_create_drop_view.result new file mode 100644 index 00000000000..1fc30c2e89d --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_create_drop_view.result @@ -0,0 +1,99 @@ +include/master-slave.inc +[connection master] +CREATE TABLE t1(id INT); +CREATE VIEW v1 AS SELECT * FROM t1 WHERE id>10; +INSERT INTO t1 VALUES (5), (8), (10), (20), (30); +SELECT * FROM t1; +id +5 +8 +10 +20 +30 +SELECT * FROM v1; +id +20 +30 +# Syncing slave with master +SELECT * FROM t1; +id +5 +8 +10 +20 +30 +SELECT * FROM v1; +id +20 +30 +CREATE VIEW v1 AS SELECT * FROM t1 WHERE id>10; +ERROR 42S01: Table 'v1' already exists +CREATE VIEW IF NOT EXISTS v1 AS SELECT * FROM t1 WHERE id>10; +Warnings: +Note 1050 Table 'test' already exists +CREATE OR REPLACE VIEW IF NOT EXISTS v1 AS SELECT * FROM t1 WHERE id>10; +ERROR HY000: Incorrect usage of OR REPLACE and IF NOT EXISTS +# Syncing slave with master +SELECT * FROM t1; +id +5 +8 +10 +20 +30 +SELECT * FROM v1; +id +20 +30 +CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1 WHERE id>10; +INSERT INTO t1 VALUES (50), (80), (3), (2), (40); +SELECT * FROM t1; +id +5 +8 +10 +20 +30 +50 +80 +3 +2 +40 +SELECT * FROM v1; +id +20 +30 +50 +80 +40 +# Syncing slave with master +SELECT * FROM t1; +id +5 +8 +10 +20 +30 +50 +80 +3 +2 +40 +SELECT * FROM v1; +id +20 +30 +50 +80 +40 +DROP VIEW v1; +DROP TABLE t1; +DROP VIEW v1; +ERROR 42S02: Unknown table 'test.v1' +DROP VIEW IF EXISTS v2; +Warnings: +Note 1051 Unknown table 'test.v2' +# Syncing slave with master +SELECT * FROM v1; +ERROR 42S02: Table 'test.v1' doesn't exist +include/rpl_end.inc diff --git a/mysql-test/suite/rpl/t/rpl_create_drop_view.test b/mysql-test/suite/rpl/t/rpl_create_drop_view.test new file mode 100644 index 00000000000..9280f35f638 --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_create_drop_view.test @@ -0,0 +1,55 @@ +--source include/master-slave.inc + +connection master; +CREATE TABLE t1(id INT); +CREATE VIEW v1 AS SELECT * FROM t1 WHERE id>10; +INSERT INTO t1 VALUES (5), (8), (10), (20), (30); +SELECT * FROM t1; +SELECT * FROM v1; + +--echo # Syncing slave with master +sync_slave_with_master; +SELECT * FROM t1; +SELECT * FROM v1; + +connection master; +--error ER_TABLE_EXISTS_ERROR +CREATE VIEW v1 AS SELECT * FROM t1 WHERE id>10; + +CREATE VIEW IF NOT EXISTS v1 AS SELECT * FROM t1 WHERE id>10; + +--error ER_WRONG_USAGE +CREATE OR REPLACE VIEW IF NOT EXISTS v1 AS SELECT * FROM t1 WHERE id>10; + +--echo # Syncing slave with master +sync_slave_with_master; +SELECT * FROM t1; +SELECT * FROM v1; + +connection master; +CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1 WHERE id>10; +INSERT INTO t1 VALUES (50), (80), (3), (2), (40); +SELECT * FROM t1; +SELECT * FROM v1; + +--echo # Syncing slave with master +sync_slave_with_master; +SELECT * FROM t1; +SELECT * FROM v1; + +connection master; +DROP VIEW v1; +DROP TABLE t1; + +--error ER_BAD_TABLE_ERROR +DROP VIEW v1; + +DROP VIEW IF EXISTS v2; + +--echo # Syncing slave with master +sync_slave_with_master; + +--error ER_NO_SUCH_TABLE +SELECT * FROM v1; + +--source include/rpl_end.inc diff --git a/mysql-test/t/create_drop_view.test b/mysql-test/t/create_drop_view.test new file mode 100644 index 00000000000..5f5df43a7e0 --- /dev/null +++ b/mysql-test/t/create_drop_view.test @@ -0,0 +1,27 @@ +CREATE TABLE t1(id INT); +CREATE VIEW IF NOT EXISTS v1 AS SELECT * FROM t1 WHERE id>10; +INSERT INTO t1 VALUES (5), (8), (10), (20), (30); +SELECT * FROM t1; +SELECT * FROM v1; + +--error ER_TABLE_EXISTS_ERROR +CREATE VIEW v1 AS SELECT * FROM t1 WHERE id>11; +SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME='v1'; + +CREATE VIEW IF NOT EXISTS v1 AS SELECT * FROM t1 WHERE id>12; +SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME='v1'; + +--error ER_WRONG_USAGE +CREATE OR REPLACE VIEW IF NOT EXISTS v1 AS SELECT * FROM t1 WHERE id>13; +SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME='v1'; + +CREATE OR REPLACE VIEW v1 AS SELECT * FROM t1 WHERE id>14; +SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME='v1'; + +INSERT INTO t1 VALUES (50), (80), (3), (2), (40); +SELECT * FROM t1; +SELECT * FROM v1; + +DROP VIEW IF EXISTS v1; +DROP VIEW IF EXISTS v1; +DROP TABLE t1;