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

65 lines
2.3 KiB
Plaintext

--echo #
--echo # Test of rewrites of insert statements.
--echo #
--source suite/query_rewrite_plugins/include/have_plugin_rewriter.inc
use test;
CREATE TABLE t1 ( a INT, b INT , c INT, PRIMARY KEY(a));
CREATE TABLE t2 ( c INT, d INT );
INSERT INTO t1 (a, b) VALUES (1, 2), (3, 4), (4, 5);
INSERT INTO t2 VALUES (10, 20);
--source suite/query_rewrite_plugins/include/install_rewriter.inc
INSERT INTO query_rewrite.rewrite_rules ( pattern, replacement )
VALUES ( 'INSERT INTO test.t1 ( a, b ) VALUES ( ?, ? )
ON DUPLICATE KEY UPDATE c = ?, a = ?',
'INSERT INTO test.t1 ( b, a ) VALUES ( ?, ? )
ON DUPLICATE KEY UPDATE c = ?, a = 25' ),
( 'INSERT INTO test.t1 ( a, b ) SELECT c, d FROM test.t2 WHERE c IN (?, ?)',
'INSERT INTO test.t1 ( a, b ) VALUES ( ?, ? )' ),
( 'REPLACE INTO test.t1 ( a, b ) SELECT c, d FROM test.t2 WHERE c IN (?, ?)',
'REPLACE INTO test.t1 ( a, b ) VALUES ( ?, ? )' ),
('INSERT INTO test.t1 ( a, b ) SELECT c + 2222, 2 FROM test.t2',
'INSERT /*+ QB_NAME(hi) */ INTO test.t1 ( a, b )
SELECT c + 2222, 2 FROM test.t2'),
('INSERT INTO test.t1(a, c) VALUES(?, ?), (?, ?)',
'INSERT INTO test.t1(a, b) VALUES(?, ?), (?, ?)'),
('REPLACE INTO test.t1(a, c) VALUES(?, ?)',
'REPLACE INTO test.t1(a, c) VALUES(?, 2)'),
('INSERT INTO test.t1 ( a, b ) SELECT ?, ? FROM test.t2',
'INSERT INTO test.t1 ( a, c ) SELECT ?, ? FROM test.t2');
CALL query_rewrite.flush_rewrite_rules();
SELECT * FROM query_rewrite.rewrite_rules;
INSERT INTO test.t1 ( a, b ) VALUES ( 2, 1 )
ON DUPLICATE KEY UPDATE c = 5, a = 5;
SELECT * FROM t1;
INSERT INTO test.t1 ( a, b ) SELECT c, d FROM test.t2 WHERE c IN (11, 31);
SELECT * FROM t1;
INSERT INTO test.t1( a, b ) SELECT c + 2222, 2 FROM test.t2;
SELECT * FROM t1;
REPLACE INTO test.t1 ( a, b ) SELECT c, d FROM test.t2 WHERE c IN (100, 300);
SELECT * FROM t1;
#tests the values part of accept_insert
INSERT INTO test.t1(a, c) VALUES(1001, 200), (1000, 2000);
REPLACE INTO test.t1(a, c) VALUES(1002, 200);
SELECT * FROM t1;
#This is re-written
INSERT INTO test.t1 ( a, b ) SELECT 22, 3 FROM test.t2;
#This is not re-written
INSERT INTO test.t1 ( a, b ) SELECT c, d FROM test.t2;
SELECT * FROM t1;
DROP TABLE t1, t2;
--source suite/query_rewrite_plugins/include/uninstall_rewriter.inc