304
static Item* reserved_keyword_function(const std::string &name, List<Item> *item_list)
306
const plugin::Function *udf= plugin::Function::get(name.c_str(), name.length());
311
item= Create_udf_func::s_singleton.create(current_session, udf, item_list);
313
my_error(ER_SP_DOES_NOT_EXIST, MYF(0), "FUNCTION", name.c_str());
304
319
} /* namespace drizzled; */
306
321
using namespace drizzled;
3074
3089
| SUBDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')'
3075
3090
{ $$= new (YYSession->mem_root) Item_date_add_interval($3, $6, $7, 1); }
3076
3091
| SUBSTRING '(' expr ',' expr ',' expr ')'
3077
{ $$= new (YYSession->mem_root) Item_func_substr($3,$5,$7); }
3093
std::string reverse_str("substr");
3094
List<Item> *args= new (YYSession->mem_root) List<Item>;
3095
args->push_back($3);
3096
args->push_back($5);
3097
args->push_back($7);
3098
if (! ($$= reserved_keyword_function(reverse_str, args)))
3078
3103
| SUBSTRING '(' expr ',' expr ')'
3079
{ $$= new (YYSession->mem_root) Item_func_substr($3,$5); }
3105
std::string reverse_str("substr");
3106
List<Item> *args= new (YYSession->mem_root) List<Item>;
3107
args->push_back($3);
3108
args->push_back($5);
3109
if (! ($$= reserved_keyword_function(reverse_str, args)))
3080
3114
| SUBSTRING '(' expr FROM expr FOR_SYM expr ')'
3081
{ $$= new (YYSession->mem_root) Item_func_substr($3,$5,$7); }
3116
std::string reverse_str("substr");
3117
List<Item> *args= new (YYSession->mem_root) List<Item>;
3118
args->push_back($3);
3119
args->push_back($5);
3120
args->push_back($7);
3121
if (! ($$= reserved_keyword_function(reverse_str, args)))
3082
3126
| SUBSTRING '(' expr FROM expr ')'
3083
{ $$= new (YYSession->mem_root) Item_func_substr($3,$5); }
3128
std::string reverse_str("substr");
3129
List<Item> *args= new (YYSession->mem_root) List<Item>;
3130
args->push_back($3);
3131
args->push_back($5);
3132
if (! ($$= reserved_keyword_function(reverse_str, args)))
3084
3137
| SYSDATE optional_braces
3085
3138
{ $$= new (YYSession->mem_root) Item_func_sysdate_local(); }
3086
3139
| SYSDATE '(' expr ')'
3111
3164
{ $$= new (YYSession->mem_root) Item_func_collation($3); }
3112
3165
| DATABASE '(' ')'
3114
$$= new (YYSession->mem_root) Item_func_database();
3167
std::string database_str("database");
3168
if (! ($$= reserved_keyword_function(database_str, NULL)))
3116
3173
| IF '(' expr ',' expr ',' expr ')'
3117
3174
{ $$= new (YYSession->mem_root) Item_func_if($3,$5,$7); }
3118
3175
| MICROSECOND_SYM '(' expr ')'
3126
3183
| REPLACE '(' expr ',' expr ',' expr ')'
3127
3184
{ $$= new (YYSession->mem_root) Item_func_replace($3,$5,$7); }
3128
3185
| REVERSE_SYM '(' expr ')'
3129
{ $$= new (YYSession->mem_root) Item_func_reverse($3); }
3187
std::string reverse_str("reverse");
3188
List<Item> *args= new (YYSession->mem_root) List<Item>;
3189
args->push_back($3);
3190
if (! ($$= reserved_keyword_function(reverse_str, args)))
3130
3195
| TRUNCATE_SYM '(' expr ',' expr ')'
3131
3196
{ $$= new (YYSession->mem_root) Item_func_round($3,$5,1); }