52 lines
2.3 KiB
Plaintext
52 lines
2.3 KiB
Plaintext
#
|
|
# Test of rewrites of update statements.
|
|
#
|
|
use test;
|
|
CREATE TABLE t1 (a INT NOT NULL, b int, PRIMARY KEY (a));
|
|
CREATE TABLE t2 (a int);
|
|
INSERT INTO t1 VALUES (1, 10), (2, 20), (3, 30);
|
|
INSERT INTO t2 SELECT a FROM t1;
|
|
# Query rewrite plugin was installed.
|
|
INSERT INTO query_rewrite.rewrite_rules ( pattern, pattern_database, replacement )
|
|
VALUES ( 'UPDATE test.t1 SET a = ? WHERE b = ? ORDER BY ? LIMIT ?', 'test',
|
|
'UPDATE test.t1 SET b = ? WHERE b = ? ORDER BY a LIMIT 4'),
|
|
( 'UPDATE test.t1, test.t2 SET t1.a = ?, t2.a = ? WHERE t1.b = ?', 'test',
|
|
'UPDATE test.t1, test.t2 SET t1.a = ?, t1.b = ? WHERE t1.a = ?' ),
|
|
('UPDATE t1 LEFT JOIN t2 ON t1.a = ? SET t1.b = 20 WHERE t1.b > 25', 'test',
|
|
'UPDATE t1 LEFT JOIN t2 ON t2.a = ? SET t1.b = 20 WHERE t1.b > 25') ;
|
|
CALL query_rewrite.flush_rewrite_rules();
|
|
SELECT * FROM query_rewrite.rewrite_rules;
|
|
id pattern pattern_database replacement enabled message
|
|
1 UPDATE test.t1 SET a = ? WHERE b = ? ORDER BY ? LIMIT ? test UPDATE test.t1 SET b = ? WHERE b = ? ORDER BY a LIMIT 4 YES NULL
|
|
2 UPDATE test.t1, test.t2 SET t1.a = ?, t2.a = ? WHERE t1.b = ? test UPDATE test.t1, test.t2 SET t1.a = ?, t1.b = ? WHERE t1.a = ? YES NULL
|
|
3 UPDATE t1 LEFT JOIN t2 ON t1.a = ? SET t1.b = 20 WHERE t1.b > 25 test UPDATE t1 LEFT JOIN t2 ON t2.a = ? SET t1.b = 20 WHERE t1.b > 25 YES NULL
|
|
UPDATE test.t1 SET a = 0 WHERE b = 2 ORDER BY 3 LIMIT 2;
|
|
Warnings:
|
|
Note 1105 Query 'UPDATE test.t1 SET a = 0 WHERE b = 2 ORDER BY 3 LIMIT 2' rewritten to 'UPDATE test.t1 SET b = 0 WHERE b = 2 ORDER BY a LIMIT 4' by a query rewrite plugin
|
|
UPDATE test.t1 SET a = 0 WHERE b = 2 ORDER BY a LIMIT 2;
|
|
SELECT * FROM t1;
|
|
a b
|
|
1 10
|
|
2 20
|
|
3 30
|
|
UPDATE test.t1, test.t2 SET t1.a = 2, t2.a = 25 WHERE t1.b = 21;
|
|
Warnings:
|
|
Note 1105 Query 'UPDATE test.t1, test.t2 SET t1.a = 2, t2.a = 25 WHERE t1.b = 21' rewritten to 'UPDATE test.t1, test.t2 SET t1.a = 2, t1.b = 25 WHERE t1.a = 21' by a query rewrite plugin
|
|
SELECT * FROM t1;
|
|
a b
|
|
1 10
|
|
2 20
|
|
3 30
|
|
SELECT * FROM t2;
|
|
a
|
|
1
|
|
2
|
|
3
|
|
UPDATE t1 LEFT JOIN t2 ON t1.a = 25 SET t1.b = 20 WHERE t1.b > 25;
|
|
Warnings:
|
|
Note 1105 Query 'UPDATE t1 LEFT JOIN t2 ON t1.a = 25 SET t1.b = 20 WHERE t1.b > 25' rewritten to 'UPDATE t1 LEFT JOIN t2 ON t2.a = 25 SET t1.b = 20 WHERE t1.b > 25' by a query rewrite plugin
|
|
DROP TABLE t1, t2;
|
|
Warnings:
|
|
Warning 1620 Plugin is busy and will be uninstalled on shutdown
|
|
# Query rewrite plugin was queued for uninstalling.
|