mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
MDEV-13703 Illegal mix of collations for operation 'json_object' on
using JSON_UNQUOTE as an argument. The coercibility and repertoire should be set properly for the JSON_UNQUOTE.
This commit is contained in:
@@ -405,6 +405,13 @@ abc
|
||||
select json_unquote('abc');
|
||||
json_unquote('abc')
|
||||
abc
|
||||
create table t1 (c VARCHAR(8)) DEFAULT CHARSET=latin1;
|
||||
insert into t1 values ('abc'),('def');
|
||||
select json_object('foo', json_unquote(json_object('bar', c)),'qux', c) as fld from t1;
|
||||
fld
|
||||
{"foo": "{\"bar\": \"abc\"}", "qux": "abc"}
|
||||
{"foo": "{\"bar\": \"def\"}", "qux": "def"}
|
||||
drop table t1;
|
||||
select json_object("a", json_object("b", "abcd"));
|
||||
json_object("a", json_object("b", "abcd"))
|
||||
{"a": {"b": "abcd"}}
|
||||
|
@@ -164,6 +164,14 @@ drop table t1;
|
||||
|
||||
select json_unquote('"abc"');
|
||||
select json_unquote('abc');
|
||||
#
|
||||
# MDEV-13703 Illegal mix of collations for operation 'json_object' on using JSON_UNQUOTE as an argument.
|
||||
#
|
||||
create table t1 (c VARCHAR(8)) DEFAULT CHARSET=latin1;
|
||||
insert into t1 values ('abc'),('def');
|
||||
|
||||
select json_object('foo', json_unquote(json_object('bar', c)),'qux', c) as fld from t1;
|
||||
drop table t1;
|
||||
|
||||
select json_object("a", json_object("b", "abcd"));
|
||||
select json_object("a", '{"b": "abcd"}');
|
||||
|
@@ -581,7 +581,8 @@ String *Item_func_json_quote::val_str(String *str)
|
||||
|
||||
void Item_func_json_unquote::fix_length_and_dec()
|
||||
{
|
||||
collation.set(&my_charset_utf8_general_ci);
|
||||
collation.set(&my_charset_utf8_general_ci,
|
||||
DERIVATION_COERCIBLE, MY_REPERTOIRE_ASCII);
|
||||
max_length= args[0]->max_length;
|
||||
maybe_null= 1;
|
||||
}
|
||||
@@ -1458,7 +1459,8 @@ void Item_func_json_array::fix_length_and_dec()
|
||||
|
||||
if (arg_count == 0)
|
||||
{
|
||||
collation.set(&my_charset_utf8_general_ci);
|
||||
collation.set(&my_charset_utf8_general_ci,
|
||||
DERIVATION_COERCIBLE, MY_REPERTOIRE_ASCII);
|
||||
tmp_val.set_charset(&my_charset_utf8_general_ci);
|
||||
max_length= 2;
|
||||
return;
|
||||
|
Reference in New Issue
Block a user