summaryrefslogtreecommitdiff
path: root/sql/item_strfunc.h
diff options
context:
space:
mode:
authorunknown <serg@serg.mylan>2004-03-04 23:18:54 +0100
committerunknown <serg@serg.mylan>2004-03-04 23:18:54 +0100
commit1530dd73a036d39358bc1057a471f0162894db2a (patch)
tree9b95ffe2c52174cda86a1c3cbb8ad987be1fcea2 /sql/item_strfunc.h
parentceacb0346d8df3f22a27ff1210411be663c3ea89 (diff)
downloadmariadb-git-1530dd73a036d39358bc1057a471f0162894db2a.tar.gz
UNHEX() function
Diffstat (limited to 'sql/item_strfunc.h')
-rw-r--r--sql/item_strfunc.h35
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;