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

MDEV-12604 Comparison of JSON_EXTRACT result differs with Mysql.

JSON_EXTRACT behaves specifically in the comparison,
        so we have to implement specific method for that in
        Arg_comparator.
This commit is contained in:
Alexey Botchkov
2017-08-11 00:50:29 +04:00
parent bfffe571ac
commit 79d2853354
5 changed files with 199 additions and 143 deletions

View File

@ -133,8 +133,6 @@ public:
const char *func_name() const { return "json_unquote"; }
void fix_length_and_dec();
String *val_str(String *);
double val_real();
longlong val_int();
Item *get_copy(THD *thd, MEM_ROOT *mem_root)
{ return get_item_copy<Item_func_json_unquote>(thd, mem_root, this); }
};
@ -160,12 +158,16 @@ class Item_func_json_extract: public Item_json_str_multipath
protected:
String tmp_js;
public:
String *read_json(String *str, json_value_types *type,
char **out_val, int *value_len);
Item_func_json_extract(THD *thd, List<Item> &list):
Item_json_str_multipath(thd, list) {}
const char *func_name() const { return "json_extract"; }
enum Functype functype() const { return JSON_EXTRACT_FUNC; }
void fix_length_and_dec();
String *val_str(String *);
longlong val_int();
double val_real();
uint get_n_paths() const { return arg_count - 1; }
Item *get_copy(THD *thd, MEM_ROOT *mem_root)
{ return get_item_copy<Item_func_json_extract>(thd, mem_root, this); }