Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
185 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
drop table if exists t1,t2; | ||
CREATE TABLE t1(id1 INT,val1 VARCHAR(1)); | ||
CREATE TABLE t2(id2 INT,val2 VARCHAR(1)); | ||
#Simple insert statement | ||
INSERT INTO t1 (id1,val1) VALUES (1,'a'),(1,'b'),(1,'c'),(2,'d'),(3,'e'),(4,'f'),(5,'g'),(6,'h'),(7,'h'); | ||
SELECT * FROM t1; | ||
id1 val1 | ||
1 a | ||
1 b | ||
1 c | ||
2 d | ||
3 e | ||
4 f | ||
5 g | ||
6 h | ||
7 h | ||
#Simple insert statement | ||
INSERT INTO t2(id2,val2) VALUES(1,'a') RETURNING id2,(SELECT id1 FROM t1 WHERE val1='b'); | ||
id2 (SELECT id1 FROM t1 WHERE val1='b') | ||
1 1 | ||
INSERT INTO t2(id2,val2) VALUES(2,'b') RETURNING id2,UPPER(val2); | ||
id2 UPPER(val2) | ||
2 B | ||
INSERT INTO t2(id2,val2) VALUES (2,'b') RETURNING (SELECT GROUP_CONCAT(val1) FROM t1 WHERE id1=1); | ||
(SELECT GROUP_CONCAT(val1) FROM t1 WHERE id1=1) | ||
a,b,c | ||
INSERT INTO t2(id2,val2) VALUES(2,'b') RETURNING (SELECT GROUP_CONCAT(val1) FROM t1 GROUP BY id1 HAVING id1=id1+1); | ||
(SELECT GROUP_CONCAT(val1) FROM t1 GROUP BY id1 HAVING id1=id1+1) | ||
NULL | ||
SELECT * FROM t2; | ||
id2 val2 | ||
1 a | ||
2 b | ||
2 b | ||
2 b | ||
TRUNCATE TABLE t2; | ||
SELECT * FROM t2; | ||
id2 val2 | ||
#multiple values in one insert statement | ||
INSERT INTO t2 VALUES (1,'a'),(2,'b') RETURNING id2,(SELECT id1 FROM t1 WHERE val1='b'); | ||
id2 (SELECT id1 FROM t1 WHERE val1='b') | ||
1 1 | ||
2 1 | ||
INSERT INTO t2 VALUES (3,'c'),(4,'d') RETURNING id2,UPPER(val2); | ||
id2 UPPER(val2) | ||
3 C | ||
4 D | ||
INSERT INTO t2 VALUES (5,'e'),(6,'f') RETURNING (SELECT GROUP_CONCAT(val1) FROM t1 WHERE id1=1); | ||
(SELECT GROUP_CONCAT(val1) FROM t1 WHERE id1=1) | ||
a,b,c | ||
a,b,c | ||
INSERT INTO t2 VALUES (7,'g'),(8,'h') RETURNING (SELECT GROUP_CONCAT(val1) FROM t1 GROUP BY id1 HAVING id1=id1+1); | ||
(SELECT GROUP_CONCAT(val1) FROM t1 GROUP BY id1 HAVING id1=id1+1) | ||
NULL | ||
NULL | ||
SELECT * FROM t2; | ||
id2 val2 | ||
1 a | ||
2 b | ||
3 c | ||
4 d | ||
5 e | ||
6 f | ||
7 g | ||
8 h | ||
TRUNCATE TABLE t2; | ||
SELECT * FROM t2; | ||
id2 val2 | ||
# INSERT...ON DULPICATE KEY UPDATE | ||
CREATE TABLE ins_duplicate (id INT PRIMARY KEY, val VARCHAR(1)); | ||
INSERT INTO ins_duplicate(id,val) VALUES (1,'a'); | ||
INSERT INTO ins_duplicate VALUES (2,'b') ON DUPLICATE KEY UPDATE val='b' RETURNING id,(SELECT id1 FROM t1 WHERE val1='b'); | ||
id (SELECT id1 FROM t1 WHERE val1='b') | ||
2 1 | ||
INSERT INTO ins_duplicate VALUES (2,'b') ON DUPLICATE KEY UPDATE val='c' RETURNING id,UPPER(val); | ||
id UPPER(val) | ||
2 B | ||
INSERT INTO ins_duplicate VALUES (2,'b') ON DUPLICATE KEY UPDATE val='d' RETURNING (SELECT GROUP_CONCAT(val1) FROM t1 WHERE id1=1); | ||
(SELECT GROUP_CONCAT(val1) FROM t1 WHERE id1=1) | ||
a,b,c | ||
INSERT INTO ins_duplicate VALUES (2,'b') ON DUPLICATE KEY UPDATE val='e' RETURNING (SELECT GROUP_CONCAT(val1) FROM t1 GROUP BY id1 HAVING id1=id1+1); | ||
(SELECT GROUP_CONCAT(val1) FROM t1 GROUP BY id1 HAVING id1=id1+1) | ||
NULL | ||
SELECT * FROM ins_duplicate; | ||
id val | ||
1 a | ||
2 e | ||
# INSERT...SET | ||
INSERT INTO t2 SET id2=1, val2='a' RETURNING id2,(SELECT id1 FROM t1 WHERE val1='b'); | ||
id2 (SELECT id1 FROM t1 WHERE val1='b') | ||
1 1 | ||
INSERT INTO t2 SET id2=2, val2='b' RETURNING id2,UPPER(val2); | ||
id2 UPPER(val2) | ||
2 B | ||
INSERT INTO t2 SET id2=3, val2='c' RETURNING (SELECT GROUP_CONCAT(val1) FROM t1 WHERE id1=1); | ||
(SELECT GROUP_CONCAT(val1) FROM t1 WHERE id1=1) | ||
a,b,c | ||
INSERT INTO t2 SET id2=4, val2='d' RETURNING (SELECT GROUP_CONCAT(val1) FROM t1 GROUP BY id1 HAVING id1=id1+1); | ||
(SELECT GROUP_CONCAT(val1) FROM t1 GROUP BY id1 HAVING id1=id1+1) | ||
NULL | ||
SELECT * FROM t2; | ||
id2 val2 | ||
1 a | ||
2 b | ||
3 c | ||
4 d | ||
TRUNCATE TABLE t2; | ||
SELECT * FROM t2; | ||
id2 val2 | ||
Droping t1 and ins_duplicate | ||
DROP TABLE t1; | ||
DROP TABLE ins_duplicate; | ||
DROP TABLE t2; | ||
#End of test case |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
# | ||
# Test for INSERT...RETURNING with subqueries | ||
# | ||
|
||
--disable_warnings | ||
drop table if exists t1,t2; | ||
--enable_warnings | ||
|
||
CREATE TABLE t1(id1 INT,val1 VARCHAR(1)); | ||
CREATE TABLE t2(id2 INT,val2 VARCHAR(1)); | ||
|
||
--echo #Simple insert statement | ||
INSERT INTO t1 (id1,val1) VALUES (1,'a'),(1,'b'),(1,'c'),(2,'d'),(3,'e'),(4,'f'),(5,'g'),(6,'h'),(7,'h'); | ||
SELECT * FROM t1; | ||
|
||
# | ||
#Simple insert statement | ||
# | ||
--echo #Simple insert statement | ||
INSERT INTO t2(id2,val2) VALUES(1,'a') RETURNING id2,(SELECT id1 FROM t1 WHERE val1='b'); | ||
INSERT INTO t2(id2,val2) VALUES(2,'b') RETURNING id2,UPPER(val2); | ||
INSERT INTO t2(id2,val2) VALUES (2,'b') RETURNING (SELECT GROUP_CONCAT(val1) FROM t1 WHERE id1=1); | ||
INSERT INTO t2(id2,val2) VALUES(2,'b') RETURNING (SELECT GROUP_CONCAT(val1) FROM t1 GROUP BY id1 HAVING id1=id1+1); | ||
SELECT * FROM t2; | ||
TRUNCATE TABLE t2; | ||
SELECT * FROM t2; | ||
|
||
# | ||
#multiple values in one insert statement | ||
# | ||
--echo #multiple values in one insert statement | ||
INSERT INTO t2 VALUES (1,'a'),(2,'b') RETURNING id2,(SELECT id1 FROM t1 WHERE val1='b'); | ||
INSERT INTO t2 VALUES (3,'c'),(4,'d') RETURNING id2,UPPER(val2); | ||
INSERT INTO t2 VALUES (5,'e'),(6,'f') RETURNING (SELECT GROUP_CONCAT(val1) FROM t1 WHERE id1=1); | ||
INSERT INTO t2 VALUES (7,'g'),(8,'h') RETURNING (SELECT GROUP_CONCAT(val1) FROM t1 GROUP BY id1 HAVING id1=id1+1); | ||
SELECT * FROM t2; | ||
TRUNCATE TABLE t2; | ||
SELECT * FROM t2; | ||
|
||
# | ||
#INSERT...ON DULPICATE KEY UPDATE | ||
# | ||
--echo # INSERT...ON DULPICATE KEY UPDATE | ||
CREATE TABLE ins_duplicate (id INT PRIMARY KEY, val VARCHAR(1)); | ||
INSERT INTO ins_duplicate(id,val) VALUES (1,'a'); | ||
INSERT INTO ins_duplicate VALUES (2,'b') ON DUPLICATE KEY UPDATE val='b' RETURNING id,(SELECT id1 FROM t1 WHERE val1='b'); | ||
INSERT INTO ins_duplicate VALUES (2,'b') ON DUPLICATE KEY UPDATE val='c' RETURNING id,UPPER(val); | ||
INSERT INTO ins_duplicate VALUES (2,'b') ON DUPLICATE KEY UPDATE val='d' RETURNING (SELECT GROUP_CONCAT(val1) FROM t1 WHERE id1=1); | ||
INSERT INTO ins_duplicate VALUES (2,'b') ON DUPLICATE KEY UPDATE val='e' RETURNING (SELECT GROUP_CONCAT(val1) FROM t1 GROUP BY id1 HAVING id1=id1+1); | ||
SELECT * FROM ins_duplicate; | ||
|
||
# | ||
# INSERT...SET | ||
# | ||
--echo # INSERT...SET | ||
INSERT INTO t2 SET id2=1, val2='a' RETURNING id2,(SELECT id1 FROM t1 WHERE val1='b'); | ||
INSERT INTO t2 SET id2=2, val2='b' RETURNING id2,UPPER(val2); | ||
INSERT INTO t2 SET id2=3, val2='c' RETURNING (SELECT GROUP_CONCAT(val1) FROM t1 WHERE id1=1); | ||
INSERT INTO t2 SET id2=4, val2='d' RETURNING (SELECT GROUP_CONCAT(val1) FROM t1 GROUP BY id1 HAVING id1=id1+1); | ||
SELECT * FROM t2; | ||
TRUNCATE TABLE t2; | ||
SELECT * FROM t2; | ||
|
||
--echo Droping t1 and ins_duplicate | ||
DROP TABLE t1; | ||
DROP TABLE ins_duplicate; | ||
DROP TABLE t2; | ||
|
||
# | ||
--echo #End of test case | ||
# |