Skip to content

Commit

Permalink
MDEV-12262 Assertion `!null_value' failed in virtual bool Item::send on
Browse files Browse the repository at this point in the history
JSON_REMOVE.

        null_value wasn't properly set in Item_json_func_remove::val_str.
  • Loading branch information
Alexey Botchkov committed Mar 20, 2017
1 parent a06da5c commit 76f6c1e
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 0 deletions.
11 changes: 11 additions & 0 deletions mysql-test/r/func_json.result
Expand Up @@ -618,3 +618,14 @@ connection default;
set @@global.max_allowed_packet = default;
set @@global.net_buffer_length = default;
disconnect newconn;
create table t1(j longtext, p longtext);
insert into t1 values
('{"a":1,"b":2,"c":3}','$.a'),
('{"a":1,"b":2,"c":3}','$.b'),
('{"a":1,"b":2,"c":3}','$.c');
select j, p, json_remove(j, p) from t1;
j p json_remove(j, p)
{"a":1,"b":2,"c":3} $.a {"b": 2, "c": 3}
{"a":1,"b":2,"c":3} $.b {"a": 1, "c": 3}
{"a":1,"b":2,"c":3} $.c {"a": 1, "b": 2}
drop table t1;
11 changes: 11 additions & 0 deletions mysql-test/t/func_json.test
Expand Up @@ -263,3 +263,14 @@ set @@global.max_allowed_packet = default;
set @@global.net_buffer_length = default;
--disconnect newconn


#
# MDEV-12262 Assertion `!null_value' failed in virtual bool Item::send on JSON_REMOVE.
#
create table t1(j longtext, p longtext);
insert into t1 values
('{"a":1,"b":2,"c":3}','$.a'),
('{"a":1,"b":2,"c":3}','$.b'),
('{"a":1,"b":2,"c":3}','$.c');
select j, p, json_remove(j, p) from t1;
drop table t1;
2 changes: 2 additions & 0 deletions sql/item_jsonfunc.cc
Expand Up @@ -2633,6 +2633,7 @@ String *Item_func_json_remove::val_str(String *str)
str->length(0);

if (append_simple(str, js->ptr(), rem_start - js->ptr()) ||
(je.state == JST_KEY && n_item > 0 && str->append(",", 1)) ||
append_simple(str, rem_end, js->end() - rem_end))
goto js_error; /* Out of memory. */

Expand All @@ -2658,6 +2659,7 @@ String *Item_func_json_remove::val_str(String *str)
if (json_nice(&je, str, Item_func_json_format::LOOSE))
goto js_error;

null_value= 0;
return str;

js_error:
Expand Down

0 comments on commit 76f6c1e

Please sign in to comment.