# Testing expressions of different kinds in various non-SELECT statements --echo # --echo # Start of 10.3 tests --echo # # # Subselects in non-SELECT statements # CREATE TABLE t1 (id INT, id1 INT); INSERT INTO t1 VALUES (1,7); INSERT INTO t1 VALUES (1,8); SELECT ROW(1,7) IN (SELECT id, id1 FROM t1 WHERE id1= 8); EXECUTE IMMEDIATE 'SELECT ROW(1, 7) IN (SELECT id, id1 FROM t1 WHERE id1= 8)'; DROP TABLE t1; --error ER_SUBQUERIES_NOT_SUPPORTED EXECUTE IMMEDIATE 'SELECT ?' USING (1 IN (SELECT * FROM t1)); --error ER_SUBQUERIES_NOT_SUPPORTED EXECUTE IMMEDIATE 'SELECT ?' USING (SELECT * FROM t1); CREATE TABLE t1 (id INT); INSERT INTO t1 VALUES (10); CREATE PROCEDURE p1(a INT) BEGIN END; CALL p1((1) IN (SELECT * FROM t1)); CALL p1(EXISTS (SELECT * FROM t1)); DROP PROCEDURE p1; DROP TABLE t1; --error ER_PARSE_ERROR SIGNAL SQLSTATE '01000' SET MYSQL_ERRNO=(1 IN (SELECT * FROM t1)); --error ER_PARSE_ERROR SIGNAL SQLSTATE '01000' SET MYSQL_ERRNO=EXISTS (SELECT * FROM t1); DELIMITER $$; --error ER_PARSE_ERROR BEGIN NOT ATOMIC DECLARE CONTINUE HANDLER FOR SQLWARNING RESIGNAL SET MYSQL_ERRNO=(1 IN (SELECT * FROM t1)); SIGNAL SQLSTATE '01000'; END; $$ --error ER_PARSE_ERROR BEGIN NOT ATOMIC DECLARE CONTINUE HANDLER FOR SQLWARNING RESIGNAL SET MYSQL_ERRNO=EXISTS (SELECT * FROM t1); SIGNAL SQLSTATE '01000'; END; $$ DELIMITER ;$$ --error ER_SUBQUERIES_NOT_SUPPORTED PREPARE stmt FROM (1 IN (SELECT * FROM t1)); --error ER_SUBQUERIES_NOT_SUPPORTED PREPARE stmt FROM EXISTS (SELECT * FROM t1); --error ER_SUBQUERIES_NOT_SUPPORTED EXECUTE IMMEDIATE (1 IN (SELECT * FROM t1)); --error ER_SUBQUERIES_NOT_SUPPORTED EXECUTE IMMEDIATE EXISTS (SELECT * FROM t1); --error ER_PARSE_ERROR GET DIAGNOSTICS CONDITION (1 IN (SELECT * FROM t1)) @errno=MYSQL_ERRNO; --error ER_PARSE_ERROR GET DIAGNOSTICS CONDITION EXISTS (SELECT * FROM t1) @errno=MYSQL_ERRNO; --error ER_SUBQUERIES_NOT_SUPPORTED PURGE BINARY LOGS BEFORE (1 IN (SELECT * FROM t1)); --error ER_SUBQUERIES_NOT_SUPPORTED PURGE BINARY LOGS BEFORE EXISTS (SELECT * FROM t1); CREATE TABLE t1 (a INT); INSERT INTO t1 VALUES (1),(2),(3); DO 1 IN (SELECT * FROM t1); DO EXISTS (SELECT * FROM t1); DROP TABLE t1;