diff options
author | unknown <serg@serg.mylan> | 2004-03-04 23:18:54 +0100 |
---|---|---|
committer | unknown <serg@serg.mylan> | 2004-03-04 23:18:54 +0100 |
commit | 1530dd73a036d39358bc1057a471f0162894db2a (patch) | |
tree | 9b95ffe2c52174cda86a1c3cbb8ad987be1fcea2 /sql/item_strfunc.h | |
parent | ceacb0346d8df3f22a27ff1210411be663c3ea89 (diff) | |
download | mariadb-git-1530dd73a036d39358bc1057a471f0162894db2a.tar.gz |
UNHEX() function
Diffstat (limited to 'sql/item_strfunc.h')
-rw-r--r-- | sql/item_strfunc.h | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h index 7eb0750711f..5b9c442b5db 100644 --- a/sql/item_strfunc.h +++ b/sql/item_strfunc.h @@ -500,10 +500,10 @@ public: Item_func_conv(Item *a,Item *b,Item *c) :Item_str_func(a,b,c) {} const char *func_name() const { return "conv"; } String *val_str(String *); - void fix_length_and_dec() - { + void fix_length_and_dec() + { collation.set(default_charset()); - decimals=0; max_length=64; + decimals=0; max_length=64; } }; @@ -515,14 +515,29 @@ public: Item_func_hex(Item *a) :Item_str_func(a) {} const char *func_name() const { return "hex"; } String *val_str(String *); - void fix_length_and_dec() - { + void fix_length_and_dec() + { collation.set(default_charset()); decimals=0; max_length=args[0]->max_length*2*collation.collation->mbmaxlen; } }; +class Item_func_unhex :public Item_str_func +{ + String tmp_value; +public: + Item_func_unhex(Item *a) :Item_str_func(a) {} + const char *func_name() const { return "unhex"; } + String *val_str(String *); + void fix_length_and_dec() + { + collation.set(&my_charset_bin); + decimals=0; + max_length=(1+args[0]->max_length)/2; + } +}; + class Item_func_binary :public Item_str_func { @@ -536,10 +551,10 @@ public: tmp->set_charset(&my_charset_bin); return tmp; } - void fix_length_and_dec() - { - collation.set(&my_charset_bin); - max_length=args[0]->max_length; + void fix_length_and_dec() + { + collation.set(&my_charset_bin); + max_length=args[0]->max_length; } void print(String *str); }; @@ -553,7 +568,7 @@ public: String *val_str(String *); const char *func_name() const { return "load_file"; } void fix_length_and_dec() - { + { collation.set(&my_charset_bin, DERIVATION_COERCIBLE); maybe_null=1; max_length=MAX_BLOB_WIDTH; |