summaryrefslogtreecommitdiff
path: root/sql/item_create.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/item_create.cc')
-rw-r--r--sql/item_create.cc805
1 files changed, 427 insertions, 378 deletions
diff --git a/sql/item_create.cc b/sql/item_create.cc
index 8ff78ef1b48..12b795e79a1 100644
--- a/sql/item_create.cc
+++ b/sql/item_create.cc
@@ -37,7 +37,7 @@
class Create_native_func : public Create_func
{
public:
- virtual Item* create(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create(THD *thd, LEX_STRING name, List<Item> *item_list);
/**
Builder method, with no arguments.
@@ -46,7 +46,7 @@ public:
@param item_list The function parameters, none of which are named
@return An item representing the function call
*/
- virtual Item* create_native(THD *thd, LEX_STRING name,
+ virtual Item *create_native(THD *thd, LEX_STRING name,
List<Item> *item_list) = 0;
protected:
@@ -64,14 +64,14 @@ protected:
class Create_func_arg0 : public Create_func
{
public:
- virtual Item* create(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create(THD *thd, LEX_STRING name, List<Item> *item_list);
/**
Builder method, with no arguments.
@param thd The current thread
@return An item representing the function call
*/
- virtual Item* create(THD *thd) = 0;
+ virtual Item *create(THD *thd) = 0;
protected:
/** Constructor. */
@@ -88,7 +88,7 @@ protected:
class Create_func_arg1 : public Create_func
{
public:
- virtual Item* create(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create(THD *thd, LEX_STRING name, List<Item> *item_list);
/**
Builder method, with one argument.
@@ -96,7 +96,7 @@ public:
@param arg1 The first argument of the function
@return An item representing the function call
*/
- virtual Item* create(THD *thd, Item *arg1) = 0;
+ virtual Item *create(THD *thd, Item *arg1) = 0;
protected:
/** Constructor. */
@@ -113,7 +113,7 @@ protected:
class Create_func_arg2 : public Create_func
{
public:
- virtual Item* create(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create(THD *thd, LEX_STRING name, List<Item> *item_list);
/**
Builder method, with two arguments.
@@ -122,7 +122,7 @@ public:
@param arg2 The second argument of the function
@return An item representing the function call
*/
- virtual Item* create(THD *thd, Item *arg1, Item *arg2) = 0;
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2) = 0;
protected:
/** Constructor. */
@@ -139,7 +139,7 @@ protected:
class Create_func_arg3 : public Create_func
{
public:
- virtual Item* create(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create(THD *thd, LEX_STRING name, List<Item> *item_list);
/**
Builder method, with three arguments.
@@ -149,7 +149,7 @@ public:
@param arg3 The third argument of the function
@return An item representing the function call
*/
- virtual Item* create(THD *thd, Item *arg1, Item *arg2, Item *arg3) = 0;
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2, Item *arg3) = 0;
protected:
/** Constructor. */
@@ -166,7 +166,7 @@ protected:
class Create_sp_func : public Create_qfunc
{
public:
- virtual Item* create(THD *thd, LEX_STRING db, LEX_STRING name,
+ virtual Item *create(THD *thd, LEX_STRING db, LEX_STRING name,
bool use_explicit_name, List<Item> *item_list);
static Create_sp_func s_singleton;
@@ -189,7 +189,7 @@ protected:
class Create_func_no_geom : public Create_func
{
public:
- virtual Item* create(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create(THD *thd, LEX_STRING name, List<Item> *item_list);
/** Singleton. */
static Create_func_no_geom s_singleton;
@@ -212,7 +212,7 @@ protected:
class Create_func_abs : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_abs s_singleton;
@@ -225,7 +225,7 @@ protected:
class Create_func_acos : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_acos s_singleton;
@@ -238,7 +238,7 @@ protected:
class Create_func_addtime : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_addtime s_singleton;
@@ -251,7 +251,7 @@ protected:
class Create_func_aes_encrypt : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_aes_encrypt s_singleton;
@@ -264,7 +264,7 @@ protected:
class Create_func_aes_decrypt : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_aes_decrypt s_singleton;
@@ -278,7 +278,7 @@ protected:
class Create_func_area : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_area s_singleton;
@@ -293,7 +293,7 @@ protected:
class Create_func_as_wkb : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_as_wkb s_singleton;
@@ -308,7 +308,7 @@ protected:
class Create_func_as_wkt : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_as_wkt s_singleton;
@@ -322,7 +322,7 @@ protected:
class Create_func_asin : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_asin s_singleton;
@@ -335,7 +335,7 @@ protected:
class Create_func_atan : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_atan s_singleton;
@@ -348,7 +348,7 @@ protected:
class Create_func_benchmark : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_benchmark s_singleton;
@@ -361,7 +361,7 @@ protected:
class Create_func_bin : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_bin s_singleton;
@@ -374,7 +374,7 @@ protected:
class Create_func_bit_count : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_bit_count s_singleton;
@@ -387,7 +387,7 @@ protected:
class Create_func_bit_length : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_bit_length s_singleton;
@@ -400,7 +400,7 @@ protected:
class Create_func_ceiling : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_ceiling s_singleton;
@@ -414,7 +414,7 @@ protected:
class Create_func_centroid : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_centroid s_singleton;
@@ -428,7 +428,7 @@ protected:
class Create_func_char_length : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_char_length s_singleton;
@@ -441,7 +441,7 @@ protected:
class Create_func_coercibility : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_coercibility s_singleton;
@@ -454,7 +454,7 @@ protected:
class Create_func_compress : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_compress s_singleton;
@@ -467,7 +467,7 @@ protected:
class Create_func_concat : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_concat s_singleton;
@@ -480,7 +480,7 @@ protected:
class Create_func_concat_ws : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_concat_ws s_singleton;
@@ -493,7 +493,7 @@ protected:
class Create_func_connection_id : public Create_func_arg0
{
public:
- virtual Item* create(THD *thd);
+ virtual Item *create(THD *thd);
static Create_func_connection_id s_singleton;
@@ -507,7 +507,7 @@ protected:
class Create_func_contains : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_contains s_singleton;
@@ -521,7 +521,7 @@ protected:
class Create_func_conv : public Create_func_arg3
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
static Create_func_conv s_singleton;
@@ -534,7 +534,7 @@ protected:
class Create_func_convert_tz : public Create_func_arg3
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
static Create_func_convert_tz s_singleton;
@@ -547,7 +547,7 @@ protected:
class Create_func_cos : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_cos s_singleton;
@@ -560,7 +560,7 @@ protected:
class Create_func_cot : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_cot s_singleton;
@@ -573,7 +573,7 @@ protected:
class Create_func_crc32 : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_crc32 s_singleton;
@@ -587,7 +587,7 @@ protected:
class Create_func_crosses : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_crosses s_singleton;
@@ -601,7 +601,7 @@ protected:
class Create_func_date_format : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_date_format s_singleton;
@@ -614,7 +614,7 @@ protected:
class Create_func_datediff : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_datediff s_singleton;
@@ -627,7 +627,7 @@ protected:
class Create_func_dayname : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_dayname s_singleton;
@@ -640,7 +640,7 @@ protected:
class Create_func_dayofmonth : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_dayofmonth s_singleton;
@@ -653,7 +653,7 @@ protected:
class Create_func_dayofweek : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_dayofweek s_singleton;
@@ -666,7 +666,7 @@ protected:
class Create_func_dayofyear : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_dayofyear s_singleton;
@@ -679,7 +679,7 @@ protected:
class Create_func_decode : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_decode s_singleton;
@@ -692,7 +692,7 @@ protected:
class Create_func_degrees : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_degrees s_singleton;
@@ -705,7 +705,7 @@ protected:
class Create_func_des_decrypt : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_des_decrypt s_singleton;
@@ -718,7 +718,7 @@ protected:
class Create_func_des_encrypt : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_des_encrypt s_singleton;
@@ -732,7 +732,7 @@ protected:
class Create_func_dimension : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_dimension s_singleton;
@@ -747,7 +747,7 @@ protected:
class Create_func_disjoint : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_disjoint s_singleton;
@@ -761,7 +761,7 @@ protected:
class Create_func_elt : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_elt s_singleton;
@@ -774,7 +774,7 @@ protected:
class Create_func_encode : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_encode s_singleton;
@@ -787,7 +787,7 @@ protected:
class Create_func_encrypt : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_encrypt s_singleton;
@@ -801,7 +801,7 @@ protected:
class Create_func_endpoint : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_endpoint s_singleton;
@@ -816,7 +816,7 @@ protected:
class Create_func_envelope : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_envelope s_singleton;
@@ -831,7 +831,7 @@ protected:
class Create_func_equals : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_equals s_singleton;
@@ -845,7 +845,7 @@ protected:
class Create_func_exp : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_exp s_singleton;
@@ -858,7 +858,7 @@ protected:
class Create_func_export_set : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_export_set s_singleton;
@@ -872,7 +872,7 @@ protected:
class Create_func_exteriorring : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_exteriorring s_singleton;
@@ -886,7 +886,7 @@ protected:
class Create_func_field : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_field s_singleton;
@@ -899,7 +899,7 @@ protected:
class Create_func_find_in_set : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_find_in_set s_singleton;
@@ -912,7 +912,7 @@ protected:
class Create_func_floor : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_floor s_singleton;
@@ -925,7 +925,7 @@ protected:
class Create_func_format : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_format s_singleton;
@@ -938,7 +938,7 @@ protected:
class Create_func_found_rows : public Create_func_arg0
{
public:
- virtual Item* create(THD *thd);
+ virtual Item *create(THD *thd);
static Create_func_found_rows s_singleton;
@@ -951,7 +951,7 @@ protected:
class Create_func_from_days : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_from_days s_singleton;
@@ -964,7 +964,7 @@ protected:
class Create_func_from_unixtime : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_from_unixtime s_singleton;
@@ -978,7 +978,7 @@ protected:
class Create_func_geometry_from_text : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_geometry_from_text s_singleton;
@@ -993,7 +993,7 @@ protected:
class Create_func_geometry_from_wkb : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_geometry_from_wkb s_singleton;
@@ -1008,7 +1008,7 @@ protected:
class Create_func_geometry_type : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_geometry_type s_singleton;
@@ -1023,7 +1023,7 @@ protected:
class Create_func_geometryn : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_geometryn s_singleton;
@@ -1037,7 +1037,7 @@ protected:
class Create_func_get_lock : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_get_lock s_singleton;
@@ -1051,7 +1051,7 @@ protected:
class Create_func_glength : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_glength s_singleton;
@@ -1065,7 +1065,7 @@ protected:
class Create_func_greatest : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_greatest s_singleton;
@@ -1078,7 +1078,7 @@ protected:
class Create_func_hex : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_hex s_singleton;
@@ -1091,7 +1091,7 @@ protected:
class Create_func_ifnull : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_ifnull s_singleton;
@@ -1104,7 +1104,7 @@ protected:
class Create_func_inet_ntoa : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_inet_ntoa s_singleton;
@@ -1117,7 +1117,7 @@ protected:
class Create_func_inet_aton : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_inet_aton s_singleton;
@@ -1130,7 +1130,7 @@ protected:
class Create_func_instr : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_instr s_singleton;
@@ -1144,7 +1144,7 @@ protected:
class Create_func_interiorringn : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_interiorringn s_singleton;
@@ -1159,7 +1159,7 @@ protected:
class Create_func_intersects : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_intersects s_singleton;
@@ -1173,7 +1173,7 @@ protected:
class Create_func_is_free_lock : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_is_free_lock s_singleton;
@@ -1186,7 +1186,7 @@ protected:
class Create_func_is_used_lock : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_is_used_lock s_singleton;
@@ -1200,7 +1200,7 @@ protected:
class Create_func_isclosed : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_isclosed s_singleton;
@@ -1215,7 +1215,7 @@ protected:
class Create_func_isempty : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_isempty s_singleton;
@@ -1229,7 +1229,7 @@ protected:
class Create_func_isnull : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_isnull s_singleton;
@@ -1243,7 +1243,7 @@ protected:
class Create_func_issimple : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_issimple s_singleton;
@@ -1257,7 +1257,7 @@ protected:
class Create_func_last_day : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_last_day s_singleton;
@@ -1270,7 +1270,7 @@ protected:
class Create_func_last_insert_id : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_last_insert_id s_singleton;
@@ -1283,7 +1283,7 @@ protected:
class Create_func_lcase : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_lcase s_singleton;
@@ -1296,7 +1296,7 @@ protected:
class Create_func_least : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_least s_singleton;
@@ -1309,7 +1309,7 @@ protected:
class Create_func_length : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_length s_singleton;
@@ -1322,7 +1322,7 @@ protected:
class Create_func_ln : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_ln s_singleton;
@@ -1335,7 +1335,7 @@ protected:
class Create_func_load_file : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_load_file s_singleton;
@@ -1348,7 +1348,7 @@ protected:
class Create_func_locate : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_locate s_singleton;
@@ -1361,7 +1361,7 @@ protected:
class Create_func_log : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_log s_singleton;
@@ -1374,7 +1374,7 @@ protected:
class Create_func_log10 : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_log10 s_singleton;
@@ -1387,7 +1387,7 @@ protected:
class Create_func_log2 : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_log2 s_singleton;
@@ -1400,7 +1400,7 @@ protected:
class Create_func_lpad : public Create_func_arg3
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
static Create_func_lpad s_singleton;
@@ -1413,7 +1413,7 @@ protected:
class Create_func_ltrim : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_ltrim s_singleton;
@@ -1426,7 +1426,7 @@ protected:
class Create_func_makedate : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_makedate s_singleton;
@@ -1439,7 +1439,7 @@ protected:
class Create_func_maketime : public Create_func_arg3
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
static Create_func_maketime s_singleton;
@@ -1452,7 +1452,7 @@ protected:
class Create_func_make_set : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_make_set s_singleton;
@@ -1465,7 +1465,7 @@ protected:
class Create_func_master_pos_wait : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_master_pos_wait s_singleton;
@@ -1478,7 +1478,7 @@ protected:
class Create_func_md5 : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_md5 s_singleton;
@@ -1491,7 +1491,7 @@ protected:
class Create_func_monthname : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_monthname s_singleton;
@@ -1504,7 +1504,7 @@ protected:
class Create_func_name_const : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_name_const s_singleton;
@@ -1517,7 +1517,7 @@ protected:
class Create_func_nullif : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_nullif s_singleton;
@@ -1531,7 +1531,7 @@ protected:
class Create_func_numgeometries : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_numgeometries s_singleton;
@@ -1546,7 +1546,7 @@ protected:
class Create_func_numinteriorring : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_numinteriorring s_singleton;
@@ -1561,7 +1561,7 @@ protected:
class Create_func_numpoints : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_numpoints s_singleton;
@@ -1575,7 +1575,7 @@ protected:
class Create_func_oct : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_oct s_singleton;
@@ -1588,7 +1588,7 @@ protected:
class Create_func_ord : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_ord s_singleton;
@@ -1602,7 +1602,7 @@ protected:
class Create_func_overlaps : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_overlaps s_singleton;
@@ -1616,7 +1616,7 @@ protected:
class Create_func_period_add : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_period_add s_singleton;
@@ -1629,7 +1629,7 @@ protected:
class Create_func_period_diff : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_period_diff s_singleton;
@@ -1642,7 +1642,7 @@ protected:
class Create_func_pi : public Create_func_arg0
{
public:
- virtual Item* create(THD *thd);
+ virtual Item *create(THD *thd);
static Create_func_pi s_singleton;
@@ -1656,7 +1656,7 @@ protected:
class Create_func_pointn : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_pointn s_singleton;
@@ -1670,7 +1670,7 @@ protected:
class Create_func_pow : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_pow s_singleton;
@@ -1683,7 +1683,7 @@ protected:
class Create_func_quote : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_quote s_singleton;
@@ -1696,7 +1696,7 @@ protected:
class Create_func_radians : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_radians s_singleton;
@@ -1709,7 +1709,7 @@ protected:
class Create_func_rand : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_rand s_singleton;
@@ -1722,7 +1722,7 @@ protected:
class Create_func_release_lock : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_release_lock s_singleton;
@@ -1735,7 +1735,7 @@ protected:
class Create_func_reverse : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_reverse s_singleton;
@@ -1748,7 +1748,7 @@ protected:
class Create_func_round : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_round s_singleton;
@@ -1761,7 +1761,7 @@ protected:
class Create_func_row_count : public Create_func_arg0
{
public:
- virtual Item* create(THD *thd);
+ virtual Item *create(THD *thd);
static Create_func_row_count s_singleton;
@@ -1774,7 +1774,7 @@ protected:
class Create_func_rpad : public Create_func_arg3
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
static Create_func_rpad s_singleton;
@@ -1787,7 +1787,7 @@ protected:
class Create_func_rtrim : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_rtrim s_singleton;
@@ -1800,7 +1800,7 @@ protected:
class Create_func_sec_to_time : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_sec_to_time s_singleton;
@@ -1813,7 +1813,7 @@ protected:
class Create_func_sha : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_sha s_singleton;
@@ -1826,7 +1826,7 @@ protected:
class Create_func_sign : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_sign s_singleton;
@@ -1839,7 +1839,7 @@ protected:
class Create_func_sin : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_sin s_singleton;
@@ -1852,7 +1852,7 @@ protected:
class Create_func_sleep : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_sleep s_singleton;
@@ -1865,7 +1865,7 @@ protected:
class Create_func_soundex : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_soundex s_singleton;
@@ -1878,7 +1878,7 @@ protected:
class Create_func_space : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_space s_singleton;
@@ -1891,7 +1891,7 @@ protected:
class Create_func_sqrt : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_sqrt s_singleton;
@@ -1905,7 +1905,7 @@ protected:
class Create_func_srid : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_srid s_singleton;
@@ -1920,7 +1920,7 @@ protected:
class Create_func_startpoint : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_startpoint s_singleton;
@@ -1934,7 +1934,7 @@ protected:
class Create_func_str_to_date : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_str_to_date s_singleton;
@@ -1947,7 +1947,7 @@ protected:
class Create_func_strcmp : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_strcmp s_singleton;
@@ -1960,7 +1960,7 @@ protected:
class Create_func_substr_index : public Create_func_arg3
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
static Create_func_substr_index s_singleton;
@@ -1973,7 +1973,7 @@ protected:
class Create_func_subtime : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_subtime s_singleton;
@@ -1986,7 +1986,7 @@ protected:
class Create_func_tan : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_tan s_singleton;
@@ -1999,7 +1999,7 @@ protected:
class Create_func_time_format : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_time_format s_singleton;
@@ -2012,7 +2012,7 @@ protected:
class Create_func_time_to_sec : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_time_to_sec s_singleton;
@@ -2025,7 +2025,7 @@ protected:
class Create_func_timediff : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_timediff s_singleton;
@@ -2038,7 +2038,7 @@ protected:
class Create_func_to_days : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_to_days s_singleton;
@@ -2052,7 +2052,7 @@ protected:
class Create_func_touches : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_touches s_singleton;
@@ -2066,7 +2066,7 @@ protected:
class Create_func_ucase : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_ucase s_singleton;
@@ -2079,7 +2079,7 @@ protected:
class Create_func_uncompress : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_uncompress s_singleton;
@@ -2092,7 +2092,7 @@ protected:
class Create_func_uncompressed_length : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_uncompressed_length s_singleton;
@@ -2105,7 +2105,7 @@ protected:
class Create_func_unhex : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_unhex s_singleton;
@@ -2118,7 +2118,7 @@ protected:
class Create_func_unix_timestamp : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_unix_timestamp s_singleton;
@@ -2131,7 +2131,7 @@ protected:
class Create_func_uuid : public Create_func_arg0
{
public:
- virtual Item* create(THD *thd);
+ virtual Item *create(THD *thd);
static Create_func_uuid s_singleton;
@@ -2141,10 +2141,23 @@ protected:
};
+class Create_func_uuid_short : public Create_func_arg0
+{
+public:
+ virtual Item *create(THD *thd);
+
+ static Create_func_uuid_short s_singleton;
+
+protected:
+ Create_func_uuid_short() {}
+ virtual ~Create_func_uuid_short() {}
+};
+
+
class Create_func_version : public Create_func_arg0
{
public:
- virtual Item* create(THD *thd);
+ virtual Item *create(THD *thd);
static Create_func_version s_singleton;
@@ -2157,7 +2170,7 @@ protected:
class Create_func_weekday : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_weekday s_singleton;
@@ -2170,7 +2183,7 @@ protected:
class Create_func_weekofyear : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_weekofyear s_singleton;
@@ -2184,7 +2197,7 @@ protected:
class Create_func_within : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_within s_singleton;
@@ -2199,7 +2212,7 @@ protected:
class Create_func_x : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_x s_singleton;
@@ -2213,7 +2226,7 @@ protected:
class Create_func_xml_extractvalue : public Create_func_arg2
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2);
static Create_func_xml_extractvalue s_singleton;
@@ -2226,7 +2239,7 @@ protected:
class Create_func_xml_update : public Create_func_arg3
{
public:
- virtual Item* create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
+ virtual Item *create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
static Create_func_xml_update s_singleton;
@@ -2240,7 +2253,7 @@ protected:
class Create_func_y : public Create_func_arg1
{
public:
- virtual Item* create(THD *thd, Item *arg1);
+ virtual Item *create(THD *thd, Item *arg1);
static Create_func_y s_singleton;
@@ -2254,7 +2267,7 @@ protected:
class Create_func_year_week : public Create_native_func
{
public:
- virtual Item* create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
+ virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
static Create_func_year_week s_singleton;
@@ -2313,7 +2326,7 @@ Item*
Create_qfunc::create(THD *thd, LEX_STRING name, List<Item> *item_list)
{
LEX_STRING db;
- if (thd->copy_db_to(&db.str, &db.length))
+ if (thd->lex->copy_db_to(&db.str, &db.length))
return NULL;
return create(thd, db, name, false, item_list);
@@ -2341,7 +2354,7 @@ Create_udf_func::create(THD *thd, udf_func *udf, List<Item> *item_list)
if (item_list != NULL)
arg_count= item_list->elements;
- thd->lex->binlog_row_based_if_mixed= TRUE;
+ thd->lex->set_stmt_unsafe();
DBUG_ASSERT( (udf->type == UDFTYPE_FUNCTION)
|| (udf->type == UDFTYPE_AGGREGATE));
@@ -2424,6 +2437,7 @@ Create_udf_func::create(THD *thd, udf_func *udf, List<Item> *item_list)
my_error(ER_NOT_SUPPORTED_YET, MYF(0), "UDF return type");
}
}
+ thd->lex->safe_to_cache_query= 0;
return func;
}
#endif
@@ -3325,6 +3339,7 @@ Create_func_found_rows Create_func_found_rows::s_singleton;
Item*
Create_func_found_rows::create(THD *thd)
{
+ thd->lex->set_stmt_unsafe();
thd->lex->safe_to_cache_query= 0;
return new (thd->mem_root) Item_func_found_rows();
}
@@ -3916,6 +3931,7 @@ Create_func_master_pos_wait Create_func_master_pos_wait::s_singleton;
Item*
Create_func_master_pos_wait::create_native(THD *thd, LEX_STRING name,
List<Item> *item_list)
+
{
Item *func= NULL;
int arg_count= 0;
@@ -4219,6 +4235,7 @@ Create_func_row_count Create_func_row_count::s_singleton;
Item*
Create_func_row_count::create(THD *thd)
{
+ thd->lex->set_stmt_unsafe();
thd->lex->safe_to_cache_query= 0;
return new (thd->mem_root) Item_func_row_count();
}
@@ -4527,11 +4544,23 @@ Create_func_uuid Create_func_uuid::s_singleton;
Item*
Create_func_uuid::create(THD *thd)
{
- thd->lex->binlog_row_based_if_mixed= TRUE;
+ thd->lex->set_stmt_unsafe();
+ thd->lex->safe_to_cache_query= 0;
return new (thd->mem_root) Item_func_uuid();
}
+Create_func_uuid_short Create_func_uuid_short::s_singleton;
+
+Item*
+Create_func_uuid_short::create(THD *thd)
+{
+ thd->lex->set_stmt_unsafe();
+ thd->lex->safe_to_cache_query= 0;
+ return new (thd->mem_root) Item_func_uuid_short();
+}
+
+
Create_func_version Create_func_version::s_singleton;
Item*
@@ -4681,215 +4710,217 @@ struct Native_func_registry
static Native_func_registry func_array[] =
{
- { C_STRING_WITH_LEN("ABS"), BUILDER(Create_func_abs)},
- { C_STRING_WITH_LEN("ACOS"), BUILDER(Create_func_acos)},
- { C_STRING_WITH_LEN("ADDTIME"), BUILDER(Create_func_addtime)},
- { C_STRING_WITH_LEN("AES_DECRYPT"), BUILDER(Create_func_aes_decrypt)},
- { C_STRING_WITH_LEN("AES_ENCRYPT"), BUILDER(Create_func_aes_encrypt)},
- { C_STRING_WITH_LEN("AREA"), GEOM_BUILDER(Create_func_area)},
- { C_STRING_WITH_LEN("ASBINARY"), GEOM_BUILDER(Create_func_as_wkb)},
- { C_STRING_WITH_LEN("ASIN"), BUILDER(Create_func_asin)},
- { C_STRING_WITH_LEN("ASTEXT"), GEOM_BUILDER(Create_func_as_wkt)},
- { C_STRING_WITH_LEN("ASWKB"), GEOM_BUILDER(Create_func_as_wkb)},
- { C_STRING_WITH_LEN("ASWKT"), GEOM_BUILDER(Create_func_as_wkt)},
- { C_STRING_WITH_LEN("ATAN"), BUILDER(Create_func_atan)},
- { C_STRING_WITH_LEN("ATAN2"), BUILDER(Create_func_atan)},
- { C_STRING_WITH_LEN("BENCHMARK"), BUILDER(Create_func_benchmark)},
- { C_STRING_WITH_LEN("BIN"), BUILDER(Create_func_bin)},
- { C_STRING_WITH_LEN("BIT_COUNT"), BUILDER(Create_func_bit_count)},
- { C_STRING_WITH_LEN("BIT_LENGTH"), BUILDER(Create_func_bit_length)},
- { C_STRING_WITH_LEN("CEIL"), BUILDER(Create_func_ceiling)},
- { C_STRING_WITH_LEN("CEILING"), BUILDER(Create_func_ceiling)},
- { C_STRING_WITH_LEN("CENTROID"), GEOM_BUILDER(Create_func_centroid)},
- { C_STRING_WITH_LEN("CHARACTER_LENGTH"), BUILDER(Create_func_char_length)},
- { C_STRING_WITH_LEN("CHAR_LENGTH"), BUILDER(Create_func_char_length)},
- { C_STRING_WITH_LEN("COERCIBILITY"), BUILDER(Create_func_coercibility)},
- { C_STRING_WITH_LEN("COMPRESS"), BUILDER(Create_func_compress)},
- { C_STRING_WITH_LEN("CONCAT"), BUILDER(Create_func_concat)},
- { C_STRING_WITH_LEN("CONCAT_WS"), BUILDER(Create_func_concat_ws)},
- { C_STRING_WITH_LEN("CONNECTION_ID"), BUILDER(Create_func_connection_id)},
- { C_STRING_WITH_LEN("CONV"), BUILDER(Create_func_conv)},
- { C_STRING_WITH_LEN("CONVERT_TZ"), BUILDER(Create_func_convert_tz)},
- { C_STRING_WITH_LEN("COS"), BUILDER(Create_func_cos)},
- { C_STRING_WITH_LEN("COT"), BUILDER(Create_func_cot)},
- { C_STRING_WITH_LEN("CRC32"), BUILDER(Create_func_crc32)},
- { C_STRING_WITH_LEN("CROSSES"), GEOM_BUILDER(Create_func_crosses)},
- { C_STRING_WITH_LEN("DATEDIFF"), BUILDER(Create_func_datediff)},
- { C_STRING_WITH_LEN("DATE_FORMAT"), BUILDER(Create_func_date_format)},
- { C_STRING_WITH_LEN("DAYNAME"), BUILDER(Create_func_dayname)},
- { C_STRING_WITH_LEN("DAYOFMONTH"), BUILDER(Create_func_dayofmonth)},
- { C_STRING_WITH_LEN("DAYOFWEEK"), BUILDER(Create_func_dayofweek)},
- { C_STRING_WITH_LEN("DAYOFYEAR"), BUILDER(Create_func_dayofyear)},
- { C_STRING_WITH_LEN("DECODE"), BUILDER(Create_func_decode)},
- { C_STRING_WITH_LEN("DEGREES"), BUILDER(Create_func_degrees)},
- { C_STRING_WITH_LEN("DES_DECRYPT"), BUILDER(Create_func_des_decrypt)},
- { C_STRING_WITH_LEN("DES_ENCRYPT"), BUILDER(Create_func_des_encrypt)},
- { C_STRING_WITH_LEN("DIMENSION"), GEOM_BUILDER(Create_func_dimension)},
- { C_STRING_WITH_LEN("DISJOINT"), GEOM_BUILDER(Create_func_disjoint)},
- { C_STRING_WITH_LEN("ELT"), BUILDER(Create_func_elt)},
- { C_STRING_WITH_LEN("ENCODE"), BUILDER(Create_func_encode)},
- { C_STRING_WITH_LEN("ENCRYPT"), BUILDER(Create_func_encrypt)},
- { C_STRING_WITH_LEN("ENDPOINT"), GEOM_BUILDER(Create_func_endpoint)},
- { C_STRING_WITH_LEN("ENVELOPE"), GEOM_BUILDER(Create_func_envelope)},
- { C_STRING_WITH_LEN("EQUALS"), GEOM_BUILDER(Create_func_equals)},
- { C_STRING_WITH_LEN("EXP"), BUILDER(Create_func_exp)},
- { C_STRING_WITH_LEN("EXPORT_SET"), BUILDER(Create_func_export_set)},
- { C_STRING_WITH_LEN("EXTERIORRING"), GEOM_BUILDER(Create_func_exteriorring)},
- { C_STRING_WITH_LEN("EXTRACTVALUE"), BUILDER(Create_func_xml_extractvalue)},
- { C_STRING_WITH_LEN("FIELD"), BUILDER(Create_func_field)},
- { C_STRING_WITH_LEN("FIND_IN_SET"), BUILDER(Create_func_find_in_set)},
- { C_STRING_WITH_LEN("FLOOR"), BUILDER(Create_func_floor)},
- { C_STRING_WITH_LEN("FORMAT"), BUILDER(Create_func_format)},
- { C_STRING_WITH_LEN("FOUND_ROWS"), BUILDER(Create_func_found_rows)},
- { C_STRING_WITH_LEN("FROM_DAYS"), BUILDER(Create_func_from_days)},
- { C_STRING_WITH_LEN("FROM_UNIXTIME"), BUILDER(Create_func_from_unixtime)},
- { C_STRING_WITH_LEN("GEOMCOLLFROMTEXT"), GEOM_BUILDER(Create_func_geometry_from_text)},
- { C_STRING_WITH_LEN("GEOMCOLLFROMWKB"), GEOM_BUILDER(Create_func_geometry_from_wkb)},
- { C_STRING_WITH_LEN("GEOMETRYCOLLECTIONFROMTEXT"), GEOM_BUILDER(Create_func_geometry_from_text)},
- { C_STRING_WITH_LEN("GEOMETRYCOLLECTIONFROMWKB"), GEOM_BUILDER(Create_func_geometry_from_wkb)},
- { C_STRING_WITH_LEN("GEOMETRYFROMTEXT"), GEOM_BUILDER(Create_func_geometry_from_text)},
- { C_STRING_WITH_LEN("GEOMETRYFROMWKB"), GEOM_BUILDER(Create_func_geometry_from_wkb)},
- { C_STRING_WITH_LEN("GEOMETRYN"), GEOM_BUILDER(Create_func_geometryn)},
- { C_STRING_WITH_LEN("GEOMETRYTYPE"), GEOM_BUILDER(Create_func_geometry_type)},
- { C_STRING_WITH_LEN("GEOMFROMTEXT"), GEOM_BUILDER(Create_func_geometry_from_text)},
- { C_STRING_WITH_LEN("GEOMFROMWKB"), GEOM_BUILDER(Create_func_geometry_from_wkb)},
- { C_STRING_WITH_LEN("GET_LOCK"), BUILDER(Create_func_get_lock)},
- { C_STRING_WITH_LEN("GLENGTH"), GEOM_BUILDER(Create_func_glength)},
- { C_STRING_WITH_LEN("GREATEST"), BUILDER(Create_func_greatest)},
- { C_STRING_WITH_LEN("HEX"), BUILDER(Create_func_hex)},
- { C_STRING_WITH_LEN("IFNULL"), BUILDER(Create_func_ifnull)},
- { C_STRING_WITH_LEN("INET_ATON"), BUILDER(Create_func_inet_aton)},
- { C_STRING_WITH_LEN("INET_NTOA"), BUILDER(Create_func_inet_ntoa)},
- { C_STRING_WITH_LEN("INSTR"), BUILDER(Create_func_instr)},
- { C_STRING_WITH_LEN("INTERIORRINGN"), GEOM_BUILDER(Create_func_interiorringn)},
- { C_STRING_WITH_LEN("INTERSECTS"), GEOM_BUILDER(Create_func_intersects)},
- { C_STRING_WITH_LEN("ISCLOSED"), GEOM_BUILDER(Create_func_isclosed)},
- { C_STRING_WITH_LEN("ISEMPTY"), GEOM_BUILDER(Create_func_isempty)},
- { C_STRING_WITH_LEN("ISNULL"), BUILDER(Create_func_isnull)},
- { C_STRING_WITH_LEN("ISSIMPLE"), GEOM_BUILDER(Create_func_issimple)},
- { C_STRING_WITH_LEN("IS_FREE_LOCK"), BUILDER(Create_func_is_free_lock)},
- { C_STRING_WITH_LEN("IS_USED_LOCK"), BUILDER(Create_func_is_used_lock)},
- { C_STRING_WITH_LEN("LAST_DAY"), BUILDER(Create_func_last_day)},
- { C_STRING_WITH_LEN("LAST_INSERT_ID"), BUILDER(Create_func_last_insert_id)},
- { C_STRING_WITH_LEN("LCASE"), BUILDER(Create_func_lcase)},
- { C_STRING_WITH_LEN("LEAST"), BUILDER(Create_func_least)},
- { C_STRING_WITH_LEN("LENGTH"), BUILDER(Create_func_length)},
- { C_STRING_WITH_LEN("LINEFROMTEXT"), GEOM_BUILDER(Create_func_geometry_from_text)},
- { C_STRING_WITH_LEN("LINEFROMWKB"), GEOM_BUILDER(Create_func_geometry_from_wkb)},
- { C_STRING_WITH_LEN("LINESTRINGFROMTEXT"), GEOM_BUILDER(Create_func_geometry_from_text)},
- { C_STRING_WITH_LEN("LINESTRINGFROMWKB"), GEOM_BUILDER(Create_func_geometry_from_wkb)},
- { C_STRING_WITH_LEN("LN"), BUILDER(Create_func_ln)},
- { C_STRING_WITH_LEN("LOAD_FILE"), BUILDER(Create_func_load_file)},
- { C_STRING_WITH_LEN("LOCATE"), BUILDER(Create_func_locate)},
- { C_STRING_WITH_LEN("LOG"), BUILDER(Create_func_log)},
- { C_STRING_WITH_LEN("LOG10"), BUILDER(Create_func_log10)},
- { C_STRING_WITH_LEN("LOG2"), BUILDER(Create_func_log2)},
- { C_STRING_WITH_LEN("LOWER"), BUILDER(Create_func_lcase)},
- { C_STRING_WITH_LEN("LPAD"), BUILDER(Create_func_lpad)},
- { C_STRING_WITH_LEN("LTRIM"), BUILDER(Create_func_ltrim)},
- { C_STRING_WITH_LEN("MAKEDATE"), BUILDER(Create_func_makedate)},
- { C_STRING_WITH_LEN("MAKETIME"), BUILDER(Create_func_maketime)},
- { C_STRING_WITH_LEN("MAKE_SET"), BUILDER(Create_func_make_set)},
- { C_STRING_WITH_LEN("MASTER_POS_WAIT"), BUILDER(Create_func_master_pos_wait)},
- { C_STRING_WITH_LEN("MBRCONTAINS"), GEOM_BUILDER(Create_func_contains)},
- { C_STRING_WITH_LEN("MBRDISJOINT"), GEOM_BUILDER(Create_func_disjoint)},
- { C_STRING_WITH_LEN("MBREQUAL"), GEOM_BUILDER(Create_func_equals)},
- { C_STRING_WITH_LEN("MBRINTERSECTS"), GEOM_BUILDER(Create_func_intersects)},
- { C_STRING_WITH_LEN("MBROVERLAPS"), GEOM_BUILDER(Create_func_overlaps)},
- { C_STRING_WITH_LEN("MBRTOUCHES"), GEOM_BUILDER(Create_func_touches)},
- { C_STRING_WITH_LEN("MBRWITHIN"), GEOM_BUILDER(Create_func_within)},
- { C_STRING_WITH_LEN("MD5"), BUILDER(Create_func_md5)},
- { C_STRING_WITH_LEN("MLINEFROMTEXT"), GEOM_BUILDER(Create_func_geometry_from_text)},
- { C_STRING_WITH_LEN("MLINEFROMWKB"), GEOM_BUILDER(Create_func_geometry_from_wkb)},
- { C_STRING_WITH_LEN("MONTHNAME"), BUILDER(Create_func_monthname)},
- { C_STRING_WITH_LEN("MPOINTFROMTEXT"), GEOM_BUILDER(Create_func_geometry_from_text)},
- { C_STRING_WITH_LEN("MPOINTFROMWKB"), GEOM_BUILDER(Create_func_geometry_from_wkb)},
- { C_STRING_WITH_LEN("MPOLYFROMTEXT"), GEOM_BUILDER(Create_func_geometry_from_text)},
- { C_STRING_WITH_LEN("MPOLYFROMWKB"), GEOM_BUILDER(Create_func_geometry_from_wkb)},
- { C_STRING_WITH_LEN("MULTILINESTRINGFROMTEXT"), GEOM_BUILDER(Create_func_geometry_from_text)},
- { C_STRING_WITH_LEN("MULTILINESTRINGFROMWKB"), GEOM_BUILDER(Create_func_geometry_from_wkb)},
- { C_STRING_WITH_LEN("MULTIPOINTFROMTEXT"), GEOM_BUILDER(Create_func_geometry_from_text)},
- { C_STRING_WITH_LEN("MULTIPOINTFROMWKB"), GEOM_BUILDER(Create_func_geometry_from_wkb)},
- { C_STRING_WITH_LEN("MULTIPOLYGONFROMTEXT"), GEOM_BUILDER(Create_func_geometry_from_text)},
- { C_STRING_WITH_LEN("MULTIPOLYGONFROMWKB"), GEOM_BUILDER(Create_func_geometry_from_wkb)},
- { C_STRING_WITH_LEN("NAME_CONST"), BUILDER(Create_func_name_const)},
- { C_STRING_WITH_LEN("NULLIF"), BUILDER(Create_func_nullif)},
- { C_STRING_WITH_LEN("NUMGEOMETRIES"), GEOM_BUILDER(Create_func_numgeometries)},
- { C_STRING_WITH_LEN("NUMINTERIORRINGS"), GEOM_BUILDER(Create_func_numinteriorring)},
- { C_STRING_WITH_LEN("NUMPOINTS"), GEOM_BUILDER(Create_func_numpoints)},
- { C_STRING_WITH_LEN("OCT"), BUILDER(Create_func_oct)},
- { C_STRING_WITH_LEN("OCTET_LENGTH"), BUILDER(Create_func_length)},
- { C_STRING_WITH_LEN("ORD"), BUILDER(Create_func_ord)},
- { C_STRING_WITH_LEN("OVERLAPS"), GEOM_BUILDER(Create_func_overlaps)},
- { C_STRING_WITH_LEN("PERIOD_ADD"), BUILDER(Create_func_period_add)},
- { C_STRING_WITH_LEN("PERIOD_DIFF"), BUILDER(Create_func_period_diff)},
- { C_STRING_WITH_LEN("PI"), BUILDER(Create_func_pi)},
- { C_STRING_WITH_LEN("POINTFROMTEXT"), GEOM_BUILDER(Create_func_geometry_from_text)},
- { C_STRING_WITH_LEN("POINTFROMWKB"), GEOM_BUILDER(Create_func_geometry_from_wkb)},
- { C_STRING_WITH_LEN("POINTN"), GEOM_BUILDER(Create_func_pointn)},
- { C_STRING_WITH_LEN("POLYFROMTEXT"), GEOM_BUILDER(Create_func_geometry_from_text)},
- { C_STRING_WITH_LEN("POLYFROMWKB"), GEOM_BUILDER(Create_func_geometry_from_wkb)},
- { C_STRING_WITH_LEN("POLYGONFROMTEXT"), GEOM_BUILDER(Create_func_geometry_from_text)},
- { C_STRING_WITH_LEN("POLYGONFROMWKB"), GEOM_BUILDER(Create_func_geometry_from_wkb)},
- { C_STRING_WITH_LEN("POW"), BUILDER(Create_func_pow)},
- { C_STRING_WITH_LEN("POWER"), BUILDER(Create_func_pow)},
- { C_STRING_WITH_LEN("QUOTE"), BUILDER(Create_func_quote)},
- { C_STRING_WITH_LEN("RADIANS"), BUILDER(Create_func_radians)},
- { C_STRING_WITH_LEN("RAND"), BUILDER(Create_func_rand)},
- { C_STRING_WITH_LEN("RELEASE_LOCK"), BUILDER(Create_func_release_lock)},
- { C_STRING_WITH_LEN("REVERSE"), BUILDER(Create_func_reverse)},
- { C_STRING_WITH_LEN("ROUND"), BUILDER(Create_func_round)},
- { C_STRING_WITH_LEN("ROW_COUNT"), BUILDER(Create_func_row_count)},
- { C_STRING_WITH_LEN("RPAD"), BUILDER(Create_func_rpad)},
- { C_STRING_WITH_LEN("RTRIM"), BUILDER(Create_func_rtrim)},
- { C_STRING_WITH_LEN("SEC_TO_TIME"), BUILDER(Create_func_sec_to_time)},
- { C_STRING_WITH_LEN("SHA"), BUILDER(Create_func_sha)},
- { C_STRING_WITH_LEN("SHA1"), BUILDER(Create_func_sha)},
- { C_STRING_WITH_LEN("SIGN"), BUILDER(Create_func_sign)},
- { C_STRING_WITH_LEN("SIN"), BUILDER(Create_func_sin)},
- { C_STRING_WITH_LEN("SLEEP"), BUILDER(Create_func_sleep)},
- { C_STRING_WITH_LEN("SOUNDEX"), BUILDER(Create_func_soundex)},
- { C_STRING_WITH_LEN("SPACE"), BUILDER(Create_func_space)},
- { C_STRING_WITH_LEN("SQRT"), BUILDER(Create_func_sqrt)},
- { C_STRING_WITH_LEN("SRID"), GEOM_BUILDER(Create_func_srid)},
- { C_STRING_WITH_LEN("STARTPOINT"), GEOM_BUILDER(Create_func_startpoint)},
- { C_STRING_WITH_LEN("STRCMP"), BUILDER(Create_func_strcmp)},
- { C_STRING_WITH_LEN("STR_TO_DATE"), BUILDER(Create_func_str_to_date)},
- { C_STRING_WITH_LEN("SUBSTRING_INDEX"), BUILDER(Create_func_substr_index)},
- { C_STRING_WITH_LEN("SUBTIME"), BUILDER(Create_func_subtime)},
- { C_STRING_WITH_LEN("TAN"), BUILDER(Create_func_tan)},
- { C_STRING_WITH_LEN("TIMEDIFF"), BUILDER(Create_func_timediff)},
- { C_STRING_WITH_LEN("TIME_FORMAT"), BUILDER(Create_func_time_format)},
- { C_STRING_WITH_LEN("TIME_TO_SEC"), BUILDER(Create_func_time_to_sec)},
- { C_STRING_WITH_LEN("TOUCHES"), GEOM_BUILDER(Create_func_touches)},
- { C_STRING_WITH_LEN("TO_DAYS"), BUILDER(Create_func_to_days)},
- { C_STRING_WITH_LEN("UCASE"), BUILDER(Create_func_ucase)},
- { C_STRING_WITH_LEN("UNCOMPRESS"), BUILDER(Create_func_uncompress)},
- { C_STRING_WITH_LEN("UNCOMPRESSED_LENGTH"), BUILDER(Create_func_uncompressed_length)},
- { C_STRING_WITH_LEN("UNHEX"), BUILDER(Create_func_unhex)},
- { C_STRING_WITH_LEN("UNIX_TIMESTAMP"), BUILDER(Create_func_unix_timestamp)},
- { C_STRING_WITH_LEN("UPDATEXML"), BUILDER(Create_func_xml_update)},
- { C_STRING_WITH_LEN("UPPER"), BUILDER(Create_func_ucase)},
- { C_STRING_WITH_LEN("UUID"), BUILDER(Create_func_uuid)},
- { C_STRING_WITH_LEN("VERSION"), BUILDER(Create_func_version)},
- { C_STRING_WITH_LEN("WEEKDAY"), BUILDER(Create_func_weekday)},
- { C_STRING_WITH_LEN("WEEKOFYEAR"), BUILDER(Create_func_weekofyear)},
- { C_STRING_WITH_LEN("WITHIN"), GEOM_BUILDER(Create_func_within)},
- { C_STRING_WITH_LEN("X"), GEOM_BUILDER(Create_func_x)},
- { C_STRING_WITH_LEN("Y"), GEOM_BUILDER(Create_func_y)},
- { C_STRING_WITH_LEN("YEARWEEK"), BUILDER(Create_func_year_week)},
+ { { C_STRING_WITH_LEN("ABS") }, BUILDER(Create_func_abs)},
+ { { C_STRING_WITH_LEN("ACOS") }, BUILDER(Create_func_acos)},
+ { { C_STRING_WITH_LEN("ADDTIME") }, BUILDER(Create_func_addtime)},
+ { { C_STRING_WITH_LEN("AES_DECRYPT") }, BUILDER(Create_func_aes_decrypt)},
+ { { C_STRING_WITH_LEN("AES_ENCRYPT") }, BUILDER(Create_func_aes_encrypt)},
+ { { C_STRING_WITH_LEN("AREA") }, GEOM_BUILDER(Create_func_area)},
+ { { C_STRING_WITH_LEN("ASBINARY") }, GEOM_BUILDER(Create_func_as_wkb)},
+ { { C_STRING_WITH_LEN("ASIN") }, BUILDER(Create_func_asin)},
+ { { C_STRING_WITH_LEN("ASTEXT") }, GEOM_BUILDER(Create_func_as_wkt)},
+ { { C_STRING_WITH_LEN("ASWKB") }, GEOM_BUILDER(Create_func_as_wkb)},
+ { { C_STRING_WITH_LEN("ASWKT") }, GEOM_BUILDER(Create_func_as_wkt)},
+ { { C_STRING_WITH_LEN("ATAN") }, BUILDER(Create_func_atan)},
+ { { C_STRING_WITH_LEN("ATAN2") }, BUILDER(Create_func_atan)},
+ { { C_STRING_WITH_LEN("BENCHMARK") }, BUILDER(Create_func_benchmark)},
+ { { C_STRING_WITH_LEN("BIN") }, BUILDER(Create_func_bin)},
+ { { C_STRING_WITH_LEN("BIT_COUNT") }, BUILDER(Create_func_bit_count)},
+ { { C_STRING_WITH_LEN("BIT_LENGTH") }, BUILDER(Create_func_bit_length)},
+ { { C_STRING_WITH_LEN("CEIL") }, BUILDER(Create_func_ceiling)},
+ { { C_STRING_WITH_LEN("CEILING") }, BUILDER(Create_func_ceiling)},
+ { { C_STRING_WITH_LEN("CENTROID") }, GEOM_BUILDER(Create_func_centroid)},
+ { { C_STRING_WITH_LEN("CHARACTER_LENGTH") }, BUILDER(Create_func_char_length)},
+ { { C_STRING_WITH_LEN("CHAR_LENGTH") }, BUILDER(Create_func_char_length)},
+ { { C_STRING_WITH_LEN("COERCIBILITY") }, BUILDER(Create_func_coercibility)},
+ { { C_STRING_WITH_LEN("COMPRESS") }, BUILDER(Create_func_compress)},
+ { { C_STRING_WITH_LEN("CONCAT") }, BUILDER(Create_func_concat)},
+ { { C_STRING_WITH_LEN("CONCAT_WS") }, BUILDER(Create_func_concat_ws)},
+ { { C_STRING_WITH_LEN("CONNECTION_ID") }, BUILDER(Create_func_connection_id)},
+ { { C_STRING_WITH_LEN("CONV") }, BUILDER(Create_func_conv)},
+ { { C_STRING_WITH_LEN("CONVERT_TZ") }, BUILDER(Create_func_convert_tz)},
+ { { C_STRING_WITH_LEN("COS") }, BUILDER(Create_func_cos)},
+ { { C_STRING_WITH_LEN("COT") }, BUILDER(Create_func_cot)},
+ { { C_STRING_WITH_LEN("CRC32") }, BUILDER(Create_func_crc32)},
+ { { C_STRING_WITH_LEN("CROSSES") }, GEOM_BUILDER(Create_func_crosses)},
+ { { C_STRING_WITH_LEN("DATEDIFF") }, BUILDER(Create_func_datediff)},
+ { { C_STRING_WITH_LEN("DATE_FORMAT") }, BUILDER(Create_func_date_format)},
+ { { C_STRING_WITH_LEN("DAYNAME") }, BUILDER(Create_func_dayname)},
+ { { C_STRING_WITH_LEN("DAYOFMONTH") }, BUILDER(Create_func_dayofmonth)},
+ { { C_STRING_WITH_LEN("DAYOFWEEK") }, BUILDER(Create_func_dayofweek)},
+ { { C_STRING_WITH_LEN("DAYOFYEAR") }, BUILDER(Create_func_dayofyear)},
+ { { C_STRING_WITH_LEN("DECODE") }, BUILDER(Create_func_decode)},
+ { { C_STRING_WITH_LEN("DEGREES") }, BUILDER(Create_func_degrees)},
+ { { C_STRING_WITH_LEN("DES_DECRYPT") }, BUILDER(Create_func_des_decrypt)},
+ { { C_STRING_WITH_LEN("DES_ENCRYPT") }, BUILDER(Create_func_des_encrypt)},
+ { { C_STRING_WITH_LEN("DIMENSION") }, GEOM_BUILDER(Create_func_dimension)},
+ { { C_STRING_WITH_LEN("DISJOINT") }, GEOM_BUILDER(Create_func_disjoint)},
+ { { C_STRING_WITH_LEN("ELT") }, BUILDER(Create_func_elt)},
+ { { C_STRING_WITH_LEN("ENCODE") }, BUILDER(Create_func_encode)},
+ { { C_STRING_WITH_LEN("ENCRYPT") }, BUILDER(Create_func_encrypt)},
+ { { C_STRING_WITH_LEN("ENDPOINT") }, GEOM_BUILDER(Create_func_endpoint)},
+ { { C_STRING_WITH_LEN("ENVELOPE") }, GEOM_BUILDER(Create_func_envelope)},
+ { { C_STRING_WITH_LEN("EQUALS") }, GEOM_BUILDER(Create_func_equals)},
+ { { C_STRING_WITH_LEN("EXP") }, BUILDER(Create_func_exp)},
+ { { C_STRING_WITH_LEN("EXPORT_SET") }, BUILDER(Create_func_export_set)},
+ { { C_STRING_WITH_LEN("EXTERIORRING") }, GEOM_BUILDER(Create_func_exteriorring)},
+ { { C_STRING_WITH_LEN("EXTRACTVALUE") }, BUILDER(Create_func_xml_extractvalue)},
+ { { C_STRING_WITH_LEN("FIELD") }, BUILDER(Create_func_field)},
+ { { C_STRING_WITH_LEN("FIND_IN_SET") }, BUILDER(Create_func_find_in_set)},
+ { { C_STRING_WITH_LEN("FLOOR") }, BUILDER(Create_func_floor)},
+ { { C_STRING_WITH_LEN("FORMAT") }, BUILDER(Create_func_format)},
+ { { C_STRING_WITH_LEN("FOUND_ROWS") }, BUILDER(Create_func_found_rows)},
+ { { C_STRING_WITH_LEN("FROM_DAYS") }, BUILDER(Create_func_from_days)},
+ { { C_STRING_WITH_LEN("FROM_UNIXTIME") }, BUILDER(Create_func_from_unixtime)},
+ { { C_STRING_WITH_LEN("GEOMCOLLFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
+ { { C_STRING_WITH_LEN("GEOMCOLLFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
+ { { C_STRING_WITH_LEN("GEOMETRYCOLLECTIONFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
+ { { C_STRING_WITH_LEN("GEOMETRYCOLLECTIONFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
+ { { C_STRING_WITH_LEN("GEOMETRYFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
+ { { C_STRING_WITH_LEN("GEOMETRYFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
+ { { C_STRING_WITH_LEN("GEOMETRYN") }, GEOM_BUILDER(Create_func_geometryn)},
+ { { C_STRING_WITH_LEN("GEOMETRYTYPE") }, GEOM_BUILDER(Create_func_geometry_type)},
+ { { C_STRING_WITH_LEN("GEOMFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
+ { { C_STRING_WITH_LEN("GEOMFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
+ { { C_STRING_WITH_LEN("GET_LOCK") }, BUILDER(Create_func_get_lock)},
+ { { C_STRING_WITH_LEN("GLENGTH") }, GEOM_BUILDER(Create_func_glength)},
+ { { C_STRING_WITH_LEN("GREATEST") }, BUILDER(Create_func_greatest)},
+ { { C_STRING_WITH_LEN("HEX") }, BUILDER(Create_func_hex)},
+ { { C_STRING_WITH_LEN("IFNULL") }, BUILDER(Create_func_ifnull)},
+ { { C_STRING_WITH_LEN("INET_ATON") }, BUILDER(Create_func_inet_aton)},
+ { { C_STRING_WITH_LEN("INET_NTOA") }, BUILDER(Create_func_inet_ntoa)},
+ { { C_STRING_WITH_LEN("INSTR") }, BUILDER(Create_func_instr)},
+ { { C_STRING_WITH_LEN("INTERIORRINGN") }, GEOM_BUILDER(Create_func_interiorringn)},
+ { { C_STRING_WITH_LEN("INTERSECTS") }, GEOM_BUILDER(Create_func_intersects)},
+ { { C_STRING_WITH_LEN("ISCLOSED") }, GEOM_BUILDER(Create_func_isclosed)},
+ { { C_STRING_WITH_LEN("ISEMPTY") }, GEOM_BUILDER(Create_func_isempty)},
+ { { C_STRING_WITH_LEN("ISNULL") }, BUILDER(Create_func_isnull)},
+ { { C_STRING_WITH_LEN("ISSIMPLE") }, GEOM_BUILDER(Create_func_issimple)},
+ { { C_STRING_WITH_LEN("IS_FREE_LOCK") }, BUILDER(Create_func_is_free_lock)},
+ { { C_STRING_WITH_LEN("IS_USED_LOCK") }, BUILDER(Create_func_is_used_lock)},
+ { { C_STRING_WITH_LEN("LAST_DAY") }, BUILDER(Create_func_last_day)},
+ { { C_STRING_WITH_LEN("LAST_INSERT_ID") }, BUILDER(Create_func_last_insert_id)},
+ { { C_STRING_WITH_LEN("LCASE") }, BUILDER(Create_func_lcase)},
+ { { C_STRING_WITH_LEN("LEAST") }, BUILDER(Create_func_least)},
+ { { C_STRING_WITH_LEN("LENGTH") }, BUILDER(Create_func_length)},
+ { { C_STRING_WITH_LEN("LINEFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
+ { { C_STRING_WITH_LEN("LINEFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
+ { { C_STRING_WITH_LEN("LINESTRINGFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
+ { { C_STRING_WITH_LEN("LINESTRINGFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
+ { { C_STRING_WITH_LEN("LN") }, BUILDER(Create_func_ln)},
+ { { C_STRING_WITH_LEN("LOAD_FILE") }, BUILDER(Create_func_load_file)},
+ { { C_STRING_WITH_LEN("LOCATE") }, BUILDER(Create_func_locate)},
+ { { C_STRING_WITH_LEN("LOG") }, BUILDER(Create_func_log)},
+ { { C_STRING_WITH_LEN("LOG10") }, BUILDER(Create_func_log10)},
+ { { C_STRING_WITH_LEN("LOG2") }, BUILDER(Create_func_log2)},
+ { { C_STRING_WITH_LEN("LOWER") }, BUILDER(Create_func_lcase)},
+ { { C_STRING_WITH_LEN("LPAD") }, BUILDER(Create_func_lpad)},
+ { { C_STRING_WITH_LEN("LTRIM") }, BUILDER(Create_func_ltrim)},
+ { { C_STRING_WITH_LEN("MAKEDATE") }, BUILDER(Create_func_makedate)},
+ { { C_STRING_WITH_LEN("MAKETIME") }, BUILDER(Create_func_maketime)},
+ { { C_STRING_WITH_LEN("MAKE_SET") }, BUILDER(Create_func_make_set)},
+ { { C_STRING_WITH_LEN("MASTER_POS_WAIT") }, BUILDER(Create_func_master_pos_wait)},
+ { { C_STRING_WITH_LEN("MBRCONTAINS") }, GEOM_BUILDER(Create_func_contains)},
+ { { C_STRING_WITH_LEN("MBRDISJOINT") }, GEOM_BUILDER(Create_func_disjoint)},
+ { { C_STRING_WITH_LEN("MBREQUAL") }, GEOM_BUILDER(Create_func_equals)},
+ { { C_STRING_WITH_LEN("MBRINTERSECTS") }, GEOM_BUILDER(Create_func_intersects)},
+ { { C_STRING_WITH_LEN("MBROVERLAPS") }, GEOM_BUILDER(Create_func_overlaps)},
+ { { C_STRING_WITH_LEN("MBRTOUCHES") }, GEOM_BUILDER(Create_func_touches)},
+ { { C_STRING_WITH_LEN("MBRWITHIN") }, GEOM_BUILDER(Create_func_within)},
+ { { C_STRING_WITH_LEN("MD5") }, BUILDER(Create_func_md5)},
+ { { C_STRING_WITH_LEN("MLINEFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
+ { { C_STRING_WITH_LEN("MLINEFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
+ { { C_STRING_WITH_LEN("MONTHNAME") }, BUILDER(Create_func_monthname)},
+ { { C_STRING_WITH_LEN("MPOINTFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
+ { { C_STRING_WITH_LEN("MPOINTFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
+ { { C_STRING_WITH_LEN("MPOLYFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
+ { { C_STRING_WITH_LEN("MPOLYFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
+ { { C_STRING_WITH_LEN("MULTILINESTRINGFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
+ { { C_STRING_WITH_LEN("MULTILINESTRINGFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
+ { { C_STRING_WITH_LEN("MULTIPOINTFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
+ { { C_STRING_WITH_LEN("MULTIPOINTFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
+ { { C_STRING_WITH_LEN("MULTIPOLYGONFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
+ { { C_STRING_WITH_LEN("MULTIPOLYGONFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
+ { { C_STRING_WITH_LEN("NAME_CONST") }, BUILDER(Create_func_name_const)},
+ { { C_STRING_WITH_LEN("NULLIF") }, BUILDER(Create_func_nullif)},
+ { { C_STRING_WITH_LEN("NUMGEOMETRIES") }, GEOM_BUILDER(Create_func_numgeometries)},
+ { { C_STRING_WITH_LEN("NUMINTERIORRINGS") }, GEOM_BUILDER(Create_func_numinteriorring)},
+ { { C_STRING_WITH_LEN("NUMPOINTS") }, GEOM_BUILDER(Create_func_numpoints)},
+ { { C_STRING_WITH_LEN("OCT") }, BUILDER(Create_func_oct)},
+ { { C_STRING_WITH_LEN("OCTET_LENGTH") }, BUILDER(Create_func_length)},
+ { { C_STRING_WITH_LEN("ORD") }, BUILDER(Create_func_ord)},
+ { { C_STRING_WITH_LEN("OVERLAPS") }, GEOM_BUILDER(Create_func_overlaps)},
+ { { C_STRING_WITH_LEN("PERIOD_ADD") }, BUILDER(Create_func_period_add)},
+ { { C_STRING_WITH_LEN("PERIOD_DIFF") }, BUILDER(Create_func_period_diff)},
+ { { C_STRING_WITH_LEN("PI") }, BUILDER(Create_func_pi)},
+ { { C_STRING_WITH_LEN("POINTFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
+ { { C_STRING_WITH_LEN("POINTFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
+ { { C_STRING_WITH_LEN("POINTN") }, GEOM_BUILDER(Create_func_pointn)},
+ { { C_STRING_WITH_LEN("POLYFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
+ { { C_STRING_WITH_LEN("POLYFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
+ { { C_STRING_WITH_LEN("POLYGONFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
+ { { C_STRING_WITH_LEN("POLYGONFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
+ { { C_STRING_WITH_LEN("POW") }, BUILDER(Create_func_pow)},
+ { { C_STRING_WITH_LEN("POWER") }, BUILDER(Create_func_pow)},
+ { { C_STRING_WITH_LEN("QUOTE") }, BUILDER(Create_func_quote)},
+ { { C_STRING_WITH_LEN("RADIANS") }, BUILDER(Create_func_radians)},
+ { { C_STRING_WITH_LEN("RAND") }, BUILDER(Create_func_rand)},
+ { { C_STRING_WITH_LEN("RELEASE_LOCK") }, BUILDER(Create_func_release_lock)},
+ { { C_STRING_WITH_LEN("REVERSE") }, BUILDER(Create_func_reverse)},
+ { { C_STRING_WITH_LEN("ROUND") }, BUILDER(Create_func_round)},
+ { { C_STRING_WITH_LEN("ROW_COUNT") }, BUILDER(Create_func_row_count)},
+ { { C_STRING_WITH_LEN("RPAD") }, BUILDER(Create_func_rpad)},
+ { { C_STRING_WITH_LEN("RTRIM") }, BUILDER(Create_func_rtrim)},
+ { { C_STRING_WITH_LEN("SEC_TO_TIME") }, BUILDER(Create_func_sec_to_time)},
+ { { C_STRING_WITH_LEN("SHA") }, BUILDER(Create_func_sha)},
+ { { C_STRING_WITH_LEN("SHA1") }, BUILDER(Create_func_sha)},
+ { { C_STRING_WITH_LEN("SIGN") }, BUILDER(Create_func_sign)},
+ { { C_STRING_WITH_LEN("SIN") }, BUILDER(Create_func_sin)},
+ { { C_STRING_WITH_LEN("SLEEP") }, BUILDER(Create_func_sleep)},
+ { { C_STRING_WITH_LEN("SOUNDEX") }, BUILDER(Create_func_soundex)},
+ { { C_STRING_WITH_LEN("SPACE") }, BUILDER(Create_func_space)},
+ { { C_STRING_WITH_LEN("SQRT") }, BUILDER(Create_func_sqrt)},
+ { { C_STRING_WITH_LEN("SRID") }, GEOM_BUILDER(Create_func_srid)},
+ { { C_STRING_WITH_LEN("STARTPOINT") }, GEOM_BUILDER(Create_func_startpoint)},
+ { { C_STRING_WITH_LEN("STRCMP") }, BUILDER(Create_func_strcmp)},
+ { { C_STRING_WITH_LEN("STR_TO_DATE") }, BUILDER(Create_func_str_to_date)},
+ { { C_STRING_WITH_LEN("SUBSTRING_INDEX") }, BUILDER(Create_func_substr_index)},
+ { { C_STRING_WITH_LEN("SUBTIME") }, BUILDER(Create_func_subtime)},
+ { { C_STRING_WITH_LEN("TAN") }, BUILDER(Create_func_tan)},
+ { { C_STRING_WITH_LEN("TIMEDIFF") }, BUILDER(Create_func_timediff)},
+ { { C_STRING_WITH_LEN("TIME_FORMAT") }, BUILDER(Create_func_time_format)},
+ { { C_STRING_WITH_LEN("TIME_TO_SEC") }, BUILDER(Create_func_time_to_sec)},
+ { { C_STRING_WITH_LEN("TOUCHES") }, GEOM_BUILDER(Create_func_touches)},
+ { { C_STRING_WITH_LEN("TO_DAYS") }, BUILDER(Create_func_to_days)},
+ { { C_STRING_WITH_LEN("UCASE") }, BUILDER(Create_func_ucase)},
+ { { C_STRING_WITH_LEN("UNCOMPRESS") }, BUILDER(Create_func_uncompress)},
+ { { C_STRING_WITH_LEN("UNCOMPRESSED_LENGTH") }, BUILDER(Create_func_uncompressed_length)},
+ { { C_STRING_WITH_LEN("UNHEX") }, BUILDER(Create_func_unhex)},
+ { { C_STRING_WITH_LEN("UNIX_TIMESTAMP") }, BUILDER(Create_func_unix_timestamp)},
+ { { C_STRING_WITH_LEN("UPDATEXML") }, BUILDER(Create_func_xml_update)},
+ { { C_STRING_WITH_LEN("UPPER") }, BUILDER(Create_func_ucase)},
+ { { C_STRING_WITH_LEN("UUID") }, BUILDER(Create_func_uuid)},
+ { { C_STRING_WITH_LEN("UUID_SHORT") }, BUILDER(Create_func_uuid_short)},
+ { { C_STRING_WITH_LEN("VERSION") }, BUILDER(Create_func_version)},
+ { { C_STRING_WITH_LEN("WEEKDAY") }, BUILDER(Create_func_weekday)},
+ { { C_STRING_WITH_LEN("WEEKOFYEAR") }, BUILDER(Create_func_weekofyear)},
+ { { C_STRING_WITH_LEN("WITHIN") }, GEOM_BUILDER(Create_func_within)},
+ { { C_STRING_WITH_LEN("X") }, GEOM_BUILDER(Create_func_x)},
+ { { C_STRING_WITH_LEN("Y") }, GEOM_BUILDER(Create_func_y)},
+ { { C_STRING_WITH_LEN("YEARWEEK") }, BUILDER(Create_func_year_week)},
{ {0, 0}, NULL}
};
static HASH native_functions_hash;
-extern "C" byte*
-get_native_fct_hash_key(const byte *buff, uint *length, my_bool /* unused */)
+extern "C" uchar*
+get_native_fct_hash_key(const uchar *buff, size_t *length,
+ my_bool /* unused */)
{
Native_func_registry *func= (Native_func_registry*) buff;
*length= func->name.length;
- return (byte*) func->name.str;
+ return (uchar*) func->name.str;
}
/*
@@ -4916,7 +4947,7 @@ int item_create_init()
for (func= func_array; func->builder != NULL; func++)
{
- if (my_hash_insert(& native_functions_hash, (byte*) func))
+ if (my_hash_insert(& native_functions_hash, (uchar*) func))
DBUG_RETURN(1);
}
@@ -4924,8 +4955,8 @@ int item_create_init()
for (uint i=0 ; i < native_functions_hash.records ; i++)
{
func= (Native_func_registry*) hash_element(& native_functions_hash, i);
- DBUG_PRINT("info", ("native function %s, length %d",
- func->name.str, func->name.length));
+ DBUG_PRINT("info", ("native function: %s length: %u",
+ func->name.str, (uint) func->name.length));
}
#endif
@@ -4953,7 +4984,7 @@ find_native_function_builder(THD *thd, LEX_STRING name)
/* Thread safe */
func= (Native_func_registry*) hash_search(& native_functions_hash,
- (byte*) name.str,
+ (uchar*) name.str,
name.length);
if (func)
@@ -4970,11 +5001,15 @@ find_qualified_function_builder(THD *thd)
return & Create_sp_func::s_singleton;
}
-Item*
-create_func_cast(THD *thd, Item *a, Cast_target cast_type, int len, int dec,
+
+Item *
+create_func_cast(THD *thd, Item *a, Cast_target cast_type,
+ const char *c_len, const char *c_dec,
CHARSET_INFO *cs)
{
Item *res;
+ ulong len;
+ uint dec;
LINT_INIT(res);
switch (cast_type) {
@@ -4998,18 +5033,33 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type, int len, int dec,
break;
case ITEM_CAST_DECIMAL:
{
- int tmp_len= (len>0) ? len : 10;
- if (tmp_len < dec)
+ len= c_len ? atoi(c_len) : 0;
+ dec= c_dec ? atoi(c_dec) : 0;
+ my_decimal_trim(&len, &dec);
+ if (len < dec)
{
my_error(ER_M_BIGGER_THAN_D, MYF(0), "");
return 0;
}
- res= new (thd->mem_root) Item_decimal_typecast(a, tmp_len, dec);
+ if (len > DECIMAL_MAX_PRECISION)
+ {
+ my_error(ER_TOO_BIG_PRECISION, MYF(0), len, a->name,
+ DECIMAL_MAX_PRECISION);
+ return 0;
+ }
+ if (dec > DECIMAL_MAX_SCALE)
+ {
+ my_error(ER_TOO_BIG_SCALE, MYF(0), dec, a->name,
+ DECIMAL_MAX_SCALE);
+ return 0;
+ }
+ res= new (thd->mem_root) Item_decimal_typecast(a, len, dec);
break;
}
case ITEM_CAST_CHAR:
{
CHARSET_INFO *real_cs= (cs ? cs : thd->variables.collation_connection);
+ len= c_len ? atoi(c_len) : -1;
res= new (thd->mem_root) Item_char_typecast(a, len, real_cs);
break;
}
@@ -5022,4 +5072,3 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type, int len, int dec,
}
return res;
}
-