Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions mysql-test/main/delete_returning.result
Original file line number Diff line number Diff line change
Expand Up @@ -227,3 +227,22 @@ show status like "Rows_sent";
Variable_name Value
Rows_sent 3
drop table t1;
#
# MDEV-39563 Implement UPDATE ... RETURNING ... INTO
#
DELETE FROM t1 RETURNING a INTO @a;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
ANALYZE DELETE FROM t1 RETURNING a INTO @a;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
EXPLAIN DELETE FROM t1 RETURNING a INTO @a;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (10);
DELETE FROM t1 RETURNING a INTO @a;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
ANALYZE DELETE FROM t1 RETURNING a INTO @a;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
EXPLAIN DELETE FROM t1 RETURNING a INTO @a;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
DROP TABLE t1;
# End of 13.1 tests
29 changes: 29 additions & 0 deletions mysql-test/main/delete_returning.test
Original file line number Diff line number Diff line change
Expand Up @@ -183,3 +183,32 @@ flush status;
delete from t1 where a between 1 and 3 returning a,b;
show status like "Rows_sent";
drop table t1;

--echo #
--echo # MDEV-39563 Implement UPDATE ... RETURNING ... INTO
--echo #

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
DELETE FROM t1 RETURNING a INTO @a;

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
ANALYZE DELETE FROM t1 RETURNING a INTO @a;

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
EXPLAIN DELETE FROM t1 RETURNING a INTO @a;

CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (10);

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
DELETE FROM t1 RETURNING a INTO @a;

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
ANALYZE DELETE FROM t1 RETURNING a INTO @a;

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
EXPLAIN DELETE FROM t1 RETURNING a INTO @a;

DROP TABLE t1;

--echo # End of 13.1 tests
19 changes: 19 additions & 0 deletions mysql-test/main/insert_returning.result
Original file line number Diff line number Diff line change
Expand Up @@ -705,3 +705,22 @@ show status like "Rows_sent";
Variable_name Value
Rows_sent 6
drop table t1;
#
# MDEV-39563 Implement UPDATE ... RETURNING ... INTO
#
INSERT INTO t1 VALUES (10) RETURNING a INTO @a;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
ANALYZE INSERT INTO t1 VALUES (10) RETURNING a INTO @a;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
EXPLAIN INSERT INTO t1 VALUES (10) RETURNING a INTO @a;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (10);
INSERT INTO t1 VALUES (10) RETURNING a INTO @a;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
ANALYZE INSERT INTO t1 VALUES (10) RETURNING a INTO @a;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
EXPLAIN INSERT INTO t1 VALUES (10) RETURNING a INTO @a;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
DROP TABLE t1;
# End of 13.1 tests
29 changes: 29 additions & 0 deletions mysql-test/main/insert_returning.test
Original file line number Diff line number Diff line change
Expand Up @@ -412,3 +412,32 @@ insert into t1 values (1,2),(2,4) returning a,b;
insert into t1 select seq,seq from seq_10_to_13 returning a,b;
show status like "Rows_sent";
drop table t1;

--echo #
--echo # MDEV-39563 Implement UPDATE ... RETURNING ... INTO
--echo #

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
INSERT INTO t1 VALUES (10) RETURNING a INTO @a;

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
ANALYZE INSERT INTO t1 VALUES (10) RETURNING a INTO @a;

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
EXPLAIN INSERT INTO t1 VALUES (10) RETURNING a INTO @a;

CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (10);

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
INSERT INTO t1 VALUES (10) RETURNING a INTO @a;

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
ANALYZE INSERT INTO t1 VALUES (10) RETURNING a INTO @a;

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
EXPLAIN INSERT INTO t1 VALUES (10) RETURNING a INTO @a;

DROP TABLE t1;

--echo # End of 13.1 tests
19 changes: 19 additions & 0 deletions mysql-test/main/replace_returning.result
Original file line number Diff line number Diff line change
Expand Up @@ -260,3 +260,22 @@ ERROR 21000: Subquery returns more than 1 row
REPLACE INTO t2(id2,val2) SELECT t1.* FROM t1 WHERE id1=2 RETURNING t1.*;
ERROR 42S02: Unknown table 'test.t1'
DROP TABLE t1,t2;
#
# MDEV-39563 Implement UPDATE ... RETURNING ... INTO
#
REPLACE t1 SET a=a+1 RETURNING a INTO @a;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
ANALYZE REPLACE INTO t1 VALUES (a=11, 'b11') RETURNING a,b INTO @a, @b;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
EXPLAIN REPLACE INTO t1 VALUES (a=11, 'b11') RETURNING a,b INTO @a, @b;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (10);
REPLACE t1 SET a=a+1 RETURNING a INTO @a;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
ANALYZE REPLACE INTO t1 VALUES (a=11, 'b11') RETURNING a,b INTO @a, @b;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
EXPLAIN REPLACE INTO t1 VALUES (a=11, 'b11') RETURNING a,b INTO @a, @b;
ERROR HY000: 'RETURNING..INTO' is not allowed in this context
DROP TABLE t1;
# End of 13.1 tests
30 changes: 30 additions & 0 deletions mysql-test/main/replace_returning.test
Original file line number Diff line number Diff line change
Expand Up @@ -190,3 +190,33 @@ REPLACE INTO t2(id2,val2) SELECT t1.* FROM t1 WHERE id1=2 RETURNING t1.*;


DROP TABLE t1,t2;


--echo #
--echo # MDEV-39563 Implement UPDATE ... RETURNING ... INTO
--echo #

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
REPLACE t1 SET a=a+1 RETURNING a INTO @a;

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
ANALYZE REPLACE INTO t1 VALUES (a=11, 'b11') RETURNING a,b INTO @a, @b;

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
EXPLAIN REPLACE INTO t1 VALUES (a=11, 'b11') RETURNING a,b INTO @a, @b;

CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (10);

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
REPLACE t1 SET a=a+1 RETURNING a INTO @a;

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
ANALYZE REPLACE INTO t1 VALUES (a=11, 'b11') RETURNING a,b INTO @a, @b;

--error ER_NOT_ALLOWED_IN_THIS_CONTEXT
EXPLAIN REPLACE INTO t1 VALUES (a=11, 'b11') RETURNING a,b INTO @a, @b;

DROP TABLE t1;

--echo # End of 13.1 tests
140 changes: 140 additions & 0 deletions mysql-test/main/select_into_row.result
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
#
# MDEV-40790 SELECT INTO row_type_of.field crashes the server
#
# Into an explicit ROW variable
CREATE TABLE t1 (a INT,b VARCHAR(10));
INSERT INTO t1 VALUES (10,'b10');
CREATE PROCEDURE p1()
BEGIN
DECLARE r0 ROW (a INT, b VARCHAR(10));
SELECT a,b INTO r0 FROM t1;
SELECT r0.a, r0.b;
END;
$$
CALL p1;
r0.a r0.b
10 b10
DROP PROCEDURE p1;
DROP TABLE t1;
# Into an explicit ROW field variable
CREATE TABLE t1 (a INT,b VARCHAR(10));
INSERT INTO t1 VALUES (10,'b10');
CREATE PROCEDURE p1()
BEGIN
DECLARE r0 ROW (a INT, b VARCHAR(10));
SELECT a,b INTO r0.a,r0.b FROM t1;
SELECT r0.a, r0.b;
END;
$$
CALL p1;
r0.a r0.b
10 b10
DROP PROCEDURE p1;
DROP TABLE t1;
# Into an explicit ROW field variable - non-existing field
CREATE TABLE t1 (a INT,b VARCHAR(10));
INSERT INTO t1 VALUES (10,'b10');
CREATE PROCEDURE p1()
BEGIN
DECLARE r0 ROW (a INT, b VARCHAR(10));
SELECT a,b INTO r0.a,r0.b1_non_existing FROM t1;
END;
$$
ERROR HY000: Row variable 'r0' does not have a field 'b1_non_existing'
DROP TABLE t1;
# Into a `ROW TYPE OF table1` variable
CREATE TABLE t1 (a INT,b VARCHAR(10));
INSERT INTO t1 VALUES (10,'b10');
CREATE PROCEDURE p1()
BEGIN
DECLARE r0 ROW TYPE OF t1;
SELECT a,b INTO r0 FROM t1;
SELECT r0.a, r0.b;
END;
$$
CALL p1;
r0.a r0.b
10 b10
DROP PROCEDURE p1;
DROP TABLE t1;
# Into a `ROW TYPE OF table1` field variable
CREATE TABLE t1 (a INT,b VARCHAR(10));
INSERT INTO t1 VALUES (10,'b10');
CREATE PROCEDURE p1()
BEGIN
DECLARE r0 ROW TYPE OF t1;
SELECT a,b INTO r0.a,r0.b FROM t1;
SELECT r0.a, r0.b;
END;
$$
CALL p1;
r0.a r0.b
10 b10
DROP PROCEDURE p1;
DROP TABLE t1;
# Into a `ROW TYPE OF table1` field variable - non-existing field
CREATE TABLE t1 (a INT,b VARCHAR(10));
INSERT INTO t1 VALUES (10,'b10');
CREATE PROCEDURE p1()
BEGIN
DECLARE r0 ROW TYPE OF t1;
SELECT a,b INTO r0.a,r0.b1_non_existing FROM t1;
END;
$$
CALL p1;
ERROR HY000: Row variable 'r0' does not have a field 'b1_non_existing'
DROP PROCEDURE p1;
DROP TABLE t1;
# Into a `ROW TYPE OF cursor1` variable
CREATE TABLE t1 (a INT,b VARCHAR(10));
INSERT INTO t1 VALUES (10,'b10');
CREATE PROCEDURE p1()
BEGIN
DECLARE c1 CURSOR FOR SELECT * FROM t1;
BEGIN
DECLARE r0 ROW TYPE OF c1;
SELECT a,b INTO r0 FROM t1;
SELECT r0.a, r0.b;
END;
END;
$$
CALL p1;
r0.a r0.b
10 b10
DROP PROCEDURE p1;
DROP TABLE t1;
# Into a `ROW TYPE OF cursor1` field variable
CREATE TABLE t1 (a INT,b VARCHAR(10));
INSERT INTO t1 VALUES (10,'b10');
CREATE PROCEDURE p1()
BEGIN
DECLARE c1 CURSOR FOR SELECT * FROM t1;
BEGIN
DECLARE r0 ROW TYPE OF c1;
SELECT a,b INTO r0.a,r0.b FROM t1;
SELECT r0.a, r0.b;
END;
END;
$$
CALL p1;
r0.a r0.b
10 b10
DROP PROCEDURE p1;
DROP TABLE t1;
# Into a `ROW TYPE OF cursor1` field variable - non-existing field
CREATE TABLE t1 (a INT,b VARCHAR(10));
INSERT INTO t1 VALUES (10,'b10');
CREATE PROCEDURE p1()
BEGIN
DECLARE c1 CURSOR FOR SELECT * FROM t1;
BEGIN
DECLARE r0 ROW TYPE OF c1;
SELECT a,b INTO r0.a,r0.b1_non_existing FROM t1;
END;
END;
$$
CALL p1;
ERROR HY000: Row variable 'r0' does not have a field 'b1_non_existing'
DROP PROCEDURE p1;
DROP TABLE t1;
# End of 12.3 tests
Loading