#
# MDEV-39518 Allow prepared statements in stored functions in assignment right hand
#
# Testing various stack combinations
# p1, f2, p3_direct_immediate
CREATE TABLE t1 (a INT);
CREATE PROCEDURE p3_direct_immediate()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (9)';
INSERT INTO t1 VALUES (10);
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3_direct_immediate(); RETURN0;
END;
$$
CREATE PROCEDURE p1_set()
BEGIN
DECLARE nrows INT; SET nrows= f2();
END;
$$
CREATE PROCEDURE p1_select()
BEGIN
SELECT f2();
END;
$$
CREATE PROCEDURE p1_default()
BEGIN
DECLARE nrows INT DEFAULT f2();
END;
$$
CALL p1_select(); ERROR0A000: Dynamic SQL is not allowed in stored function or trigger
CALL p1_select(); ERROR0A000: Dynamic SQL is not allowed in stored function or trigger
SELECT * FROM t1;
a
TRUNCATE TABLE t1;
CALL p1_set;
SELECT * FROM t1;
a 9 10
CALL p1_set;
SELECT * FROM t1;
a 9 10 9 10
TRUNCATE TABLE t1;
CALL p1_default;
SELECT * FROM t1;
a 9 10
CALL p1_default;
SELECT * FROM t1;
a 9 10 9 10
DROP PROCEDURE p1_default;
DROP PROCEDURE p1_set;
DROP PROCEDURE p1_select;
DROP FUNCTION f2;
DROP PROCEDURE p3_direct_immediate;
DROP TABLE t1;
# p1, f2, p3_immediate_direct
CREATE TABLE t1 (a INT);
CREATE PROCEDURE p3_direct_immediate()
BEGIN
INSERT INTO t1 VALUES (9);
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (10)';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3_direct_immediate(); RETURN0;
END;
$$
CREATE PROCEDURE p1_set()
BEGIN
DECLARE nrows INT; SET nrows= f2();
END;
$$
CREATE PROCEDURE p1_select()
BEGIN
SELECT f2();
END;
$$
CREATE PROCEDURE p1_default()
BEGIN
DECLARE nrows INT DEFAULT f2();
END;
$$
CALL p1_select(); ERROR0A000: Dynamic SQL is not allowed in stored function or trigger
SELECT * FROM t1;
a 9
CALL p1_select(); ERROR0A000: Dynamic SQL is not allowed in stored function or trigger
SELECT * FROM t1;
a 9 9
TRUNCATE TABLE t1;
CALL p1_set;
SELECT * FROM t1;
a 9 10
CALL p1_set;
SELECT * FROM t1;
a 9 10 9 10
TRUNCATE TABLE t1;
CALL p1_default;
SELECT * FROM t1;
a 9 10
CALL p1_default;
SELECT * FROM t1;
a 9 10 9 10
DROP PROCEDURE p1_default;
DROP PROCEDURE p1_set;
DROP PROCEDURE p1_select;
DROP FUNCTION f2;
DROP PROCEDURE p3_direct_immediate;
DROP TABLE t1;
# p1, f2(direct+immediate+direct), p3(direct+immediate+direct)
CREATE TABLE t1 (a INT);
CREATE PROCEDURE p3_direct_immediate_direct(OUT nrows INT)
BEGIN SET nrows= 0;
INSERT INTO t1 VALUES(11); SET nrows= nrows + ROW_COUNT();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (21)'; SET nrows= nrows + ROW_COUNT();
INSERT INTO t1 VALUES(31); SET nrows= nrows + ROW_COUNT();
END;
$$
CREATE FUNCTION f2_direct_immediate_direct() RETURNS INT
BEGIN
DECLARE nrows INT DEFAULT 0;
DECLARE nrows1 INT DEFAULT 0;
INSERT INTO t1 VALUES(10); SET nrows= nrows + ROW_COUNT();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (20)'; SET nrows= nrows + ROW_COUNT();
INSERT INTO t1 VALUES(30); SET nrows= nrows + ROW_COUNT();
CALL p3_direct_immediate_direct(nrows1); RETURN nrows+nrows1;
END;
$$
CREATE PROCEDURE p1_select()
BEGIN
SELECT f2_direct_immediate_direct();
END;
$$
CREATE PROCEDURE p1_default()
BEGIN
DECLARE nrows INT DEFAULT f2_direct_immediate_direct();
SELECT nrows;
END;
$$
CREATE PROCEDURE p1_set()
BEGIN
DECLARE nrows INT; SET nrows= f2_direct_immediate_direct();
SELECT nrows;
END;
$$
CALL p1_select(); ERROR0A000: Dynamic SQL is not allowed in stored function or trigger
SELECT * FROM t1;
a 10
CALL p1_select(); ERROR0A000: Dynamic SQL is not allowed in stored function or trigger
SELECT * FROM t1;
a 10 10
TRUNCATE TABLE t1;
CALL p1_default;
nrows 6
SELECT * FROM t1;
a 10 20 30 11 21 31
CALL p1_default;
nrows 6
SELECT * FROM t1;
a 10 20 30 11 21 31 10 20 30 11 21 31
TRUNCATE TABLE t1;
CALL p1_set;
nrows 6
SELECT * FROM t1;
a 10 20 30 11 21 31
CALL p1_set;
nrows 6
SELECT * FROM t1;
a 10 20 30 11 21 31 10 20 30 11 21 31
DROP PROCEDURE p3_direct_immediate_direct;
DROP FUNCTION f2_direct_immediate_direct;
DROP PROCEDURE p1_select;
DROP PROCEDURE p1_default;
DROP PROCEDURE p1_set;
DROP TABLE t1;
#
# MDEV-40900 Procedure with dynamic SQL crashes on an InnoDB table
#
CREATE TABLE t1 (a INT);
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (9)';
INSERT INTO t1 VALUES (10);
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE n INT; SET n= f2();
END;
$$
CALL p1;
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# MDEV-40901 Unexpected Table does not exist error in procedure with PS
#
CREATE TABLE t1 (a INT);
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (9)';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3(); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE n INT; SET n= f2();
END;
$$
CALL p1;
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# Various combinations
#
#
# none|*|*
#
#
# [none][none][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [none][none][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [none][none][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [none][none][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [none][direct][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [none][direct][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [none][direct][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [none][direct][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [none][immediate][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [none][immediate][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [none][immediate][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [none][immediate][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [none][direct_immediate][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [none][direct_immediate][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
f3-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [none][direct_immediate][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [none][direct_immediate][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# direct|*|*
#
#
# [direct][none][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct][none][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f3-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct][none][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p1-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct][none][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
p1-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct][direct][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct][direct][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f3-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct][direct][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p1-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct][direct][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
p1-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct][immediate][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct][immediate][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f3-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct][immediate][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p1-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct][immediate][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
p1-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct][direct_immediate][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct][direct_immediate][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-direct
f3-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct][direct_immediate][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p1-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
p1-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# immediate|*|*
#
#
# [immediate][none][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [immediate][none][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f3-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [immediate][none][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p1-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [immediate][none][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
p1-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [immediate][direct][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [immediate][direct][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f3-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [immediate][direct][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p1-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [immediate][direct][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
p1-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [immediate][immediate][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [immediate][immediate][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f3-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [immediate][immediate][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p1-immediate
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [immediate][immediate][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
p1-immediate
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [immediate][direct_immediate][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [immediate][direct_immediate][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
f3-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [immediate][direct_immediate][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p1-immediate
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
p1-immediate
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# direct_immediate|*|*
#
#
# [direct_immediate][none][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct_immediate][none][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f3-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct_immediate][none][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p1-immediate
p1-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct_immediate][none][direct_immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
p1-immediate
p1-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct_immediate][direct][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct_immediate][direct][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f3-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct_immediate][direct][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p1-immediate
p1-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
p1-immediate
p1-direct
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct_immediate][immediate][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct_immediate][immediate][direct]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f3-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct_immediate][immediate][immediate]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p1-immediate
p1-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')'; RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
p1-immediate
p1-direct
f2-immediate
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
#
# [direct_immediate][direct_immediate][none]
#
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
BEGIN END;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
INSERT INTO t1 VALUES ('f3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p1-immediate
p1-direct
f3-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p1-immediate
p1-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(30));
CREATE PROCEDURE p3()
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p3-immediate'')';
INSERT INTO t1 VALUES ('p3-direct');
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
CALL p3();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''f2-immediate'')';
INSERT INTO t1 VALUES ('f2-direct'); RETURN0;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v2 VARCHAR(10) DEFAULT f2();
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (''p1-immediate'')';
INSERT INTO t1 VALUES ('p1-direct');
END;
$$
CALL p1;
SELECT * FROM t1 ORDER BY a DESC;
a
p3-immediate
p3-direct
p1-immediate
p1-direct
f2-immediate
f2-direct
DROP PROCEDURE p1;
DROP FUNCTION f2;
DROP PROCEDURE p3;
DROP TABLE t1;
# End of 13.1 tests
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.26 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.