1
0
mirror of https://github.com/MariaDB/server.git synced 2025-09-02 09:41:40 +03:00
Files
mariadb/mysql-test/main/replace_returning.result
2019-10-14 10:29:31 +02:00

155 lines
4.1 KiB
Plaintext

# Test for REPLACE...RETURNING
CREATE TABLE t1(id1 INT PRIMARY KEY, val1 VARCHAR(1));
CREATE TABLE t2(id2 INT PRIMARY KEY, val2 VARCHAR(1));
INSERT INTO t2 VALUES (1,'a'),(2,'b'),(3,'c');
CREATE FUNCTION f(arg INT) RETURNS INT
BEGIN
RETURN (SELECT arg+arg);
END|
#
# Simple replace statement...RETURNING
#
REPLACE INTO t1 (id1, val1) VALUES (1, 'a');
REPLACE INTO t1 (id1, val1) VALUES (1, 'b') RETURNING *;
id1 val1
1 b
REPLACE INTO t1 (id1, val1) VALUES (1, 'c') RETURNING id1+id1 AS total,
id1&&id1, id1|id1,UPPER(val1),f(id1);
total id1&&id1 id1|id1 UPPER(val1) f(id1)
2 1 1 C 2
REPLACE INTO t1(id1,val1) VALUES (1,'d') RETURNING (SELECT GROUP_CONCAT(val2)
FROM t2 WHERE id2=1);
(SELECT GROUP_CONCAT(val2)
FROM t2 WHERE id2=1)
a
REPLACE INTO t1(id1,val1) VALUES(1,'e') RETURNING (SELECT GROUP_CONCAT(val2)
FROM t2 GROUP BY id2 HAVING id2=id2+1);
(SELECT GROUP_CONCAT(val2)
FROM t2 GROUP BY id2 HAVING id2=id2+1)
NULL
PREPARE stmt FROM "REPLACE INTO t1 (id1,val1) VALUES (1,'f') RETURNING
id1,(SELECT id2 FROM t2 WHERE val2='b')";
EXECUTE stmt;
id1 (SELECT id2 FROM t2 WHERE val2='b')
1 2
DEALLOCATE PREPARE stmt;
SELECT * FROM t1;
id1 val1
1 f
TRUNCATE TABLE t1;
#
# Multiple values in one replace statement...RETURNING
#
REPLACE INTO t1 VALUES (1,'a'),(2,'b');
REPLACE INTO t1 VALUES (1,'c'),(2,'d') RETURNING *;
id1 val1
1 c
2 d
REPLACE INTO t1 VALUES (1,'e'),(2,'f') RETURNING id1+id1 AS total,
id1&&id1, id1|id1,UPPER(val1),f(id1);
total id1&&id1 id1|id1 UPPER(val1) f(id1)
2 1 1 E 2
4 1 2 F 4
REPLACE INTO t1 VALUES (1,'o'),(2,'p') RETURNING (SELECT GROUP_CONCAT(val2)
FROM t2 WHERE id2=1);
(SELECT GROUP_CONCAT(val2)
FROM t2 WHERE id2=1)
a
a
REPLACE INTO t1 VALUES (1,'q'),(2,'r') RETURNING (SELECT GROUP_CONCAT(val2)
FROM t2 GROUP BY id2 HAVING id2=id2+1);
(SELECT GROUP_CONCAT(val2)
FROM t2 GROUP BY id2 HAVING id2=id2+1)
NULL
NULL
PREPARE stmt FROM "REPLACE INTO t1 VALUES (1,'s'),(2,'t') RETURNING id1,
(SELECT id2 FROM t2 WHERE val2='b')";
EXECUTE stmt;
id1 (SELECT id2 FROM t2 WHERE val2='b')
1 2
2 2
DEALLOCATE PREPARE stmt;
SELECT * FROM t1;
id1 val1
1 s
2 t
TRUNCATE TABLE t1;
#
# REPLACE...SET...RETURNING
#
REPLACE INTO t1 SET id1=1, val1 = 'a';
REPLACE INTO t1 SET id1=2, val1 = 'b' RETURNING *;
id1 val1
2 b
REPLACE INTO t1 SET id1=3, val1 = 'c' RETURNING id1+id1 AS total,
id1&&id1, id1|id1,UPPER(val1),f(id1);
total id1&&id1 id1|id1 UPPER(val1) f(id1)
6 1 3 C 6
REPLACE INTO t1 SET id1=1, val1 = 'i' RETURNING (SELECT GROUP_CONCAT(val2)
FROM t2 WHERE id2=1);
(SELECT GROUP_CONCAT(val2)
FROM t2 WHERE id2=1)
a
REPLACE INTO t1 SET id1=2, val1='j' RETURNING (SELECT GROUP_CONCAT(val2)
FROM t2 GROUP BY id2 HAVING id2=id2+1);
(SELECT GROUP_CONCAT(val2)
FROM t2 GROUP BY id2 HAVING id2=id2+1)
NULL
PREPARE stmt FROM "REPLACE INTO t1 SET id1=3, val1='k' RETURNING id1,
(SELECT id2 FROM t2 WHERE val2='b')";
EXECUTE stmt;
id1 (SELECT id2 FROM t2 WHERE val2='b')
3 2
DEALLOCATE PREPARE stmt;
SELECT * FROM t1;
id1 val1
1 i
2 j
3 k
#
# REPLACE...SELECT...RETURNING
#
TRUNCATE TABLE t2;
REPLACE INTO t2(id2,val2) SELECT * FROM t1;
REPLACE INTO t2 SELECT * FROM t1 WHERE id1=1 RETURNING *;
id2 val2
1 i
REPLACE INTO t2 SELECT * FROM t1 WHERE id1=2 RETURNING id2+id2 AS total,
id2&&id2, id2|id2,UPPER(val2),f(id2);
total id2&&id2 id2|id2 UPPER(val2) f(id2)
4 1 2 J 4
REPLACE INTO t2 SELECT * FROM t1 WHERE id1=3 RETURNING (SELECT
GROUP_CONCAT(val1) FROM t1 WHERE id1=1);
(SELECT
GROUP_CONCAT(val1) FROM t1 WHERE id1=1)
i
REPLACE INTO t2 SELECT * FROM t1 WHERE id1=1 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
PREPARE stmt FROM "REPLACE INTO t2 SELECT * FROM t1 WHERE id1=2 RETURNING
id2,(SELECT id1 FROM t1 WHERE val1='b')";
EXECUTE stmt;
id2 (SELECT id1 FROM t1 WHERE val1='b')
2 NULL
DEALLOCATE PREPARE stmt;
REPLACE INTO t2 SELECT * FROM t1 WHERE id1=3 RETURNING (SELECT id1+id2
FROM t1 WHERE id1=1);
(SELECT id1+id2
FROM t1 WHERE id1=1)
4
REPLACE INTO t2 SELECT * FROM t1 WHERE id1=1 RETURNING (SELECT id1+id2
FROM t2 WHERE id2=0);
(SELECT id1+id2
FROM t2 WHERE id2=0)
NULL
SELECT * FROM t2;
id2 val2
1 i
2 j
3 k
DROP TABLE t1;
DROP TABLE t2;
DROP FUNCTION f;