1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
--source suite/query_rewrite_plugins/include/have_plugin_rewriter.inc
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);
--source suite/query_rewrite_plugins/include/install_rewriter.inc
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;
SELECT * FROM t1 JOIN t2 ON ( t1.c1 = t2.c1 AND t2.c2 > 2 );
SELECT * FROM ( SELECT * FROM test.t2 WHERE c1 = 3 ) b;
SELECT ( SELECT c1 FROM test.t2 WHERE c2 = 1 ) c1;
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 );
WITH qn AS ( SELECT c1 FROM test.t2 WHERE c2 = 1 ) SELECT c1 FROM qn;
--sorted_result
WITH qn AS ( SELECT c1 FROM test.t2 WHERE c2 = 1 ) SELECT * FROM qn, qn AS qn1;
DROP TABLE t1;
DROP TABLE t2;
SET sql_mode = DEFAULT;
--source suite/query_rewrite_plugins/include/uninstall_rewriter.inc
|