mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-7287 VIEW: CREATE IF NOT EXISTS
This commit is contained in:
59
mysql-test/r/create_drop_view.result
Normal file
59
mysql-test/r/create_drop_view.result
Normal file
@@ -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;
|
99
mysql-test/suite/rpl/r/rpl_create_drop_view.result
Normal file
99
mysql-test/suite/rpl/r/rpl_create_drop_view.result
Normal file
@@ -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
|
55
mysql-test/suite/rpl/t/rpl_create_drop_view.test
Normal file
55
mysql-test/suite/rpl/t/rpl_create_drop_view.test
Normal file
@@ -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
|
27
mysql-test/t/create_drop_view.test
Normal file
27
mysql-test/t/create_drop_view.test
Normal file
@@ -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;
|
Reference in New Issue
Block a user