[MDEV-14426] Assertion in Diagnostics_area::set_error_status when using a bad datetime with PS and SP Created: 2017-11-17  Updated: 2017-12-22  Resolved: 2017-12-22

Status: Closed
Project: MariaDB Server
Component/s: Prepared Statements, Stored routines, Temporal Types
Affects Version/s: 10.2, 10.3
Fix Version/s: 10.2.12, 10.3.3

Type: Bug Priority: Major
Reporter: Alexander Barkov Assignee: Alexander Barkov
Resolution: Fixed Votes: 0
Labels: None

Sprint: 10.2.12

 Description   

This script crashes the server in debug builds:

DELIMITER $$
CREATE OR REPLACE PROCEDURE p1(OUT a VARCHAR(20))
BEGIN
  SET a=10;
END;
$$
BEGIN NOT ATOMIC
  DECLARE a DATETIME;
  EXECUTE IMMEDIATE 'CALL p1(?)' USING a;
END;
$$
DELIMITER ;

Note, if I slightly rewrite the script not to use dynamic SQL, the crash disappears and a correct error is returned instead:

DELIMITER $$
CREATE OR REPLACE PROCEDURE p1(OUT a VARCHAR(20))
BEGIN
  SET a=10;
END;
$$
BEGIN NOT ATOMIC
  DECLARE a DATETIME;
  CALL p1(a);
END;
$$
DELIMITER ;

ERROR 1292 (22007): Incorrect datetime value: '10' for column 'a' at row 1



 Comments   
Comment by Alexander Barkov [ 2017-12-21 ]

It also crashes with PREPARE followed by EXECUTE instead of EXECUTE IMMEDIATE:

DELIMITER $$
CREATE OR REPLACE PROCEDURE p1(OUT a VARCHAR(20))
BEGIN
  SET a=10;
END;
$$
BEGIN NOT ATOMIC
  DECLARE a DATETIME;
  PREPARE stmt FROM 'CALL p1(?)';
  EXECUTE stmt  USING a;
  DEALLOCATE PREPARE stmt;
END;
$$
DELIMITER ;

Generated at Thu Feb 08 08:13:28 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.