80 lines
4.1 KiB
Plaintext
80 lines
4.1 KiB
Plaintext
CREATE TABLE t1 ( c1 INTEGER, c2 INTEGER );
|
|
CREATE TABLE t2 ( c1 INTEGER, c2 INTEGER );
|
|
INSERT INTO t1 VALUES (1, 2), (2, 0), (3, 1), (4, 3), (5, 4), (6, 1), (7, 2);
|
|
INSERT INTO t2 VALUES (1, 1), (3, 3), (4, 0), (6, 3), (9, 1), (8, 10);
|
|
# Query rewrite plugin was installed.
|
|
SET sql_mode = 'PIPES_AS_CONCAT';
|
|
INSERT INTO query_rewrite.rewrite_rules( pattern, replacement )
|
|
VALUES ( 'SELECT * FROM test.t1 JOIN test.t2 ON ' ||
|
|
'( test.t1.c1 = test.t2.c1 AND test.t1.c2 > ? )',
|
|
'SELECT * FROM test.t1 JOIN test.t2 ON ' ||
|
|
'( test.t1.c1 = test.t2.c1 AND test.t2.c2 > ? )' ),
|
|
( 'SELECT * FROM ( SELECT * FROM test.t2 WHERE c1=? ) b',
|
|
'SELECT * FROM test.t1 WHERE c1=?' ),
|
|
( 'SELECT ( SELECT c1 FROM test.t2 WHERE c2=? ) c1',
|
|
'SELECT c1, c2 FROM test.t1 WHERE c2=?' ),
|
|
( 'SELECT * FROM test.t1 ' ||
|
|
'JOIN ( SELECT * FROM test.t2 WHERE c1 > ? ) a ' ||
|
|
'ON ( test.t1.c1 = test.t2.c1 AND test.t1.c2 <> ? )',
|
|
'SELECT * FROM test.t1 JOIN test.t2 ' ||
|
|
'ON ( test.t1.c1 = test.t2.c1 AND test.t2.c1 > ? AND test.t1.c2 <> ? )'),
|
|
( 'WITH qn AS ( SELECT c1 FROM test.t2 WHERE c2 = ? ) SELECT c1 FROM qn',
|
|
'SELECT c1, c2+1 FROM test.t1 WHERE c2=?' ),
|
|
( 'WITH qn AS ( SELECT c1 FROM test.t2 WHERE c2 = ? ) SELECT * FROM qn, qn AS qn1',
|
|
'WITH qn(a,b) AS ( SELECT c1,c2+1 FROM test.t1 WHERE c2 = ? ) SELECT * FROM qn, qn AS qn1'
|
|
);
|
|
CALL query_rewrite.flush_rewrite_rules();
|
|
SELECT * FROM query_rewrite.rewrite_rules;
|
|
id pattern pattern_database replacement enabled message
|
|
1 SELECT * FROM test.t1 JOIN test.t2 ON ( test.t1.c1 = test.t2.c1 AND test.t1.c2 > ? ) NULL SELECT * FROM test.t1 JOIN test.t2 ON ( test.t1.c1 = test.t2.c1 AND test.t2.c2 > ? ) YES NULL
|
|
2 SELECT * FROM ( SELECT * FROM test.t2 WHERE c1=? ) b NULL SELECT * FROM test.t1 WHERE c1=? YES NULL
|
|
3 SELECT ( SELECT c1 FROM test.t2 WHERE c2=? ) c1 NULL SELECT c1, c2 FROM test.t1 WHERE c2=? YES NULL
|
|
4 SELECT * FROM test.t1 JOIN ( SELECT * FROM test.t2 WHERE c1 > ? ) a ON ( test.t1.c1 = test.t2.c1 AND test.t1.c2 <> ? ) NULL SELECT * FROM test.t1 JOIN test.t2 ON ( test.t1.c1 = test.t2.c1 AND test.t2.c1 > ? AND test.t1.c2 <> ? ) YES NULL
|
|
5 WITH qn AS ( SELECT c1 FROM test.t2 WHERE c2 = ? ) SELECT c1 FROM qn NULL SELECT c1, c2+1 FROM test.t1 WHERE c2=? YES NULL
|
|
6 WITH qn AS ( SELECT c1 FROM test.t2 WHERE c2 = ? ) SELECT * FROM qn, qn AS qn1 NULL WITH qn(a,b) AS ( SELECT c1,c2+1 FROM test.t1 WHERE c2 = ? ) SELECT * FROM qn, qn AS qn1 YES NULL
|
|
SELECT * FROM t1 JOIN t2 ON ( t1.c1 = t2.c1 AND t2.c2 > 2 );
|
|
c1 c2 c1 c2
|
|
3 1 3 3
|
|
6 1 6 3
|
|
SELECT * FROM ( SELECT * FROM test.t2 WHERE c1 = 3 ) b;
|
|
c1 c2
|
|
3 1
|
|
Warnings:
|
|
Note 1105 Query 'SELECT * FROM ( SELECT * FROM test.t2 WHERE c1 = 3 ) b' rewritten to 'SELECT * FROM test.t1 WHERE c1=3' by a query rewrite plugin
|
|
SELECT ( SELECT c1 FROM test.t2 WHERE c2 = 1 ) c1;
|
|
c1 c2
|
|
3 1
|
|
6 1
|
|
Warnings:
|
|
Note 1105 Query 'SELECT ( SELECT c1 FROM test.t2 WHERE c2 = 1 ) c1' rewritten to 'SELECT c1, c2 FROM test.t1 WHERE c2=1' by a query rewrite plugin
|
|
SELECT *
|
|
FROM test.t1 JOIN ( SELECT * FROM test.t2 WHERE c1 > 1 ) a
|
|
ON ( test.t1.c1 = test.t2.c1 AND test.t1.c2 <> 3 );
|
|
c1 c2 c1 c2
|
|
3 1 3 3
|
|
6 1 6 3
|
|
Warnings:
|
|
Note 1105 Query 'SELECT *
|
|
FROM test.t1 JOIN ( SELECT * FROM test.t2 WHERE c1 > 1 ) a
|
|
ON ( test.t1.c1 = test.t2.c1 AND test.t1.c2 <> 3 )' rewritten to 'SELECT * FROM test.t1 JOIN test.t2 ON ( test.t1.c1 = test.t2.c1 AND test.t2.c1 > 1 AND test.t1.c2 <> 3 )' by a query rewrite plugin
|
|
WITH qn AS ( SELECT c1 FROM test.t2 WHERE c2 = 1 ) SELECT c1 FROM qn;
|
|
c1 c2+1
|
|
3 2
|
|
6 2
|
|
Warnings:
|
|
Note 1105 Query 'WITH qn AS ( SELECT c1 FROM test.t2 WHERE c2 = 1 ) SELECT c1 FROM qn' rewritten to 'SELECT c1, c2+1 FROM test.t1 WHERE c2=1' by a query rewrite plugin
|
|
WITH qn AS ( SELECT c1 FROM test.t2 WHERE c2 = 1 ) SELECT * FROM qn, qn AS qn1;
|
|
a b a b
|
|
3 2 3 2
|
|
3 2 6 2
|
|
6 2 3 2
|
|
6 2 6 2
|
|
Note 1105 Query 'WITH qn AS ( SELECT c1 FROM test.t2 WHERE c2 = 1 ) SELECT * FROM qn, qn AS qn1' rewritten to 'WITH qn(a,b) AS ( SELECT c1,c2+1 FROM test.t1 WHERE c2 = 1 ) SELECT * FROM qn, qn AS qn1' by a query rewrite plugin
|
|
Warnings:
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
SET sql_mode = DEFAULT;
|
|
Warnings:
|
|
Warning 1620 Plugin is busy and will be uninstalled on shutdown
|
|
# Query rewrite plugin was queued for uninstalling.
|