-
-
Notifications
You must be signed in to change notification settings - Fork 2k
Expand file tree
/
Copy pathsp_named_params.test
More file actions
71 lines (54 loc) · 1.34 KB
/
sp_named_params.test
File metadata and controls
71 lines (54 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
--echo #
--echo # MDEV-38329: Named Parameters in Invocation of Stored Routines
--echo #
--echo # Test setup
delimiter $$;
CREATE PROCEDURE p1(a INT, b INT, c INT)
BEGIN
SELECT a, b, c;
END;
$$
delimiter ;$$
--echo # All positional (existing behavior)
CALL p1(1, 2, 3);
--echo # All named
CALL p1(a => 1, b => 2, c => 3);
--echo # Named in different order
CALL p1(c => 3, a => 1, b => 2);
--echo # Mixed positional and named
CALL p1(1, b => 2, c => 3);
--echo # Mixed: first two positional, last named
CALL p1(1, 2, c => 3);
--echo # Positional after named should fail
--error ER_PARSE_ERROR
CALL p1(a => 1, 2, 3);
--echo # Unknown parameter name
--error ER_SP_UNDECLARED_VAR
CALL p1(a => 1, b => 2, x => 3);
--echo # Duplicate parameter name
--error ER_SP_UNDECLARED_VAR
CALL p1(a => 1, a => 2, b => 3);
DROP PROCEDURE p1;
--echo #
--echo # Test with default values
--echo #
delimiter $$;
CREATE PROCEDURE p2(a INT, b INT DEFAULT 20, c INT DEFAULT 30)
BEGIN
SELECT a, b, c;
END;
$$
delimiter ;$$
--echo # Skip middle param (use default for b)
CALL p2(a => 1, c => 3);
--echo # Only required param
CALL p2(a => 1);
--echo # All named with defaults overridden
CALL p2(a => 10, b => 20, c => 30);
--echo # Missing required param should fail
--error ER_SP_WRONG_NO_OF_ARGS
CALL p2(b => 2, c => 3);
DROP PROCEDURE p2;
--echo #
--echo # End of tests
--echo #