12
12
You should have received a copy of the GNU General Public License
13
13
along with this program; if not, write to the Free Software
14
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
14
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
25
25
#include <drizzled/item/func.h>
26
26
#include <drizzled/error.h>
28
#include "drizzled/function_container.h"
28
30
#include <drizzled/function/str/binary.h>
29
31
#include <drizzled/function/str/concat.h>
30
32
#include <drizzled/function/str/conv.h>
31
#include <drizzled/function/str/elt.h>
32
33
#include <drizzled/function/str/export_set.h>
33
#include <drizzled/function/str/format.h>
34
34
#include <drizzled/function/str/load_file.h>
35
35
#include <drizzled/function/str/make_set.h>
36
36
#include <drizzled/function/str/pad.h>
61
61
/* Function declarations */
63
63
#include <drizzled/function/func.h>
64
#include <drizzled/function/math/abs.h>
65
#include <drizzled/function/math/acos.h>
66
64
#include <drizzled/function/additive_op.h>
67
#include <drizzled/function/math/asin.h>
68
#include <drizzled/function/math/atan.h>
69
#include <drizzled/function/math/ceiling.h>
70
#include <drizzled/function/coercibility.h>
71
#include <drizzled/function/math/cos.h>
72
65
#include <drizzled/function/math/dec.h>
73
66
#include <drizzled/function/math/decimal_typecast.h>
74
#include <drizzled/function/math/exp.h>
75
67
#include <drizzled/function/field.h>
76
68
#include <drizzled/function/find_in_set.h>
77
#include <drizzled/function/math/floor.h>
78
69
#include <drizzled/function/found_rows.h>
79
70
#include <drizzled/function/get_system_var.h>
80
71
#include <drizzled/function/math/int_val.h>
81
72
#include <drizzled/function/math/integer.h>
82
73
#include <drizzled/function/last_insert.h>
83
#include <drizzled/function/math/ln.h>
84
74
#include <drizzled/function/locate.h>
85
#include <drizzled/function/math/log.h>
86
75
#include <drizzled/function/min_max.h>
87
76
#include <drizzled/function/num1.h>
88
77
#include <drizzled/function/num_op.h>
89
78
#include <drizzled/function/numhybrid.h>
90
#include <drizzled/function/math/ord.h>
91
#include <drizzled/function/math/pow.h>
92
#include <drizzled/function/math/rand.h>
93
79
#include <drizzled/function/math/real.h>
94
80
#include <drizzled/function/row_count.h>
95
81
#include <drizzled/function/set_user_var.h>
96
82
#include <drizzled/function/sign.h>
97
#include <drizzled/function/math/sin.h>
98
#include <drizzled/function/math/sqrt.h>
99
#include <drizzled/function/str/quote.h>
100
83
#include <drizzled/function/math/tan.h>
101
84
#include <drizzled/function/units.h>
105
86
using namespace std;
107
88
namespace drizzled
259
240
it helps to compare code between versions, and helps with merges conflicts.
262
class Create_func_abs : public Create_func_arg1
265
using Create_func_arg1::create;
267
virtual Item *create(Session *session, Item *arg1);
269
static Create_func_abs s_singleton;
273
virtual ~Create_func_abs() {}
277
class Create_func_acos : public Create_func_arg1
280
using Create_func_arg1::create;
282
virtual Item *create(Session *session, Item *arg1);
284
static Create_func_acos s_singleton;
287
Create_func_acos() {}
288
virtual ~Create_func_acos() {}
291
class Create_func_asin : public Create_func_arg1
294
using Create_func_arg1::create;
296
virtual Item *create(Session *session, Item *arg1);
298
static Create_func_asin s_singleton;
301
Create_func_asin() {}
302
virtual ~Create_func_asin() {}
306
class Create_func_atan : public Create_native_func
309
virtual Item *create_native(Session *session, LEX_STRING name, List<Item> *item_list);
311
static Create_func_atan s_singleton;
314
Create_func_atan() {}
315
virtual ~Create_func_atan() {}
318
244
class Create_func_bin : public Create_func_arg1
329
255
virtual ~Create_func_bin() {}
333
class Create_func_ceiling : public Create_func_arg1
336
using Create_func_arg1::create;
338
virtual Item *create(Session *session, Item *arg1);
340
static Create_func_ceiling s_singleton;
343
Create_func_ceiling() {}
344
virtual ~Create_func_ceiling() {}
348
class Create_func_coercibility : public Create_func_arg1
351
using Create_func_arg1::create;
353
virtual Item *create(Session *session, Item *arg1);
355
static Create_func_coercibility s_singleton;
358
Create_func_coercibility() {}
359
virtual ~Create_func_coercibility() {}
363
258
class Create_func_concat : public Create_native_func
400
295
virtual ~Create_func_conv() {}
404
class Create_func_cos : public Create_func_arg1
407
using Create_func_arg1::create;
409
virtual Item *create(Session *session, Item *arg1);
411
static Create_func_cos s_singleton;
415
virtual ~Create_func_cos() {}
419
298
class Create_func_cot : public Create_func_arg1
549
428
virtual ~Create_func_degrees() {}
553
class Create_func_elt : public Create_native_func
556
virtual Item *create_native(Session *session, LEX_STRING name, List<Item> *item_list);
558
static Create_func_elt s_singleton;
562
virtual ~Create_func_elt() {}
566
class Create_func_exp : public Create_func_arg1
569
using Create_func_arg1::create;
571
virtual Item *create(Session *session, Item *arg1);
573
static Create_func_exp s_singleton;
577
virtual ~Create_func_exp() {}
581
431
class Create_func_export_set : public Create_native_func
584
435
virtual Item *create_native(Session *session, LEX_STRING name, List<Item> *item_list);
618
469
virtual ~Create_func_find_in_set() {}
622
class Create_func_floor : public Create_func_arg1
625
using Create_func_arg1::create;
627
virtual Item *create(Session *session, Item *arg1);
629
static Create_func_floor s_singleton;
632
Create_func_floor() {}
633
virtual ~Create_func_floor() {}
637
class Create_func_format : public Create_func_arg2
640
using Create_func_arg2::create;
642
virtual Item *create(Session *session, Item *arg1, Item *arg2);
644
static Create_func_format s_singleton;
647
Create_func_format() {}
648
virtual ~Create_func_format() {}
652
472
class Create_func_found_rows : public Create_func_arg0
805
625
virtual ~Create_func_least() {}
809
class Create_func_ln : public Create_func_arg1
812
using Create_func_arg1::create;
814
virtual Item *create(Session *session, Item *arg1);
816
static Create_func_ln s_singleton;
820
virtual ~Create_func_ln() {}
824
628
class Create_func_load_file : public Create_func_arg1
852
class Create_func_log : public Create_native_func
855
virtual Item *create_native(Session *session, LEX_STRING name, List<Item> *item_list);
857
static Create_func_log s_singleton;
861
virtual ~Create_func_log() {}
865
class Create_func_log10 : public Create_func_arg1
868
using Create_func_arg1::create;
870
virtual Item *create(Session *session, Item *arg1);
872
static Create_func_log10 s_singleton;
875
Create_func_log10() {}
876
virtual ~Create_func_log10() {}
880
class Create_func_log2 : public Create_func_arg1
883
using Create_func_arg1::create;
885
virtual Item *create(Session *session, Item *arg1);
887
static Create_func_log2 s_singleton;
890
Create_func_log2() {}
891
virtual ~Create_func_log2() {}
895
656
class Create_func_lpad : public Create_func_arg3
1008
769
virtual ~Create_func_oct() {}
1012
class Create_func_ord : public Create_func_arg1
1015
using Create_func_arg1::create;
1017
virtual Item *create(Session *session, Item *arg1);
1019
static Create_func_ord s_singleton;
1022
Create_func_ord() {}
1023
virtual ~Create_func_ord() {}
1027
772
class Create_func_period_add : public Create_func_arg2
1068
813
virtual ~Create_func_pi() {}
1072
class Create_func_pow : public Create_func_arg2
1075
using Create_func_arg2::create;
1077
virtual Item *create(Session *session, Item *arg1, Item *arg2);
1079
static Create_func_pow s_singleton;
1082
Create_func_pow() {}
1083
virtual ~Create_func_pow() {}
1087
class Create_func_quote : public Create_func_arg1
1090
using Create_func_arg1::create;
1092
virtual Item *create(Session *session, Item *arg1);
1094
static Create_func_quote s_singleton;
1097
Create_func_quote() {}
1098
virtual ~Create_func_quote() {}
1102
816
class Create_func_radians : public Create_func_arg1
1117
class Create_func_rand : public Create_native_func
1120
virtual Item *create_native(Session *session, LEX_STRING name, List<Item> *item_list);
1122
static Create_func_rand s_singleton;
1125
Create_func_rand() {}
1126
virtual ~Create_func_rand() {}
1130
831
class Create_func_round : public Create_native_func
1198
899
virtual ~Create_func_sign() {}
1202
class Create_func_sin : public Create_func_arg1
1205
using Create_func_arg1::create;
1207
virtual Item *create(Session *session, Item *arg1);
1209
static Create_func_sin s_singleton;
1212
Create_func_sin() {}
1213
virtual ~Create_func_sin() {}
1217
902
class Create_func_space : public Create_func_arg1
1228
913
virtual ~Create_func_space() {}
1232
class Create_func_sqrt : public Create_func_arg1
1235
using Create_func_arg1::create;
1237
virtual Item *create(Session *session, Item *arg1);
1239
static Create_func_sqrt s_singleton;
1242
Create_func_sqrt() {}
1243
virtual ~Create_func_sqrt() {}
1247
916
class Create_func_strcmp : public Create_func_arg2
1541
1210
return create(session, param_1, param_2, param_3);
1545
Create_func_abs Create_func_abs::s_singleton;
1548
Create_func_abs::create(Session *session, Item *arg1)
1550
return new (session->mem_root) Item_func_abs(arg1);
1554
Create_func_acos Create_func_acos::s_singleton;
1557
Create_func_acos::create(Session *session, Item *arg1)
1559
return new (session->mem_root) Item_func_acos(arg1);
1562
Create_func_asin Create_func_asin::s_singleton;
1565
Create_func_asin::create(Session *session, Item *arg1)
1567
return new (session->mem_root) Item_func_asin(arg1);
1571
Create_func_atan Create_func_atan::s_singleton;
1574
Create_func_atan::create_native(Session *session, LEX_STRING name,
1575
List<Item> *item_list)
1580
if (item_list != NULL)
1581
arg_count= item_list->elements;
1583
switch (arg_count) {
1586
Item *param_1= item_list->pop();
1587
func= new (session->mem_root) Item_func_atan(param_1);
1592
Item *param_1= item_list->pop();
1593
Item *param_2= item_list->pop();
1594
func= new (session->mem_root) Item_func_atan(param_1, param_2);
1599
my_error(ER_WRONG_PARAMCOUNT_TO_FUNCTION, MYF(0), name.str);
1607
1213
Create_func_bin Create_func_bin::s_singleton;
1614
1220
return new (session->mem_root) Item_func_conv(arg1, i10, i2);
1618
Create_func_ceiling Create_func_ceiling::s_singleton;
1621
Create_func_ceiling::create(Session *session, Item *arg1)
1623
return new (session->mem_root) Item_func_ceiling(arg1);
1627
Create_func_coercibility Create_func_coercibility::s_singleton;
1630
Create_func_coercibility::create(Session *session, Item *arg1)
1632
return new (session->mem_root) Item_func_coercibility(arg1);
1636
1223
Create_func_concat Create_func_concat::s_singleton;
1684
1271
return new (session->mem_root) Item_func_conv(arg1, arg2, arg3);
1688
Create_func_cos Create_func_cos::s_singleton;
1691
Create_func_cos::create(Session *session, Item *arg1)
1693
return new (session->mem_root) Item_func_cos(arg1);
1697
1274
Create_func_cot Create_func_cot::s_singleton;
1702
1279
Item *i1= new (session->mem_root) Item_int((char*) "1", 1, 1);
1703
1280
Item *i2= new (session->mem_root) Item_func_tan(arg1);
1704
return new (session->mem_root) Item_func_div(i1, i2);
1281
return new (session->mem_root) Item_func_div(session, i1, i2);
1707
1284
Create_func_date_format Create_func_date_format::s_singleton;
1770
1347
180/M_PI, 0.0);
1774
Create_func_elt Create_func_elt::s_singleton;
1777
Create_func_elt::create_native(Session *session, LEX_STRING name,
1778
List<Item> *item_list)
1782
if (item_list != NULL)
1783
arg_count= item_list->elements;
1787
my_error(ER_WRONG_PARAMCOUNT_TO_FUNCTION, MYF(0), name.str);
1791
return new (session->mem_root) Item_func_elt(*item_list);
1795
Create_func_exp Create_func_exp::s_singleton;
1798
Create_func_exp::create(Session *session, Item *arg1)
1800
return new (session->mem_root) Item_func_exp(arg1);
1804
1350
Create_func_export_set Create_func_export_set::s_singleton;
1883
1429
return new (session->mem_root) Item_func_find_in_set(arg1, arg2);
1887
Create_func_floor Create_func_floor::s_singleton;
1890
Create_func_floor::create(Session *session, Item *arg1)
1892
return new (session->mem_root) Item_func_floor(arg1);
1896
Create_func_format Create_func_format::s_singleton;
1899
Create_func_format::create(Session *session, Item *arg1, Item *arg2)
1901
return new (session->mem_root) Item_func_format(arg1, arg2);
1905
1432
Create_func_found_rows Create_func_found_rows::s_singleton;
2078
1605
return new (session->mem_root) Item_func_min(*item_list);
2082
Create_func_ln Create_func_ln::s_singleton;
2085
Create_func_ln::create(Session *session, Item *arg1)
2087
return new (session->mem_root) Item_func_ln(arg1);
2091
1608
Create_func_load_file Create_func_load_file::s_singleton;
2094
1611
Create_func_load_file::create(Session *session, Item *arg1)
2096
return new (session->mem_root) Item_load_file(arg1);
1613
return new (session->mem_root) Item_load_file(*session, arg1);
2141
Create_func_log Create_func_log::s_singleton;
2144
Create_func_log::create_native(Session *session, LEX_STRING name,
2145
List<Item> *item_list)
2150
if (item_list != NULL)
2151
arg_count= item_list->elements;
2153
switch (arg_count) {
2156
Item *param_1= item_list->pop();
2157
func= new (session->mem_root) Item_func_log(param_1);
2162
Item *param_1= item_list->pop();
2163
Item *param_2= item_list->pop();
2164
func= new (session->mem_root) Item_func_log(param_1, param_2);
2169
my_error(ER_WRONG_PARAMCOUNT_TO_FUNCTION, MYF(0), name.str);
2178
Create_func_log10 Create_func_log10::s_singleton;
2181
Create_func_log10::create(Session *session, Item *arg1)
2183
return new (session->mem_root) Item_func_log10(arg1);
2187
Create_func_log2 Create_func_log2::s_singleton;
2190
Create_func_log2::create(Session *session, Item *arg1)
2192
return new (session->mem_root) Item_func_log2(arg1);
2196
1657
Create_func_lpad Create_func_lpad::s_singleton;
2199
1660
Create_func_lpad::create(Session *session, Item *arg1, Item *arg2, Item *arg3)
2201
return new (session->mem_root) Item_func_lpad(arg1, arg2, arg3);
1662
return new (session->mem_root) Item_func_lpad(*session, arg1, arg2, arg3);
2270
1731
return new (session->mem_root) Item_func_conv(arg1, i10, i8);
2274
Create_func_ord Create_func_ord::s_singleton;
2277
Create_func_ord::create(Session *session, Item *arg1)
2279
return new (session->mem_root) Item_func_ord(arg1);
2283
1734
Create_func_period_add Create_func_period_add::s_singleton;
2306
1757
return new (session->mem_root) Item_static_float_func("pi()", M_PI, 6, 8);
2310
Create_func_pow Create_func_pow::s_singleton;
2313
Create_func_pow::create(Session *session, Item *arg1, Item *arg2)
2315
return new (session->mem_root) Item_func_pow(arg1, arg2);
2319
Create_func_quote Create_func_quote::s_singleton;
2322
Create_func_quote::create(Session *session, Item *arg1)
2324
return new (session->mem_root) Item_func_quote(arg1);
2328
1760
Create_func_radians Create_func_radians::s_singleton;
2334
1766
M_PI/180, 0.0);
2338
Create_func_rand Create_func_rand::s_singleton;
2341
Create_func_rand::create_native(Session *session, LEX_STRING name,
2342
List<Item> *item_list)
2347
if (item_list != NULL)
2348
arg_count= item_list->elements;
2350
switch (arg_count) {
2353
func= new (session->mem_root) Item_func_rand();
2358
Item *param_1= item_list->pop();
2359
func= new (session->mem_root) Item_func_rand(param_1);
2364
my_error(ER_WRONG_PARAMCOUNT_TO_FUNCTION, MYF(0), name.str);
2373
1769
Create_func_round Create_func_round::s_singleton;
2423
1819
Create_func_rpad::create(Session *session, Item *arg1, Item *arg2, Item *arg3)
2425
return new (session->mem_root) Item_func_rpad(arg1, arg2, arg3);
1821
return new (session->mem_root) Item_func_rpad(*session, arg1, arg2, arg3);
2443
1839
return new (session->mem_root) Item_func_sign(arg1);
2447
Create_func_sin Create_func_sin::s_singleton;
2450
Create_func_sin::create(Session *session, Item *arg1)
2452
return new (session->mem_root) Item_func_sin(arg1);
2456
1842
Create_func_space Create_func_space::s_singleton;
2477
1863
sp= new (session->mem_root) Item_string(" ", 1, cs, DERIVATION_COERCIBLE);
2480
return new (session->mem_root) Item_func_repeat(sp, arg1);
2484
Create_func_sqrt Create_func_sqrt::s_singleton;
2487
Create_func_sqrt::create(Session *session, Item *arg1)
2489
return new (session->mem_root) Item_func_sqrt(arg1);
1866
return new (session->mem_root) Item_func_repeat(*session, sp, arg1);
2493
1869
Create_func_strcmp Create_func_strcmp::s_singleton;
2594
1970
static Native_func_registry func_array[] =
2596
{ { C_STRING_WITH_LEN("ABS") }, BUILDER(Create_func_abs)},
2597
{ { C_STRING_WITH_LEN("ACOS") }, BUILDER(Create_func_acos)},
2598
{ { C_STRING_WITH_LEN("ASIN") }, BUILDER(Create_func_asin)},
2599
{ { C_STRING_WITH_LEN("ATAN") }, BUILDER(Create_func_atan)},
2600
{ { C_STRING_WITH_LEN("ATAN2") }, BUILDER(Create_func_atan)},
2601
1972
{ { C_STRING_WITH_LEN("BIN") }, BUILDER(Create_func_bin)},
2602
{ { C_STRING_WITH_LEN("CEIL") }, BUILDER(Create_func_ceiling)},
2603
{ { C_STRING_WITH_LEN("CEILING") }, BUILDER(Create_func_ceiling)},
2604
{ { C_STRING_WITH_LEN("COERCIBILITY") }, BUILDER(Create_func_coercibility)},
2605
1973
{ { C_STRING_WITH_LEN("CONCAT") }, BUILDER(Create_func_concat)},
2606
1974
{ { C_STRING_WITH_LEN("CONCAT_WS") }, BUILDER(Create_func_concat_ws)},
2607
1975
{ { C_STRING_WITH_LEN("CONV") }, BUILDER(Create_func_conv)},
2608
{ { C_STRING_WITH_LEN("COS") }, BUILDER(Create_func_cos)},
2609
1976
{ { C_STRING_WITH_LEN("COT") }, BUILDER(Create_func_cot)},
2610
1977
{ { C_STRING_WITH_LEN("DATEDIFF") }, BUILDER(Create_func_datediff)},
2611
1978
{ { C_STRING_WITH_LEN("DATE_FORMAT") }, BUILDER(Create_func_date_format)},
2614
1981
{ { C_STRING_WITH_LEN("DAYOFWEEK") }, BUILDER(Create_func_dayofweek)},
2615
1982
{ { C_STRING_WITH_LEN("DAYOFYEAR") }, BUILDER(Create_func_dayofyear)},
2616
1983
{ { C_STRING_WITH_LEN("DEGREES") }, BUILDER(Create_func_degrees)},
2617
{ { C_STRING_WITH_LEN("ELT") }, BUILDER(Create_func_elt)},
2618
{ { C_STRING_WITH_LEN("EXP") }, BUILDER(Create_func_exp)},
2619
1984
{ { C_STRING_WITH_LEN("EXPORT_SET") }, BUILDER(Create_func_export_set)},
2620
1985
{ { C_STRING_WITH_LEN("FIELD") }, BUILDER(Create_func_field)},
2621
1986
{ { C_STRING_WITH_LEN("FIND_IN_SET") }, BUILDER(Create_func_find_in_set)},
2622
{ { C_STRING_WITH_LEN("FLOOR") }, BUILDER(Create_func_floor)},
2623
{ { C_STRING_WITH_LEN("FORMAT") }, BUILDER(Create_func_format)},
2624
1987
{ { C_STRING_WITH_LEN("FOUND_ROWS") }, BUILDER(Create_func_found_rows)},
2625
1988
{ { C_STRING_WITH_LEN("FROM_DAYS") }, BUILDER(Create_func_from_days)},
2626
1989
{ { C_STRING_WITH_LEN("FROM_UNIXTIME") }, BUILDER(Create_func_from_unixtime)},
2632
1995
{ { C_STRING_WITH_LEN("LAST_INSERT_ID") }, BUILDER(Create_func_last_insert_id)},
2633
1996
{ { C_STRING_WITH_LEN("LCASE") }, BUILDER(Create_func_lcase)},
2634
1997
{ { C_STRING_WITH_LEN("LEAST") }, BUILDER(Create_func_least)},
2635
{ { C_STRING_WITH_LEN("LN") }, BUILDER(Create_func_ln)},
2636
1998
{ { C_STRING_WITH_LEN("LOAD_FILE") }, BUILDER(Create_func_load_file)},
2637
1999
{ { C_STRING_WITH_LEN("LOCATE") }, BUILDER(Create_func_locate)},
2638
{ { C_STRING_WITH_LEN("LOG") }, BUILDER(Create_func_log)},
2639
{ { C_STRING_WITH_LEN("LOG10") }, BUILDER(Create_func_log10)},
2640
{ { C_STRING_WITH_LEN("LOG2") }, BUILDER(Create_func_log2)},
2641
2000
{ { C_STRING_WITH_LEN("LOWER") }, BUILDER(Create_func_lcase)},
2642
2001
{ { C_STRING_WITH_LEN("LPAD") }, BUILDER(Create_func_lpad)},
2643
2002
{ { C_STRING_WITH_LEN("LTRIM") }, BUILDER(Create_func_ltrim)},
2646
2005
{ { C_STRING_WITH_LEN("MONTHNAME") }, BUILDER(Create_func_monthname)},
2647
2006
{ { C_STRING_WITH_LEN("NULLIF") }, BUILDER(Create_func_nullif)},
2648
2007
{ { C_STRING_WITH_LEN("OCT") }, BUILDER(Create_func_oct)},
2649
{ { C_STRING_WITH_LEN("ORD") }, BUILDER(Create_func_ord)},
2650
2008
{ { C_STRING_WITH_LEN("PERIOD_ADD") }, BUILDER(Create_func_period_add)},
2651
2009
{ { C_STRING_WITH_LEN("PERIOD_DIFF") }, BUILDER(Create_func_period_diff)},
2652
2010
{ { C_STRING_WITH_LEN("PI") }, BUILDER(Create_func_pi)},
2653
{ { C_STRING_WITH_LEN("POW") }, BUILDER(Create_func_pow)},
2654
{ { C_STRING_WITH_LEN("POWER") }, BUILDER(Create_func_pow)},
2655
{ { C_STRING_WITH_LEN("QUOTE") }, BUILDER(Create_func_quote)},
2656
2011
{ { C_STRING_WITH_LEN("RADIANS") }, BUILDER(Create_func_radians)},
2657
{ { C_STRING_WITH_LEN("RAND") }, BUILDER(Create_func_rand)},
2658
2012
{ { C_STRING_WITH_LEN("ROUND") }, BUILDER(Create_func_round)},
2659
2013
{ { C_STRING_WITH_LEN("ROW_COUNT") }, BUILDER(Create_func_row_count)},
2660
2014
{ { C_STRING_WITH_LEN("RPAD") }, BUILDER(Create_func_rpad)},
2661
2015
{ { C_STRING_WITH_LEN("RTRIM") }, BUILDER(Create_func_rtrim)},
2662
2016
{ { C_STRING_WITH_LEN("SIGN") }, BUILDER(Create_func_sign)},
2663
{ { C_STRING_WITH_LEN("SIN") }, BUILDER(Create_func_sin)},
2664
2017
{ { C_STRING_WITH_LEN("SPACE") }, BUILDER(Create_func_space)},
2665
{ { C_STRING_WITH_LEN("SQRT") }, BUILDER(Create_func_sqrt)},
2666
2018
{ { C_STRING_WITH_LEN("STRCMP") }, BUILDER(Create_func_strcmp)},
2667
2019
{ { C_STRING_WITH_LEN("TAN") }, BUILDER(Create_func_tan)},
2668
2020
{ { C_STRING_WITH_LEN("TIME_FORMAT") }, BUILDER(Create_func_time_format)},
2691
2041
for (func= func_array; func->builder != NULL; func++)
2693
2043
func_name.assign(func->name.str, func->name.length);
2694
transform(func_name.begin(), func_name.end(), func_name.begin(), ::tolower);
2696
native_functions_map[func_name]= func;
2045
FunctionContainer::getMap()[func_name]= func;
2707
2056
Create_func *builder= NULL;
2709
2058
string func_name(name.str, name.length);
2710
transform(func_name.begin(), func_name.end(), func_name.begin(), ::tolower);
2712
map<string, Native_func_registry *>::iterator func_iter=
2713
native_functions_map.find(func_name);
2715
if (func_iter != native_functions_map.end())
2060
NativeFunctionsMap::iterator func_iter=
2061
FunctionContainer::getMap().find(func_name);
2063
if (func_iter != FunctionContainer::getMap().end())
2717
2065
func= (*func_iter).second;
2718
2066
builder= func->builder;