Details
-
Task
-
Status: Open (View Workflow)
-
Major
-
Resolution: Unresolved
-
None
-
None
Description
Currently, MySQL allows SELECT statements within stored procedures to be enclosed in parentheses even when using the INTO keyword. MariaDB's parser is more strict regarding the placement of the INTO clause when parentheses are present, often resulting in a syntax error (Error 1064).
To improve compatibility for migrations, MariaDB should allow the same syntactic flexibility as MySQL for these procedural constructs.
Example :
MySQL Syntax
CREATE PROCEDURE test_proc(IN in_var INT) |
BEGIN
|
DECLARE ivar INT; |
IF in_var IS NOT NULL THEN |
(SELECT var INTO ivar |
FROM xyz |
WHERE var = in_var |
LIMIT 1);
|
END IF; |
SELECT ivar AS result; |
END // |
DELIMITER ;
|
MariaDB equivalent:
DELIMITER //
|
_~CREATE OR REPLACE PROCEDURE test_proc(IN in_var INT) |
BEGIN
|
DECLARE ivar INT; |
|
IF in_var IS NOT NULL THEN |
-- Parentheses removed for compatibility |
SELECT var INTO ivar |
FROM xyz |
WHERE var = in_var |
LIMIT 1;
|
END IF; |
 |
SELECT ivar AS result; |
END // |
DELIMITER ;
|
|