2
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
4
This program is free software; you can redistribute it and/or modify
5
it under the terms of the GNU General Public License as published by
6
the Free Software Foundation; version 2 of the License.
8
This program is distributed in the hope that it will be useful,
9
but WITHOUT ANY WARRANTY; without even the implied warranty of
10
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
GNU General Public License for more details.
13
You should have received a copy of the GNU General Public License
14
along with this program; if not, write to the Free Software
15
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
21
Functions to create an item. Used by sql_yac.yy
26
It is necessary to include set_var.h instead of item.h because there
27
are dependencies on include order for set_var.h and item.h. This
28
will be resolved later.
30
#include "sql_class.h" // set_var.h: THD
34
#include "item_inetfunc.h"
38
=============================================================================
40
=============================================================================
44
Adapter for native functions with a variable number of arguments.
45
The main use of this class is to discard the following calls:
46
<code>foo(expr1 AS name1, expr2 AS name2, ...)</code>
47
which are syntactically correct (the syntax can refer to a UDF),
48
but semantically invalid for native functions.
51
class Create_native_func : public Create_func
54
virtual Item *create_func(THD *thd, LEX_STRING name, List<Item> *item_list);
57
Builder method, with no arguments.
58
@param thd The current thread
59
@param name The native function name
60
@param item_list The function parameters, none of which are named
61
@return An item representing the function call
63
virtual Item *create_native(THD *thd, LEX_STRING name,
64
List<Item> *item_list) = 0;
68
Create_native_func() {}
70
virtual ~Create_native_func() {}
75
Adapter for functions that takes exactly zero arguments.
78
class Create_func_arg0 : public Create_func
81
virtual Item *create_func(THD *thd, LEX_STRING name, List<Item> *item_list);
84
Builder method, with no arguments.
85
@param thd The current thread
86
@return An item representing the function call
88
virtual Item *create(THD *thd) = 0;
94
virtual ~Create_func_arg0() {}
99
Adapter for functions that takes exactly one argument.
102
class Create_func_arg1 : public Create_func
105
virtual Item *create_func(THD *thd, LEX_STRING name, List<Item> *item_list);
108
Builder method, with one argument.
109
@param thd The current thread
110
@param arg1 The first argument of the function
111
@return An item representing the function call
113
virtual Item *create(THD *thd, Item *arg1) = 0;
117
Create_func_arg1() {}
119
virtual ~Create_func_arg1() {}
124
Adapter for functions that takes exactly two arguments.
127
class Create_func_arg2 : public Create_func
130
virtual Item *create_func(THD *thd, LEX_STRING name, List<Item> *item_list);
133
Builder method, with two arguments.
134
@param thd The current thread
135
@param arg1 The first argument of the function
136
@param arg2 The second argument of the function
137
@return An item representing the function call
139
virtual Item *create(THD *thd, Item *arg1, Item *arg2) = 0;
143
Create_func_arg2() {}
145
virtual ~Create_func_arg2() {}
150
Adapter for functions that takes exactly three arguments.
153
class Create_func_arg3 : public Create_func
156
virtual Item *create_func(THD *thd, LEX_STRING name, List<Item> *item_list);
159
Builder method, with three arguments.
160
@param thd The current thread
161
@param arg1 The first argument of the function
162
@param arg2 The second argument of the function
163
@param arg3 The third argument of the function
164
@return An item representing the function call
166
virtual Item *create(THD *thd, Item *arg1, Item *arg2, Item *arg3) = 0;
170
Create_func_arg3() {}
172
virtual ~Create_func_arg3() {}
177
Function builder for Stored Functions.
180
class Create_sp_func : public Create_qfunc
183
virtual Item *create(THD *thd, LEX_STRING db, LEX_STRING name,
184
bool use_explicit_name, List<Item> *item_list);
186
static Create_sp_func s_singleton;
192
virtual ~Create_sp_func() {}
198
Common (non) builder for geometry functions.
199
This builder is used in <code>--without-geometry</code> builds only,
203
class Create_func_no_geom : public Create_func
206
virtual Item *create_func(THD *thd, LEX_STRING name, List<Item> *item_list);
209
static Create_func_no_geom s_singleton;
213
Create_func_no_geom() {}
215
virtual ~Create_func_no_geom() {}
221
Concrete functions builders (native functions).
222
Please keep this list sorted in alphabetical order,
223
it helps to compare code between versions, and helps with merges conflicts.
226
class Create_func_abs : public Create_func_arg1
229
virtual Item *create(THD *thd, Item *arg1);
231
static Create_func_abs s_singleton;
235
virtual ~Create_func_abs() {}
239
class Create_func_acos : public Create_func_arg1
242
virtual Item *create(THD *thd, Item *arg1);
244
static Create_func_acos s_singleton;
247
Create_func_acos() {}
248
virtual ~Create_func_acos() {}
252
class Create_func_addtime : public Create_func_arg2
255
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
257
static Create_func_addtime s_singleton;
260
Create_func_addtime() {}
261
virtual ~Create_func_addtime() {}
265
class Create_func_aes_encrypt : public Create_func_arg2
268
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
270
static Create_func_aes_encrypt s_singleton;
273
Create_func_aes_encrypt() {}
274
virtual ~Create_func_aes_encrypt() {}
278
class Create_func_aes_decrypt : public Create_func_arg2
281
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
283
static Create_func_aes_decrypt s_singleton;
286
Create_func_aes_decrypt() {}
287
virtual ~Create_func_aes_decrypt() {}
292
class Create_func_area : public Create_func_arg1
295
virtual Item *create(THD *thd, Item *arg1);
297
static Create_func_area s_singleton;
300
Create_func_area() {}
301
virtual ~Create_func_area() {}
307
class Create_func_as_wkb : public Create_func_arg1
310
virtual Item *create(THD *thd, Item *arg1);
312
static Create_func_as_wkb s_singleton;
315
Create_func_as_wkb() {}
316
virtual ~Create_func_as_wkb() {}
322
class Create_func_as_wkt : public Create_func_arg1
325
virtual Item *create(THD *thd, Item *arg1);
327
static Create_func_as_wkt s_singleton;
330
Create_func_as_wkt() {}
331
virtual ~Create_func_as_wkt() {}
336
class Create_func_asin : public Create_func_arg1
339
virtual Item *create(THD *thd, Item *arg1);
341
static Create_func_asin s_singleton;
344
Create_func_asin() {}
345
virtual ~Create_func_asin() {}
349
class Create_func_atan : public Create_native_func
352
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
354
static Create_func_atan s_singleton;
357
Create_func_atan() {}
358
virtual ~Create_func_atan() {}
362
class Create_func_benchmark : public Create_func_arg2
365
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
367
static Create_func_benchmark s_singleton;
370
Create_func_benchmark() {}
371
virtual ~Create_func_benchmark() {}
375
class Create_func_bin : public Create_func_arg1
378
virtual Item *create(THD *thd, Item *arg1);
380
static Create_func_bin s_singleton;
384
virtual ~Create_func_bin() {}
388
class Create_func_bit_count : public Create_func_arg1
391
virtual Item *create(THD *thd, Item *arg1);
393
static Create_func_bit_count s_singleton;
396
Create_func_bit_count() {}
397
virtual ~Create_func_bit_count() {}
401
class Create_func_bit_length : public Create_func_arg1
404
virtual Item *create(THD *thd, Item *arg1);
406
static Create_func_bit_length s_singleton;
409
Create_func_bit_length() {}
410
virtual ~Create_func_bit_length() {}
414
class Create_func_ceiling : public Create_func_arg1
417
virtual Item *create(THD *thd, Item *arg1);
419
static Create_func_ceiling s_singleton;
422
Create_func_ceiling() {}
423
virtual ~Create_func_ceiling() {}
428
class Create_func_centroid : public Create_func_arg1
431
virtual Item *create(THD *thd, Item *arg1);
433
static Create_func_centroid s_singleton;
436
Create_func_centroid() {}
437
virtual ~Create_func_centroid() {}
442
class Create_func_char_length : public Create_func_arg1
445
virtual Item *create(THD *thd, Item *arg1);
447
static Create_func_char_length s_singleton;
450
Create_func_char_length() {}
451
virtual ~Create_func_char_length() {}
455
class Create_func_coercibility : public Create_func_arg1
458
virtual Item *create(THD *thd, Item *arg1);
460
static Create_func_coercibility s_singleton;
463
Create_func_coercibility() {}
464
virtual ~Create_func_coercibility() {}
468
class Create_func_compress : public Create_func_arg1
471
virtual Item *create(THD *thd, Item *arg1);
473
static Create_func_compress s_singleton;
476
Create_func_compress() {}
477
virtual ~Create_func_compress() {}
481
class Create_func_concat : public Create_native_func
484
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
486
static Create_func_concat s_singleton;
489
Create_func_concat() {}
490
virtual ~Create_func_concat() {}
494
class Create_func_concat_ws : public Create_native_func
497
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
499
static Create_func_concat_ws s_singleton;
502
Create_func_concat_ws() {}
503
virtual ~Create_func_concat_ws() {}
507
class Create_func_connection_id : public Create_func_arg0
510
virtual Item *create(THD *thd);
512
static Create_func_connection_id s_singleton;
515
Create_func_connection_id() {}
516
virtual ~Create_func_connection_id() {}
521
class Create_func_mbr_contains : public Create_func_arg2
524
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
526
static Create_func_mbr_contains s_singleton;
529
Create_func_mbr_contains() {}
530
virtual ~Create_func_mbr_contains() {}
534
class Create_func_contains : public Create_func_arg2
537
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
539
static Create_func_contains s_singleton;
542
Create_func_contains() {}
543
virtual ~Create_func_contains() {}
548
class Create_func_conv : public Create_func_arg3
551
virtual Item *create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
553
static Create_func_conv s_singleton;
556
Create_func_conv() {}
557
virtual ~Create_func_conv() {}
561
class Create_func_convert_tz : public Create_func_arg3
564
virtual Item *create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
566
static Create_func_convert_tz s_singleton;
569
Create_func_convert_tz() {}
570
virtual ~Create_func_convert_tz() {}
574
class Create_func_cos : public Create_func_arg1
577
virtual Item *create(THD *thd, Item *arg1);
579
static Create_func_cos s_singleton;
583
virtual ~Create_func_cos() {}
587
class Create_func_cot : public Create_func_arg1
590
virtual Item *create(THD *thd, Item *arg1);
592
static Create_func_cot s_singleton;
596
virtual ~Create_func_cot() {}
600
class Create_func_crc32 : public Create_func_arg1
603
virtual Item *create(THD *thd, Item *arg1);
605
static Create_func_crc32 s_singleton;
608
Create_func_crc32() {}
609
virtual ~Create_func_crc32() {}
614
class Create_func_crosses : public Create_func_arg2
617
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
619
static Create_func_crosses s_singleton;
622
Create_func_crosses() {}
623
virtual ~Create_func_crosses() {}
628
class Create_func_date_format : public Create_func_arg2
631
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
633
static Create_func_date_format s_singleton;
636
Create_func_date_format() {}
637
virtual ~Create_func_date_format() {}
641
class Create_func_datediff : public Create_func_arg2
644
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
646
static Create_func_datediff s_singleton;
649
Create_func_datediff() {}
650
virtual ~Create_func_datediff() {}
654
class Create_func_dayname : public Create_func_arg1
657
virtual Item *create(THD *thd, Item *arg1);
659
static Create_func_dayname s_singleton;
662
Create_func_dayname() {}
663
virtual ~Create_func_dayname() {}
667
class Create_func_dayofmonth : public Create_func_arg1
670
virtual Item *create(THD *thd, Item *arg1);
672
static Create_func_dayofmonth s_singleton;
675
Create_func_dayofmonth() {}
676
virtual ~Create_func_dayofmonth() {}
680
class Create_func_dayofweek : public Create_func_arg1
683
virtual Item *create(THD *thd, Item *arg1);
685
static Create_func_dayofweek s_singleton;
688
Create_func_dayofweek() {}
689
virtual ~Create_func_dayofweek() {}
693
class Create_func_dayofyear : public Create_func_arg1
696
virtual Item *create(THD *thd, Item *arg1);
698
static Create_func_dayofyear s_singleton;
701
Create_func_dayofyear() {}
702
virtual ~Create_func_dayofyear() {}
706
class Create_func_decode : public Create_func_arg2
709
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
711
static Create_func_decode s_singleton;
714
Create_func_decode() {}
715
virtual ~Create_func_decode() {}
719
class Create_func_degrees : public Create_func_arg1
722
virtual Item *create(THD *thd, Item *arg1);
724
static Create_func_degrees s_singleton;
727
Create_func_degrees() {}
728
virtual ~Create_func_degrees() {}
732
class Create_func_des_decrypt : public Create_native_func
735
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
737
static Create_func_des_decrypt s_singleton;
740
Create_func_des_decrypt() {}
741
virtual ~Create_func_des_decrypt() {}
745
class Create_func_des_encrypt : public Create_native_func
748
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
750
static Create_func_des_encrypt s_singleton;
753
Create_func_des_encrypt() {}
754
virtual ~Create_func_des_encrypt() {}
759
class Create_func_dimension : public Create_func_arg1
762
virtual Item *create(THD *thd, Item *arg1);
764
static Create_func_dimension s_singleton;
767
Create_func_dimension() {}
768
virtual ~Create_func_dimension() {}
774
class Create_func_mbr_disjoint : public Create_func_arg2
777
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
779
static Create_func_mbr_disjoint s_singleton;
782
Create_func_mbr_disjoint() {}
783
virtual ~Create_func_mbr_disjoint() {}
787
class Create_func_disjoint : public Create_func_arg2
790
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
792
static Create_func_disjoint s_singleton;
795
Create_func_disjoint() {}
796
virtual ~Create_func_disjoint() {}
800
class Create_func_distance : public Create_func_arg2
803
virtual Item* create(THD *thd, Item *arg1, Item *arg2);
805
static Create_func_distance s_singleton;
808
Create_func_distance() {}
809
virtual ~Create_func_distance() {}
814
class Create_func_elt : public Create_native_func
817
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
819
static Create_func_elt s_singleton;
823
virtual ~Create_func_elt() {}
827
class Create_func_encode : public Create_func_arg2
830
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
832
static Create_func_encode s_singleton;
835
Create_func_encode() {}
836
virtual ~Create_func_encode() {}
840
class Create_func_encrypt : public Create_native_func
843
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
845
static Create_func_encrypt s_singleton;
848
Create_func_encrypt() {}
849
virtual ~Create_func_encrypt() {}
854
class Create_func_endpoint : public Create_func_arg1
857
virtual Item *create(THD *thd, Item *arg1);
859
static Create_func_endpoint s_singleton;
862
Create_func_endpoint() {}
863
virtual ~Create_func_endpoint() {}
869
class Create_func_envelope : public Create_func_arg1
872
virtual Item *create(THD *thd, Item *arg1);
874
static Create_func_envelope s_singleton;
877
Create_func_envelope() {}
878
virtual ~Create_func_envelope() {}
884
class Create_func_mbr_equals : public Create_func_arg2
887
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
889
static Create_func_mbr_equals s_singleton;
892
Create_func_mbr_equals() {}
893
virtual ~Create_func_mbr_equals() {}
897
class Create_func_equals : public Create_func_arg2
900
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
902
static Create_func_equals s_singleton;
905
Create_func_equals() {}
906
virtual ~Create_func_equals() {}
911
class Create_func_exp : public Create_func_arg1
914
virtual Item *create(THD *thd, Item *arg1);
916
static Create_func_exp s_singleton;
920
virtual ~Create_func_exp() {}
924
class Create_func_export_set : public Create_native_func
927
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
929
static Create_func_export_set s_singleton;
932
Create_func_export_set() {}
933
virtual ~Create_func_export_set() {}
938
class Create_func_exteriorring : public Create_func_arg1
941
virtual Item *create(THD *thd, Item *arg1);
943
static Create_func_exteriorring s_singleton;
946
Create_func_exteriorring() {}
947
virtual ~Create_func_exteriorring() {}
952
class Create_func_field : public Create_native_func
955
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
957
static Create_func_field s_singleton;
960
Create_func_field() {}
961
virtual ~Create_func_field() {}
965
class Create_func_find_in_set : public Create_func_arg2
968
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
970
static Create_func_find_in_set s_singleton;
973
Create_func_find_in_set() {}
974
virtual ~Create_func_find_in_set() {}
978
class Create_func_floor : public Create_func_arg1
981
virtual Item *create(THD *thd, Item *arg1);
983
static Create_func_floor s_singleton;
986
Create_func_floor() {}
987
virtual ~Create_func_floor() {}
991
class Create_func_found_rows : public Create_func_arg0
994
virtual Item *create(THD *thd);
996
static Create_func_found_rows s_singleton;
999
Create_func_found_rows() {}
1000
virtual ~Create_func_found_rows() {}
1004
class Create_func_from_base64 : public Create_func_arg1
1007
virtual Item *create(THD *thd, Item *arg1);
1009
static Create_func_from_base64 s_singleton;
1012
Create_func_from_base64() {}
1013
virtual ~Create_func_from_base64() {}
1017
class Create_func_from_days : public Create_func_arg1
1020
virtual Item *create(THD *thd, Item *arg1);
1022
static Create_func_from_days s_singleton;
1025
Create_func_from_days() {}
1026
virtual ~Create_func_from_days() {}
1030
class Create_func_from_unixtime : public Create_native_func
1033
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
1035
static Create_func_from_unixtime s_singleton;
1038
Create_func_from_unixtime() {}
1039
virtual ~Create_func_from_unixtime() {}
1044
class Create_func_geometry_from_text : public Create_native_func
1047
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
1049
static Create_func_geometry_from_text s_singleton;
1052
Create_func_geometry_from_text() {}
1053
virtual ~Create_func_geometry_from_text() {}
1059
class Create_func_geometry_from_wkb : public Create_native_func
1062
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
1064
static Create_func_geometry_from_wkb s_singleton;
1067
Create_func_geometry_from_wkb() {}
1068
virtual ~Create_func_geometry_from_wkb() {}
1074
class Create_func_geometry_type : public Create_func_arg1
1077
virtual Item *create(THD *thd, Item *arg1);
1079
static Create_func_geometry_type s_singleton;
1082
Create_func_geometry_type() {}
1083
virtual ~Create_func_geometry_type() {}
1089
class Create_func_geometryn : public Create_func_arg2
1092
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1094
static Create_func_geometryn s_singleton;
1097
Create_func_geometryn() {}
1098
virtual ~Create_func_geometryn() {}
1103
class Create_func_get_lock : public Create_func_arg2
1106
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1108
static Create_func_get_lock s_singleton;
1111
Create_func_get_lock() {}
1112
virtual ~Create_func_get_lock() {}
1116
#if defined(HAVE_SPATIAL) && !defined(DBUG_OFF)
1117
class Create_func_gis_debug : public Create_func_arg1
1120
virtual Item *create(THD *thd, Item *arg1);
1122
static Create_func_gis_debug s_singleton;
1125
Create_func_gis_debug() {}
1126
virtual ~Create_func_gis_debug() {}
1132
class Create_func_glength : public Create_func_arg1
1135
virtual Item *create(THD *thd, Item *arg1);
1137
static Create_func_glength s_singleton;
1140
Create_func_glength() {}
1141
virtual ~Create_func_glength() {}
1146
class Create_func_greatest : public Create_native_func
1149
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
1151
static Create_func_greatest s_singleton;
1154
Create_func_greatest() {}
1155
virtual ~Create_func_greatest() {}
1159
class Create_func_gtid_subtract : public Create_func_arg2
1162
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1164
static Create_func_gtid_subtract s_singleton;
1167
Create_func_gtid_subtract() {}
1168
virtual ~Create_func_gtid_subtract() {}
1172
class Create_func_gtid_subset : public Create_func_arg2
1175
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1177
static Create_func_gtid_subset s_singleton;
1180
Create_func_gtid_subset() {}
1181
virtual ~Create_func_gtid_subset() {}
1185
class Create_func_hex : public Create_func_arg1
1188
virtual Item *create(THD *thd, Item *arg1);
1190
static Create_func_hex s_singleton;
1193
Create_func_hex() {}
1194
virtual ~Create_func_hex() {}
1198
class Create_func_ifnull : public Create_func_arg2
1201
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1203
static Create_func_ifnull s_singleton;
1206
Create_func_ifnull() {}
1207
virtual ~Create_func_ifnull() {}
1211
class Create_func_inet_ntoa : public Create_func_arg1
1214
virtual Item *create(THD *thd, Item *arg1);
1216
static Create_func_inet_ntoa s_singleton;
1219
Create_func_inet_ntoa() {}
1220
virtual ~Create_func_inet_ntoa() {}
1224
class Create_func_inet_aton : public Create_func_arg1
1227
virtual Item *create(THD *thd, Item *arg1);
1229
static Create_func_inet_aton s_singleton;
1232
Create_func_inet_aton() {}
1233
virtual ~Create_func_inet_aton() {}
1237
class Create_func_inet6_aton : public Create_func_arg1
1240
virtual Item *create(THD *thd, Item *arg1);
1242
static Create_func_inet6_aton s_singleton;
1245
Create_func_inet6_aton() {}
1246
virtual ~Create_func_inet6_aton() {}
1250
class Create_func_inet6_ntoa : public Create_func_arg1
1253
virtual Item *create(THD *thd, Item *arg1);
1255
static Create_func_inet6_ntoa s_singleton;
1258
Create_func_inet6_ntoa() {}
1259
virtual ~Create_func_inet6_ntoa() {}
1263
class Create_func_is_ipv4 : public Create_func_arg1
1266
virtual Item *create(THD *thd, Item *arg1);
1268
static Create_func_is_ipv4 s_singleton;
1271
Create_func_is_ipv4() {}
1272
virtual ~Create_func_is_ipv4() {}
1276
class Create_func_is_ipv6 : public Create_func_arg1
1279
virtual Item *create(THD *thd, Item *arg1);
1281
static Create_func_is_ipv6 s_singleton;
1284
Create_func_is_ipv6() {}
1285
virtual ~Create_func_is_ipv6() {}
1289
class Create_func_is_ipv4_compat : public Create_func_arg1
1292
virtual Item *create(THD *thd, Item *arg1);
1294
static Create_func_is_ipv4_compat s_singleton;
1297
Create_func_is_ipv4_compat() {}
1298
virtual ~Create_func_is_ipv4_compat() {}
1302
class Create_func_is_ipv4_mapped : public Create_func_arg1
1305
virtual Item *create(THD *thd, Item *arg1);
1307
static Create_func_is_ipv4_mapped s_singleton;
1310
Create_func_is_ipv4_mapped() {}
1311
virtual ~Create_func_is_ipv4_mapped() {}
1315
class Create_func_instr : public Create_func_arg2
1318
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1320
static Create_func_instr s_singleton;
1323
Create_func_instr() {}
1324
virtual ~Create_func_instr() {}
1329
class Create_func_interiorringn : public Create_func_arg2
1332
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1334
static Create_func_interiorringn s_singleton;
1337
Create_func_interiorringn() {}
1338
virtual ~Create_func_interiorringn() {}
1344
class Create_func_mbr_intersects : public Create_func_arg2
1347
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1349
static Create_func_mbr_intersects s_singleton;
1352
Create_func_mbr_intersects() {}
1353
virtual ~Create_func_mbr_intersects() {}
1357
class Create_func_intersects : public Create_func_arg2
1360
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1362
static Create_func_intersects s_singleton;
1365
Create_func_intersects() {}
1366
virtual ~Create_func_intersects() {}
1370
class Create_func_intersection : public Create_func_arg2
1373
virtual Item* create(THD *thd, Item *arg1, Item *arg2);
1375
static Create_func_intersection s_singleton;
1378
Create_func_intersection() {}
1379
virtual ~Create_func_intersection() {}
1383
class Create_func_difference : public Create_func_arg2
1386
virtual Item* create(THD *thd, Item *arg1, Item *arg2);
1388
static Create_func_difference s_singleton;
1391
Create_func_difference() {}
1392
virtual ~Create_func_difference() {}
1396
class Create_func_union : public Create_func_arg2
1399
virtual Item* create(THD *thd, Item *arg1, Item *arg2);
1401
static Create_func_union s_singleton;
1404
Create_func_union() {}
1405
virtual ~Create_func_union() {}
1409
class Create_func_symdifference : public Create_func_arg2
1412
virtual Item* create(THD *thd, Item *arg1, Item *arg2);
1414
static Create_func_symdifference s_singleton;
1417
Create_func_symdifference() {}
1418
virtual ~Create_func_symdifference() {}
1422
class Create_func_buffer : public Create_func_arg2
1425
virtual Item* create(THD *thd, Item *arg1, Item *arg2);
1427
static Create_func_buffer s_singleton;
1430
Create_func_buffer() {}
1431
virtual ~Create_func_buffer() {}
1433
#endif /*HAVE_SPATIAL*/
1436
class Create_func_is_free_lock : public Create_func_arg1
1439
virtual Item *create(THD *thd, Item *arg1);
1441
static Create_func_is_free_lock s_singleton;
1444
Create_func_is_free_lock() {}
1445
virtual ~Create_func_is_free_lock() {}
1449
class Create_func_is_used_lock : public Create_func_arg1
1452
virtual Item *create(THD *thd, Item *arg1);
1454
static Create_func_is_used_lock s_singleton;
1457
Create_func_is_used_lock() {}
1458
virtual ~Create_func_is_used_lock() {}
1463
class Create_func_isclosed : public Create_func_arg1
1466
virtual Item *create(THD *thd, Item *arg1);
1468
static Create_func_isclosed s_singleton;
1471
Create_func_isclosed() {}
1472
virtual ~Create_func_isclosed() {}
1478
class Create_func_isempty : public Create_func_arg1
1481
virtual Item *create(THD *thd, Item *arg1);
1483
static Create_func_isempty s_singleton;
1486
Create_func_isempty() {}
1487
virtual ~Create_func_isempty() {}
1492
class Create_func_isnull : public Create_func_arg1
1495
virtual Item *create(THD *thd, Item *arg1);
1497
static Create_func_isnull s_singleton;
1500
Create_func_isnull() {}
1501
virtual ~Create_func_isnull() {}
1506
class Create_func_issimple : public Create_func_arg1
1509
virtual Item *create(THD *thd, Item *arg1);
1511
static Create_func_issimple s_singleton;
1514
Create_func_issimple() {}
1515
virtual ~Create_func_issimple() {}
1520
class Create_func_last_day : public Create_func_arg1
1523
virtual Item *create(THD *thd, Item *arg1);
1525
static Create_func_last_day s_singleton;
1528
Create_func_last_day() {}
1529
virtual ~Create_func_last_day() {}
1533
class Create_func_last_insert_id : public Create_native_func
1536
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
1538
static Create_func_last_insert_id s_singleton;
1541
Create_func_last_insert_id() {}
1542
virtual ~Create_func_last_insert_id() {}
1546
class Create_func_lcase : public Create_func_arg1
1549
virtual Item *create(THD *thd, Item *arg1);
1551
static Create_func_lcase s_singleton;
1554
Create_func_lcase() {}
1555
virtual ~Create_func_lcase() {}
1559
class Create_func_least : public Create_native_func
1562
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
1564
static Create_func_least s_singleton;
1567
Create_func_least() {}
1568
virtual ~Create_func_least() {}
1572
class Create_func_length : public Create_func_arg1
1575
virtual Item *create(THD *thd, Item *arg1);
1577
static Create_func_length s_singleton;
1580
Create_func_length() {}
1581
virtual ~Create_func_length() {}
1586
class Create_func_like_range_min : public Create_func_arg2
1589
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1591
static Create_func_like_range_min s_singleton;
1594
Create_func_like_range_min() {}
1595
virtual ~Create_func_like_range_min() {}
1599
class Create_func_like_range_max : public Create_func_arg2
1602
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1604
static Create_func_like_range_max s_singleton;
1607
Create_func_like_range_max() {}
1608
virtual ~Create_func_like_range_max() {}
1613
class Create_func_ln : public Create_func_arg1
1616
virtual Item *create(THD *thd, Item *arg1);
1618
static Create_func_ln s_singleton;
1622
virtual ~Create_func_ln() {}
1626
class Create_func_load_file : public Create_func_arg1
1629
virtual Item *create(THD *thd, Item *arg1);
1631
static Create_func_load_file s_singleton;
1634
Create_func_load_file() {}
1635
virtual ~Create_func_load_file() {}
1639
class Create_func_locate : public Create_native_func
1642
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
1644
static Create_func_locate s_singleton;
1647
Create_func_locate() {}
1648
virtual ~Create_func_locate() {}
1652
class Create_func_log : public Create_native_func
1655
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
1657
static Create_func_log s_singleton;
1660
Create_func_log() {}
1661
virtual ~Create_func_log() {}
1665
class Create_func_log10 : public Create_func_arg1
1668
virtual Item *create(THD *thd, Item *arg1);
1670
static Create_func_log10 s_singleton;
1673
Create_func_log10() {}
1674
virtual ~Create_func_log10() {}
1678
class Create_func_log2 : public Create_func_arg1
1681
virtual Item *create(THD *thd, Item *arg1);
1683
static Create_func_log2 s_singleton;
1686
Create_func_log2() {}
1687
virtual ~Create_func_log2() {}
1691
class Create_func_lpad : public Create_func_arg3
1694
virtual Item *create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
1696
static Create_func_lpad s_singleton;
1699
Create_func_lpad() {}
1700
virtual ~Create_func_lpad() {}
1704
class Create_func_ltrim : public Create_func_arg1
1707
virtual Item *create(THD *thd, Item *arg1);
1709
static Create_func_ltrim s_singleton;
1712
Create_func_ltrim() {}
1713
virtual ~Create_func_ltrim() {}
1717
class Create_func_makedate : public Create_func_arg2
1720
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1722
static Create_func_makedate s_singleton;
1725
Create_func_makedate() {}
1726
virtual ~Create_func_makedate() {}
1730
class Create_func_maketime : public Create_func_arg3
1733
virtual Item *create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
1735
static Create_func_maketime s_singleton;
1738
Create_func_maketime() {}
1739
virtual ~Create_func_maketime() {}
1743
class Create_func_make_set : public Create_native_func
1746
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
1748
static Create_func_make_set s_singleton;
1751
Create_func_make_set() {}
1752
virtual ~Create_func_make_set() {}
1756
class Create_func_master_pos_wait : public Create_native_func
1759
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
1761
static Create_func_master_pos_wait s_singleton;
1764
Create_func_master_pos_wait() {}
1765
virtual ~Create_func_master_pos_wait() {}
1768
class Create_func_master_gtid_set_wait : public Create_native_func
1771
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
1773
static Create_func_master_gtid_set_wait s_singleton;
1776
Create_func_master_gtid_set_wait() {}
1777
virtual ~Create_func_master_gtid_set_wait() {}
1780
class Create_func_md5 : public Create_func_arg1
1783
virtual Item *create(THD *thd, Item *arg1);
1785
static Create_func_md5 s_singleton;
1788
Create_func_md5() {}
1789
virtual ~Create_func_md5() {}
1793
class Create_func_monthname : public Create_func_arg1
1796
virtual Item *create(THD *thd, Item *arg1);
1798
static Create_func_monthname s_singleton;
1801
Create_func_monthname() {}
1802
virtual ~Create_func_monthname() {}
1806
class Create_func_name_const : public Create_func_arg2
1809
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1811
static Create_func_name_const s_singleton;
1814
Create_func_name_const() {}
1815
virtual ~Create_func_name_const() {}
1819
class Create_func_nullif : public Create_func_arg2
1822
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1824
static Create_func_nullif s_singleton;
1827
Create_func_nullif() {}
1828
virtual ~Create_func_nullif() {}
1833
class Create_func_numgeometries : public Create_func_arg1
1836
virtual Item *create(THD *thd, Item *arg1);
1838
static Create_func_numgeometries s_singleton;
1841
Create_func_numgeometries() {}
1842
virtual ~Create_func_numgeometries() {}
1848
class Create_func_numinteriorring : public Create_func_arg1
1851
virtual Item *create(THD *thd, Item *arg1);
1853
static Create_func_numinteriorring s_singleton;
1856
Create_func_numinteriorring() {}
1857
virtual ~Create_func_numinteriorring() {}
1863
class Create_func_numpoints : public Create_func_arg1
1866
virtual Item *create(THD *thd, Item *arg1);
1868
static Create_func_numpoints s_singleton;
1871
Create_func_numpoints() {}
1872
virtual ~Create_func_numpoints() {}
1877
class Create_func_oct : public Create_func_arg1
1880
virtual Item *create(THD *thd, Item *arg1);
1882
static Create_func_oct s_singleton;
1885
Create_func_oct() {}
1886
virtual ~Create_func_oct() {}
1890
class Create_func_ord : public Create_func_arg1
1893
virtual Item *create(THD *thd, Item *arg1);
1895
static Create_func_ord s_singleton;
1898
Create_func_ord() {}
1899
virtual ~Create_func_ord() {}
1904
class Create_func_mbr_overlaps : public Create_func_arg2
1907
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1909
static Create_func_mbr_overlaps s_singleton;
1912
Create_func_mbr_overlaps() {}
1913
virtual ~Create_func_mbr_overlaps() {}
1917
class Create_func_overlaps : public Create_func_arg2
1920
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1922
static Create_func_overlaps s_singleton;
1925
Create_func_overlaps() {}
1926
virtual ~Create_func_overlaps() {}
1931
class Create_func_period_add : public Create_func_arg2
1934
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1936
static Create_func_period_add s_singleton;
1939
Create_func_period_add() {}
1940
virtual ~Create_func_period_add() {}
1944
class Create_func_period_diff : public Create_func_arg2
1947
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1949
static Create_func_period_diff s_singleton;
1952
Create_func_period_diff() {}
1953
virtual ~Create_func_period_diff() {}
1957
class Create_func_pi : public Create_func_arg0
1960
virtual Item *create(THD *thd);
1962
static Create_func_pi s_singleton;
1966
virtual ~Create_func_pi() {}
1971
class Create_func_pointn : public Create_func_arg2
1974
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1976
static Create_func_pointn s_singleton;
1979
Create_func_pointn() {}
1980
virtual ~Create_func_pointn() {}
1985
class Create_func_pow : public Create_func_arg2
1988
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
1990
static Create_func_pow s_singleton;
1993
Create_func_pow() {}
1994
virtual ~Create_func_pow() {}
1998
class Create_func_quote : public Create_func_arg1
2001
virtual Item *create(THD *thd, Item *arg1);
2003
static Create_func_quote s_singleton;
2006
Create_func_quote() {}
2007
virtual ~Create_func_quote() {}
2011
class Create_func_radians : public Create_func_arg1
2014
virtual Item *create(THD *thd, Item *arg1);
2016
static Create_func_radians s_singleton;
2019
Create_func_radians() {}
2020
virtual ~Create_func_radians() {}
2024
class Create_func_rand : public Create_native_func
2027
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
2029
static Create_func_rand s_singleton;
2032
Create_func_rand() {}
2033
virtual ~Create_func_rand() {}
2037
class Create_func_release_lock : public Create_func_arg1
2040
virtual Item *create(THD *thd, Item *arg1);
2042
static Create_func_release_lock s_singleton;
2045
Create_func_release_lock() {}
2046
virtual ~Create_func_release_lock() {}
2050
class Create_func_reverse : public Create_func_arg1
2053
virtual Item *create(THD *thd, Item *arg1);
2055
static Create_func_reverse s_singleton;
2058
Create_func_reverse() {}
2059
virtual ~Create_func_reverse() {}
2063
class Create_func_round : public Create_native_func
2066
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
2068
static Create_func_round s_singleton;
2071
Create_func_round() {}
2072
virtual ~Create_func_round() {}
2076
class Create_func_rpad : public Create_func_arg3
2079
virtual Item *create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
2081
static Create_func_rpad s_singleton;
2084
Create_func_rpad() {}
2085
virtual ~Create_func_rpad() {}
2089
class Create_func_rtrim : public Create_func_arg1
2092
virtual Item *create(THD *thd, Item *arg1);
2094
static Create_func_rtrim s_singleton;
2097
Create_func_rtrim() {}
2098
virtual ~Create_func_rtrim() {}
2102
class Create_func_sec_to_time : public Create_func_arg1
2105
virtual Item *create(THD *thd, Item *arg1);
2107
static Create_func_sec_to_time s_singleton;
2110
Create_func_sec_to_time() {}
2111
virtual ~Create_func_sec_to_time() {}
2115
class Create_func_sha : public Create_func_arg1
2118
virtual Item *create(THD *thd, Item *arg1);
2120
static Create_func_sha s_singleton;
2123
Create_func_sha() {}
2124
virtual ~Create_func_sha() {}
2128
class Create_func_sha2 : public Create_func_arg2
2131
virtual Item* create(THD *thd, Item *arg1, Item *arg2);
2133
static Create_func_sha2 s_singleton;
2136
Create_func_sha2() {}
2137
virtual ~Create_func_sha2() {}
2141
class Create_func_sign : public Create_func_arg1
2144
virtual Item *create(THD *thd, Item *arg1);
2146
static Create_func_sign s_singleton;
2149
Create_func_sign() {}
2150
virtual ~Create_func_sign() {}
2154
class Create_func_sin : public Create_func_arg1
2157
virtual Item *create(THD *thd, Item *arg1);
2159
static Create_func_sin s_singleton;
2162
Create_func_sin() {}
2163
virtual ~Create_func_sin() {}
2167
class Create_func_sleep : public Create_func_arg1
2170
virtual Item *create(THD *thd, Item *arg1);
2172
static Create_func_sleep s_singleton;
2175
Create_func_sleep() {}
2176
virtual ~Create_func_sleep() {}
2180
class Create_func_soundex : public Create_func_arg1
2183
virtual Item *create(THD *thd, Item *arg1);
2185
static Create_func_soundex s_singleton;
2188
Create_func_soundex() {}
2189
virtual ~Create_func_soundex() {}
2193
class Create_func_space : public Create_func_arg1
2196
virtual Item *create(THD *thd, Item *arg1);
2198
static Create_func_space s_singleton;
2201
Create_func_space() {}
2202
virtual ~Create_func_space() {}
2206
class Create_func_sqrt : public Create_func_arg1
2209
virtual Item *create(THD *thd, Item *arg1);
2211
static Create_func_sqrt s_singleton;
2214
Create_func_sqrt() {}
2215
virtual ~Create_func_sqrt() {}
2220
class Create_func_srid : public Create_func_arg1
2223
virtual Item *create(THD *thd, Item *arg1);
2225
static Create_func_srid s_singleton;
2228
Create_func_srid() {}
2229
virtual ~Create_func_srid() {}
2235
class Create_func_startpoint : public Create_func_arg1
2238
virtual Item *create(THD *thd, Item *arg1);
2240
static Create_func_startpoint s_singleton;
2243
Create_func_startpoint() {}
2244
virtual ~Create_func_startpoint() {}
2249
class Create_func_str_to_date : public Create_func_arg2
2252
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
2254
static Create_func_str_to_date s_singleton;
2257
Create_func_str_to_date() {}
2258
virtual ~Create_func_str_to_date() {}
2262
class Create_func_strcmp : public Create_func_arg2
2265
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
2267
static Create_func_strcmp s_singleton;
2270
Create_func_strcmp() {}
2271
virtual ~Create_func_strcmp() {}
2275
class Create_func_substr_index : public Create_func_arg3
2278
virtual Item *create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
2280
static Create_func_substr_index s_singleton;
2283
Create_func_substr_index() {}
2284
virtual ~Create_func_substr_index() {}
2288
class Create_func_subtime : public Create_func_arg2
2291
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
2293
static Create_func_subtime s_singleton;
2296
Create_func_subtime() {}
2297
virtual ~Create_func_subtime() {}
2301
class Create_func_tan : public Create_func_arg1
2304
virtual Item *create(THD *thd, Item *arg1);
2306
static Create_func_tan s_singleton;
2309
Create_func_tan() {}
2310
virtual ~Create_func_tan() {}
2314
class Create_func_time_format : public Create_func_arg2
2317
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
2319
static Create_func_time_format s_singleton;
2322
Create_func_time_format() {}
2323
virtual ~Create_func_time_format() {}
2327
class Create_func_time_to_sec : public Create_func_arg1
2330
virtual Item *create(THD *thd, Item *arg1);
2332
static Create_func_time_to_sec s_singleton;
2335
Create_func_time_to_sec() {}
2336
virtual ~Create_func_time_to_sec() {}
2340
class Create_func_timediff : public Create_func_arg2
2343
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
2345
static Create_func_timediff s_singleton;
2348
Create_func_timediff() {}
2349
virtual ~Create_func_timediff() {}
2353
class Create_func_to_base64 : public Create_func_arg1
2356
virtual Item *create(THD *thd, Item *arg1);
2358
static Create_func_to_base64 s_singleton;
2361
Create_func_to_base64() {}
2362
virtual ~Create_func_to_base64() {}
2366
class Create_func_to_days : public Create_func_arg1
2369
virtual Item *create(THD *thd, Item *arg1);
2371
static Create_func_to_days s_singleton;
2374
Create_func_to_days() {}
2375
virtual ~Create_func_to_days() {}
2378
class Create_func_to_seconds : public Create_func_arg1
2381
virtual Item* create(THD *thd, Item *arg1);
2383
static Create_func_to_seconds s_singleton;
2386
Create_func_to_seconds() {}
2387
virtual ~Create_func_to_seconds() {}
2392
class Create_func_touches : public Create_func_arg2
2395
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
2397
static Create_func_touches s_singleton;
2400
Create_func_touches() {}
2401
virtual ~Create_func_touches() {}
2406
class Create_func_ucase : public Create_func_arg1
2409
virtual Item *create(THD *thd, Item *arg1);
2411
static Create_func_ucase s_singleton;
2414
Create_func_ucase() {}
2415
virtual ~Create_func_ucase() {}
2419
class Create_func_uncompress : public Create_func_arg1
2422
virtual Item *create(THD *thd, Item *arg1);
2424
static Create_func_uncompress s_singleton;
2427
Create_func_uncompress() {}
2428
virtual ~Create_func_uncompress() {}
2432
class Create_func_uncompressed_length : public Create_func_arg1
2435
virtual Item *create(THD *thd, Item *arg1);
2437
static Create_func_uncompressed_length s_singleton;
2440
Create_func_uncompressed_length() {}
2441
virtual ~Create_func_uncompressed_length() {}
2445
class Create_func_unhex : public Create_func_arg1
2448
virtual Item *create(THD *thd, Item *arg1);
2450
static Create_func_unhex s_singleton;
2453
Create_func_unhex() {}
2454
virtual ~Create_func_unhex() {}
2458
class Create_func_unix_timestamp : public Create_native_func
2461
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
2463
static Create_func_unix_timestamp s_singleton;
2466
Create_func_unix_timestamp() {}
2467
virtual ~Create_func_unix_timestamp() {}
2471
class Create_func_uuid : public Create_func_arg0
2474
virtual Item *create(THD *thd);
2476
static Create_func_uuid s_singleton;
2479
Create_func_uuid() {}
2480
virtual ~Create_func_uuid() {}
2484
class Create_func_uuid_short : public Create_func_arg0
2487
virtual Item *create(THD *thd);
2489
static Create_func_uuid_short s_singleton;
2492
Create_func_uuid_short() {}
2493
virtual ~Create_func_uuid_short() {}
2497
class Create_func_validate_password_strength : public Create_func_arg1
2500
virtual Item *create(THD *thd, Item *arg1);
2502
static Create_func_validate_password_strength s_singleton;
2505
Create_func_validate_password_strength() {}
2506
virtual ~Create_func_validate_password_strength() {}
2510
class Create_func_version : public Create_func_arg0
2513
virtual Item *create(THD *thd);
2515
static Create_func_version s_singleton;
2518
Create_func_version() {}
2519
virtual ~Create_func_version() {}
2523
class Create_func_weekday : public Create_func_arg1
2526
virtual Item *create(THD *thd, Item *arg1);
2528
static Create_func_weekday s_singleton;
2531
Create_func_weekday() {}
2532
virtual ~Create_func_weekday() {}
2536
class Create_func_weekofyear : public Create_func_arg1
2539
virtual Item *create(THD *thd, Item *arg1);
2541
static Create_func_weekofyear s_singleton;
2544
Create_func_weekofyear() {}
2545
virtual ~Create_func_weekofyear() {}
2550
class Create_func_mbr_within : public Create_func_arg2
2553
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
2555
static Create_func_mbr_within s_singleton;
2558
Create_func_mbr_within() {}
2559
virtual ~Create_func_mbr_within() {}
2563
class Create_func_within : public Create_func_arg2
2566
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
2568
static Create_func_within s_singleton;
2571
Create_func_within() {}
2572
virtual ~Create_func_within() {}
2578
class Create_func_x : public Create_func_arg1
2581
virtual Item *create(THD *thd, Item *arg1);
2583
static Create_func_x s_singleton;
2587
virtual ~Create_func_x() {}
2592
class Create_func_xml_extractvalue : public Create_func_arg2
2595
virtual Item *create(THD *thd, Item *arg1, Item *arg2);
2597
static Create_func_xml_extractvalue s_singleton;
2600
Create_func_xml_extractvalue() {}
2601
virtual ~Create_func_xml_extractvalue() {}
2605
class Create_func_xml_update : public Create_func_arg3
2608
virtual Item *create(THD *thd, Item *arg1, Item *arg2, Item *arg3);
2610
static Create_func_xml_update s_singleton;
2613
Create_func_xml_update() {}
2614
virtual ~Create_func_xml_update() {}
2619
class Create_func_y : public Create_func_arg1
2622
virtual Item *create(THD *thd, Item *arg1);
2624
static Create_func_y s_singleton;
2628
virtual ~Create_func_y() {}
2633
class Create_func_year_week : public Create_native_func
2636
virtual Item *create_native(THD *thd, LEX_STRING name, List<Item> *item_list);
2638
static Create_func_year_week s_singleton;
2641
Create_func_year_week() {}
2642
virtual ~Create_func_year_week() {}
2647
=============================================================================
2649
=============================================================================
2653
Checks if there are named parameters in a parameter list.
2654
The syntax to name parameters in a function call is as follow:
2655
<code>foo(expr AS named, expr named, expr AS "named", expr "named")</code>
2656
@param params The parameter list, can be null
2657
@return true if one or more parameter is named
2659
static bool has_named_parameters(List<Item> *params)
2664
List_iterator<Item> it(*params);
2665
while ((param= it++))
2667
if (! param->item_name.is_autogenerated())
2675
#ifndef HAVE_SPATIAL
2676
Create_func_no_geom Create_func_no_geom::s_singleton;
2679
Create_func_no_geom::create_func(THD * /* unused */,
2680
LEX_STRING /* unused */,
2681
List<Item> * /* unused */)
2683
/* FIXME: error message can't be translated. */
2684
my_error(ER_FEATURE_DISABLED, MYF(0),
2685
sym_group_geom.name, sym_group_geom.needed_define);
2692
Create_qfunc::create_func(THD *thd, LEX_STRING name, List<Item> *item_list)
2696
if (! thd->db && ! thd->lex->sphead)
2699
The proper error message should be in the lines of:
2700
Can't resolve <name>() to a function call,
2701
because this function:
2702
- is not a native function,
2703
- is not a user defined function,
2704
- can not match a qualified (read: stored) function
2705
since no database is selected.
2706
Reusing ER_SP_DOES_NOT_EXIST have a message consistent with
2707
the case when a default database exist, see Create_sp_func::create().
2709
my_error(ER_SP_DOES_NOT_EXIST, MYF(0),
2710
"FUNCTION", name.str);
2714
if (thd->lex->copy_db_to(&db.str, &db.length))
2717
return create(thd, db, name, false, item_list);
2722
Create_udf_func Create_udf_func::s_singleton;
2725
Create_udf_func::create_func(THD *thd, LEX_STRING name, List<Item> *item_list)
2727
udf_func *udf= find_udf(name.str, name.length);
2729
return create(thd, udf, item_list);
2734
Create_udf_func::create(THD *thd, udf_func *udf, List<Item> *item_list)
2739
DBUG_ENTER("Create_udf_func::create");
2740
if (item_list != NULL)
2741
arg_count= item_list->elements;
2743
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_UDF);
2745
DBUG_ASSERT( (udf->type == UDFTYPE_FUNCTION)
2746
|| (udf->type == UDFTYPE_AGGREGATE));
2748
switch(udf->returns) {
2751
if (udf->type == UDFTYPE_FUNCTION)
2754
func= new (thd->mem_root) Item_func_udf_str(udf, *item_list);
2756
func= new (thd->mem_root) Item_func_udf_str(udf);
2761
func= new (thd->mem_root) Item_sum_udf_str(udf, *item_list);
2763
func= new (thd->mem_root) Item_sum_udf_str(udf);
2769
if (udf->type == UDFTYPE_FUNCTION)
2772
func= new (thd->mem_root) Item_func_udf_float(udf, *item_list);
2774
func= new (thd->mem_root) Item_func_udf_float(udf);
2779
func= new (thd->mem_root) Item_sum_udf_float(udf, *item_list);
2781
func= new (thd->mem_root) Item_sum_udf_float(udf);
2787
if (udf->type == UDFTYPE_FUNCTION)
2790
func= new (thd->mem_root) Item_func_udf_int(udf, *item_list);
2792
func= new (thd->mem_root) Item_func_udf_int(udf);
2797
func= new (thd->mem_root) Item_sum_udf_int(udf, *item_list);
2799
func= new (thd->mem_root) Item_sum_udf_int(udf);
2803
case DECIMAL_RESULT:
2805
if (udf->type == UDFTYPE_FUNCTION)
2808
func= new (thd->mem_root) Item_func_udf_decimal(udf, *item_list);
2810
func= new (thd->mem_root) Item_func_udf_decimal(udf);
2815
func= new (thd->mem_root) Item_sum_udf_decimal(udf, *item_list);
2817
func= new (thd->mem_root) Item_sum_udf_decimal(udf);
2823
my_error(ER_NOT_SUPPORTED_YET, MYF(0), "UDF return type");
2826
thd->lex->safe_to_cache_query= 0;
2832
Create_sp_func Create_sp_func::s_singleton;
2835
Create_sp_func::create(THD *thd, LEX_STRING db, LEX_STRING name,
2836
bool use_explicit_name, List<Item> *item_list)
2843
if (has_named_parameters(item_list))
2846
The syntax "db.foo(expr AS p1, expr AS p2, ...) is invalid,
2847
and has been rejected during syntactic parsing already,
2848
because a stored function call may not have named parameters.
2850
The syntax "foo(expr AS p1, expr AS p2, ...)" is correct,
2851
because it can refer to a User Defined Function call.
2852
For a Stored Function however, this has no semantic.
2854
my_error(ER_WRONG_PARAMETERS_TO_STORED_FCT, MYF(0), name.str);
2858
if (item_list != NULL)
2859
arg_count= item_list->elements;
2861
qname= new (thd->mem_root) sp_name(db, name, use_explicit_name);
2862
qname->init_qname(thd);
2863
sp_add_used_routine(lex, thd, qname, SP_TYPE_FUNCTION);
2866
func= new (thd->mem_root) Item_func_sp(lex->current_context(), qname,
2869
func= new (thd->mem_root) Item_func_sp(lex->current_context(), qname);
2871
lex->safe_to_cache_query= 0;
2877
Create_native_func::create_func(THD *thd, LEX_STRING name, List<Item> *item_list)
2879
if (has_named_parameters(item_list))
2881
my_error(ER_WRONG_PARAMETERS_TO_NATIVE_FCT, MYF(0), name.str);
2885
return create_native(thd, name, item_list);
2890
Create_func_arg0::create_func(THD *thd, LEX_STRING name, List<Item> *item_list)
2894
if (item_list != NULL)
2895
arg_count= item_list->elements;
2899
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
2908
Create_func_arg1::create_func(THD *thd, LEX_STRING name, List<Item> *item_list)
2913
arg_count= item_list->elements;
2917
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
2921
Item *param_1= item_list->pop();
2923
if (! param_1->item_name.is_autogenerated())
2925
my_error(ER_WRONG_PARAMETERS_TO_NATIVE_FCT, MYF(0), name.str);
2929
return create(thd, param_1);
2934
Create_func_arg2::create_func(THD *thd, LEX_STRING name, List<Item> *item_list)
2939
arg_count= item_list->elements;
2943
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
2947
Item *param_1= item_list->pop();
2948
Item *param_2= item_list->pop();
2950
if ( (! param_1->item_name.is_autogenerated())
2951
|| (! param_2->item_name.is_autogenerated()))
2953
my_error(ER_WRONG_PARAMETERS_TO_NATIVE_FCT, MYF(0), name.str);
2957
return create(thd, param_1, param_2);
2962
Create_func_arg3::create_func(THD *thd, LEX_STRING name, List<Item> *item_list)
2967
arg_count= item_list->elements;
2971
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
2975
Item *param_1= item_list->pop();
2976
Item *param_2= item_list->pop();
2977
Item *param_3= item_list->pop();
2979
if ( (! param_1->item_name.is_autogenerated())
2980
|| (! param_2->item_name.is_autogenerated())
2981
|| (! param_3->item_name.is_autogenerated()))
2983
my_error(ER_WRONG_PARAMETERS_TO_NATIVE_FCT, MYF(0), name.str);
2987
return create(thd, param_1, param_2, param_3);
2991
Create_func_abs Create_func_abs::s_singleton;
2994
Create_func_abs::create(THD *thd, Item *arg1)
2996
return new (thd->mem_root) Item_func_abs(arg1);
3000
Create_func_acos Create_func_acos::s_singleton;
3003
Create_func_acos::create(THD *thd, Item *arg1)
3005
return new (thd->mem_root) Item_func_acos(arg1);
3009
Create_func_addtime Create_func_addtime::s_singleton;
3012
Create_func_addtime::create(THD *thd, Item *arg1, Item *arg2)
3014
return new (thd->mem_root) Item_func_add_time(arg1, arg2, 0, 0);
3018
Create_func_aes_encrypt Create_func_aes_encrypt::s_singleton;
3021
Create_func_aes_encrypt::create(THD *thd, Item *arg1, Item *arg2)
3023
return new (thd->mem_root) Item_func_aes_encrypt(arg1, arg2);
3027
Create_func_aes_decrypt Create_func_aes_decrypt::s_singleton;
3030
Create_func_aes_decrypt::create(THD *thd, Item *arg1, Item *arg2)
3032
return new (thd->mem_root) Item_func_aes_decrypt(arg1, arg2);
3037
Create_func_area Create_func_area::s_singleton;
3040
Create_func_area::create(THD *thd, Item *arg1)
3042
return new (thd->mem_root) Item_func_area(arg1);
3048
Create_func_as_wkb Create_func_as_wkb::s_singleton;
3051
Create_func_as_wkb::create(THD *thd, Item *arg1)
3053
return new (thd->mem_root) Item_func_as_wkb(arg1);
3059
Create_func_as_wkt Create_func_as_wkt::s_singleton;
3062
Create_func_as_wkt::create(THD *thd, Item *arg1)
3064
return new (thd->mem_root) Item_func_as_wkt(arg1);
3069
Create_func_asin Create_func_asin::s_singleton;
3072
Create_func_asin::create(THD *thd, Item *arg1)
3074
return new (thd->mem_root) Item_func_asin(arg1);
3078
Create_func_atan Create_func_atan::s_singleton;
3081
Create_func_atan::create_native(THD *thd, LEX_STRING name,
3082
List<Item> *item_list)
3087
if (item_list != NULL)
3088
arg_count= item_list->elements;
3090
switch (arg_count) {
3093
Item *param_1= item_list->pop();
3094
func= new (thd->mem_root) Item_func_atan(param_1);
3099
Item *param_1= item_list->pop();
3100
Item *param_2= item_list->pop();
3101
func= new (thd->mem_root) Item_func_atan(param_1, param_2);
3106
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
3115
Create_func_benchmark Create_func_benchmark::s_singleton;
3118
Create_func_benchmark::create(THD *thd, Item *arg1, Item *arg2)
3120
thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
3121
return new (thd->mem_root) Item_func_benchmark(arg1, arg2);
3125
Create_func_bin Create_func_bin::s_singleton;
3128
Create_func_bin::create(THD *thd, Item *arg1)
3130
Item *i10= new (thd->mem_root) Item_int((int32) 10,2);
3131
Item *i2= new (thd->mem_root) Item_int((int32) 2,1);
3132
return new (thd->mem_root) Item_func_conv(arg1, i10, i2);
3136
Create_func_bit_count Create_func_bit_count::s_singleton;
3139
Create_func_bit_count::create(THD *thd, Item *arg1)
3141
return new (thd->mem_root) Item_func_bit_count(arg1);
3145
Create_func_bit_length Create_func_bit_length::s_singleton;
3148
Create_func_bit_length::create(THD *thd, Item *arg1)
3150
return new (thd->mem_root) Item_func_bit_length(arg1);
3154
Create_func_ceiling Create_func_ceiling::s_singleton;
3157
Create_func_ceiling::create(THD *thd, Item *arg1)
3159
return new (thd->mem_root) Item_func_ceiling(arg1);
3164
Create_func_centroid Create_func_centroid::s_singleton;
3167
Create_func_centroid::create(THD *thd, Item *arg1)
3169
return new (thd->mem_root) Item_func_centroid(arg1);
3174
Create_func_char_length Create_func_char_length::s_singleton;
3177
Create_func_char_length::create(THD *thd, Item *arg1)
3179
return new (thd->mem_root) Item_func_char_length(arg1);
3183
Create_func_coercibility Create_func_coercibility::s_singleton;
3186
Create_func_coercibility::create(THD *thd, Item *arg1)
3188
return new (thd->mem_root) Item_func_coercibility(arg1);
3192
Create_func_concat Create_func_concat::s_singleton;
3195
Create_func_concat::create_native(THD *thd, LEX_STRING name,
3196
List<Item> *item_list)
3200
if (item_list != NULL)
3201
arg_count= item_list->elements;
3205
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
3209
return new (thd->mem_root) Item_func_concat(*item_list);
3213
Create_func_concat_ws Create_func_concat_ws::s_singleton;
3216
Create_func_concat_ws::create_native(THD *thd, LEX_STRING name,
3217
List<Item> *item_list)
3221
if (item_list != NULL)
3222
arg_count= item_list->elements;
3224
/* "WS" stands for "With Separator": this function takes 2+ arguments */
3227
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
3231
return new (thd->mem_root) Item_func_concat_ws(*item_list);
3235
Create_func_compress Create_func_compress::s_singleton;
3238
Create_func_compress::create(THD *thd, Item *arg1)
3240
return new (thd->mem_root) Item_func_compress(arg1);
3244
Create_func_connection_id Create_func_connection_id::s_singleton;
3247
Create_func_connection_id::create(THD *thd)
3249
thd->lex->safe_to_cache_query= 0;
3250
return new (thd->mem_root) Item_func_connection_id();
3255
Create_func_mbr_contains Create_func_mbr_contains::s_singleton;
3258
Create_func_mbr_contains::create(THD *thd, Item *arg1, Item *arg2)
3260
return new (thd->mem_root) Item_func_spatial_mbr_rel(arg1, arg2,
3261
Item_func::SP_CONTAINS_FUNC);
3265
Create_func_contains Create_func_contains::s_singleton;
3268
Create_func_contains::create(THD *thd, Item *arg1, Item *arg2)
3270
return new (thd->mem_root) Item_func_spatial_rel(arg1, arg2,
3271
Item_func::SP_CONTAINS_FUNC);
3276
Create_func_conv Create_func_conv::s_singleton;
3279
Create_func_conv::create(THD *thd, Item *arg1, Item *arg2, Item *arg3)
3281
return new (thd->mem_root) Item_func_conv(arg1, arg2, arg3);
3285
Create_func_convert_tz Create_func_convert_tz::s_singleton;
3288
Create_func_convert_tz::create(THD *thd, Item *arg1, Item *arg2, Item *arg3)
3290
return new (thd->mem_root) Item_func_convert_tz(arg1, arg2, arg3);
3294
Create_func_cos Create_func_cos::s_singleton;
3297
Create_func_cos::create(THD *thd, Item *arg1)
3299
return new (thd->mem_root) Item_func_cos(arg1);
3303
Create_func_cot Create_func_cot::s_singleton;
3306
Create_func_cot::create(THD *thd, Item *arg1)
3308
return new (thd->mem_root) Item_func_cot(arg1);
3312
Create_func_crc32 Create_func_crc32::s_singleton;
3315
Create_func_crc32::create(THD *thd, Item *arg1)
3317
return new (thd->mem_root) Item_func_crc32(arg1);
3322
Create_func_crosses Create_func_crosses::s_singleton;
3325
Create_func_crosses::create(THD *thd, Item *arg1, Item *arg2)
3327
return new (thd->mem_root) Item_func_spatial_rel(arg1, arg2,
3328
Item_func::SP_CROSSES_FUNC);
3333
Create_func_date_format Create_func_date_format::s_singleton;
3336
Create_func_date_format::create(THD *thd, Item *arg1, Item *arg2)
3338
return new (thd->mem_root) Item_func_date_format(arg1, arg2, 0);
3342
Create_func_datediff Create_func_datediff::s_singleton;
3345
Create_func_datediff::create(THD *thd, Item *arg1, Item *arg2)
3347
Item *i1= new (thd->mem_root) Item_func_to_days(arg1);
3348
Item *i2= new (thd->mem_root) Item_func_to_days(arg2);
3350
return new (thd->mem_root) Item_func_minus(i1, i2);
3354
Create_func_dayname Create_func_dayname::s_singleton;
3357
Create_func_dayname::create(THD *thd, Item *arg1)
3359
return new (thd->mem_root) Item_func_dayname(arg1);
3363
Create_func_dayofmonth Create_func_dayofmonth::s_singleton;
3366
Create_func_dayofmonth::create(THD *thd, Item *arg1)
3368
return new (thd->mem_root) Item_func_dayofmonth(arg1);
3372
Create_func_dayofweek Create_func_dayofweek::s_singleton;
3375
Create_func_dayofweek::create(THD *thd, Item *arg1)
3377
return new (thd->mem_root) Item_func_weekday(arg1, 1);
3381
Create_func_dayofyear Create_func_dayofyear::s_singleton;
3384
Create_func_dayofyear::create(THD *thd, Item *arg1)
3386
return new (thd->mem_root) Item_func_dayofyear(arg1);
3390
Create_func_decode Create_func_decode::s_singleton;
3393
Create_func_decode::create(THD *thd, Item *arg1, Item *arg2)
3395
return new (thd->mem_root) Item_func_decode(arg1, arg2);
3399
Create_func_degrees Create_func_degrees::s_singleton;
3402
Create_func_degrees::create(THD *thd, Item *arg1)
3404
return new (thd->mem_root) Item_func_units((char*) "degrees", arg1,
3409
Create_func_des_decrypt Create_func_des_decrypt::s_singleton;
3412
Create_func_des_decrypt::create_native(THD *thd, LEX_STRING name,
3413
List<Item> *item_list)
3418
if (item_list != NULL)
3419
arg_count= item_list->elements;
3421
switch (arg_count) {
3424
Item *param_1= item_list->pop();
3425
func= new (thd->mem_root) Item_func_des_decrypt(param_1);
3430
Item *param_1= item_list->pop();
3431
Item *param_2= item_list->pop();
3432
func= new (thd->mem_root) Item_func_des_decrypt(param_1, param_2);
3437
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
3446
Create_func_des_encrypt Create_func_des_encrypt::s_singleton;
3449
Create_func_des_encrypt::create_native(THD *thd, LEX_STRING name,
3450
List<Item> *item_list)
3455
if (item_list != NULL)
3456
arg_count= item_list->elements;
3458
switch (arg_count) {
3461
Item *param_1= item_list->pop();
3462
func= new (thd->mem_root) Item_func_des_encrypt(param_1);
3467
Item *param_1= item_list->pop();
3468
Item *param_2= item_list->pop();
3469
func= new (thd->mem_root) Item_func_des_encrypt(param_1, param_2);
3474
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
3484
Create_func_dimension Create_func_dimension::s_singleton;
3487
Create_func_dimension::create(THD *thd, Item *arg1)
3489
return new (thd->mem_root) Item_func_dimension(arg1);
3495
Create_func_mbr_disjoint Create_func_mbr_disjoint::s_singleton;
3498
Create_func_mbr_disjoint::create(THD *thd, Item *arg1, Item *arg2)
3500
return new (thd->mem_root) Item_func_spatial_mbr_rel(arg1, arg2,
3501
Item_func::SP_DISJOINT_FUNC);
3505
Create_func_disjoint Create_func_disjoint::s_singleton;
3508
Create_func_disjoint::create(THD *thd, Item *arg1, Item *arg2)
3510
return new (thd->mem_root) Item_func_spatial_rel(arg1, arg2,
3511
Item_func::SP_DISJOINT_FUNC);
3515
Create_func_distance Create_func_distance::s_singleton;
3518
Create_func_distance::create(THD *thd, Item *arg1, Item *arg2)
3520
return new (thd->mem_root) Item_func_distance(arg1, arg2);
3525
Create_func_elt Create_func_elt::s_singleton;
3528
Create_func_elt::create_native(THD *thd, LEX_STRING name,
3529
List<Item> *item_list)
3533
if (item_list != NULL)
3534
arg_count= item_list->elements;
3538
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
3542
return new (thd->mem_root) Item_func_elt(*item_list);
3546
Create_func_encode Create_func_encode::s_singleton;
3549
Create_func_encode::create(THD *thd, Item *arg1, Item *arg2)
3551
return new (thd->mem_root) Item_func_encode(arg1, arg2);
3555
Create_func_encrypt Create_func_encrypt::s_singleton;
3558
Create_func_encrypt::create_native(THD *thd, LEX_STRING name,
3559
List<Item> *item_list)
3564
if (item_list != NULL)
3565
arg_count= item_list->elements;
3567
switch (arg_count) {
3570
Item *param_1= item_list->pop();
3571
func= new (thd->mem_root) Item_func_encrypt(param_1);
3572
thd->lex->uncacheable(UNCACHEABLE_RAND);
3577
Item *param_1= item_list->pop();
3578
Item *param_2= item_list->pop();
3579
func= new (thd->mem_root) Item_func_encrypt(param_1, param_2);
3584
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
3594
Create_func_endpoint Create_func_endpoint::s_singleton;
3597
Create_func_endpoint::create(THD *thd, Item *arg1)
3599
return new (thd->mem_root) Item_func_spatial_decomp(arg1,
3600
Item_func::SP_ENDPOINT);
3606
Create_func_envelope Create_func_envelope::s_singleton;
3609
Create_func_envelope::create(THD *thd, Item *arg1)
3611
return new (thd->mem_root) Item_func_envelope(arg1);
3617
Create_func_mbr_equals Create_func_mbr_equals::s_singleton;
3620
Create_func_mbr_equals::create(THD *thd, Item *arg1, Item *arg2)
3622
return new (thd->mem_root) Item_func_spatial_mbr_rel(arg1, arg2,
3623
Item_func::SP_EQUALS_FUNC);
3627
Create_func_equals Create_func_equals::s_singleton;
3630
Create_func_equals::create(THD *thd, Item *arg1, Item *arg2)
3632
return new (thd->mem_root) Item_func_spatial_rel(arg1, arg2,
3633
Item_func::SP_EQUALS_FUNC);
3638
Create_func_exp Create_func_exp::s_singleton;
3641
Create_func_exp::create(THD *thd, Item *arg1)
3643
return new (thd->mem_root) Item_func_exp(arg1);
3647
Create_func_export_set Create_func_export_set::s_singleton;
3650
Create_func_export_set::create_native(THD *thd, LEX_STRING name,
3651
List<Item> *item_list)
3656
if (item_list != NULL)
3657
arg_count= item_list->elements;
3659
switch (arg_count) {
3662
Item *param_1= item_list->pop();
3663
Item *param_2= item_list->pop();
3664
Item *param_3= item_list->pop();
3665
func= new (thd->mem_root) Item_func_export_set(param_1, param_2, param_3);
3670
Item *param_1= item_list->pop();
3671
Item *param_2= item_list->pop();
3672
Item *param_3= item_list->pop();
3673
Item *param_4= item_list->pop();
3674
func= new (thd->mem_root) Item_func_export_set(param_1, param_2, param_3,
3680
Item *param_1= item_list->pop();
3681
Item *param_2= item_list->pop();
3682
Item *param_3= item_list->pop();
3683
Item *param_4= item_list->pop();
3684
Item *param_5= item_list->pop();
3685
func= new (thd->mem_root) Item_func_export_set(param_1, param_2, param_3,
3691
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
3701
Create_func_exteriorring Create_func_exteriorring::s_singleton;
3704
Create_func_exteriorring::create(THD *thd, Item *arg1)
3706
return new (thd->mem_root) Item_func_spatial_decomp(arg1,
3707
Item_func::SP_EXTERIORRING);
3712
Create_func_field Create_func_field::s_singleton;
3715
Create_func_field::create_native(THD *thd, LEX_STRING name,
3716
List<Item> *item_list)
3720
if (item_list != NULL)
3721
arg_count= item_list->elements;
3725
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
3729
return new (thd->mem_root) Item_func_field(*item_list);
3733
Create_func_find_in_set Create_func_find_in_set::s_singleton;
3736
Create_func_find_in_set::create(THD *thd, Item *arg1, Item *arg2)
3738
return new (thd->mem_root) Item_func_find_in_set(arg1, arg2);
3742
Create_func_floor Create_func_floor::s_singleton;
3745
Create_func_floor::create(THD *thd, Item *arg1)
3747
return new (thd->mem_root) Item_func_floor(arg1);
3751
Create_func_found_rows Create_func_found_rows::s_singleton;
3754
Create_func_found_rows::create(THD *thd)
3756
DBUG_ENTER("Create_func_found_rows::create");
3757
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
3758
thd->lex->safe_to_cache_query= 0;
3759
DBUG_RETURN(new (thd->mem_root) Item_func_found_rows());
3763
Create_func_from_base64 Create_func_from_base64::s_singleton;
3766
Create_func_from_base64::create(THD *thd, Item *arg1)
3768
return new (thd->mem_root) Item_func_from_base64(arg1);
3772
Create_func_from_days Create_func_from_days::s_singleton;
3775
Create_func_from_days::create(THD *thd, Item *arg1)
3777
return new (thd->mem_root) Item_func_from_days(arg1);
3781
Create_func_from_unixtime Create_func_from_unixtime::s_singleton;
3784
Create_func_from_unixtime::create_native(THD *thd, LEX_STRING name,
3785
List<Item> *item_list)
3790
if (item_list != NULL)
3791
arg_count= item_list->elements;
3793
switch (arg_count) {
3796
Item *param_1= item_list->pop();
3797
func= new (thd->mem_root) Item_func_from_unixtime(param_1);
3802
Item *param_1= item_list->pop();
3803
Item *param_2= item_list->pop();
3804
Item *ut= new (thd->mem_root) Item_func_from_unixtime(param_1);
3805
func= new (thd->mem_root) Item_func_date_format(ut, param_2, 0);
3810
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
3820
Create_func_geometry_from_text Create_func_geometry_from_text::s_singleton;
3823
Create_func_geometry_from_text::create_native(THD *thd, LEX_STRING name,
3824
List<Item> *item_list)
3829
if (item_list != NULL)
3830
arg_count= item_list->elements;
3832
switch (arg_count) {
3835
Item *param_1= item_list->pop();
3836
func= new (thd->mem_root) Item_func_geometry_from_text(param_1);
3837
thd->lex->uncacheable(UNCACHEABLE_RAND);
3842
Item *param_1= item_list->pop();
3843
Item *param_2= item_list->pop();
3844
func= new (thd->mem_root) Item_func_geometry_from_text(param_1, param_2);
3849
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
3860
Create_func_geometry_from_wkb Create_func_geometry_from_wkb::s_singleton;
3863
Create_func_geometry_from_wkb::create_native(THD *thd, LEX_STRING name,
3864
List<Item> *item_list)
3869
if (item_list != NULL)
3870
arg_count= item_list->elements;
3872
switch (arg_count) {
3875
Item *param_1= item_list->pop();
3876
func= new (thd->mem_root) Item_func_geometry_from_wkb(param_1);
3877
thd->lex->uncacheable(UNCACHEABLE_RAND);
3882
Item *param_1= item_list->pop();
3883
Item *param_2= item_list->pop();
3884
func= new (thd->mem_root) Item_func_geometry_from_wkb(param_1, param_2);
3889
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
3900
Create_func_geometry_type Create_func_geometry_type::s_singleton;
3903
Create_func_geometry_type::create(THD *thd, Item *arg1)
3905
return new (thd->mem_root) Item_func_geometry_type(arg1);
3911
Create_func_geometryn Create_func_geometryn::s_singleton;
3914
Create_func_geometryn::create(THD *thd, Item *arg1, Item *arg2)
3916
return new (thd->mem_root) Item_func_spatial_decomp_n(arg1, arg2,
3917
Item_func::SP_GEOMETRYN);
3922
Create_func_get_lock Create_func_get_lock::s_singleton;
3925
Create_func_get_lock::create(THD *thd, Item *arg1, Item *arg2)
3927
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
3928
thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
3929
return new (thd->mem_root) Item_func_get_lock(arg1, arg2);
3933
#if defined(HAVE_SPATIAL) && !defined(DBUG_OFF)
3934
Create_func_gis_debug Create_func_gis_debug::s_singleton;
3937
Create_func_gis_debug::create(THD *thd, Item *arg1)
3939
return new (thd->mem_root) Item_func_gis_debug(arg1);
3945
Create_func_glength Create_func_glength::s_singleton;
3948
Create_func_glength::create(THD *thd, Item *arg1)
3950
return new (thd->mem_root) Item_func_glength(arg1);
3955
Create_func_greatest Create_func_greatest::s_singleton;
3958
Create_func_greatest::create_native(THD *thd, LEX_STRING name,
3959
List<Item> *item_list)
3963
if (item_list != NULL)
3964
arg_count= item_list->elements;
3968
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
3972
return new (thd->mem_root) Item_func_max(*item_list);
3976
Create_func_gtid_subtract Create_func_gtid_subtract::s_singleton;
3979
Create_func_gtid_subtract::create(THD *thd, Item *arg1, Item *arg2)
3981
return new (thd->mem_root) Item_func_gtid_subtract(arg1, arg2);
3985
Create_func_gtid_subset Create_func_gtid_subset::s_singleton;
3988
Create_func_gtid_subset::create(THD *thd, Item *arg1, Item *arg2)
3990
return new (thd->mem_root) Item_func_gtid_subset(arg1, arg2);
3994
Create_func_hex Create_func_hex::s_singleton;
3997
Create_func_hex::create(THD *thd, Item *arg1)
3999
return new (thd->mem_root) Item_func_hex(arg1);
4003
Create_func_ifnull Create_func_ifnull::s_singleton;
4006
Create_func_ifnull::create(THD *thd, Item *arg1, Item *arg2)
4008
return new (thd->mem_root) Item_func_ifnull(arg1, arg2);
4012
Create_func_inet_ntoa Create_func_inet_ntoa::s_singleton;
4015
Create_func_inet_ntoa::create(THD *thd, Item *arg1)
4017
return new (thd->mem_root) Item_func_inet_ntoa(arg1);
4021
Create_func_inet6_aton Create_func_inet6_aton::s_singleton;
4024
Create_func_inet6_aton::create(THD *thd, Item *arg1)
4026
return new (thd->mem_root) Item_func_inet6_aton(arg1);
4030
Create_func_inet6_ntoa Create_func_inet6_ntoa::s_singleton;
4033
Create_func_inet6_ntoa::create(THD *thd, Item *arg1)
4035
return new (thd->mem_root) Item_func_inet6_ntoa(arg1);
4039
Create_func_inet_aton Create_func_inet_aton::s_singleton;
4042
Create_func_inet_aton::create(THD *thd, Item *arg1)
4044
return new (thd->mem_root) Item_func_inet_aton(arg1);
4048
Create_func_is_ipv4 Create_func_is_ipv4::s_singleton;
4051
Create_func_is_ipv4::create(THD *thd, Item *arg1)
4053
return new (thd->mem_root) Item_func_is_ipv4(arg1);
4057
Create_func_is_ipv6 Create_func_is_ipv6::s_singleton;
4060
Create_func_is_ipv6::create(THD *thd, Item *arg1)
4062
return new (thd->mem_root) Item_func_is_ipv6(arg1);
4066
Create_func_is_ipv4_compat Create_func_is_ipv4_compat::s_singleton;
4069
Create_func_is_ipv4_compat::create(THD *thd, Item *arg1)
4071
return new (thd->mem_root) Item_func_is_ipv4_compat(arg1);
4075
Create_func_is_ipv4_mapped Create_func_is_ipv4_mapped::s_singleton;
4078
Create_func_is_ipv4_mapped::create(THD *thd, Item *arg1)
4080
return new (thd->mem_root) Item_func_is_ipv4_mapped(arg1);
4084
Create_func_instr Create_func_instr::s_singleton;
4087
Create_func_instr::create(THD *thd, Item *arg1, Item *arg2)
4089
return new (thd->mem_root) Item_func_locate(arg1, arg2);
4094
Create_func_interiorringn Create_func_interiorringn::s_singleton;
4097
Create_func_interiorringn::create(THD *thd, Item *arg1, Item *arg2)
4099
return new (thd->mem_root) Item_func_spatial_decomp_n(arg1, arg2,
4100
Item_func::SP_INTERIORRINGN);
4106
Create_func_mbr_intersects Create_func_mbr_intersects::s_singleton;
4109
Create_func_mbr_intersects::create(THD *thd, Item *arg1, Item *arg2)
4111
return new (thd->mem_root) Item_func_spatial_mbr_rel(arg1, arg2,
4112
Item_func::SP_INTERSECTS_FUNC);
4116
Create_func_intersects Create_func_intersects::s_singleton;
4119
Create_func_intersects::create(THD *thd, Item *arg1, Item *arg2)
4121
return new (thd->mem_root) Item_func_spatial_rel(arg1, arg2,
4122
Item_func::SP_INTERSECTS_FUNC);
4126
Create_func_intersection Create_func_intersection::s_singleton;
4129
Create_func_intersection::create(THD *thd, Item *arg1, Item *arg2)
4131
return new (thd->mem_root) Item_func_spatial_operation(arg1, arg2,
4132
Gcalc_function::op_intersection);
4136
Create_func_difference Create_func_difference::s_singleton;
4139
Create_func_difference::create(THD *thd, Item *arg1, Item *arg2)
4141
return new (thd->mem_root) Item_func_spatial_operation(arg1, arg2,
4142
Gcalc_function::op_difference);
4146
Create_func_union Create_func_union::s_singleton;
4149
Create_func_union::create(THD *thd, Item *arg1, Item *arg2)
4151
return new (thd->mem_root) Item_func_spatial_operation(arg1, arg2,
4152
Gcalc_function::op_union);
4156
Create_func_symdifference Create_func_symdifference::s_singleton;
4159
Create_func_symdifference::create(THD *thd, Item *arg1, Item *arg2)
4161
return new (thd->mem_root) Item_func_spatial_operation(arg1, arg2,
4162
Gcalc_function::op_symdifference);
4166
Create_func_buffer Create_func_buffer::s_singleton;
4169
Create_func_buffer::create(THD *thd, Item *arg1, Item *arg2)
4171
return new (thd->mem_root) Item_func_buffer(arg1, arg2);
4173
#endif /*HAVE_SPATIAL*/
4176
Create_func_is_free_lock Create_func_is_free_lock::s_singleton;
4179
Create_func_is_free_lock::create(THD *thd, Item *arg1)
4181
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
4182
thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
4183
return new (thd->mem_root) Item_func_is_free_lock(arg1);
4187
Create_func_is_used_lock Create_func_is_used_lock::s_singleton;
4190
Create_func_is_used_lock::create(THD *thd, Item *arg1)
4192
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
4193
thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
4194
return new (thd->mem_root) Item_func_is_used_lock(arg1);
4199
Create_func_isclosed Create_func_isclosed::s_singleton;
4202
Create_func_isclosed::create(THD *thd, Item *arg1)
4204
return new (thd->mem_root) Item_func_isclosed(arg1);
4210
Create_func_isempty Create_func_isempty::s_singleton;
4213
Create_func_isempty::create(THD *thd, Item *arg1)
4215
return new (thd->mem_root) Item_func_isempty(arg1);
4220
Create_func_isnull Create_func_isnull::s_singleton;
4223
Create_func_isnull::create(THD *thd, Item *arg1)
4225
return new (thd->mem_root) Item_func_isnull(arg1);
4230
Create_func_issimple Create_func_issimple::s_singleton;
4233
Create_func_issimple::create(THD *thd, Item *arg1)
4235
return new (thd->mem_root) Item_func_issimple(arg1);
4240
Create_func_last_day Create_func_last_day::s_singleton;
4243
Create_func_last_day::create(THD *thd, Item *arg1)
4245
return new (thd->mem_root) Item_func_last_day(arg1);
4249
Create_func_last_insert_id Create_func_last_insert_id::s_singleton;
4252
Create_func_last_insert_id::create_native(THD *thd, LEX_STRING name,
4253
List<Item> *item_list)
4258
if (item_list != NULL)
4259
arg_count= item_list->elements;
4261
switch (arg_count) {
4264
func= new (thd->mem_root) Item_func_last_insert_id();
4265
thd->lex->safe_to_cache_query= 0;
4270
Item *param_1= item_list->pop();
4271
func= new (thd->mem_root) Item_func_last_insert_id(param_1);
4272
thd->lex->safe_to_cache_query= 0;
4277
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
4286
Create_func_lcase Create_func_lcase::s_singleton;
4289
Create_func_lcase::create(THD *thd, Item *arg1)
4291
return new (thd->mem_root) Item_func_lcase(arg1);
4295
Create_func_least Create_func_least::s_singleton;
4298
Create_func_least::create_native(THD *thd, LEX_STRING name,
4299
List<Item> *item_list)
4303
if (item_list != NULL)
4304
arg_count= item_list->elements;
4308
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
4312
return new (thd->mem_root) Item_func_min(*item_list);
4316
Create_func_length Create_func_length::s_singleton;
4319
Create_func_length::create(THD *thd, Item *arg1)
4321
return new (thd->mem_root) Item_func_length(arg1);
4326
Create_func_like_range_min Create_func_like_range_min::s_singleton;
4329
Create_func_like_range_min::create(THD *thd, Item *arg1, Item *arg2)
4331
return new (thd->mem_root) Item_func_like_range_min(arg1, arg2);
4335
Create_func_like_range_max Create_func_like_range_max::s_singleton;
4338
Create_func_like_range_max::create(THD *thd, Item *arg1, Item *arg2)
4340
return new (thd->mem_root) Item_func_like_range_max(arg1, arg2);
4345
Create_func_ln Create_func_ln::s_singleton;
4348
Create_func_ln::create(THD *thd, Item *arg1)
4350
return new (thd->mem_root) Item_func_ln(arg1);
4354
Create_func_load_file Create_func_load_file::s_singleton;
4357
Create_func_load_file::create(THD *thd, Item *arg1)
4359
DBUG_ENTER("Create_func_load_file::create");
4360
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
4361
thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
4362
DBUG_RETURN(new (thd->mem_root) Item_load_file(arg1));
4366
Create_func_locate Create_func_locate::s_singleton;
4369
Create_func_locate::create_native(THD *thd, LEX_STRING name,
4370
List<Item> *item_list)
4375
if (item_list != NULL)
4376
arg_count= item_list->elements;
4378
switch (arg_count) {
4381
Item *param_1= item_list->pop();
4382
Item *param_2= item_list->pop();
4383
/* Yes, parameters in that order : 2, 1 */
4384
func= new (thd->mem_root) Item_func_locate(param_2, param_1);
4389
Item *param_1= item_list->pop();
4390
Item *param_2= item_list->pop();
4391
Item *param_3= item_list->pop();
4392
/* Yes, parameters in that order : 2, 1, 3 */
4393
func= new (thd->mem_root) Item_func_locate(param_2, param_1, param_3);
4398
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
4407
Create_func_log Create_func_log::s_singleton;
4410
Create_func_log::create_native(THD *thd, LEX_STRING name,
4411
List<Item> *item_list)
4416
if (item_list != NULL)
4417
arg_count= item_list->elements;
4419
switch (arg_count) {
4422
Item *param_1= item_list->pop();
4423
func= new (thd->mem_root) Item_func_log(param_1);
4428
Item *param_1= item_list->pop();
4429
Item *param_2= item_list->pop();
4430
func= new (thd->mem_root) Item_func_log(param_1, param_2);
4435
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
4444
Create_func_log10 Create_func_log10::s_singleton;
4447
Create_func_log10::create(THD *thd, Item *arg1)
4449
return new (thd->mem_root) Item_func_log10(arg1);
4453
Create_func_log2 Create_func_log2::s_singleton;
4456
Create_func_log2::create(THD *thd, Item *arg1)
4458
return new (thd->mem_root) Item_func_log2(arg1);
4462
Create_func_lpad Create_func_lpad::s_singleton;
4465
Create_func_lpad::create(THD *thd, Item *arg1, Item *arg2, Item *arg3)
4467
return new (thd->mem_root) Item_func_lpad(arg1, arg2, arg3);
4471
Create_func_ltrim Create_func_ltrim::s_singleton;
4474
Create_func_ltrim::create(THD *thd, Item *arg1)
4476
return new (thd->mem_root) Item_func_ltrim(arg1);
4480
Create_func_makedate Create_func_makedate::s_singleton;
4483
Create_func_makedate::create(THD *thd, Item *arg1, Item *arg2)
4485
return new (thd->mem_root) Item_func_makedate(arg1, arg2);
4489
Create_func_maketime Create_func_maketime::s_singleton;
4492
Create_func_maketime::create(THD *thd, Item *arg1, Item *arg2, Item *arg3)
4494
return new (thd->mem_root) Item_func_maketime(arg1, arg2, arg3);
4498
Create_func_make_set Create_func_make_set::s_singleton;
4501
Create_func_make_set::create_native(THD *thd, LEX_STRING name,
4502
List<Item> *item_list)
4506
if (item_list != NULL)
4507
arg_count= item_list->elements;
4511
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
4515
Item *param_1= item_list->pop();
4516
return new (thd->mem_root) Item_func_make_set(param_1, *item_list);
4520
Create_func_master_pos_wait Create_func_master_pos_wait::s_singleton;
4523
Create_func_master_pos_wait::create_native(THD *thd, LEX_STRING name,
4524
List<Item> *item_list)
4530
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
4532
if (item_list != NULL)
4533
arg_count= item_list->elements;
4535
switch (arg_count) {
4538
Item *param_1= item_list->pop();
4539
Item *param_2= item_list->pop();
4540
func= new (thd->mem_root) Item_master_pos_wait(param_1, param_2);
4541
thd->lex->safe_to_cache_query= 0;
4546
Item *param_1= item_list->pop();
4547
Item *param_2= item_list->pop();
4548
Item *param_3= item_list->pop();
4549
func= new (thd->mem_root) Item_master_pos_wait(param_1, param_2, param_3);
4550
thd->lex->safe_to_cache_query= 0;
4555
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
4563
Create_func_master_gtid_set_wait Create_func_master_gtid_set_wait::s_singleton;
4566
Create_func_master_gtid_set_wait::create_native(THD *thd, LEX_STRING name,
4567
List<Item> *item_list)
4573
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
4575
if (item_list != NULL)
4576
arg_count= item_list->elements;
4578
switch (arg_count) {
4581
Item *param_1= item_list->pop();
4582
func= new (thd->mem_root) Item_master_gtid_set_wait(param_1);
4583
thd->lex->safe_to_cache_query= 0;
4588
Item *param_1= item_list->pop();
4589
Item *param_2= item_list->pop();
4590
func= new (thd->mem_root) Item_master_gtid_set_wait(param_1, param_2);
4591
thd->lex->safe_to_cache_query= 0;
4596
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
4604
Create_func_md5 Create_func_md5::s_singleton;
4607
Create_func_md5::create(THD *thd, Item *arg1)
4609
return new (thd->mem_root) Item_func_md5(arg1);
4613
Create_func_monthname Create_func_monthname::s_singleton;
4616
Create_func_monthname::create(THD *thd, Item *arg1)
4618
return new (thd->mem_root) Item_func_monthname(arg1);
4622
Create_func_name_const Create_func_name_const::s_singleton;
4625
Create_func_name_const::create(THD *thd, Item *arg1, Item *arg2)
4627
return new (thd->mem_root) Item_name_const(arg1, arg2);
4631
Create_func_nullif Create_func_nullif::s_singleton;
4634
Create_func_nullif::create(THD *thd, Item *arg1, Item *arg2)
4636
return new (thd->mem_root) Item_func_nullif(arg1, arg2);
4641
Create_func_numgeometries Create_func_numgeometries::s_singleton;
4644
Create_func_numgeometries::create(THD *thd, Item *arg1)
4646
return new (thd->mem_root) Item_func_numgeometries(arg1);
4652
Create_func_numinteriorring Create_func_numinteriorring::s_singleton;
4655
Create_func_numinteriorring::create(THD *thd, Item *arg1)
4657
return new (thd->mem_root) Item_func_numinteriorring(arg1);
4663
Create_func_numpoints Create_func_numpoints::s_singleton;
4666
Create_func_numpoints::create(THD *thd, Item *arg1)
4668
return new (thd->mem_root) Item_func_numpoints(arg1);
4673
Create_func_oct Create_func_oct::s_singleton;
4676
Create_func_oct::create(THD *thd, Item *arg1)
4678
Item *i10= new (thd->mem_root) Item_int((int32) 10,2);
4679
Item *i8= new (thd->mem_root) Item_int((int32) 8,1);
4680
return new (thd->mem_root) Item_func_conv(arg1, i10, i8);
4684
Create_func_ord Create_func_ord::s_singleton;
4687
Create_func_ord::create(THD *thd, Item *arg1)
4689
return new (thd->mem_root) Item_func_ord(arg1);
4694
Create_func_mbr_overlaps Create_func_mbr_overlaps::s_singleton;
4697
Create_func_mbr_overlaps::create(THD *thd, Item *arg1, Item *arg2)
4699
return new (thd->mem_root) Item_func_spatial_mbr_rel(arg1, arg2,
4700
Item_func::SP_OVERLAPS_FUNC);
4704
Create_func_overlaps Create_func_overlaps::s_singleton;
4707
Create_func_overlaps::create(THD *thd, Item *arg1, Item *arg2)
4709
return new (thd->mem_root) Item_func_spatial_rel(arg1, arg2,
4710
Item_func::SP_OVERLAPS_FUNC);
4715
Create_func_period_add Create_func_period_add::s_singleton;
4718
Create_func_period_add::create(THD *thd, Item *arg1, Item *arg2)
4720
return new (thd->mem_root) Item_func_period_add(arg1, arg2);
4724
Create_func_period_diff Create_func_period_diff::s_singleton;
4727
Create_func_period_diff::create(THD *thd, Item *arg1, Item *arg2)
4729
return new (thd->mem_root) Item_func_period_diff(arg1, arg2);
4733
Create_func_pi Create_func_pi::s_singleton;
4736
Create_func_pi::create(THD *thd)
4738
return new (thd->mem_root) Item_static_float_func(NAME_STRING("pi()"),
4744
Create_func_pointn Create_func_pointn::s_singleton;
4747
Create_func_pointn::create(THD *thd, Item *arg1, Item *arg2)
4749
return new (thd->mem_root) Item_func_spatial_decomp_n(arg1, arg2,
4750
Item_func::SP_POINTN);
4755
Create_func_pow Create_func_pow::s_singleton;
4758
Create_func_pow::create(THD *thd, Item *arg1, Item *arg2)
4760
return new (thd->mem_root) Item_func_pow(arg1, arg2);
4764
Create_func_quote Create_func_quote::s_singleton;
4767
Create_func_quote::create(THD *thd, Item *arg1)
4769
return new (thd->mem_root) Item_func_quote(arg1);
4773
Create_func_radians Create_func_radians::s_singleton;
4776
Create_func_radians::create(THD *thd, Item *arg1)
4778
return new (thd->mem_root) Item_func_units((char*) "radians", arg1,
4783
Create_func_rand Create_func_rand::s_singleton;
4786
Create_func_rand::create_native(THD *thd, LEX_STRING name,
4787
List<Item> *item_list)
4792
if (item_list != NULL)
4793
arg_count= item_list->elements;
4796
When RAND() is binlogged, the seed is binlogged too. So the
4797
sequence of random numbers is the same on a replication slave as
4798
on the master. However, if several RAND() values are inserted
4799
into a table, the order in which the rows are modified may differ
4800
between master and slave, because the order is undefined. Hence,
4801
the statement is unsafe to log in statement format.
4803
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
4805
switch (arg_count) {
4808
func= new (thd->mem_root) Item_func_rand();
4809
thd->lex->uncacheable(UNCACHEABLE_RAND);
4814
Item *param_1= item_list->pop();
4815
func= new (thd->mem_root) Item_func_rand(param_1);
4816
thd->lex->uncacheable(UNCACHEABLE_RAND);
4821
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
4830
Create_func_release_lock Create_func_release_lock::s_singleton;
4833
Create_func_release_lock::create(THD *thd, Item *arg1)
4835
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
4836
thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
4837
return new (thd->mem_root) Item_func_release_lock(arg1);
4841
Create_func_reverse Create_func_reverse::s_singleton;
4844
Create_func_reverse::create(THD *thd, Item *arg1)
4846
return new (thd->mem_root) Item_func_reverse(arg1);
4850
Create_func_round Create_func_round::s_singleton;
4853
Create_func_round::create_native(THD *thd, LEX_STRING name,
4854
List<Item> *item_list)
4859
if (item_list != NULL)
4860
arg_count= item_list->elements;
4862
switch (arg_count) {
4865
Item *param_1= item_list->pop();
4866
Item *i0 = new (thd->mem_root) Item_int_0();
4867
func= new (thd->mem_root) Item_func_round(param_1, i0, 0);
4872
Item *param_1= item_list->pop();
4873
Item *param_2= item_list->pop();
4874
func= new (thd->mem_root) Item_func_round(param_1, param_2, 0);
4879
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
4888
Create_func_rpad Create_func_rpad::s_singleton;
4891
Create_func_rpad::create(THD *thd, Item *arg1, Item *arg2, Item *arg3)
4893
return new (thd->mem_root) Item_func_rpad(arg1, arg2, arg3);
4897
Create_func_rtrim Create_func_rtrim::s_singleton;
4900
Create_func_rtrim::create(THD *thd, Item *arg1)
4902
return new (thd->mem_root) Item_func_rtrim(arg1);
4906
Create_func_sec_to_time Create_func_sec_to_time::s_singleton;
4909
Create_func_sec_to_time::create(THD *thd, Item *arg1)
4911
return new (thd->mem_root) Item_func_sec_to_time(arg1);
4915
Create_func_sha Create_func_sha::s_singleton;
4918
Create_func_sha::create(THD *thd, Item *arg1)
4920
return new (thd->mem_root) Item_func_sha(arg1);
4924
Create_func_sha2 Create_func_sha2::s_singleton;
4927
Create_func_sha2::create(THD *thd, Item *arg1, Item *arg2)
4929
return new (thd->mem_root) Item_func_sha2(arg1, arg2);
4933
Create_func_sign Create_func_sign::s_singleton;
4936
Create_func_sign::create(THD *thd, Item *arg1)
4938
return new (thd->mem_root) Item_func_sign(arg1);
4942
Create_func_sin Create_func_sin::s_singleton;
4945
Create_func_sin::create(THD *thd, Item *arg1)
4947
return new (thd->mem_root) Item_func_sin(arg1);
4951
Create_func_sleep Create_func_sleep::s_singleton;
4954
Create_func_sleep::create(THD *thd, Item *arg1)
4956
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
4957
thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
4958
return new (thd->mem_root) Item_func_sleep(arg1);
4962
Create_func_soundex Create_func_soundex::s_singleton;
4965
Create_func_soundex::create(THD *thd, Item *arg1)
4967
return new (thd->mem_root) Item_func_soundex(arg1);
4971
Create_func_space Create_func_space::s_singleton;
4974
Create_func_space::create(THD *thd, Item *arg1)
4976
return new (thd->mem_root) Item_func_space(arg1);
4980
Create_func_sqrt Create_func_sqrt::s_singleton;
4983
Create_func_sqrt::create(THD *thd, Item *arg1)
4985
return new (thd->mem_root) Item_func_sqrt(arg1);
4990
Create_func_srid Create_func_srid::s_singleton;
4993
Create_func_srid::create(THD *thd, Item *arg1)
4995
return new (thd->mem_root) Item_func_srid(arg1);
5001
Create_func_startpoint Create_func_startpoint::s_singleton;
5004
Create_func_startpoint::create(THD *thd, Item *arg1)
5006
return new (thd->mem_root) Item_func_spatial_decomp(arg1,
5007
Item_func::SP_STARTPOINT);
5012
Create_func_str_to_date Create_func_str_to_date::s_singleton;
5015
Create_func_str_to_date::create(THD *thd, Item *arg1, Item *arg2)
5017
return new (thd->mem_root) Item_func_str_to_date(arg1, arg2);
5021
Create_func_strcmp Create_func_strcmp::s_singleton;
5024
Create_func_strcmp::create(THD *thd, Item *arg1, Item *arg2)
5026
return new (thd->mem_root) Item_func_strcmp(arg1, arg2);
5030
Create_func_substr_index Create_func_substr_index::s_singleton;
5033
Create_func_substr_index::create(THD *thd, Item *arg1, Item *arg2, Item *arg3)
5035
return new (thd->mem_root) Item_func_substr_index(arg1, arg2, arg3);
5039
Create_func_subtime Create_func_subtime::s_singleton;
5042
Create_func_subtime::create(THD *thd, Item *arg1, Item *arg2)
5044
return new (thd->mem_root) Item_func_add_time(arg1, arg2, 0, 1);
5048
Create_func_tan Create_func_tan::s_singleton;
5051
Create_func_tan::create(THD *thd, Item *arg1)
5053
return new (thd->mem_root) Item_func_tan(arg1);
5057
Create_func_time_format Create_func_time_format::s_singleton;
5060
Create_func_time_format::create(THD *thd, Item *arg1, Item *arg2)
5062
return new (thd->mem_root) Item_func_date_format(arg1, arg2, 1);
5066
Create_func_time_to_sec Create_func_time_to_sec::s_singleton;
5069
Create_func_time_to_sec::create(THD *thd, Item *arg1)
5071
return new (thd->mem_root) Item_func_time_to_sec(arg1);
5075
Create_func_timediff Create_func_timediff::s_singleton;
5078
Create_func_timediff::create(THD *thd, Item *arg1, Item *arg2)
5080
return new (thd->mem_root) Item_func_timediff(arg1, arg2);
5084
Create_func_to_base64 Create_func_to_base64::s_singleton;
5087
Create_func_to_base64::create(THD *thd, Item *arg1)
5089
return new (thd->mem_root) Item_func_to_base64(arg1);
5093
Create_func_to_days Create_func_to_days::s_singleton;
5096
Create_func_to_days::create(THD *thd, Item *arg1)
5098
return new (thd->mem_root) Item_func_to_days(arg1);
5102
Create_func_to_seconds Create_func_to_seconds::s_singleton;
5105
Create_func_to_seconds::create(THD *thd, Item *arg1)
5107
return new (thd->mem_root) Item_func_to_seconds(arg1);
5112
Create_func_touches Create_func_touches::s_singleton;
5115
Create_func_touches::create(THD *thd, Item *arg1, Item *arg2)
5117
return new (thd->mem_root) Item_func_spatial_rel(arg1, arg2,
5118
Item_func::SP_TOUCHES_FUNC);
5123
Create_func_ucase Create_func_ucase::s_singleton;
5126
Create_func_ucase::create(THD *thd, Item *arg1)
5128
return new (thd->mem_root) Item_func_ucase(arg1);
5132
Create_func_uncompress Create_func_uncompress::s_singleton;
5135
Create_func_uncompress::create(THD *thd, Item *arg1)
5137
return new (thd->mem_root) Item_func_uncompress(arg1);
5141
Create_func_uncompressed_length Create_func_uncompressed_length::s_singleton;
5144
Create_func_uncompressed_length::create(THD *thd, Item *arg1)
5146
return new (thd->mem_root) Item_func_uncompressed_length(arg1);
5150
Create_func_unhex Create_func_unhex::s_singleton;
5153
Create_func_unhex::create(THD *thd, Item *arg1)
5155
return new (thd->mem_root) Item_func_unhex(arg1);
5159
Create_func_unix_timestamp Create_func_unix_timestamp::s_singleton;
5162
Create_func_unix_timestamp::create_native(THD *thd, LEX_STRING name,
5163
List<Item> *item_list)
5168
if (item_list != NULL)
5169
arg_count= item_list->elements;
5171
switch (arg_count) {
5174
func= new (thd->mem_root) Item_func_unix_timestamp();
5175
thd->lex->safe_to_cache_query= 0;
5180
Item *param_1= item_list->pop();
5181
func= new (thd->mem_root) Item_func_unix_timestamp(param_1);
5186
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
5195
Create_func_uuid Create_func_uuid::s_singleton;
5198
Create_func_uuid::create(THD *thd)
5200
DBUG_ENTER("Create_func_uuid::create");
5201
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
5202
thd->lex->safe_to_cache_query= 0;
5203
DBUG_RETURN(new (thd->mem_root) Item_func_uuid());
5207
Create_func_uuid_short Create_func_uuid_short::s_singleton;
5210
Create_func_uuid_short::create(THD *thd)
5212
DBUG_ENTER("Create_func_uuid_short::create");
5213
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
5214
thd->lex->safe_to_cache_query= 0;
5215
DBUG_RETURN(new (thd->mem_root) Item_func_uuid_short());
5219
Create_func_validate_password_strength
5220
Create_func_validate_password_strength::s_singleton;
5223
Create_func_validate_password_strength::create(THD *thd, Item *arg1)
5225
return new (thd->mem_root) Item_func_validate_password_strength(arg1);
5229
Create_func_version Create_func_version::s_singleton;
5232
Create_func_version::create(THD *thd)
5234
thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
5235
return new (thd->mem_root) Item_static_string_func(NAME_STRING("version()"),
5237
(uint) strlen(server_version),
5238
system_charset_info,
5239
DERIVATION_SYSCONST);
5243
Create_func_weekday Create_func_weekday::s_singleton;
5246
Create_func_weekday::create(THD *thd, Item *arg1)
5248
return new (thd->mem_root) Item_func_weekday(arg1, 0);
5252
Create_func_weekofyear Create_func_weekofyear::s_singleton;
5255
Create_func_weekofyear::create(THD *thd, Item *arg1)
5257
Item *i1= new (thd->mem_root) Item_int(NAME_STRING("0"), 3, 1);
5258
return new (thd->mem_root) Item_func_week(arg1, i1);
5263
Create_func_mbr_within Create_func_mbr_within::s_singleton;
5266
Create_func_mbr_within::create(THD *thd, Item *arg1, Item *arg2)
5268
return new (thd->mem_root) Item_func_spatial_mbr_rel(arg1, arg2,
5269
Item_func::SP_WITHIN_FUNC);
5273
Create_func_within Create_func_within::s_singleton;
5276
Create_func_within::create(THD *thd, Item *arg1, Item *arg2)
5278
return new (thd->mem_root) Item_func_spatial_rel(arg1, arg2,
5279
Item_func::SP_WITHIN_FUNC);
5285
Create_func_x Create_func_x::s_singleton;
5288
Create_func_x::create(THD *thd, Item *arg1)
5290
return new (thd->mem_root) Item_func_x(arg1);
5295
Create_func_xml_extractvalue Create_func_xml_extractvalue::s_singleton;
5298
Create_func_xml_extractvalue::create(THD *thd, Item *arg1, Item *arg2)
5300
return new (thd->mem_root) Item_func_xml_extractvalue(arg1, arg2);
5304
Create_func_xml_update Create_func_xml_update::s_singleton;
5307
Create_func_xml_update::create(THD *thd, Item *arg1, Item *arg2, Item *arg3)
5309
return new (thd->mem_root) Item_func_xml_update(arg1, arg2, arg3);
5314
Create_func_y Create_func_y::s_singleton;
5317
Create_func_y::create(THD *thd, Item *arg1)
5319
return new (thd->mem_root) Item_func_y(arg1);
5324
Create_func_year_week Create_func_year_week::s_singleton;
5327
Create_func_year_week::create_native(THD *thd, LEX_STRING name,
5328
List<Item> *item_list)
5333
if (item_list != NULL)
5334
arg_count= item_list->elements;
5336
switch (arg_count) {
5339
Item *param_1= item_list->pop();
5340
Item *i0= new (thd->mem_root) Item_int_0();
5341
func= new (thd->mem_root) Item_func_yearweek(param_1, i0);
5346
Item *param_1= item_list->pop();
5347
Item *param_2= item_list->pop();
5348
func= new (thd->mem_root) Item_func_yearweek(param_1, param_2);
5353
my_error(ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT, MYF(0), name.str);
5362
struct Native_func_registry
5365
Create_func *builder;
5368
#define BUILDER(F) & F::s_singleton
5371
#define GEOM_BUILDER(F) & F::s_singleton
5373
#define GEOM_BUILDER(F) & Create_func_no_geom::s_singleton
5377
MySQL native functions.
5379
- Keep sorted for human lookup. At runtime, a hash table is used.
5380
- do **NOT** conditionally (#ifdef, #ifndef) define a function *NAME*:
5381
doing so will cause user code that works against a --without-XYZ binary
5382
to fail with name collisions against a --with-XYZ binary.
5383
Use something similar to GEOM_BUILDER instead.
5384
- keep 1 line per entry, it makes grep | sort easier
5387
static Native_func_registry func_array[] =
5389
{ { C_STRING_WITH_LEN("ABS") }, BUILDER(Create_func_abs)},
5390
{ { C_STRING_WITH_LEN("ACOS") }, BUILDER(Create_func_acos)},
5391
{ { C_STRING_WITH_LEN("ADDTIME") }, BUILDER(Create_func_addtime)},
5392
{ { C_STRING_WITH_LEN("AES_DECRYPT") }, BUILDER(Create_func_aes_decrypt)},
5393
{ { C_STRING_WITH_LEN("AES_ENCRYPT") }, BUILDER(Create_func_aes_encrypt)},
5394
{ { C_STRING_WITH_LEN("AREA") }, GEOM_BUILDER(Create_func_area)},
5395
{ { C_STRING_WITH_LEN("ASBINARY") }, GEOM_BUILDER(Create_func_as_wkb)},
5396
{ { C_STRING_WITH_LEN("ASIN") }, BUILDER(Create_func_asin)},
5397
{ { C_STRING_WITH_LEN("ASTEXT") }, GEOM_BUILDER(Create_func_as_wkt)},
5398
{ { C_STRING_WITH_LEN("ASWKB") }, GEOM_BUILDER(Create_func_as_wkb)},
5399
{ { C_STRING_WITH_LEN("ASWKT") }, GEOM_BUILDER(Create_func_as_wkt)},
5400
{ { C_STRING_WITH_LEN("ATAN") }, BUILDER(Create_func_atan)},
5401
{ { C_STRING_WITH_LEN("ATAN2") }, BUILDER(Create_func_atan)},
5402
{ { C_STRING_WITH_LEN("BENCHMARK") }, BUILDER(Create_func_benchmark)},
5403
{ { C_STRING_WITH_LEN("BIN") }, BUILDER(Create_func_bin)},
5404
{ { C_STRING_WITH_LEN("BIT_COUNT") }, BUILDER(Create_func_bit_count)},
5405
{ { C_STRING_WITH_LEN("BUFFER") }, GEOM_BUILDER(Create_func_buffer)},
5406
{ { C_STRING_WITH_LEN("BIT_LENGTH") }, BUILDER(Create_func_bit_length)},
5407
{ { C_STRING_WITH_LEN("CEIL") }, BUILDER(Create_func_ceiling)},
5408
{ { C_STRING_WITH_LEN("CEILING") }, BUILDER(Create_func_ceiling)},
5409
{ { C_STRING_WITH_LEN("CENTROID") }, GEOM_BUILDER(Create_func_centroid)},
5410
{ { C_STRING_WITH_LEN("CHARACTER_LENGTH") }, BUILDER(Create_func_char_length)},
5411
{ { C_STRING_WITH_LEN("CHAR_LENGTH") }, BUILDER(Create_func_char_length)},
5412
{ { C_STRING_WITH_LEN("COERCIBILITY") }, BUILDER(Create_func_coercibility)},
5413
{ { C_STRING_WITH_LEN("COMPRESS") }, BUILDER(Create_func_compress)},
5414
{ { C_STRING_WITH_LEN("CONCAT") }, BUILDER(Create_func_concat)},
5415
{ { C_STRING_WITH_LEN("CONCAT_WS") }, BUILDER(Create_func_concat_ws)},
5416
{ { C_STRING_WITH_LEN("CONNECTION_ID") }, BUILDER(Create_func_connection_id)},
5417
{ { C_STRING_WITH_LEN("CONV") }, BUILDER(Create_func_conv)},
5418
{ { C_STRING_WITH_LEN("CONVERT_TZ") }, BUILDER(Create_func_convert_tz)},
5419
{ { C_STRING_WITH_LEN("COS") }, BUILDER(Create_func_cos)},
5420
{ { C_STRING_WITH_LEN("COT") }, BUILDER(Create_func_cot)},
5421
{ { C_STRING_WITH_LEN("CRC32") }, BUILDER(Create_func_crc32)},
5422
{ { C_STRING_WITH_LEN("CROSSES") }, GEOM_BUILDER(Create_func_crosses)},
5423
{ { C_STRING_WITH_LEN("DATEDIFF") }, BUILDER(Create_func_datediff)},
5424
{ { C_STRING_WITH_LEN("DATE_FORMAT") }, BUILDER(Create_func_date_format)},
5425
{ { C_STRING_WITH_LEN("DAYNAME") }, BUILDER(Create_func_dayname)},
5426
{ { C_STRING_WITH_LEN("DAYOFMONTH") }, BUILDER(Create_func_dayofmonth)},
5427
{ { C_STRING_WITH_LEN("DAYOFWEEK") }, BUILDER(Create_func_dayofweek)},
5428
{ { C_STRING_WITH_LEN("DAYOFYEAR") }, BUILDER(Create_func_dayofyear)},
5429
{ { C_STRING_WITH_LEN("DECODE") }, BUILDER(Create_func_decode)},
5430
{ { C_STRING_WITH_LEN("DEGREES") }, BUILDER(Create_func_degrees)},
5431
{ { C_STRING_WITH_LEN("DES_DECRYPT") }, BUILDER(Create_func_des_decrypt)},
5432
{ { C_STRING_WITH_LEN("DES_ENCRYPT") }, BUILDER(Create_func_des_encrypt)},
5433
{ { C_STRING_WITH_LEN("DIMENSION") }, GEOM_BUILDER(Create_func_dimension)},
5434
{ { C_STRING_WITH_LEN("DISJOINT") }, GEOM_BUILDER(Create_func_mbr_disjoint)},
5435
{ { C_STRING_WITH_LEN("ELT") }, BUILDER(Create_func_elt)},
5436
{ { C_STRING_WITH_LEN("ENCODE") }, BUILDER(Create_func_encode)},
5437
{ { C_STRING_WITH_LEN("ENCRYPT") }, BUILDER(Create_func_encrypt)},
5438
{ { C_STRING_WITH_LEN("ENDPOINT") }, GEOM_BUILDER(Create_func_endpoint)},
5439
{ { C_STRING_WITH_LEN("ENVELOPE") }, GEOM_BUILDER(Create_func_envelope)},
5440
{ { C_STRING_WITH_LEN("EQUALS") }, GEOM_BUILDER(Create_func_mbr_equals)},
5441
{ { C_STRING_WITH_LEN("EXP") }, BUILDER(Create_func_exp)},
5442
{ { C_STRING_WITH_LEN("EXPORT_SET") }, BUILDER(Create_func_export_set)},
5443
{ { C_STRING_WITH_LEN("EXTERIORRING") }, GEOM_BUILDER(Create_func_exteriorring)},
5444
{ { C_STRING_WITH_LEN("EXTRACTVALUE") }, BUILDER(Create_func_xml_extractvalue)},
5445
{ { C_STRING_WITH_LEN("FIELD") }, BUILDER(Create_func_field)},
5446
{ { C_STRING_WITH_LEN("FIND_IN_SET") }, BUILDER(Create_func_find_in_set)},
5447
{ { C_STRING_WITH_LEN("FLOOR") }, BUILDER(Create_func_floor)},
5448
{ { C_STRING_WITH_LEN("FOUND_ROWS") }, BUILDER(Create_func_found_rows)},
5449
{ { C_STRING_WITH_LEN("FROM_BASE64") }, BUILDER(Create_func_from_base64)},
5450
{ { C_STRING_WITH_LEN("FROM_DAYS") }, BUILDER(Create_func_from_days)},
5451
{ { C_STRING_WITH_LEN("FROM_UNIXTIME") }, BUILDER(Create_func_from_unixtime)},
5452
{ { C_STRING_WITH_LEN("GEOMCOLLFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5453
{ { C_STRING_WITH_LEN("GEOMCOLLFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5454
{ { C_STRING_WITH_LEN("GEOMETRYCOLLECTIONFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5455
{ { C_STRING_WITH_LEN("GEOMETRYCOLLECTIONFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5456
{ { C_STRING_WITH_LEN("GEOMETRYFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5457
{ { C_STRING_WITH_LEN("GEOMETRYFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5458
{ { C_STRING_WITH_LEN("GEOMETRYN") }, GEOM_BUILDER(Create_func_geometryn)},
5459
{ { C_STRING_WITH_LEN("GEOMETRYTYPE") }, GEOM_BUILDER(Create_func_geometry_type)},
5460
{ { C_STRING_WITH_LEN("GEOMFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5461
{ { C_STRING_WITH_LEN("GEOMFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5462
{ { C_STRING_WITH_LEN("GET_LOCK") }, BUILDER(Create_func_get_lock)},
5463
{ { C_STRING_WITH_LEN("GLENGTH") }, GEOM_BUILDER(Create_func_glength)},
5464
{ { C_STRING_WITH_LEN("GREATEST") }, BUILDER(Create_func_greatest)},
5465
{ { C_STRING_WITH_LEN("GTID_SUBTRACT") }, BUILDER(Create_func_gtid_subtract) },
5466
{ { C_STRING_WITH_LEN("GTID_SUBSET") }, BUILDER(Create_func_gtid_subset) },
5467
{ { C_STRING_WITH_LEN("HEX") }, BUILDER(Create_func_hex)},
5468
{ { C_STRING_WITH_LEN("IFNULL") }, BUILDER(Create_func_ifnull)},
5469
{ { C_STRING_WITH_LEN("INET_ATON") }, BUILDER(Create_func_inet_aton)},
5470
{ { C_STRING_WITH_LEN("INET_NTOA") }, BUILDER(Create_func_inet_ntoa)},
5471
{ { C_STRING_WITH_LEN("INET6_ATON") }, BUILDER(Create_func_inet6_aton)},
5472
{ { C_STRING_WITH_LEN("INET6_NTOA") }, BUILDER(Create_func_inet6_ntoa)},
5473
{ { C_STRING_WITH_LEN("IS_IPV4") }, BUILDER(Create_func_is_ipv4)},
5474
{ { C_STRING_WITH_LEN("IS_IPV6") }, BUILDER(Create_func_is_ipv6)},
5475
{ { C_STRING_WITH_LEN("IS_IPV4_COMPAT") }, BUILDER(Create_func_is_ipv4_compat)},
5476
{ { C_STRING_WITH_LEN("IS_IPV4_MAPPED") }, BUILDER(Create_func_is_ipv4_mapped)},
5477
{ { C_STRING_WITH_LEN("INSTR") }, BUILDER(Create_func_instr)},
5478
{ { C_STRING_WITH_LEN("INTERIORRINGN") }, GEOM_BUILDER(Create_func_interiorringn)},
5479
{ { C_STRING_WITH_LEN("INTERSECTS") }, GEOM_BUILDER(Create_func_mbr_intersects)},
5480
{ { C_STRING_WITH_LEN("ISCLOSED") }, GEOM_BUILDER(Create_func_isclosed)},
5481
{ { C_STRING_WITH_LEN("ISEMPTY") }, GEOM_BUILDER(Create_func_isempty)},
5482
{ { C_STRING_WITH_LEN("ISNULL") }, BUILDER(Create_func_isnull)},
5483
{ { C_STRING_WITH_LEN("ISSIMPLE") }, GEOM_BUILDER(Create_func_issimple)},
5484
{ { C_STRING_WITH_LEN("IS_FREE_LOCK") }, BUILDER(Create_func_is_free_lock)},
5485
{ { C_STRING_WITH_LEN("IS_USED_LOCK") }, BUILDER(Create_func_is_used_lock)},
5486
{ { C_STRING_WITH_LEN("LAST_DAY") }, BUILDER(Create_func_last_day)},
5487
{ { C_STRING_WITH_LEN("LAST_INSERT_ID") }, BUILDER(Create_func_last_insert_id)},
5488
{ { C_STRING_WITH_LEN("LCASE") }, BUILDER(Create_func_lcase)},
5489
{ { C_STRING_WITH_LEN("LEAST") }, BUILDER(Create_func_least)},
5490
{ { C_STRING_WITH_LEN("LENGTH") }, BUILDER(Create_func_length)},
5492
{ { C_STRING_WITH_LEN("LIKE_RANGE_MIN") }, BUILDER(Create_func_like_range_min)},
5493
{ { C_STRING_WITH_LEN("LIKE_RANGE_MAX") }, BUILDER(Create_func_like_range_max)},
5495
{ { C_STRING_WITH_LEN("LINEFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5496
{ { C_STRING_WITH_LEN("LINEFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5497
{ { C_STRING_WITH_LEN("LINESTRINGFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5498
{ { C_STRING_WITH_LEN("LINESTRINGFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5499
{ { C_STRING_WITH_LEN("LN") }, BUILDER(Create_func_ln)},
5500
{ { C_STRING_WITH_LEN("LOAD_FILE") }, BUILDER(Create_func_load_file)},
5501
{ { C_STRING_WITH_LEN("LOCATE") }, BUILDER(Create_func_locate)},
5502
{ { C_STRING_WITH_LEN("LOG") }, BUILDER(Create_func_log)},
5503
{ { C_STRING_WITH_LEN("LOG10") }, BUILDER(Create_func_log10)},
5504
{ { C_STRING_WITH_LEN("LOG2") }, BUILDER(Create_func_log2)},
5505
{ { C_STRING_WITH_LEN("LOWER") }, BUILDER(Create_func_lcase)},
5506
{ { C_STRING_WITH_LEN("LPAD") }, BUILDER(Create_func_lpad)},
5507
{ { C_STRING_WITH_LEN("LTRIM") }, BUILDER(Create_func_ltrim)},
5508
{ { C_STRING_WITH_LEN("MAKEDATE") }, BUILDER(Create_func_makedate)},
5509
{ { C_STRING_WITH_LEN("MAKETIME") }, BUILDER(Create_func_maketime)},
5510
{ { C_STRING_WITH_LEN("MAKE_SET") }, BUILDER(Create_func_make_set)},
5511
{ { C_STRING_WITH_LEN("MASTER_POS_WAIT") }, BUILDER(Create_func_master_pos_wait)},
5512
{ { C_STRING_WITH_LEN("MBRCONTAINS") }, GEOM_BUILDER(Create_func_mbr_contains)},
5513
{ { C_STRING_WITH_LEN("MBRDISJOINT") }, GEOM_BUILDER(Create_func_mbr_disjoint)},
5514
{ { C_STRING_WITH_LEN("MBREQUAL") }, GEOM_BUILDER(Create_func_mbr_equals)},
5515
{ { C_STRING_WITH_LEN("MBRINTERSECTS") }, GEOM_BUILDER(Create_func_mbr_intersects)},
5516
{ { C_STRING_WITH_LEN("MBROVERLAPS") }, GEOM_BUILDER(Create_func_mbr_overlaps)},
5517
{ { C_STRING_WITH_LEN("MBRTOUCHES") }, GEOM_BUILDER(Create_func_touches)},
5518
{ { C_STRING_WITH_LEN("MBRWITHIN") }, GEOM_BUILDER(Create_func_mbr_within)},
5519
{ { C_STRING_WITH_LEN("MD5") }, BUILDER(Create_func_md5)},
5520
{ { C_STRING_WITH_LEN("MLINEFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5521
{ { C_STRING_WITH_LEN("MLINEFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5522
{ { C_STRING_WITH_LEN("MONTHNAME") }, BUILDER(Create_func_monthname)},
5523
{ { C_STRING_WITH_LEN("MPOINTFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5524
{ { C_STRING_WITH_LEN("MPOINTFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5525
{ { C_STRING_WITH_LEN("MPOLYFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5526
{ { C_STRING_WITH_LEN("MPOLYFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5527
{ { C_STRING_WITH_LEN("MULTILINESTRINGFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5528
{ { C_STRING_WITH_LEN("MULTILINESTRINGFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5529
{ { C_STRING_WITH_LEN("MULTIPOINTFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5530
{ { C_STRING_WITH_LEN("MULTIPOINTFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5531
{ { C_STRING_WITH_LEN("MULTIPOLYGONFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5532
{ { C_STRING_WITH_LEN("MULTIPOLYGONFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5533
{ { C_STRING_WITH_LEN("NAME_CONST") }, BUILDER(Create_func_name_const)},
5534
{ { C_STRING_WITH_LEN("NULLIF") }, BUILDER(Create_func_nullif)},
5535
{ { C_STRING_WITH_LEN("NUMGEOMETRIES") }, GEOM_BUILDER(Create_func_numgeometries)},
5536
{ { C_STRING_WITH_LEN("NUMINTERIORRINGS") }, GEOM_BUILDER(Create_func_numinteriorring)},
5537
{ { C_STRING_WITH_LEN("NUMPOINTS") }, GEOM_BUILDER(Create_func_numpoints)},
5538
{ { C_STRING_WITH_LEN("OCT") }, BUILDER(Create_func_oct)},
5539
{ { C_STRING_WITH_LEN("OCTET_LENGTH") }, BUILDER(Create_func_length)},
5540
{ { C_STRING_WITH_LEN("ORD") }, BUILDER(Create_func_ord)},
5541
{ { C_STRING_WITH_LEN("OVERLAPS") }, GEOM_BUILDER(Create_func_mbr_overlaps)},
5542
{ { C_STRING_WITH_LEN("PERIOD_ADD") }, BUILDER(Create_func_period_add)},
5543
{ { C_STRING_WITH_LEN("PERIOD_DIFF") }, BUILDER(Create_func_period_diff)},
5544
{ { C_STRING_WITH_LEN("PI") }, BUILDER(Create_func_pi)},
5545
{ { C_STRING_WITH_LEN("POINTFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5546
{ { C_STRING_WITH_LEN("POINTFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5547
{ { C_STRING_WITH_LEN("POINTN") }, GEOM_BUILDER(Create_func_pointn)},
5548
{ { C_STRING_WITH_LEN("POLYFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5549
{ { C_STRING_WITH_LEN("POLYFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5550
{ { C_STRING_WITH_LEN("POLYGONFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5551
{ { C_STRING_WITH_LEN("POLYGONFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5552
{ { C_STRING_WITH_LEN("POW") }, BUILDER(Create_func_pow)},
5553
{ { C_STRING_WITH_LEN("POWER") }, BUILDER(Create_func_pow)},
5554
{ { C_STRING_WITH_LEN("QUOTE") }, BUILDER(Create_func_quote)},
5555
{ { C_STRING_WITH_LEN("RADIANS") }, BUILDER(Create_func_radians)},
5556
{ { C_STRING_WITH_LEN("RAND") }, BUILDER(Create_func_rand)},
5557
{ { C_STRING_WITH_LEN("RELEASE_LOCK") }, BUILDER(Create_func_release_lock)},
5558
{ { C_STRING_WITH_LEN("REVERSE") }, BUILDER(Create_func_reverse)},
5559
{ { C_STRING_WITH_LEN("ROUND") }, BUILDER(Create_func_round)},
5560
{ { C_STRING_WITH_LEN("RPAD") }, BUILDER(Create_func_rpad)},
5561
{ { C_STRING_WITH_LEN("RTRIM") }, BUILDER(Create_func_rtrim)},
5562
{ { C_STRING_WITH_LEN("SEC_TO_TIME") }, BUILDER(Create_func_sec_to_time)},
5563
{ { C_STRING_WITH_LEN("SHA") }, BUILDER(Create_func_sha)},
5564
{ { C_STRING_WITH_LEN("SHA1") }, BUILDER(Create_func_sha)},
5565
{ { C_STRING_WITH_LEN("SHA2") }, BUILDER(Create_func_sha2)},
5566
{ { C_STRING_WITH_LEN("SIGN") }, BUILDER(Create_func_sign)},
5567
{ { C_STRING_WITH_LEN("SIN") }, BUILDER(Create_func_sin)},
5568
{ { C_STRING_WITH_LEN("SLEEP") }, BUILDER(Create_func_sleep)},
5569
{ { C_STRING_WITH_LEN("SOUNDEX") }, BUILDER(Create_func_soundex)},
5570
{ { C_STRING_WITH_LEN("SPACE") }, BUILDER(Create_func_space)},
5571
{ { C_STRING_WITH_LEN("WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS") }, BUILDER(Create_func_master_gtid_set_wait)},
5572
{ { C_STRING_WITH_LEN("SQRT") }, BUILDER(Create_func_sqrt)},
5573
{ { C_STRING_WITH_LEN("SRID") }, GEOM_BUILDER(Create_func_srid)},
5574
{ { C_STRING_WITH_LEN("STARTPOINT") }, GEOM_BUILDER(Create_func_startpoint)},
5575
{ { C_STRING_WITH_LEN("STRCMP") }, BUILDER(Create_func_strcmp)},
5576
{ { C_STRING_WITH_LEN("STR_TO_DATE") }, BUILDER(Create_func_str_to_date)},
5577
{ { C_STRING_WITH_LEN("ST_AREA") }, GEOM_BUILDER(Create_func_area)},
5578
{ { C_STRING_WITH_LEN("ST_ASBINARY") }, GEOM_BUILDER(Create_func_as_wkb)},
5579
{ { C_STRING_WITH_LEN("ST_ASTEXT") }, GEOM_BUILDER(Create_func_as_wkt)},
5580
{ { C_STRING_WITH_LEN("ST_ASWKB") }, GEOM_BUILDER(Create_func_as_wkb)},
5581
{ { C_STRING_WITH_LEN("ST_ASWKT") }, GEOM_BUILDER(Create_func_as_wkt)},
5582
{ { C_STRING_WITH_LEN("ST_BUFFER") }, GEOM_BUILDER(Create_func_buffer)},
5583
{ { C_STRING_WITH_LEN("ST_CENTROID") }, GEOM_BUILDER(Create_func_centroid)},
5584
{ { C_STRING_WITH_LEN("ST_CONTAINS") }, GEOM_BUILDER(Create_func_contains)},
5585
{ { C_STRING_WITH_LEN("ST_CROSSES") }, GEOM_BUILDER(Create_func_crosses)},
5586
{ { C_STRING_WITH_LEN("ST_DIFFERENCE") }, GEOM_BUILDER(Create_func_difference)},
5587
{ { C_STRING_WITH_LEN("ST_DIMENSION") }, GEOM_BUILDER(Create_func_dimension)},
5588
{ { C_STRING_WITH_LEN("ST_DISJOINT") }, GEOM_BUILDER(Create_func_disjoint)},
5589
{ { C_STRING_WITH_LEN("ST_DISTANCE") }, GEOM_BUILDER(Create_func_distance)},
5590
{ { C_STRING_WITH_LEN("ST_ENDPOINT") }, GEOM_BUILDER(Create_func_endpoint)},
5591
{ { C_STRING_WITH_LEN("ST_ENVELOPE") }, GEOM_BUILDER(Create_func_envelope)},
5592
{ { C_STRING_WITH_LEN("ST_EQUALS") }, GEOM_BUILDER(Create_func_mbr_equals)},
5593
{ { C_STRING_WITH_LEN("ST_EXTERIORRING") }, GEOM_BUILDER(Create_func_exteriorring)},
5594
{ { C_STRING_WITH_LEN("ST_GEOMCOLLFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5595
{ { C_STRING_WITH_LEN("ST_GEOMCOLLFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5596
{ { C_STRING_WITH_LEN("ST_GEOMETRYCOLLECTIONFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5597
{ { C_STRING_WITH_LEN("ST_GEOMETRYCOLLECTIONFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5598
{ { C_STRING_WITH_LEN("ST_GEOMETRYFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5599
{ { C_STRING_WITH_LEN("ST_GEOMETRYFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5600
{ { C_STRING_WITH_LEN("ST_GEOMETRYN") }, GEOM_BUILDER(Create_func_geometryn)},
5601
{ { C_STRING_WITH_LEN("ST_GEOMETRYTYPE") }, GEOM_BUILDER(Create_func_geometry_type)},
5602
{ { C_STRING_WITH_LEN("ST_GEOMFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5603
{ { C_STRING_WITH_LEN("ST_GEOMFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5605
{ { C_STRING_WITH_LEN("ST_GIS_DEBUG") }, GEOM_BUILDER(Create_func_gis_debug)},
5607
{ { C_STRING_WITH_LEN("ST_EQUALS") }, GEOM_BUILDER(Create_func_equals)},
5608
{ { C_STRING_WITH_LEN("ST_INTERIORRINGN") }, GEOM_BUILDER(Create_func_interiorringn)},
5609
{ { C_STRING_WITH_LEN("ST_INTERSECTS") }, GEOM_BUILDER(Create_func_intersects)},
5610
{ { C_STRING_WITH_LEN("ST_INTERSECTION") }, GEOM_BUILDER(Create_func_intersection)},
5611
{ { C_STRING_WITH_LEN("ST_ISCLOSED") }, GEOM_BUILDER(Create_func_isclosed)},
5612
{ { C_STRING_WITH_LEN("ST_ISEMPTY") }, GEOM_BUILDER(Create_func_isempty)},
5613
{ { C_STRING_WITH_LEN("ST_ISSIMPLE") }, GEOM_BUILDER(Create_func_issimple)},
5614
{ { C_STRING_WITH_LEN("ST_LENGTH") }, GEOM_BUILDER(Create_func_glength)},
5615
{ { C_STRING_WITH_LEN("ST_LINEFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5616
{ { C_STRING_WITH_LEN("ST_LINEFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5617
{ { C_STRING_WITH_LEN("ST_LINESTRINGFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5618
{ { C_STRING_WITH_LEN("ST_LINESTRINGFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5619
{ { C_STRING_WITH_LEN("ST_NUMGEOMETRIES") }, GEOM_BUILDER(Create_func_numgeometries)},
5620
{ { C_STRING_WITH_LEN("ST_NUMINTERIORRINGS") }, GEOM_BUILDER(Create_func_numinteriorring)},
5621
{ { C_STRING_WITH_LEN("ST_NUMPOINTS") }, GEOM_BUILDER(Create_func_numpoints)},
5622
{ { C_STRING_WITH_LEN("ST_OVERLAPS") }, GEOM_BUILDER(Create_func_overlaps)},
5623
{ { C_STRING_WITH_LEN("ST_POINTFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5624
{ { C_STRING_WITH_LEN("ST_POINTFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5625
{ { C_STRING_WITH_LEN("ST_POINTN") }, GEOM_BUILDER(Create_func_pointn)},
5626
{ { C_STRING_WITH_LEN("ST_POLYFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5627
{ { C_STRING_WITH_LEN("ST_POLYFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5628
{ { C_STRING_WITH_LEN("ST_POLYGONFROMTEXT") }, GEOM_BUILDER(Create_func_geometry_from_text)},
5629
{ { C_STRING_WITH_LEN("ST_POLYGONFROMWKB") }, GEOM_BUILDER(Create_func_geometry_from_wkb)},
5630
{ { C_STRING_WITH_LEN("ST_SRID") }, GEOM_BUILDER(Create_func_srid)},
5631
{ { C_STRING_WITH_LEN("ST_STARTPOINT") }, GEOM_BUILDER(Create_func_startpoint)},
5632
{ { C_STRING_WITH_LEN("ST_SYMDIFFERENCE") }, GEOM_BUILDER(Create_func_symdifference)},
5633
{ { C_STRING_WITH_LEN("ST_TOUCHES") }, GEOM_BUILDER(Create_func_touches)},
5634
{ { C_STRING_WITH_LEN("ST_UNION") }, GEOM_BUILDER(Create_func_union)},
5635
{ { C_STRING_WITH_LEN("ST_WITHIN") }, GEOM_BUILDER(Create_func_within)},
5636
{ { C_STRING_WITH_LEN("ST_X") }, GEOM_BUILDER(Create_func_x)},
5637
{ { C_STRING_WITH_LEN("ST_Y") }, GEOM_BUILDER(Create_func_y)},
5638
{ { C_STRING_WITH_LEN("SUBSTRING_INDEX") }, BUILDER(Create_func_substr_index)},
5639
{ { C_STRING_WITH_LEN("SUBTIME") }, BUILDER(Create_func_subtime)},
5640
{ { C_STRING_WITH_LEN("TAN") }, BUILDER(Create_func_tan)},
5641
{ { C_STRING_WITH_LEN("TIMEDIFF") }, BUILDER(Create_func_timediff)},
5642
{ { C_STRING_WITH_LEN("TIME_FORMAT") }, BUILDER(Create_func_time_format)},
5643
{ { C_STRING_WITH_LEN("TIME_TO_SEC") }, BUILDER(Create_func_time_to_sec)},
5644
{ { C_STRING_WITH_LEN("TOUCHES") }, GEOM_BUILDER(Create_func_touches)},
5645
{ { C_STRING_WITH_LEN("TO_BASE64") }, BUILDER(Create_func_to_base64)},
5646
{ { C_STRING_WITH_LEN("TO_DAYS") }, BUILDER(Create_func_to_days)},
5647
{ { C_STRING_WITH_LEN("TO_SECONDS") }, BUILDER(Create_func_to_seconds)},
5648
{ { C_STRING_WITH_LEN("UCASE") }, BUILDER(Create_func_ucase)},
5649
{ { C_STRING_WITH_LEN("UNCOMPRESS") }, BUILDER(Create_func_uncompress)},
5650
{ { C_STRING_WITH_LEN("UNCOMPRESSED_LENGTH") }, BUILDER(Create_func_uncompressed_length)},
5651
{ { C_STRING_WITH_LEN("UNHEX") }, BUILDER(Create_func_unhex)},
5652
{ { C_STRING_WITH_LEN("UNIX_TIMESTAMP") }, BUILDER(Create_func_unix_timestamp)},
5653
{ { C_STRING_WITH_LEN("UPDATEXML") }, BUILDER(Create_func_xml_update)},
5654
{ { C_STRING_WITH_LEN("UPPER") }, BUILDER(Create_func_ucase)},
5655
{ { C_STRING_WITH_LEN("UUID") }, BUILDER(Create_func_uuid)},
5656
{ { C_STRING_WITH_LEN("UUID_SHORT") }, BUILDER(Create_func_uuid_short)},
5657
{ { C_STRING_WITH_LEN("VALIDATE_PASSWORD_STRENGTH") }, BUILDER(Create_func_validate_password_strength)},
5658
{ { C_STRING_WITH_LEN("VERSION") }, BUILDER(Create_func_version)},
5659
{ { C_STRING_WITH_LEN("WEEKDAY") }, BUILDER(Create_func_weekday)},
5660
{ { C_STRING_WITH_LEN("WEEKOFYEAR") }, BUILDER(Create_func_weekofyear)},
5661
{ { C_STRING_WITH_LEN("WITHIN") }, GEOM_BUILDER(Create_func_mbr_within)},
5662
{ { C_STRING_WITH_LEN("X") }, GEOM_BUILDER(Create_func_x)},
5663
{ { C_STRING_WITH_LEN("Y") }, GEOM_BUILDER(Create_func_y)},
5664
{ { C_STRING_WITH_LEN("YEARWEEK") }, BUILDER(Create_func_year_week)},
5669
static HASH native_functions_hash;
5672
get_native_fct_hash_key(const uchar *buff, size_t *length,
5673
my_bool /* unused */)
5675
Native_func_registry *func= (Native_func_registry*) buff;
5676
*length= func->name.length;
5677
return (uchar*) func->name.str;
5681
Load the hash table for native functions.
5682
Note: this code is not thread safe, and is intended to be used at server
5683
startup only (before going multi-threaded)
5686
int item_create_init()
5688
Native_func_registry *func;
5690
DBUG_ENTER("item_create_init");
5692
if (my_hash_init(& native_functions_hash,
5693
system_charset_info,
5694
array_elements(func_array),
5697
(my_hash_get_key) get_native_fct_hash_key,
5698
NULL, /* Nothing to free */
5702
for (func= func_array; func->builder != NULL; func++)
5704
if (my_hash_insert(& native_functions_hash, (uchar*) func))
5709
for (uint i=0 ; i < native_functions_hash.records ; i++)
5711
func= (Native_func_registry*) my_hash_element(& native_functions_hash, i);
5712
DBUG_PRINT("info", ("native function: %s length: %u",
5713
func->name.str, (uint) func->name.length));
5721
Empty the hash table for native functions.
5722
Note: this code is not thread safe, and is intended to be used at server
5723
shutdown only (after thread requests have been executed).
5726
void item_create_cleanup()
5728
DBUG_ENTER("item_create_cleanup");
5729
my_hash_free(& native_functions_hash);
5734
find_native_function_builder(THD *thd, LEX_STRING name)
5736
Native_func_registry *func;
5737
Create_func *builder= NULL;
5740
func= (Native_func_registry*) my_hash_search(& native_functions_hash,
5746
builder= func->builder;
5753
find_qualified_function_builder(THD *thd)
5755
return & Create_sp_func::s_singleton;
5760
create_func_cast(THD *thd, Item *a, Cast_target cast_type,
5761
const char *c_len, const char *c_dec,
5762
const CHARSET_INFO *cs)
5764
Item *UNINIT_VAR(res);
5766
switch (cast_type) {
5767
case ITEM_CAST_BINARY:
5768
res= new (thd->mem_root) Item_func_binary(a);
5770
case ITEM_CAST_SIGNED_INT:
5771
res= new (thd->mem_root) Item_func_signed(a);
5773
case ITEM_CAST_UNSIGNED_INT:
5774
res= new (thd->mem_root) Item_func_unsigned(a);
5776
case ITEM_CAST_DATE:
5777
res= new (thd->mem_root) Item_date_typecast(a);
5779
case ITEM_CAST_TIME:
5780
case ITEM_CAST_DATETIME:
5782
uint dec= c_dec ? strtoul(c_dec, NULL, 10) : 0;
5783
if (dec > DATETIME_MAX_DECIMALS)
5785
my_error(ER_TOO_BIG_PRECISION, MYF(0),
5786
(int) dec, "CAST", DATETIME_MAX_DECIMALS);
5789
res= (cast_type == ITEM_CAST_TIME) ?
5790
(Item*) new (thd->mem_root) Item_time_typecast(a, dec) :
5791
(Item*) new (thd->mem_root) Item_datetime_typecast(a, dec);
5794
case ITEM_CAST_DECIMAL:
5803
decoded_size= strtoul(c_len, NULL, 10);
5806
my_error(ER_TOO_BIG_PRECISION, MYF(0), INT_MAX, a->item_name.ptr(),
5807
static_cast<ulong>(DECIMAL_MAX_PRECISION));
5817
decoded_size= strtoul(c_dec, NULL, 10);
5818
if ((errno != 0) || (decoded_size > UINT_MAX))
5820
my_error(ER_TOO_BIG_SCALE, MYF(0), INT_MAX, a->item_name.ptr(),
5821
static_cast<ulong>(DECIMAL_MAX_SCALE));
5826
my_decimal_trim(&len, &dec);
5829
my_error(ER_M_BIGGER_THAN_D, MYF(0), "");
5832
if (len > DECIMAL_MAX_PRECISION)
5834
my_error(ER_TOO_BIG_PRECISION, MYF(0), static_cast<int>(len), a->item_name.ptr(),
5835
static_cast<ulong>(DECIMAL_MAX_PRECISION));
5838
if (dec > DECIMAL_MAX_SCALE)
5840
my_error(ER_TOO_BIG_SCALE, MYF(0), dec, a->item_name.ptr(),
5841
static_cast<ulong>(DECIMAL_MAX_SCALE));
5844
res= new (thd->mem_root) Item_decimal_typecast(a, len, dec);
5847
case ITEM_CAST_CHAR:
5850
const CHARSET_INFO *real_cs=
5851
(cs ? cs : thd->variables.collation_connection);
5856
decoded_size= strtoul(c_len, NULL, 10);
5857
if ((errno != 0) || (decoded_size > MAX_FIELD_BLOBLENGTH))
5859
my_error(ER_TOO_BIG_DISPLAYWIDTH, MYF(0), "cast as char", MAX_FIELD_BLOBLENGTH);
5862
len= (int) decoded_size;
5864
res= new (thd->mem_root) Item_char_typecast(a, len, real_cs);
5879
Builder for datetime literals:
5880
TIME'00:00:00', DATE'2001-01-01', TIMESTAMP'2001-01-01 00:00:00'.
5881
@param thd The current thread
5882
@param str Character literal
5883
@param length Length of str
5884
@param type Type of literal (TIME, DATE or DATETIME)
5885
@param send_error Whether to generate an error on failure
5888
Item *create_temporal_literal(THD *thd,
5889
const char *str, uint length,
5890
const CHARSET_INFO *cs,
5891
enum_field_types type, bool send_error)
5893
MYSQL_TIME_STATUS status;
5896
ulonglong flags= TIME_FUZZY_DATE | thd->datetime_flags();
5900
case MYSQL_TYPE_DATE:
5901
case MYSQL_TYPE_NEWDATE:
5902
if (!str_to_datetime(cs, str, length, <ime, flags, &status) &&
5903
ltime.time_type == MYSQL_TIMESTAMP_DATE && !status.warnings)
5904
item= new (thd->mem_root) Item_date_literal(<ime);
5906
case MYSQL_TYPE_DATETIME:
5907
if (!str_to_datetime(cs, str, length, <ime, flags, &status) &&
5908
ltime.time_type == MYSQL_TIMESTAMP_DATETIME && !status.warnings)
5909
item= new (thd->mem_root) Item_datetime_literal(<ime,
5910
status.fractional_digits);
5912
case MYSQL_TYPE_TIME:
5913
if (!str_to_time(cs, str, length, <ime, 0, &status) &&
5914
ltime.time_type == MYSQL_TIMESTAMP_TIME && !status.warnings)
5915
item= new (thd->mem_root) Item_time_literal(<ime,
5916
status.fractional_digits);
5927
const char *typestr=
5928
(type == MYSQL_TYPE_DATE) ? "DATE" :
5929
(type == MYSQL_TYPE_TIME) ? "TIME" : "DATETIME";
5930
ErrConvString err(str, length, thd->variables.character_set_client);
5931
my_error(ER_WRONG_VALUE, MYF(0), typestr, err.ptr());