1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

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.
This commit is contained in:
Alexey Botchkov
2019-03-12 01:09:55 +04:00
parent 28e713dc12
commit acb4a87204
4 changed files with 23 additions and 2 deletions

View File

@ -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

View File

@ -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());

View File

@ -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;
}

View File

@ -1192,6 +1192,7 @@ public:
(cs->state & MY_CS_UNICODE));
}
}
bool is_json_type() { return args[0]->is_json_type(); }
String *val_str(String *);
longlong val_int()
{