Skip to content
Permalink
Browse files
MDEV-18886 JSON_ARRAY() does not recognise JSON argument.
JSON_ARRAY and JSON_OBJECT functions with no arguments now get the
connection charset. Item_func_convert_charset returns the correct
is_json() flag.
  • Loading branch information
Alexey Botchkov committed Mar 11, 2019
1 parent 28e713d commit acb4a87
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 2 deletions.
@@ -830,3 +830,15 @@ SET sql_mode=default;
select JSON_VALID( '{"a":1]' );
JSON_VALID( '{"a":1]' )
0
#
# MDEV-18886 JSON_ARRAY() does not recognise JSON argument.
#
SELECT JSON_ARRAY(_UTF8 'str', JSON_OBJECT(_LATIN1 'plugin', _LATIN1'unix_socket'));
JSON_ARRAY(_UTF8 'str', JSON_OBJECT(_LATIN1 'plugin', _LATIN1'unix_socket'))
["str", {"plugin": "unix_socket"}]
SELECT CHARSET(JSON_ARRAY());
CHARSET(JSON_ARRAY())
latin1
SELECT CHARSET(JSON_OBJECT());
CHARSET(JSON_OBJECT())
latin1
@@ -487,3 +487,10 @@ SET sql_mode=default;

select JSON_VALID( '{"a":1]' );

--echo #
--echo # MDEV-18886 JSON_ARRAY() does not recognise JSON argument.
--echo #
SELECT JSON_ARRAY(_UTF8 'str', JSON_OBJECT(_LATIN1 'plugin', _LATIN1'unix_socket'));
SELECT CHARSET(JSON_ARRAY());
SELECT CHARSET(JSON_OBJECT());

@@ -1488,9 +1488,10 @@ bool Item_func_json_array::fix_length_and_dec()

if (arg_count == 0)
{
collation.set(&my_charset_utf8_general_ci,
THD* thd= current_thd;
collation.set(thd->variables.collation_connection,
DERIVATION_COERCIBLE, MY_REPERTOIRE_ASCII);
tmp_val.set_charset(&my_charset_utf8_general_ci);
tmp_val.set_charset(thd->variables.collation_connection);
max_length= 2;
return FALSE;
}
@@ -1192,6 +1192,7 @@ class Item_func_conv_charset :public Item_str_func
(cs->state & MY_CS_UNICODE));
}
}
bool is_json_type() { return args[0]->is_json_type(); }
String *val_str(String *);
longlong val_int()
{

0 comments on commit acb4a87

Please sign in to comment.