@@ -130,4 +130,85 @@ SET p2 = p2 + 1;
130130END;
131131DELIMITER ;$$
132132ERROR 42000: This version of MariaDB doesn't yet support 'IN sparam1 <type> DEFAULT <expr>, OUT spparam2 <type>'
133+ #
134+ # MDEV-37489: SIGSEGV in get_param_default_value | store_schema_params
135+ #
136+ CREATE OR REPLACE PROCEDURE p0 (x INT DEFAULT func())
137+ BEGIN
138+ SELECT x;
139+ END;
140+ //
141+ SET SESSION max_session_mem_used=8192;
142+ CALL p0();
143+ ERROR HY000: The MariaDB server is running with the --max-session-mem-used=8192 option so it cannot execute this statement
144+ SET @@max_session_mem_used=DEFAULT;
145+ CALL p0();
146+ ERROR 42000: FUNCTION test.func does not exist
147+ SELECT * FROM information_schema.PARAMETERS where specific_name = 'p0';
148+ SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
149+ def test p0 1 IN x int NULL NULL 10 0 NULL NULL NULL int(11) PROCEDURE
150+ # with func() defined
151+ CREATE FUNCTION func(x INT DEFAULT 10) RETURNS INT
152+ BEGIN
153+ RETURN x;
154+ END;
155+ //
156+ CREATE OR REPLACE PROCEDURE p0 (x INT DEFAULT func())
157+ BEGIN
158+ SELECT x;
159+ END;
160+ //
161+ SET SESSION max_session_mem_used=8192;
162+ CALL p0();
163+ ERROR HY000: The MariaDB server is running with the --max-session-mem-used=8192 option so it cannot execute this statement
164+ SET @@max_session_mem_used=DEFAULT;
165+ CALL p0();
166+ x
167+ 10
168+ SELECT * FROM information_schema.PARAMETERS where specific_name = 'p0';
169+ SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
170+ def test p0 1 IN x int NULL NULL 10 0 NULL NULL NULL int(11) PROCEDURE
171+ # with multiple functions
172+ CREATE FUNCTION func2(x INT DEFAULT 10) RETURNS INT
173+ BEGIN
174+ RETURN x;
175+ END;
176+ //
177+ CREATE OR REPLACE PROCEDURE p0 (x INT DEFAULT func(), y INT DEFAULT func2())
178+ BEGIN
179+ SELECT x, y;
180+ END;
181+ //
182+ SET SESSION max_session_mem_used=8192;
183+ CALL p0();
184+ ERROR HY000: The MariaDB server is running with the --max-session-mem-used=8192 option so it cannot execute this statement
185+ SET @@max_session_mem_used=DEFAULT;
186+ CALL p0();
187+ x y
188+ 10 10
189+ SELECT * FROM information_schema.PARAMETERS where specific_name = 'p0';
190+ SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
191+ def test p0 1 IN x int NULL NULL 10 0 NULL NULL NULL int(11) PROCEDURE
192+ def test p0 2 IN y int NULL NULL 10 0 NULL NULL NULL int(11) PROCEDURE
193+ # with function and constant default param
194+ CREATE OR REPLACE PROCEDURE p0 (x INT DEFAULT func(), y INT DEFAULT func2(), z INT DEFAULT 10)
195+ BEGIN
196+ SELECT x, y, z;
197+ END;
198+ //
199+ SET SESSION max_session_mem_used=8192;
200+ CALL p0();
201+ ERROR HY000: The MariaDB server is running with the --max-session-mem-used=8192 option so it cannot execute this statement
202+ SET @@max_session_mem_used=DEFAULT;
203+ CALL p0();
204+ x y z
205+ 10 10 10
206+ SELECT * FROM information_schema.PARAMETERS where specific_name = 'p0';
207+ SPECIFIC_CATALOG SPECIFIC_SCHEMA SPECIFIC_NAME ORDINAL_POSITION PARAMETER_MODE PARAMETER_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME DTD_IDENTIFIER ROUTINE_TYPE
208+ def test p0 1 IN x int NULL NULL 10 0 NULL NULL NULL int(11) PROCEDURE
209+ def test p0 2 IN y int NULL NULL 10 0 NULL NULL NULL int(11) PROCEDURE
210+ def test p0 3 IN z int NULL NULL 10 0 NULL NULL NULL int(11) PROCEDURE
211+ DROP PROCEDURE p0;
212+ DROP FUNCTION func;
213+ DROP FUNCTION func2;
133214# End of 11.8 tests
0 commit comments