Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  ps_in_func-row.test  Sprache: unbekannt

 
Spracherkennung für: .test vermutete Sprache: SQL {SQL[90] ADA[54] VHDL[54]} [Methode: maximale Elemente, drei Dimensionen]

--echo #
--echo # MDEV-39518 Allow prepared statements in stored functions in assignment right hand
--echo #

--echo #
--echo # ROW variables
--echo #

CREATE TABLE t1 (a INT,b VARCHAR(10));
INSERT INTO t1 VALUES (10,'b10');
DELIMITER $$;
CREATE FUNCTION f1() RETURNS ROW(a INT, b VARCHAR(10))
BEGIN
  EXECUTE IMMEDIATE 'UPDATE t1 SET a=a+11';
  RETURN ROW(100,'b100');
END;
$$
CREATE PROCEDURE p1()
BEGIN
  DECLARE r ROW(a INT,b VARCHAR(10)) DEFAULT f1();
  SELECT r.a, r.b;
END;
$$
CREATE PROCEDURE p2()
BEGIN
  DECLARE r ROW(a INT,b VARCHAR(10));
  SET r= f1();
  SELECT r.a, r.b;
END;
$$
DELIMITER ;$$
--error ER_OPERAND_COLUMNS
SELECT f1();
CALL p1;
CALL p2;
DROP PROCEDURE p1;
DROP PROCEDURE p2;
DROP FUNCTION f1;
DROP TABLE t1;


--echo #
--echo # ROW variables initialized from a nested ROW value
--echo # This produces ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
--echo # The test just makes sure Item_row::set_in_ps_safe_context() works fine
--echo #

CREATE TABLE t1 (a INT,b VARCHAR(10));
INSERT INTO t1 VALUES (10,'b10');
DELIMITER $$;
CREATE FUNCTION f1() RETURNS ROW(a INT, b VARCHAR(10))
BEGIN
  EXECUTE IMMEDIATE 'UPDATE t1 SET a=a+11';
  RETURN ROW(100,'b100');
END;
$$
CREATE PROCEDURE p1()
BEGIN
  DECLARE r ROW(a INT,b VARCHAR(10)) DEFAULT ROW(f1(),100);
  SELECT r.a, r.b;
END;
$$
CREATE PROCEDURE p2()
BEGIN
  DECLARE r ROW(a INT,b VARCHAR(10));
  SET r= ROW(f1(),100);
  SELECT r.a, r.b;
END;
$$
DELIMITER ;$$
--error ER_OPERAND_COLUMNS
SELECT f1();
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
CALL p1;
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
CALL p2;
DROP PROCEDURE p1;
DROP PROCEDURE p2;
DROP FUNCTION f1;
DROP TABLE t1;


--echo #
--echo # ROW fields
--echo #

CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (10);
DELIMITER $$;
CREATE FUNCTION f1() RETURNS INT
BEGIN
  EXECUTE IMMEDIATE 'UPDATE t1 SET a=a+1';
  RETURN 100;
END;
$$
CREATE PROCEDURE p1()
BEGIN
  DECLARE r ROW (a INT, b VARCHAR(10)) DEFAULT ROW(f1(),'b100');
  SELECT r.a, r.b;
END;
$$
CREATE PROCEDURE p2()
BEGIN
  DECLARE r ROW (a INT, b VARCHAR(10));
  SET r.a= f1();
  SET r.b= 'b100';
  SELECT r.a, r.b;
END;
$$
DELIMITER ;$$
--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
SELECT f1();
CALL p1;
CALL p2;
SELECT * FROM t1;
DROP PROCEDURE p1;
DROP PROCEDURE p2;
DROP FUNCTION f1;
DROP TABLE t1;


--echo #
--echo # A ROW value naming two functions, only the first one has PS.
--echo #
--echo # The statement is not pre-locked, so no MDL is taken on its routines
--echo # and their tables are not collected. The routines still have to be
--echo # put into the sp cache, all of them: Item_func_sp::fix_fields()
--echo # resolves them from the cache only, so a routine which is missing
--echo # there is reported as non existing.
--echo #

CREATE TABLE t1 (a INT);
DELIMITER $$;
CREATE FUNCTION f1() RETURNS INT
BEGIN
  EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (10)';
  RETURN 10;
END;
$$
CREATE FUNCTION f2() RETURNS INT
BEGIN
  RETURN 20;
END;
$$
CREATE PROCEDURE p1()
BEGIN
  DECLARE r ROW(a INT, b INT);
  SET r= ROW(f1(), f2());
  SELECT r.a, r.b;
END;
$$
CREATE PROCEDURE p2()
BEGIN
  DECLARE r ROW(a INT, b INT) DEFAULT ROW(f1(), f2());
  SELECT r.a, r.b;
END;
$$
DELIMITER ;$$
CALL p1;
CALL p2;
SELECT * FROM t1;
DROP PROCEDURE p1;
DROP PROCEDURE p2;
DROP FUNCTION f1;
DROP FUNCTION f2;
DROP TABLE t1;


--echo # End of 13.1 tests

[Dauer der Verarbeitung: 0.45 Sekunden, vorverarbeitet 2026-10-08]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1126438
#Domains=1897691