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