polardbxengine/mysql-test/suite/query_rewrite_plugins/t/delete.test

60 lines
1.9 KiB
Plaintext

--echo #
--echo # Test of rewrites of delete statements.
--echo #
--source suite/query_rewrite_plugins/include/have_plugin_rewriter.inc
use test;
CREATE TABLE t1 (
a INT,
b INT )
PARTITION BY LIST(a) (
PARTITION p0 VALUES IN (1, 3),
PARTITION p1 VALUES IN (5, 7)
);
CREATE TABLE t2 ( a INT, b INT );
INSERT INTO t1 VALUES (1, 2), (3, 4), (5, 2), (7, 4);
INSERT INTO t2 VALUES (10, 20), (30, 40), (50, 60);
CREATE VIEW v1 AS SELECT t1.* FROM t1 JOIN t2 ON t1.b=t2.b;
CREATE VIEW v2 AS SELECT b, a FROM t1 WHERE b > 20;
--source suite/query_rewrite_plugins/include/install_rewriter.inc
INSERT INTO query_rewrite.rewrite_rules ( pattern, replacement )
VALUES ( 'DELETE FROM test.t1 PARTITION (p0) WHERE a = ? ORDER BY b LIMIT 2',
'DELETE FROM test.t1 PARTITION (p0) WHERE b = ? ORDER BY b LIMIT 2' ),
( 'DELETE test.t1 FROM test.t1 join test.t2 WHERE test.t1.a = ?',
'DELETE test.t1 FROM test.t1 join test.t2 WHERE test.t1.a IN (?,3,5)' ),
( 'DELETE test.v1 FROM test.v1 join test.t2 WHERE test.v1.a = ?',
'DELETE test.v1 FROM test.v1 join test.t2 WHERE test.v1.a IN (?,3,5)' ),
( 'DELETE test.v2 FROM test.v2 WHERE test.v2.a = ?',
'DELETE test.v2 FROM test.v2 WHERE test.v2.a IN (?,3,5)' ),
( 'DELETE FROM test.v1',
'DELETE FROM test.t2' );
CALL query_rewrite.flush_rewrite_rules();
DELETE FROM test.t1 PARTITION (p0) WHERE a = 4 ORDER BY b LIMIT 2;
SELECT * FROM t1;
DELETE test.t1 FROM test.t1 join test.t2 WHERE test.t1.a = 1;
SELECT * FROM t1;
SELECT * FROM t2;
--error ER_VIEW_DELETE_MERGE_VIEW
DELETE test.v1 FROM test.v1 join test.t2 WHERE test.v1.a = 1;
# Unlike in EXPLAIN, v2 isn't resolved to t1.
DELETE test.v2 FROM test.v2 WHERE test.v2.a = 1;
# Replace view with a table.
DELETE FROM test.v1;
DROP VIEW v1, v2;
DROP TABLE t1, t2;
--source suite/query_rewrite_plugins/include/uninstall_rewriter.inc