Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/MariaDB/mysql-test/main/   (MariaDB Server Version 8.1-8.4©)  Datei vom 1.9.2026 mit Größe 3 kB image not shown  

Quelle  ps_in_func-innodb.result   Sprache: Lisp

 

#
# MDEV-39518 Allow prepared statements in stored functions in assignment right hand
#
# p1 - f1(direct+immediate)
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
CREATE FUNCTION f1_direct_immediate() RETURNS INT
BEGIN
INSERT INTO t1 VALUES (9);
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (10)';
RETURN 0;
END;
$$
CREATE PROCEDURE p1_default()
BEGIN
DECLARE a INT DEFAULT f1_direct_immediate();
END;
$$
CREATE PROCEDURE p1_set()
BEGIN
DECLARE a INT;
SET a= f1_direct_immediate();
END;
$$
CALL p1_default;
SELECT * FROM t1 ORDER BY a;
a
9
10
CALL p1_default;
SELECT * FROM t1 ORDER BY a;
a
9
9
10
10
TRUNCATE TABLE t1;
CALL p1_set;
SELECT * FROM t1 ORDER BY a;
a
9
10
CALL p1_set;
SELECT * FROM t1 ORDER BY a;
a
9
9
10
10
DROP FUNCTION f1_direct_immediate;
DROP PROCEDURE p1_default;
DROP PROCEDURE p1_set;
DROP TABLE t1;
# Check that functions with PS do not commit
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
CREATE FUNCTION f2_direct_immediate() RETURNS INT
BEGIN
INSERT INTO t1 VALUES (9);
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (10)';
RETURN 0;
END;
$$
CREATE PROCEDURE p1_default()
BEGIN
DECLARE a INT DEFAULT f2_direct_immediate();
END;
$$
START TRANSACTION;
CALL p1_default;
SELECT * FROM t1 ORDER BY a;
a
9
10
ROLLBACK/*This should roll back all f2_direct_immediate() changes*/;
SELECT * FROM t1 ORDER BY a;
a
CALL p1_default;
SELECT * FROM t1 ORDER BY a;
a
9
10
DROP PROCEDURE p1_default;
DROP FUNCTION f2_direct_immediate;
DROP TABLE t1;
# Testing with two tables
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (10);
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
CREATE FUNCTION f1() RETURNS INT BEGIN
DECLARE v INT;
SET v= (SELECT MAX(a) FROM t1);
EXECUTE IMMEDIATE 'INSERT INTO t2 VALUES (?)' USING v;
RETURN v;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE a INT DEFAULT f1();
END;
$$
CALL p1();
SELECT * FROM t2;
a
10
DROP PROCEDURE p1;
DROP FUNCTION f1;
DROP TABLE t1, t2;
#
# MDEV-40226 Assertion `inited == NONE || table->open_by_handler' failed in int handler::ha_external_lock(THD *, int)
#
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);
CREATE FUNCTION f() RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (2)';
RETURN 1;
END;
$$
SELECT * FROM t1 WHERE a = f();
ERROR 0A000: Dynamic SQL is not allowed in stored function or trigger
SELECT f() FROM t1;
ERROR 0A000: Dynamic SQL is not allowed in stored function or trigger
DROP FUNCTION f;
DROP TABLE t1;
#
# A function called in the argument list of another function is not
# in a safe PS context, so the statements of its body leave their
# statement transaction open.
# PS in the outer function is rejected:
# it would run on top of that open statement transaction.
#
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1);
CREATE FUNCTION g1() RETURNS INT
BEGIN
RETURN (SELECT MAX(a) FROM t1);
END;
$$
CREATE FUNCTION f1(x INT) RETURNS INT
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (2)';
RETURN 1;
END;
$$
CREATE PROCEDURE p1()
BEGIN
DECLARE v INT DEFAULT f1(g1());
SELECT v;
END;
$$
CALL p1();
ERROR 0A000: Dynamic SQL is not allowed in stored function or trigger
SELECT * FROM t1 ORDER BY a;
a
1
DROP PROCEDURE p1;
DROP FUNCTION f1;
DROP FUNCTION g1;
DROP TABLE t1;
# End of 13.1 tests

Messung V0.5 in Prozent
C=52 H=100 G=79

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet am  2026-10-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

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.