--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