diff options
author | Igor Babaev <igor@askmonty.org> | 2016-08-31 16:16:54 -0700 |
---|---|---|
committer | Igor Babaev <igor@askmonty.org> | 2016-08-31 16:16:54 -0700 |
commit | 3fb4f9bb93868ce5c7e385d0545c00755d8e23bd (patch) | |
tree | 8ea1c005920b2ef9d7c7f1114c5433c728751b72 /sql/item_strfunc.h | |
parent | 670760d504bebdf542df890f4d40f4cd3ff7a2c8 (diff) | |
parent | eb2c1474752a5f743db638d5b06612c9e3f07f74 (diff) | |
download | mariadb-git-3fb4f9bb93868ce5c7e385d0545c00755d8e23bd.tar.gz |
Merge branch '10.2-mdev9197-cons' of github.com:shagalla/server
into branch 10.2-mdev9197.
Diffstat (limited to 'sql/item_strfunc.h')
-rw-r--r-- | sql/item_strfunc.h | 139 |
1 files changed, 138 insertions, 1 deletions
diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h index fd63c571359..25b63ebe73d 100644 --- a/sql/item_strfunc.h +++ b/sql/item_strfunc.h @@ -105,6 +105,8 @@ public: String *val_str_ascii(String *); void fix_length_and_dec(); const char *func_name() const { return "md5"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_md5>(thd, mem_root, this); } }; @@ -114,7 +116,9 @@ public: Item_func_sha(THD *thd, Item *a): Item_str_ascii_func(thd, a) {} String *val_str_ascii(String *); void fix_length_and_dec(); - const char *func_name() const { return "sha"; } + const char *func_name() const { return "sha"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_sha>(thd, mem_root, this); } }; class Item_func_sha2 :public Item_str_ascii_func @@ -124,6 +128,8 @@ public: String *val_str_ascii(String *); void fix_length_and_dec(); const char *func_name() const { return "sha2"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_sha2>(thd, mem_root, this); } }; class Item_func_to_base64 :public Item_str_ascii_func @@ -134,6 +140,8 @@ public: String *val_str_ascii(String *); void fix_length_and_dec(); const char *func_name() const { return "to_base64"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_to_base64>(thd, mem_root, this); } }; class Item_func_from_base64 :public Item_str_func @@ -144,6 +152,8 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "from_base64"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_from_base64>(thd, mem_root, this); } }; #include <my_crypt.h> @@ -167,6 +177,8 @@ public: Item_aes_crypt(thd, a, b) {} void fix_length_and_dec(); const char *func_name() const { return "aes_encrypt"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_aes_encrypt>(thd, mem_root, this); } }; class Item_func_aes_decrypt :public Item_aes_crypt @@ -176,6 +188,8 @@ public: Item_aes_crypt(thd, a, b) {} void fix_length_and_dec(); const char *func_name() const { return "aes_decrypt"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_aes_decrypt>(thd, mem_root, this); } }; @@ -188,6 +202,8 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "concat"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_concat>(thd, mem_root, this); } }; class Item_func_decode_histogram :public Item_str_func @@ -204,6 +220,8 @@ public: maybe_null= 1; } const char *func_name() const { return "decode_histogram"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_decode_histogram>(thd, mem_root, this); } }; class Item_func_concat_ws :public Item_str_func @@ -215,6 +233,8 @@ public: void fix_length_and_dec(); const char *func_name() const { return "concat_ws"; } table_map not_null_tables() const { return 0; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_concat_ws>(thd, mem_root, this); } }; class Item_func_reverse :public Item_str_func @@ -225,6 +245,8 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "reverse"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_reverse>(thd, mem_root, this); } }; @@ -237,6 +259,8 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "replace"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_replace>(thd, mem_root, this); } }; @@ -260,6 +284,8 @@ public: String *val_str(String *str); void fix_length_and_dec(); const char *func_name() const { return "regexp_replace"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_regexp_replace>(thd, mem_root, this); } }; @@ -280,6 +306,8 @@ public: String *val_str(String *str); void fix_length_and_dec(); const char *func_name() const { return "regexp_substr"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_regexp_substr>(thd, mem_root, this); } }; @@ -293,6 +321,8 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "insert"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_insert>(thd, mem_root, this); } }; @@ -314,6 +344,8 @@ public: Item_func_lcase(THD *thd, Item *item): Item_str_conv(thd, item) {} const char *func_name() const { return "lcase"; } void fix_length_and_dec(); + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_lcase>(thd, mem_root, this); } }; class Item_func_ucase :public Item_str_conv @@ -322,6 +354,8 @@ public: Item_func_ucase(THD *thd, Item *item): Item_str_conv(thd, item) {} const char *func_name() const { return "ucase"; } void fix_length_and_dec(); + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_ucase>(thd, mem_root, this); } }; @@ -333,6 +367,8 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "left"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_left>(thd, mem_root, this); } }; @@ -344,6 +380,8 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "right"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_right>(thd, mem_root, this); } }; @@ -356,6 +394,8 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "substr"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_substr>(thd, mem_root, this); } }; @@ -368,6 +408,9 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "substring_index"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_substr_index>(thd, mem_root, this); } + }; @@ -399,6 +442,8 @@ public: const char *func_name() const { return "trim"; } virtual void print(String *str, enum_query_type query_type); virtual const char *mode_name() const { return "both"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_trim>(thd, mem_root, this); } }; @@ -410,6 +455,8 @@ public: String *val_str(String *); const char *func_name() const { return "ltrim"; } const char *mode_name() const { return "leading"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_ltrim>(thd, mem_root, this); } }; @@ -421,6 +468,8 @@ public: String *val_str(String *); const char *func_name() const { return "rtrim"; } const char *mode_name() const { return "trailing"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_rtrim>(thd, mem_root, this); } }; @@ -458,6 +507,8 @@ public: "password" : "old_password"); } static char *alloc(THD *thd, const char *password, size_t pass_len, enum PW_Alg al); + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_password>(thd, mem_root, this); } }; @@ -476,6 +527,8 @@ public: max_length = args[0]->max_length + 9; } const char *func_name() const { return "des_encrypt"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_des_encrypt>(thd, mem_root, this); } }; class Item_func_des_decrypt :public Item_str_func @@ -494,6 +547,8 @@ public: max_length-= 9U; } const char *func_name() const { return "des_decrypt"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_des_decrypt>(thd, mem_root, this); } }; class Item_func_encrypt :public Item_str_func @@ -521,6 +576,8 @@ public: { return FALSE; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_encrypt>(thd, mem_root, this); } }; #include "sql_crypt.h" @@ -539,6 +596,8 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "encode"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_encode>(thd, mem_root, this); } protected: virtual void crypto_transform(String *); private: @@ -552,6 +611,8 @@ class Item_func_decode :public Item_func_encode public: Item_func_decode(THD *thd, Item *a, Item *seed_arg): Item_func_encode(thd, a, seed_arg) {} const char *func_name() const { return "decode"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_decode>(thd, mem_root, this); } protected: void crypto_transform(String *); }; @@ -592,6 +653,8 @@ public: } const char *func_name() const { return "database"; } const char *fully_qualified_func_name() const { return "database()"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_database>(thd, mem_root, this); } }; @@ -622,6 +685,8 @@ public: { return save_str_value_in_field(field, &str_value); } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_user>(thd, mem_root, this); } }; @@ -665,10 +730,13 @@ public: } bool check_vcol_func_processor(void *arg) { + context= 0; return mark_unsupported_function(fully_qualified_func_name(), arg, VCOL_SESSION_FUNC); } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_current_role>(thd, mem_root, this); } }; @@ -680,6 +748,8 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "soundex"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_soundex>(thd, mem_root, this); } }; @@ -692,6 +762,8 @@ public: String *val_str(String *str); void fix_length_and_dec(); const char *func_name() const { return "elt"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_elt>(thd, mem_root, this); } }; @@ -704,6 +776,8 @@ public: String *val_str(String *str); void fix_length_and_dec(); const char *func_name() const { return "make_set"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_make_set>(thd, mem_root, this); } }; @@ -722,6 +796,8 @@ public: void fix_length_and_dec(); const char *func_name() const { return "format"; } virtual void print(String *str, enum_query_type query_type); + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_format>(thd, mem_root, this); } }; @@ -739,6 +815,8 @@ public: max_length= arg_count * 4; } const char *func_name() const { return "char"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_char>(thd, mem_root, this); } }; @@ -751,6 +829,8 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "repeat"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_repeat>(thd, mem_root, this); } }; @@ -761,6 +841,8 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "space"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_space>(thd, mem_root, this); } }; @@ -775,8 +857,11 @@ public: const char *func_name() const { return "binlog_gtid_pos"; } bool check_vcol_func_processor(void *arg) { + return mark_unsupported_function(func_name(), "()", arg, VCOL_IMPOSSIBLE); } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_binlog_gtid_pos>(thd, mem_root, this); } }; @@ -789,6 +874,8 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "rpad"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_rpad>(thd, mem_root, this); } }; @@ -801,6 +888,8 @@ public: String *val_str(String *); void fix_length_and_dec(); const char *func_name() const { return "lpad"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_lpad>(thd, mem_root, this); } }; @@ -817,6 +906,8 @@ public: max_length=64; maybe_null= 1; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_conv>(thd, mem_root, this); } }; @@ -834,6 +925,8 @@ public: decimals=0; fix_char_length(args[0]->max_length * 2); } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_hex>(thd, mem_root, this); } }; class Item_func_unhex :public Item_str_func @@ -853,6 +946,8 @@ public: decimals=0; max_length=(1+args[0]->max_length)/2; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_unhex>(thd, mem_root, this); } }; @@ -883,6 +978,8 @@ public: Item_func_like_range_min(THD *thd, Item *a, Item *b): Item_func_like_range(thd, a, b, true) { } const char *func_name() const { return "like_range_min"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_like_range_min>(thd, mem_root, this); } }; @@ -892,6 +989,8 @@ public: Item_func_like_range_max(THD *thd, Item *a, Item *b): Item_func_like_range(thd, a, b, false) { } const char *func_name() const { return "like_range_max"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_like_range_max>(thd, mem_root, this); } }; #endif @@ -917,6 +1016,8 @@ public: virtual void print(String *str, enum_query_type query_type); const char *func_name() const { return "cast_as_binary"; } bool need_parentheses_in_default() { return true; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_binary>(thd, mem_root, this); } }; @@ -937,6 +1038,8 @@ public: { return mark_unsupported_function(func_name(), "()", arg, VCOL_IMPOSSIBLE); } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_load_file>(thd, mem_root, this); } }; @@ -952,6 +1055,8 @@ class Item_func_export_set: public Item_str_func String *val_str(String *str); void fix_length_and_dec(); const char *func_name() const { return "export_set"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_export_set>(thd, mem_root, this); } }; @@ -969,6 +1074,8 @@ public: 2 * collation.collation->mbmaxlen; max_length= (uint32) MY_MIN(max_result_length, MAX_BLOB_WIDTH); } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_quote>(thd, mem_root, this); } }; class Item_func_conv_charset :public Item_str_func @@ -1051,6 +1158,8 @@ public: void fix_length_and_dec(); const char *func_name() const { return "convert"; } virtual void print(String *str, enum_query_type query_type); + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_conv_charset>(thd, mem_root, this); } }; class Item_func_set_collation :public Item_str_func @@ -1070,6 +1179,8 @@ public: return args[0]->field_for_view_update(); } bool need_parentheses_in_default() { return true; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_set_collation>(thd, mem_root, this); } }; @@ -1097,6 +1208,8 @@ public: :Item_func_expr_str_metadata(thd, a) { } String *val_str(String *); const char *func_name() const { return "charset"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_charset>(thd, mem_root, this); } }; @@ -1107,6 +1220,8 @@ public: :Item_func_expr_str_metadata(thd, a) {} String *val_str(String *); const char *func_name() const { return "collation"; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_collation>(thd, mem_root, this); } }; @@ -1139,6 +1254,8 @@ public: } Item* propagate_equal_fields(THD *thd, const Context &ctx, COND_EQUAL *cond) { return this; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_weight_string>(thd, mem_root, this); } }; class Item_func_crc32 :public Item_int_func @@ -1150,6 +1267,8 @@ public: const char *func_name() const { return "crc32"; } void fix_length_and_dec() { max_length=10; } longlong val_int(); + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_crc32>(thd, mem_root, this); } }; class Item_func_uncompressed_length : public Item_int_func @@ -1160,6 +1279,8 @@ public: const char *func_name() const{return "uncompressed_length";} void fix_length_and_dec() { max_length=10; maybe_null= true; } longlong val_int(); + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_uncompressed_length>(thd, mem_root, this); } }; #ifdef HAVE_COMPRESS @@ -1176,6 +1297,8 @@ public: void fix_length_and_dec(){max_length= (args[0]->max_length*120)/100+12;} const char *func_name() const{return "compress";} String *val_str(String *) ZLIB_DEPENDED_FUNCTION + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_compress>(thd, mem_root, this); } }; class Item_func_uncompress: public Item_str_func @@ -1186,6 +1309,8 @@ public: void fix_length_and_dec(){ maybe_null= 1; max_length= MAX_BLOB_WIDTH; } const char *func_name() const{return "uncompress";} String *val_str(String *) ZLIB_DEPENDED_FUNCTION + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_uncompress>(thd, mem_root, this); } }; @@ -1205,6 +1330,8 @@ public: { return mark_unsupported_function(func_name(), "()", arg, VCOL_NON_DETERMINISTIC); } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_uuid>(thd, mem_root, this); } }; @@ -1226,6 +1353,8 @@ public: String *val_str(String *); virtual void print(String *str, enum_query_type query_type); virtual enum Functype functype() const { return DYNCOL_FUNC; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_dyncol_create>(thd, mem_root, this); } }; @@ -1238,6 +1367,8 @@ public: const char *func_name() const{ return "column_add"; } String *val_str(String *); virtual void print(String *str, enum_query_type query_type); + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_dyncol_add>(thd, mem_root, this); } }; class Item_func_dyncol_json: public Item_str_func @@ -1253,6 +1384,8 @@ public: collation.set(&my_charset_bin); decimals= 0; } + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_dyncol_json>(thd, mem_root, this); } }; /* @@ -1293,6 +1426,8 @@ public: bool get_dyn_value(THD *thd, DYNAMIC_COLUMN_VALUE *val, String *tmp); bool get_date(MYSQL_TIME *ltime, ulonglong fuzzydate); void print(String *str, enum_query_type query_type); + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_dyncol_get>(thd, mem_root, this); } }; @@ -1303,6 +1438,8 @@ public: void fix_length_and_dec() { maybe_null= 1; max_length= MAX_BLOB_WIDTH; }; const char *func_name() const{ return "column_list"; } String *val_str(String *); + Item *get_copy(THD *thd, MEM_ROOT *mem_root) + { return get_item_copy<Item_func_dyncol_list>(thd, mem_root, this); } }; #endif /* ITEM_STRFUNC_INCLUDED */ |