diff --git a/mysql-test/main/insert_returning_test1.result b/mysql-test/main/insert_returning_test1.result new file mode 100644 index 0000000000000..4c5a5fd556445 --- /dev/null +++ b/mysql-test/main/insert_returning_test1.result @@ -0,0 +1,136 @@ +drop table if exists t1; +CREATE TABLE t1(id1 INT, id2 INT, val VARCHAR(1)); +Table t1 created successfully. Fields: id1 INT, id2 INT, val VARCHAR(1); +#Simple insert statement +INSERT INTO t1 (id1, id2, val) VALUES (1, 2, 'a'); +INSERT INTO t1 (id1, id2, val) VALUES (2, 3, 'b') RETURNING *; +id1 id2 val +2 3 b +INSERT INTO t1 (id1, id2, val) VALUES (3, 4, 'c') RETURNING id1, val; +id1 val +3 c +INSERT INTO t1 (id1, id2, val) VALUES (4, 5, 'd') RETURNING id1 AS id; +id +4 +INSERT INTO t1 (id1, id2, val) VALUES (5, 6, 'e') RETURNING id1+id2 AS total; +total +11 +INSERT INTO t1 (id1, id2, val) VALUES (6, 7, 'f') RETURNING id1 & id2; +id1 & id2 +6 +INSERT INTO t1 (id1, id2, val) VALUES (7, 8, 'g') RETURNING id1 || id2; +id1 || id2 +1 +SELECT * FROM t1; +id1 id2 val +1 2 a +2 3 b +3 4 c +4 5 d +5 6 e +6 7 f +7 8 g +TRUNCATE TABLE t1; +SELECT * FROM t1; +id1 id2 val +#multiple values in one insert statement +INSERT INTO t1 VALUES (1, 2, 'a'),(2, 3, 'b'); +INSERT INTO t1 VALUES (3, 4, 'c'),(4, 5, 'd') RETURNING *; +id1 id2 val +3 4 c +4 5 d +INSERT INTO t1 VALUES (5, 6, 'e'),(6, 7, 'f') RETURNING id2, val; +id2 val +6 e +7 f +INSERT INTO t1 VALUES (7, 8, 'g'),(8, 9, 'h') RETURNING id2 AS id; +id +8 +9 +INSERT INTO t1 VALUES (9, 10, 'i'),(10, 11, 'j') RETURNING id2+id1 as total; +total +19 +21 +INSERT INTO t1 VALUES (11, 12, 'k'),(12, 13, 'l') RETURNING id2 & id1; +id2 & id1 +8 +12 +INSERT INTO t1 VALUES (5, 6, 'e'),(2, 3, 'f') RETURNING id2 || id1; +id2 || id1 +1 +1 +SELECT * FROM t1; +id1 id2 val +1 2 a +2 3 b +3 4 c +4 5 d +5 6 e +6 7 f +7 8 g +8 9 h +9 10 i +10 11 j +11 12 k +12 13 l +5 6 e +2 3 f +TRUNCATE TABLE t1; +# INSERT...ON DULPICATE KEY UPDATE +CREATE TABLE ins_duplicate (id1 INT PRIMARY KEY, id2 INT, val VARCHAR(1)); +INSERT INTO ins_duplicate VALUES (1,2,'a'); +INSERT INTO ins_duplicate VALUES (2,3,'b') ON DUPLICATE KEY UPDATE val='b' RETURNING id1,val; +id1 val +2 b +INSERT INTO ins_duplicate VALUES (2,4,'b') ON DUPLICATE KEY UPDATE val='c' RETURNING *; +id1 id2 val +2 4 b +INSERT INTO ins_duplicate VALUES (2,5,'b') ON DUPLICATE KEY UPDATE val='d' RETURNING id1+id2 AS total; +total +7 +INSERT INTO ins_duplicate VALUES (2,6,'b') ON DUPLICATE KEY UPDATE val='e' RETURNING id1 || id2; +id1 || id2 +1 +INSERT INTO ins_duplicate VALUES (2,7,'b') ON DUPLICATE KEY UPDATE val='f' RETURNING id1 & id2; +id1 & id2 +2 +INSERT INTO ins_duplicate VALUES (2,8,'b') ON DUPLICATE KEY UPDATE val='g' RETURNING id1 AS id; +id +2 +SELECT * FROM ins_duplicate; +id1 id2 val +1 2 a +2 3 g +# INSERT...SET +INSERT INTO t1 SET id1=1, id2=2, val='a'; +INSERT INTO t1 SET id1=2, id2=3, val='b' RETURNING *; +id1 id2 val +2 3 b +INSERT INTO t1 SET id1=3, id2=4, val='c' RETURNING val; +val +c +INSERT INTO t1 SET id1=4, id2=5, val='d' RETURNING id1+id2 AS total; +total +9 +INSERT INTO t1 SET id1=5, id2=6, val='e' RETURNING id1 & id2; +id1 & id2 +4 +INSERT INTO t1 SET id1=6, id2=7, val='f' RETURNING id1 || id2; +id1 || id2 +1 +INSERT INTO t1 SET id1=7, id2=8, val='g' RETURNING val as letter; +letter +g +SELECT * FROM t1; +id1 id2 val +1 2 a +2 3 b +3 4 c +4 5 d +5 6 e +6 7 f +7 8 g +Droping t1 and ins_duplicate +DROP TABLE t1; +DROP TABLE ins_duplicate; +#End of test case diff --git a/mysql-test/main/insert_returning_test1.test b/mysql-test/main/insert_returning_test1.test new file mode 100644 index 0000000000000..7888891b4801a --- /dev/null +++ b/mysql-test/main/insert_returning_test1.test @@ -0,0 +1,73 @@ +# +# Test for INSERT...RETURNING +# + +--disable_warnings +drop table if exists t1; +--enable_warnings + +CREATE TABLE t1(id1 INT, id2 INT, val VARCHAR(1)); +--echo Table t1 created successfully. Fields: id1 INT, id2 INT, val VARCHAR(1); + +# +#Simple insert statement +# +--echo #Simple insert statement +INSERT INTO t1 (id1, id2, val) VALUES (1, 2, 'a'); +INSERT INTO t1 (id1, id2, val) VALUES (2, 3, 'b') RETURNING *; +INSERT INTO t1 (id1, id2, val) VALUES (3, 4, 'c') RETURNING id1, val; +INSERT INTO t1 (id1, id2, val) VALUES (4, 5, 'd') RETURNING id1 AS id; +INSERT INTO t1 (id1, id2, val) VALUES (5, 6, 'e') RETURNING id1+id2 AS total; +INSERT INTO t1 (id1, id2, val) VALUES (6, 7, 'f') RETURNING id1 & id2; +INSERT INTO t1 (id1, id2, val) VALUES (7, 8, 'g') RETURNING id1 || id2; +SELECT * FROM t1; +TRUNCATE TABLE t1; +SELECT * FROM t1; + +# +#multiple values in one insert statement +# +--echo #multiple values in one insert statement +INSERT INTO t1 VALUES (1, 2, 'a'),(2, 3, 'b'); +INSERT INTO t1 VALUES (3, 4, 'c'),(4, 5, 'd') RETURNING *; +INSERT INTO t1 VALUES (5, 6, 'e'),(6, 7, 'f') RETURNING id2, val; +INSERT INTO t1 VALUES (7, 8, 'g'),(8, 9, 'h') RETURNING id2 AS id; +INSERT INTO t1 VALUES (9, 10, 'i'),(10, 11, 'j') RETURNING id2+id1 as total; +INSERT INTO t1 VALUES (11, 12, 'k'),(12, 13, 'l') RETURNING id2 & id1; +INSERT INTO t1 VALUES (5, 6, 'e'),(2, 3, 'f') RETURNING id2 || id1; +SELECT * FROM t1; +TRUNCATE TABLE t1; +# +#INSERT...ON DULPICATE KEY UPDATE +# +--echo # INSERT...ON DULPICATE KEY UPDATE +CREATE TABLE ins_duplicate (id1 INT PRIMARY KEY, id2 INT, val VARCHAR(1)); +INSERT INTO ins_duplicate VALUES (1,2,'a'); +INSERT INTO ins_duplicate VALUES (2,3,'b') ON DUPLICATE KEY UPDATE val='b' RETURNING id1,val; +INSERT INTO ins_duplicate VALUES (2,4,'b') ON DUPLICATE KEY UPDATE val='c' RETURNING *; +INSERT INTO ins_duplicate VALUES (2,5,'b') ON DUPLICATE KEY UPDATE val='d' RETURNING id1+id2 AS total; +INSERT INTO ins_duplicate VALUES (2,6,'b') ON DUPLICATE KEY UPDATE val='e' RETURNING id1 || id2; +INSERT INTO ins_duplicate VALUES (2,7,'b') ON DUPLICATE KEY UPDATE val='f' RETURNING id1 & id2; +INSERT INTO ins_duplicate VALUES (2,8,'b') ON DUPLICATE KEY UPDATE val='g' RETURNING id1 AS id; +SELECT * FROM ins_duplicate; +# +# INSERT...SET +# + +--echo # INSERT...SET +INSERT INTO t1 SET id1=1, id2=2, val='a'; +INSERT INTO t1 SET id1=2, id2=3, val='b' RETURNING *; +INSERT INTO t1 SET id1=3, id2=4, val='c' RETURNING val; +INSERT INTO t1 SET id1=4, id2=5, val='d' RETURNING id1+id2 AS total; +INSERT INTO t1 SET id1=5, id2=6, val='e' RETURNING id1 & id2; +INSERT INTO t1 SET id1=6, id2=7, val='f' RETURNING id1 || id2; +INSERT INTO t1 SET id1=7, id2=8, val='g' RETURNING val as letter; +SELECT * FROM t1; + +--echo Droping t1 and ins_duplicate +DROP TABLE t1; +DROP TABLE ins_duplicate; + +# +--echo #End of test case +# \ No newline at end of file