mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-20593 SIGSEGV in report_json_error_ex (on optimized builds).
When first argument to the JSON_MERGE_PATCH was NULL and second - the invalid JSON line, the error code was garbage. So it should be set to 0 initially.
This commit is contained in:
@ -898,6 +898,11 @@ NULL
|
|||||||
SELECT JSON_MERGE_PATCH(NULL, '[1,2,3]');
|
SELECT JSON_MERGE_PATCH(NULL, '[1,2,3]');
|
||||||
JSON_MERGE_PATCH(NULL, '[1,2,3]')
|
JSON_MERGE_PATCH(NULL, '[1,2,3]')
|
||||||
[1, 2, 3]
|
[1, 2, 3]
|
||||||
|
SELECT JSON_MERGE_PATCH(NULL, 'a');
|
||||||
|
JSON_MERGE_PATCH(NULL, 'a')
|
||||||
|
NULL
|
||||||
|
Warnings:
|
||||||
|
Warning 4038 Syntax error in JSON text in argument 2 to function 'json_merge_patch' at position 1
|
||||||
SELECT JSON_MERGE_PATCH('{"a":"b"}', NULL, '[1,2,3]', '{"c":null,"d":"e"}');
|
SELECT JSON_MERGE_PATCH('{"a":"b"}', NULL, '[1,2,3]', '{"c":null,"d":"e"}');
|
||||||
JSON_MERGE_PATCH('{"a":"b"}', NULL, '[1,2,3]', '{"c":null,"d":"e"}')
|
JSON_MERGE_PATCH('{"a":"b"}', NULL, '[1,2,3]', '{"c":null,"d":"e"}')
|
||||||
{"d": "e"}
|
{"d": "e"}
|
||||||
|
@ -531,6 +531,7 @@ DROP TABLE merge_t;
|
|||||||
|
|
||||||
SELECT JSON_MERGE_PATCH('{"a":"b"}', NULL, '{"c":"d"}');
|
SELECT JSON_MERGE_PATCH('{"a":"b"}', NULL, '{"c":"d"}');
|
||||||
SELECT JSON_MERGE_PATCH(NULL, '[1,2,3]');
|
SELECT JSON_MERGE_PATCH(NULL, '[1,2,3]');
|
||||||
|
SELECT JSON_MERGE_PATCH(NULL, 'a');
|
||||||
SELECT JSON_MERGE_PATCH('{"a":"b"}', NULL, '[1,2,3]', '{"c":null,"d":"e"}');
|
SELECT JSON_MERGE_PATCH('{"a":"b"}', NULL, '[1,2,3]', '{"c":null,"d":"e"}');
|
||||||
|
|
||||||
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
--error ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
|
||||||
|
@ -2429,6 +2429,8 @@ String *Item_func_json_merge_patch::val_str(String *str)
|
|||||||
uint n_arg;
|
uint n_arg;
|
||||||
bool empty_result, merge_to_null;
|
bool empty_result, merge_to_null;
|
||||||
|
|
||||||
|
/* To report errors properly if some JSON is invalid. */
|
||||||
|
je1.s.error= je2.s.error= 0;
|
||||||
merge_to_null= args[0]->null_value;
|
merge_to_null= args[0]->null_value;
|
||||||
|
|
||||||
for (n_arg=1; n_arg < arg_count; n_arg++)
|
for (n_arg=1; n_arg < arg_count; n_arg++)
|
||||||
|
Reference in New Issue
Block a user