MySQL 9.1.0
Source Code Documentation
item_strfunc.h
Go to the documentation of this file.
1/* Copyright (c) 2000, 2024, Oracle and/or its affiliates.
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License, version 2.0,
5 as published by the Free Software Foundation.
6
7 This program is designed to work with certain software (including
8 but not limited to OpenSSL) that is licensed under separate terms,
9 as designated in a particular file or component or in included license
10 documentation. The authors of MySQL hereby grant you an additional
11 permission to link the program and your derivative works with the
12 separately licensed software that they have either included with
13 the program or referenced in the documentation.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License, version 2.0, for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
23
24/* This file defines all string functions */
25#ifndef ITEM_STRFUNC_INCLUDED
26#define ITEM_STRFUNC_INCLUDED
27
28#include <assert.h>
29#include <sys/types.h>
30
31#include <cstdint> // uint32_t
32
33#include "lex_string.h"
34#include "mysql/gtid/uuid.h" // Uuid
35
36#include "my_hostname.h" // HOSTNAME_LENGTH
37#include "my_inttypes.h"
38#include "my_table_map.h"
39#include "my_time.h"
42#include "mysql_com.h"
43#include "mysql_time.h"
44#include "sql/enum_query_type.h"
45#include "sql/field.h"
46#include "sql/item.h"
47#include "sql/item_cmpfunc.h" // Item_bool_func
48#include "sql/item_func.h" // Item_func
49#include "sql/parse_location.h" // POS
50#include "sql/sql_const.h"
51#include "sql_string.h"
52#include "template_utils.h" // pointer_cast
53
54class MY_LOCALE;
55class PT_item_list;
56class THD;
57class my_decimal;
58struct Parse_context;
59
60template <class T>
61class List;
62
64 const char *name, CHARSET_INFO *name_cs = system_charset_info);
65
66/**
67 Generate Universal Unique Identifier (UUID).
68
69 @param str Pointer to string which will hold the UUID.
70
71 @return str Pointer to string which contains the UUID.
72*/
73
75
76class Item_str_func : public Item_func {
78
79 public:
81
82 explicit Item_str_func(const POS &pos) : super(pos) {}
83
85
86 Item_str_func(const POS &pos, Item *a) : Item_func(pos, a) {}
87
88 Item_str_func(Item *a, Item *b) : Item_func(a, b) {}
89
90 Item_str_func(const POS &pos, Item *a, Item *b) : Item_func(pos, a, b) {}
91
92 Item_str_func(Item *a, Item *b, Item *c) : Item_func(a, b, c) {}
93
94 Item_str_func(const POS &pos, Item *a, Item *b, Item *c)
95 : Item_func(pos, a, b, c) {}
96
97 Item_str_func(Item *a, Item *b, Item *c, Item *d) : Item_func(a, b, c, d) {}
98
99 Item_str_func(const POS &pos, Item *a, Item *b, Item *c, Item *d)
100 : Item_func(pos, a, b, c, d) {}
101
102 Item_str_func(Item *a, Item *b, Item *c, Item *d, Item *e)
103 : Item_func(a, b, c, d, e) {}
104
105 Item_str_func(const POS &pos, Item *a, Item *b, Item *c, Item *d, Item *e)
106 : Item_func(pos, a, b, c, d, e) {}
107 Item_str_func(const POS &pos, Item *a, Item *b, Item *c, Item *d, Item *e,
108 Item *f)
109 : Item_func(pos, a, b, c, d, e, f) {}
111
112 Item_str_func(const POS &pos, PT_item_list *opt_list)
113 : Item_func(pos, opt_list) {}
114
115 longlong val_int() override { return val_int_from_string(); }
116 double val_real() override { return val_real_from_string(); }
117 my_decimal *val_decimal(my_decimal *) override;
118 bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override {
119 return get_date_from_string(ltime, fuzzydate);
120 }
121 bool get_time(MYSQL_TIME *ltime) override {
122 return get_time_from_string(ltime);
123 }
124 enum Item_result result_type() const override { return STRING_RESULT; }
125 void left_right_max_length(THD *thd);
126 bool fix_fields(THD *thd, Item **ref) override;
127 bool resolve_type(THD *thd) override {
128 if (param_type_is_default(thd, 0, -1)) return true;
129 return false;
130 }
132
133 protected:
134 /**
135 Calls push_warning_printf for packet overflow.
136 @return error_str().
137 */
138 String *push_packet_overflow_warning(THD *thd, const char *func);
139
140 void add_json_info(Json_object *obj) override {
141 obj->add_alias("func_name", create_dom_ptr<Json_string>(func_name()));
142 }
143};
144
145/*
146 Functions that return values with ASCII repertoire
147*/
150
151 public:
154 }
155
158 }
159 Item_str_ascii_func(const POS &pos, Item *a) : Item_str_func(pos, a) {
161 }
162
165 }
166 Item_str_ascii_func(const POS &pos, Item *a, Item *b)
167 : Item_str_func(pos, a, b) {
169 }
170
173 }
174 Item_str_ascii_func(const POS &pos, Item *a, Item *b, Item *c)
175 : Item_str_func(pos, a, b, c) {
177 }
178
179 String *val_str(String *str) override {
181 }
182 String *val_str_ascii(String *) override = 0;
183};
184
185class Item_func_md5 final : public Item_str_ascii_func {
187
188 public:
189 Item_func_md5(const POS &pos, Item *a) : Item_str_ascii_func(pos, a) {}
190 String *val_str_ascii(String *) override;
191 bool resolve_type(THD *thd) override;
192 const char *func_name() const override { return "md5"; }
193};
194
196 public:
197 Item_func_sha(const POS &pos, Item *a) : Item_str_ascii_func(pos, a) {}
198 String *val_str_ascii(String *) override;
199 bool resolve_type(THD *thd) override;
200 const char *func_name() const override { return "sha"; }
201};
202
204 public:
205 Item_func_sha2(const POS &pos, Item *a, Item *b)
206 : Item_str_ascii_func(pos, a, b) {}
207 String *val_str_ascii(String *) override;
208 bool resolve_type(THD *thd) override;
209 const char *func_name() const override { return "sha2"; }
210};
211
214
215 public:
216 Item_func_to_base64(const POS &pos, Item *a) : Item_str_ascii_func(pos, a) {}
217 String *val_str_ascii(String *) override;
218 bool resolve_type(THD *) override;
219 const char *func_name() const override { return "to_base64"; }
220};
221
223 public:
224 Item_func_statement_digest(const POS &pos, Item *query_string)
225 : Item_str_ascii_func(pos, query_string) {}
226
227 const char *func_name() const override { return "statement_digest"; }
228 bool check_function_as_value_generator(uchar *checker_args) override {
230 pointer_cast<Check_function_as_value_generator_parameters *>(
231 checker_args);
232 func_arg->banned_function_name = func_name();
233 return (func_arg->source == VGS_GENERATED_COLUMN);
234 }
235
236 bool resolve_type(THD *thd) override;
237
238 String *val_str_ascii(String *) override;
239
240 private:
242};
243
245 public:
246 Item_func_statement_digest_text(const POS &pos, Item *query_string)
247 : Item_str_func(pos, query_string) {}
248
249 const char *func_name() const override { return "statement_digest_text"; }
250
251 /**
252 The type is always LONGTEXT, just like the digest_text columns in
253 Performance Schema
254 */
255 bool resolve_type(THD *thd) override;
256
257 bool check_function_as_value_generator(uchar *checker_args) override {
259 pointer_cast<Check_function_as_value_generator_parameters *>(
260 checker_args);
261 func_arg->banned_function_name = func_name();
262 return (func_arg->source == VGS_GENERATED_COLUMN);
263 }
264 String *val_str(String *) override;
265
266 private:
268};
269
272
273 public:
274 Item_func_from_base64(const POS &pos, Item *a) : Item_str_func(pos, a) {}
275 String *val_str(String *) override;
276 bool resolve_type(THD *thd) override;
277 const char *func_name() const override { return "from_base64"; }
278};
279
283
284 public:
285 Item_func_aes_encrypt(const POS &pos, Item *a, Item *b)
286 : Item_str_func(pos, a, b) {}
287 Item_func_aes_encrypt(const POS &pos, Item *a, Item *b, Item *c)
288 : Item_str_func(pos, a, b, c) {}
289 Item_func_aes_encrypt(const POS &pos, Item *a, Item *b, Item *c, Item *d)
290 : Item_str_func(pos, a, b, c, d) {}
291 Item_func_aes_encrypt(const POS &pos, Item *a, Item *b, Item *c, Item *d,
292 Item *e)
293 : Item_str_func(pos, a, b, c, d, e) {}
294 Item_func_aes_encrypt(const POS &pos, Item *a, Item *b, Item *c, Item *d,
295 Item *e, Item *f)
296 : Item_str_func(pos, a, b, c, d, e, f) {}
297 bool do_itemize(Parse_context *pc, Item **res) override;
298 String *val_str(String *) override;
299 bool resolve_type(THD *) override;
300 const char *func_name() const override { return "aes_encrypt"; }
301};
302
305
306 public:
307 Item_func_aes_decrypt(const POS &pos, Item *a, Item *b)
308 : Item_str_func(pos, a, b) {}
309 Item_func_aes_decrypt(const POS &pos, Item *a, Item *b, Item *c)
310 : Item_str_func(pos, a, b, c) {}
311 Item_func_aes_decrypt(const POS &pos, Item *a, Item *b, Item *c, Item *d)
312 : Item_str_func(pos, a, b, c, d) {}
313 Item_func_aes_decrypt(const POS &pos, Item *a, Item *b, Item *c, Item *d,
314 Item *e)
315 : Item_str_func(pos, a, b, c, d, e) {}
316 Item_func_aes_decrypt(const POS &pos, Item *a, Item *b, Item *c, Item *d,
317 Item *e, Item *f)
318 : Item_str_func(pos, a, b, c, d, e, f) {}
319 bool do_itemize(Parse_context *pc, Item **res) override;
320 String *val_str(String *) override;
321 bool resolve_type(THD *thd) override;
322 const char *func_name() const override { return "aes_decrypt"; }
323};
324
327
328 /** limitation from the SSL library */
330
331 public:
332 Item_func_random_bytes(const POS &pos, Item *a) : Item_str_func(pos, a) {}
333
334 bool do_itemize(Parse_context *pc, Item **res) override;
335 bool resolve_type(THD *thd) override;
336 String *val_str(String *a) override;
337
338 const char *func_name() const override { return "random_bytes"; }
340 return RAND_TABLE_BIT;
341 }
342};
343
345 String tmp_value{"", 0, collation.collation}; // Initialize to empty
346 public:
347 Item_func_concat(const POS &pos, PT_item_list *opt_list)
348 : Item_str_func(pos, opt_list) {}
350 Item_func_concat(const POS &pos, Item *a, Item *b)
351 : Item_str_func(pos, a, b) {}
352
353 String *val_str(String *) override;
354 bool resolve_type(THD *thd) override;
355 const char *func_name() const override { return "concat"; }
356};
357
359 String tmp_value{"", 0, collation.collation}; // Initialize to empty
360 public:
363 null_on_null = false;
364 }
365 Item_func_concat_ws(const POS &pos, PT_item_list *opt_list)
366 : Item_str_func(pos, opt_list) {
367 null_on_null = false;
368 }
369 String *val_str(String *) override;
370 bool resolve_type(THD *thd) override;
371 const char *func_name() const override { return "concat_ws"; }
372};
373
376
377 public:
379 Item_func_reverse(const POS &pos, Item *a) : Item_str_func(pos, a) {}
380
381 String *val_str(String *) override;
382 bool resolve_type(THD *thd) override;
383 const char *func_name() const override { return "reverse"; }
384};
385
388 /// Holds result in case we need to allocate our own result buffer.
390
391 public:
393 : Item_str_func(pos, org, find, replace) {}
394 String *val_str(String *) override;
395 bool resolve_type(THD *thd) override;
396 const char *func_name() const override { return "replace"; }
397};
398
401 /// Holds result in case we need to allocate our own result buffer.
403
404 public:
406 Item *new_str)
407 : Item_str_func(pos, org, start, length, new_str) {}
408 String *val_str(String *) override;
409 bool resolve_type(THD *thd) override;
410 const char *func_name() const override { return "insert"; }
411};
412
414 protected:
418
419 public:
420 Item_str_conv(const POS &pos, Item *item) : Item_str_func(pos, item) {}
421 String *val_str(String *) override;
422};
423
425 public:
426 Item_func_lower(const POS &pos, Item *item) : Item_str_conv(pos, item) {}
427 const char *func_name() const override { return "lower"; }
428 bool resolve_type(THD *) override;
429};
430
432 public:
433 Item_func_upper(const POS &pos, Item *item) : Item_str_conv(pos, item) {}
434 const char *func_name() const override { return "upper"; }
435 bool resolve_type(THD *) override;
436};
437
440
441 public:
442 Item_func_left(const POS &pos, Item *a, Item *b) : Item_str_func(pos, a, b) {}
443 String *val_str(String *) override;
444 bool resolve_type(THD *thd) override;
445 const char *func_name() const override { return "left"; }
446};
447
450
451 public:
452 Item_func_right(const POS &pos, Item *a, Item *b)
453 : Item_str_func(pos, a, b) {}
454 String *val_str(String *) override;
455 bool resolve_type(THD *thd) override;
456 const char *func_name() const override { return "right"; }
457};
458
461
463
464 public:
466 Item_func_substr(const POS &pos, Item *a, Item *b) : super(pos, a, b) {}
467
468 Item_func_substr(Item *a, Item *b, Item *c) : Item_str_func(a, b, c) {}
469 Item_func_substr(const POS &pos, Item *a, Item *b, Item *c)
470 : super(pos, a, b, c) {}
471
472 String *val_str(String *) override;
473 bool resolve_type(THD *thd) override;
474 const char *func_name() const override { return "substr"; }
475};
476
479
480 public:
481 Item_func_substr_index(const POS &pos, Item *a, Item *b, Item *c)
482 : Item_str_func(pos, a, b, c) {}
483 String *val_str(String *) override;
484 bool resolve_type(THD *) override;
485 const char *func_name() const override { return "substring_index"; }
486};
487
489 public:
490 /**
491 Why all the trim modes in this enum?
492 We need to maintain parsing information, so that our print() function
493 can reproduce correct messages and view definitions.
494 */
502 };
503
504 private:
508 const bool m_trim_leading;
509 const bool m_trim_trailing;
510
511 public:
513 : Item_str_func(a, b),
514 m_trim_mode(tm),
517
518 Item_func_trim(const POS &pos, Item *a, Item *b, TRIM_MODE tm)
519 : Item_str_func(pos, a, b),
520 m_trim_mode(tm),
523
525 : Item_str_func(a),
526 m_trim_mode(tm),
529
530 Item_func_trim(const POS &pos, Item *a, TRIM_MODE tm)
531 : Item_str_func(pos, a),
532 m_trim_mode(tm),
535
536 bool trim_leading() const {
539 }
540
541 bool trim_trailing() const {
544 }
545
546 String *val_str(String *) override;
547 bool resolve_type(THD *) override;
548 const char *func_name() const override {
549 switch (m_trim_mode) {
551 return "trim";
552 case TRIM_BOTH:
553 return "trim";
554 case TRIM_LEADING:
555 return "ltrim";
556 case TRIM_TRAILING:
557 return "rtrim";
558 case TRIM_LTRIM:
559 return "ltrim";
560 case TRIM_RTRIM:
561 return "rtrim";
562 }
563 return nullptr;
564 }
565 void print(const THD *thd, String *str,
566 enum_query_type query_type) const override;
567};
568
569class Item_func_ltrim final : public Item_func_trim {
570 public:
571 Item_func_ltrim(const POS &pos, Item *a)
572 : Item_func_trim(pos, a, TRIM_LTRIM) {}
573};
574
575class Item_func_rtrim final : public Item_func_trim {
576 public:
577 Item_func_rtrim(const POS &pos, Item *a)
578 : Item_func_trim(pos, a, TRIM_RTRIM) {}
579};
580
583
584 public:
587 }
588 explicit Item_func_sysconst(const POS &pos) : super(pos) {
590 }
591 /*
592 Used to create correct Item name in new converted item in
593 safe_charset_converter, return string representation of this function
594 call
595 */
596 virtual const Name_string fully_qualified_func_name() const = 0;
597 bool check_function_as_value_generator(uchar *checker_args) override {
599 pointer_cast<Check_function_as_value_generator_parameters *>(
600 checker_args);
601 func_arg->banned_function_name = func_name();
602 return ((func_arg->source == VGS_GENERATED_COLUMN) ||
603 (func_arg->source == VGS_CHECK_CONSTRAINT));
604 }
605};
606
609
610 public:
611 explicit Item_func_database(const POS &pos) : Item_func_sysconst(pos) {}
612
613 bool do_itemize(Parse_context *pc, Item **res) override;
614
615 String *val_str(String *) override;
616 bool resolve_type(THD *) override {
618 set_nullable(true);
619 return false;
620 }
621 const char *func_name() const override { return "database"; }
622 const Name_string fully_qualified_func_name() const override {
623 return NAME_STRING("database()");
624 }
625};
626
629
630 protected:
631 /// True when function value is evaluated, set to false after each execution
632 bool m_evaluated = false;
633
634 /// Evaluate user name, must be called once per execution
635 bool evaluate(const char *user, const char *host);
636 type_conversion_status save_in_field_inner(Field *field, bool) override;
637
638 public:
640 explicit Item_func_user(const POS &pos) : super(pos) {
642 }
643
645 return INNER_TABLE_BIT;
646 }
647
648 bool do_itemize(Parse_context *pc, Item **res) override;
649
650 bool check_function_as_value_generator(uchar *checker_args) override {
652 pointer_cast<Check_function_as_value_generator_parameters *>(
653 checker_args);
654 func_arg->banned_function_name = func_name();
655 return ((func_arg->source == VGS_GENERATED_COLUMN) ||
656 (func_arg->source == VGS_CHECK_CONSTRAINT));
657 }
658 bool resolve_type(THD *) override {
660 return false;
661 }
662 void cleanup() override {
663 m_evaluated = false;
666 }
667 const char *func_name() const override { return "user"; }
668 const Name_string fully_qualified_func_name() const override {
669 return NAME_STRING("user()");
670 }
671
672 String *val_str(String *) override;
673};
674
677 /**
678 Used to pass a security context to the resolver functions.
679 Only used for definer views. In all other contexts, the security context
680 passed here is nullptr and is instead looked up dynamically at run time
681 from the current THD.
682 */
684
685 /// Copied from m_name_resolution_ctx in fix_fields if the definer
686 /// Security_context is set in Name_resolution_context
689
690 protected:
691 type_conversion_status save_in_field_inner(Field *field, bool) override;
692
693 /// Overridden to copy definer priv_user and priv_host
694 bool resolve_type(THD *) override;
695
696 public:
697 explicit Item_func_current_user(const POS &pos) : super(pos) {}
698
699 bool do_itemize(Parse_context *pc, Item **res) override;
700 const char *func_name() const override { return "current_user"; }
701 const Name_string fully_qualified_func_name() const override {
702 return NAME_STRING("current_user()");
703 }
704
705 String *val_str(String *) override;
706};
707
710
711 public:
713 Item_func_soundex(const POS &pos, Item *a) : Item_str_func(pos, a) {}
714 String *val_str(String *) override;
715 bool resolve_type(THD *thd) override;
716 const char *func_name() const override { return "soundex"; }
717};
718
719class Item_func_elt final : public Item_str_func {
720 public:
721 Item_func_elt(const POS &pos, PT_item_list *opt_list)
722 : Item_str_func(pos, opt_list) {}
723 double val_real() override;
724 longlong val_int() override;
725 String *val_str(String *str) override;
726 bool resolve_type(THD *thd) override;
727 const char *func_name() const override { return "elt"; }
728};
729
730class Item_func_make_set final : public Item_str_func {
732
734
735 public:
736 Item_func_make_set(const POS &pos, PT_item_list *opt_list)
737 : Item_str_func(pos, opt_list) {}
738
739 String *val_str(String *str) override;
740 bool fix_fields(THD *thd, Item **ref) override;
741 bool resolve_type(THD *) override;
742 const char *func_name() const override { return "make_set"; }
743
744 void print(const THD *thd, String *str,
745 enum_query_type query_type) const override;
746};
747
751
752 public:
753 Item_func_format(const POS &pos, Item *org, Item *dec)
754 : Item_str_ascii_func(pos, org, dec) {}
755 Item_func_format(const POS &pos, Item *org, Item *dec, Item *lang)
756 : Item_str_ascii_func(pos, org, dec, lang) {}
757
758 MY_LOCALE *get_locale(Item *item);
759 String *val_str_ascii(String *) override;
760 bool resolve_type(THD *thd) override;
761 const char *func_name() const override { return "format"; }
762 void print(const THD *thd, String *str,
763 enum_query_type query_type) const override;
764};
765
766class Item_func_char final : public Item_str_func {
767 public:
769 : Item_str_func(pos, list) {
771 null_on_null = false;
772 }
774 : Item_str_func(pos, list) {
776 null_on_null = false;
777 }
778 String *val_str(String *) override;
779 bool resolve_type(THD *thd) override {
780 if (param_type_is_default(thd, 0, -1, MYSQL_TYPE_LONGLONG)) return true;
781 if (reject_vector_args()) return true;
783 return false;
784 }
785 const char *func_name() const override { return "char"; }
786 void add_json_info(Json_object *obj) override {
788 obj->add_alias("charset",
789 create_dom_ptr<Json_string>(collation.collation->csname));
790 }
791};
792
793class Item_func_repeat final : public Item_str_func {
795
796 public:
797 Item_func_repeat(const POS &pos, Item *arg1, Item *arg2)
798 : Item_str_func(pos, arg1, arg2) {}
799 String *val_str(String *) override;
800 bool resolve_type(THD *thd) override;
801 const char *func_name() const override { return "repeat"; }
802};
803
804class Item_func_space final : public Item_str_func {
805 public:
806 Item_func_space(const POS &pos, Item *arg1) : Item_str_func(pos, arg1) {}
807 String *val_str(String *) override;
808 bool resolve_type(THD *) override;
809 const char *func_name() const override { return "space"; }
810};
811
812class Item_func_rpad final : public Item_str_func {
814
815 public:
816 Item_func_rpad(const POS &pos, Item *arg1, Item *arg2, Item *arg3)
817 : Item_str_func(pos, arg1, arg2, arg3) {}
818 String *val_str(String *) override;
819 bool resolve_type(THD *) override;
820 const char *func_name() const override { return "rpad"; }
821};
822
823class Item_func_lpad final : public Item_str_func {
825
826 public:
827 Item_func_lpad(const POS &pos, Item *arg1, Item *arg2, Item *arg3)
828 : Item_str_func(pos, arg1, arg2, arg3) {}
829 String *val_str(String *) override;
830 bool resolve_type(THD *) override;
831 const char *func_name() const override { return "lpad"; }
832};
833
835 /// Buffer to store the binary result
837
838 public:
839 Item_func_uuid_to_bin(const POS &pos, Item *arg1)
840 : Item_str_func(pos, arg1) {}
841 Item_func_uuid_to_bin(const POS &pos, Item *arg1, Item *arg2)
842 : Item_str_func(pos, arg1, arg2) {}
843 String *val_str(String *) override;
844 bool resolve_type(THD *) override;
845 const char *func_name() const override { return "uuid_to_bin"; }
846};
847
849 /// Buffer to store the text result
851
852 public:
853 Item_func_bin_to_uuid(const POS &pos, Item *arg1)
854 : Item_str_ascii_func(pos, arg1) {}
855 Item_func_bin_to_uuid(const POS &pos, Item *arg1, Item *arg2)
856 : Item_str_ascii_func(pos, arg1, arg2) {}
857 String *val_str_ascii(String *) override;
858 bool resolve_type(THD *thd) override;
859 const char *func_name() const override { return "bin_to_uuid"; }
860};
861
862class Item_func_is_uuid final : public Item_bool_func {
864
865 public:
866 Item_func_is_uuid(const POS &pos, Item *a) : Item_bool_func(pos, a) {}
867 longlong val_int() override;
868 const char *func_name() const override { return "is_uuid"; }
869 bool resolve_type(THD *thd) override {
870 if (reject_vector_args()) return true;
871 bool res = super::resolve_type(thd);
872 set_nullable(true);
873 return res;
874 }
875};
876
877class Item_func_conv final : public Item_str_func {
878 public:
879 // 64 digits plus possible '-'.
880 static constexpr uint32_t CONV_MAX_LENGTH = 64U + 1U;
881 Item_func_conv(const POS &pos, Item *a, Item *b, Item *c)
882 : Item_str_func(pos, a, b, c) {}
883 const char *func_name() const override { return "conv"; }
884 String *val_str(String *) override;
885 bool resolve_type(THD *) override;
886};
887
890
891 public:
892 Item_func_hex(const POS &pos, Item *a) : Item_str_ascii_func(pos, a) {}
893 const char *func_name() const override { return "hex"; }
894 String *val_str_ascii(String *) override;
895 bool resolve_type(THD *thd) override;
896};
897
898class Item_func_unhex final : public Item_str_func {
900
901 public:
902 Item_func_unhex(const POS &pos, Item *a) : Item_str_func(pos, a) {
903 /* there can be bad hex strings */
904 set_nullable(true);
905 }
906 const char *func_name() const override { return "unhex"; }
907 String *val_str(String *) override;
908 bool resolve_type(THD *thd) override;
909};
910
911#ifndef NDEBUG
913 protected:
916 const bool is_min;
917
918 public:
919 Item_func_like_range(const POS &pos, Item *a, Item *b, bool is_min_arg)
920 : Item_str_func(pos, a, b), is_min(is_min_arg) {
921 set_nullable(true);
922 }
923 String *val_str(String *) override;
924 bool resolve_type(THD *thd) override {
925 if (param_type_is_default(thd, 0, 1)) return true;
926 if (param_type_is_default(thd, 1, 2, MYSQL_TYPE_LONGLONG)) return true;
927 if (reject_vector_args()) return true;
929 return false;
930 }
931};
932
934 public:
936 : Item_func_like_range(pos, a, b, true) {}
937 const char *func_name() const override { return "like_range_min"; }
938};
939
941 public:
943 : Item_func_like_range(pos, a, b, false) {}
944 const char *func_name() const override { return "like_range_max"; }
945};
946#endif
947
948/**
949 The following types of conversions are considered safe:
950
951 Conversion to and from "binary".
952 Conversion to Unicode.
953 Other kind of conversions are potentially lossy.
954*/
956 protected:
957 /// If true, conversion is needed so do it, else allow string copy.
959 /// The character set we are converting to
961 /// The character set we are converting from
962 const CHARSET_INFO *m_from_cs{nullptr};
964 /// Marks whether the underlying Item is constant and may be cached.
966 /// Length argument value, if any given.
967 longlong m_cast_length{-1}; // a priori not used
968 public:
969 bool m_safe;
970
971 protected:
972 /**
973 Helper for CAST and CONVERT type resolution: common logic to compute the
974 maximum numbers of characters of the type of the conversion.
975
976 @returns the maximum numbers of characters possible after the conversion
977 */
979
980 bool resolve_type(THD *thd) override;
981
982 void add_json_info(Json_object *obj) override {
984 obj->add_alias("charset", create_dom_ptr<Json_string>(m_cast_cs->csname));
985 }
986
987 public:
989 bool cache_if_const)
990 : Item_str_func(a), m_cast_cs(cs_arg) {
991 if (cache_if_const && args[0]->may_evaluate_const(thd)) {
992 uint errors = 0;
993 String tmp, *str = args[0]->val_str(&tmp);
994 if (!str || str_value.copy(str->ptr(), str->length(), str->charset(),
995 m_cast_cs, &errors))
996 null_value = true;
997 m_use_cached_value = true;
999 m_safe = (errors == 0);
1000 } else {
1001 m_use_cached_value = false;
1002 // Marks whether the conversion is safe
1004 cs_arg == &my_charset_bin || (cs_arg->state & MY_CS_UNICODE));
1005 }
1006 }
1007 Item_charset_conversion(const POS &pos, Item *a, const CHARSET_INFO *cs_arg)
1008 : Item_str_func(pos, a), m_cast_cs(cs_arg) {}
1009
1010 String *val_str(String *) override;
1011};
1012
1014 protected:
1015 void add_json_info(Json_object *obj) override;
1016
1017 public:
1018 Item_typecast_char(THD *thd, Item *a, longlong length_arg,
1019 const CHARSET_INFO *cs_arg)
1020 : Item_charset_conversion(thd, a, cs_arg, false) {
1021 m_cast_length = length_arg;
1022 }
1023 Item_typecast_char(const POS &pos, Item *a, longlong length_arg,
1024 const CHARSET_INFO *cs_arg)
1025 : Item_charset_conversion(pos, a, cs_arg) {
1026 m_cast_length = length_arg;
1027 }
1028 enum Functype functype() const override { return TYPECAST_FUNC; }
1029 bool eq_specific(const Item *item) const override;
1030 const char *func_name() const override { return "cast_as_char"; }
1031 void print(const THD *thd, String *str,
1032 enum_query_type query_type) const override;
1033};
1034
1035class Item_load_file final : public Item_str_func {
1037
1039
1040 public:
1041 Item_load_file(const POS &pos, Item *a) : Item_str_func(pos, a) {}
1042
1043 bool do_itemize(Parse_context *pc, Item **res) override;
1044 String *val_str(String *) override;
1045 const char *func_name() const override { return "load_file"; }
1047 return INNER_TABLE_BIT;
1048 }
1049 bool resolve_type(THD *thd) override {
1050 if (param_type_is_default(thd, 0, 1)) return true;
1051 if (reject_vector_args()) return true;
1054 set_nullable(true);
1055 return false;
1056 }
1057 bool check_function_as_value_generator(uchar *checker_args) override {
1059 pointer_cast<Check_function_as_value_generator_parameters *>(
1060 checker_args);
1061 func_arg->banned_function_name = func_name();
1062 return true;
1063 }
1064};
1065
1067 public:
1068 Item_func_export_set(const POS &pos, Item *a, Item *b, Item *c)
1069 : Item_str_func(pos, a, b, c) {}
1070 Item_func_export_set(const POS &pos, Item *a, Item *b, Item *c, Item *d)
1071 : Item_str_func(pos, a, b, c, d) {}
1072 Item_func_export_set(const POS &pos, Item *a, Item *b, Item *c, Item *d,
1073 Item *e)
1074 : Item_str_func(pos, a, b, c, d, e) {}
1075 String *val_str(String *str) override;
1076 bool resolve_type(THD *) override;
1077 const char *func_name() const override { return "export_set"; }
1078};
1079
1082
1083 public:
1084 Item_func_quote(const POS &pos, Item *a) : Item_str_func(pos, a) {}
1085 const char *func_name() const override { return "quote"; }
1086 String *val_str(String *) override;
1087 bool resolve_type(THD *thd) override;
1088};
1089
1091 public:
1093 : Item_charset_conversion(pos, a, cs) {
1094 m_safe = false;
1095 }
1096
1098 bool cache_if_const)
1099 : Item_charset_conversion(thd, a, cs, cache_if_const) {
1100 assert(args[0]->fixed);
1101 }
1102 const char *func_name() const override { return "convert"; }
1103 void print(const THD *thd, String *str,
1104 enum_query_type query_type) const override;
1105 bool eq_specific(const Item *item) const override;
1106};
1107
1110
1112
1113 public:
1115 const LEX_STRING &collation_string_arg)
1116 : super(pos, a, nullptr), collation_string(collation_string_arg) {}
1117
1118 bool do_itemize(Parse_context *pc, Item **res) override;
1119 String *val_str(String *) override;
1120 bool resolve_type(THD *) override;
1121 bool eq_specific(const Item *item) const override;
1122 const char *func_name() const override { return "collate"; }
1123 enum Functype functype() const override { return COLLATE_FUNC; }
1124 void print(const THD *thd, String *str,
1125 enum_query_type query_type) const override;
1127 /* this function is transparent for view updating */
1128 return args[0]->field_for_view_update();
1129 }
1130
1131 protected:
1132 void add_json_info(Json_object *obj) override {
1133 obj->add_alias("collation",
1134 create_dom_ptr<Json_string>(collation_string.str,
1136 }
1137};
1138
1139class Item_func_charset final : public Item_str_func {
1140 public:
1141 Item_func_charset(const POS &pos, Item *a) : Item_str_func(pos, a) {
1142 null_on_null = false;
1143 }
1144 String *val_str(String *) override;
1145 const char *func_name() const override { return "charset"; }
1146 bool resolve_type(THD *thd) override {
1148 set_nullable(false);
1149 return Item_str_func::resolve_type(thd);
1150 }
1151};
1152
1154 public:
1155 Item_func_collation(const POS &pos, Item *a) : Item_str_func(pos, a) {
1156 null_on_null = false;
1157 }
1158 String *val_str(String *) override;
1159 const char *func_name() const override { return "collation"; }
1160 bool resolve_type(THD *thd) override {
1161 if (Item_str_func::resolve_type(thd)) return true;
1163 set_nullable(false);
1164 return false;
1165 }
1166};
1167
1170
1172 uint flags;
1173 const uint result_length;
1175 const bool as_binary;
1176
1177 public:
1178 const uint num_codepoints;
1179 Item_func_weight_string(const POS &pos, Item *a, uint result_length_arg,
1180 uint num_codepoints_arg, uint flags_arg,
1181 bool as_binary_arg = false)
1182 : Item_str_func(pos, a),
1183 flags(flags_arg),
1184 result_length(result_length_arg),
1185 as_binary(as_binary_arg),
1186 num_codepoints(num_codepoints_arg) {}
1187
1188 bool do_itemize(Parse_context *pc, Item **res) override;
1189
1190 const char *func_name() const override { return "weight_string"; }
1191 bool eq_specific(const Item *item) const override;
1192 String *val_str(String *) override;
1193 bool resolve_type(THD *) override;
1194 void print(const THD *thd, String *str,
1195 enum_query_type query_type) const override;
1196};
1197
1198class Item_func_crc32 final : public Item_int_func {
1200
1201 public:
1202 Item_func_crc32(const POS &pos, Item *a) : Item_int_func(pos, a) {
1203 unsigned_flag = true;
1204 }
1205 const char *func_name() const override { return "crc32"; }
1206 bool resolve_type(THD *thd) override {
1207 if (param_type_is_default(thd, 0, 1)) return true;
1208 max_length = 10;
1209 return false;
1210 }
1211 longlong val_int() override;
1212};
1213
1216
1217 public:
1219 : Item_int_func(pos, a) {}
1220 const char *func_name() const override { return "uncompressed_length"; }
1221 bool resolve_type(THD *thd) override {
1222 if (param_type_is_default(thd, 0, 1)) return true;
1223 if (reject_vector_args()) return true;
1224 max_length = 10;
1225 return false;
1226 }
1227 longlong val_int() override;
1228};
1229
1230class Item_func_compress final : public Item_str_func {
1232
1233 public:
1234 Item_func_compress(const POS &pos, Item *a) : Item_str_func(pos, a) {}
1235 bool resolve_type(THD *thd) override;
1236 const char *func_name() const override { return "compress"; }
1237 String *val_str(String *str) override;
1238};
1239
1242
1243 public:
1244 Item_func_to_vector(const POS &pos, Item *a) : Item_str_func(pos, a) {}
1245 bool resolve_type(THD *thd) override;
1246 const char *func_name() const override { return "to_vector"; }
1247 String *val_str(String *str) override;
1248};
1249
1251 static const uint32 per_value_chars = 16;
1255
1256 public:
1257 Item_func_from_vector(const POS &pos, Item *a) : Item_str_func(pos, a) {
1259 }
1260 bool resolve_type(THD *thd) override;
1261 const char *func_name() const override { return "from_vector"; }
1262 String *val_str(String *str) override;
1263};
1264
1267
1268 public:
1269 Item_func_uncompress(const POS &pos, Item *a) : Item_str_func(pos, a) {}
1270 bool resolve_type(THD *thd) override {
1271 if (reject_vector_args()) return true;
1272 if (Item_str_func::resolve_type(thd)) return true;
1273 set_nullable(true);
1275 return false;
1276 }
1277 const char *func_name() const override { return "uncompress"; }
1278 String *val_str(String *str) override;
1279};
1280
1281class Item_func_uuid final : public Item_str_func {
1283
1284 public:
1286 explicit Item_func_uuid(const POS &pos) : Item_str_func(pos) {}
1287
1288 bool do_itemize(Parse_context *pc, Item **res) override;
1290 return RAND_TABLE_BIT;
1291 }
1292 bool resolve_type(THD *) override;
1293 const char *func_name() const override { return "uuid"; }
1294 String *val_str(String *) override;
1295 bool check_function_as_value_generator(uchar *checker_args) override {
1297 pointer_cast<Check_function_as_value_generator_parameters *>(
1298 checker_args);
1299 func_arg->banned_function_name = func_name();
1300 return ((func_arg->source == VGS_GENERATED_COLUMN) ||
1301 (func_arg->source == VGS_CHECK_CONSTRAINT));
1302 }
1303};
1304
1307
1308 public:
1310 explicit Item_func_current_role(const POS &pos)
1311 : super(pos), value_cache_set(false) {}
1312 const char *func_name() const override { return "current_role"; }
1313 void cleanup() override;
1314 String *val_str(String *) override;
1315 bool resolve_type(THD *) override {
1317 return false;
1318 }
1320 return NAME_STRING("current_role()");
1321 }
1322
1323 protected:
1324 void set_current_role(THD *thd);
1325 /** a flag whether @ref value_cache is set or not */
1327 /**
1328 @brief Cache for the result value
1329
1330 Set by init(). And consumed by val_str().
1331 Needed to avoid re-calculation of the current_roles() in the
1332 course of the query.
1333 */
1335};
1336
1339
1340 public:
1342 explicit Item_func_roles_graphml(const POS &pos)
1343 : super(pos), value_cache_set(false) {}
1344 String *val_str(String *) override;
1345 void cleanup() override;
1346
1347 bool resolve_type(THD *) override {
1349 return false;
1350 }
1351
1352 const char *func_name() const override { return "roles_graphml"; }
1353
1355 return NAME_STRING("roles_graphml()");
1356 }
1357
1358 protected:
1359 bool calculate_graphml(THD *thd);
1360 /**
1361 @brief Cache for the result value
1362
1363 Set by init(). And consumed by val_str().
1364 Needed to avoid re-calculation of the current_roles() in the
1365 course of the query.
1366 */
1368
1369 /** Set to true if @ref value_cache is set */
1371};
1372
1374 public:
1376 : Item_str_func(pos, a, b, c) {}
1377
1378 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1379 bool resolve_type(THD *) override {
1380 /*
1381 There are 14 kinds of grants, with a max length
1382 per privileges is 11 chars.
1383 So, setting max approximate to 200.
1384 */
1386 set_nullable(true);
1387 null_on_null = false;
1388
1389 return false;
1390 }
1391
1392 const char *func_name() const override { return "get_dd_column_privileges"; }
1393
1394 String *val_str(String *) override;
1395};
1396
1398 public:
1400 : Item_str_func(pos, a, b, c) {}
1401
1402 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1403 bool resolve_type(THD *) override {
1404 // maximum string length of all options is expected
1405 // to be less than 256 characters.
1407 set_nullable(false);
1408 null_on_null = false;
1409
1410 return false;
1411 }
1412
1413 const char *func_name() const override { return "get_dd_create_options"; }
1414
1415 String *val_str(String *) override;
1416};
1417
1419 public:
1421 : Item_str_func(pos, a) {}
1422
1423 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1424 bool resolve_type(THD *) override {
1425 // maximum string length of all options is expected
1426 // to be less than 256 characters.
1428 set_nullable(false);
1429 null_on_null = false;
1430
1431 return false;
1432 }
1433
1434 const char *func_name() const override { return "get_dd_schema_options"; }
1435
1436 String *val_str(String *) override;
1437};
1438
1440 public:
1442 : Item_str_func(pos, list) {}
1443
1444 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1445 bool resolve_type(THD *) override {
1446 /*
1447 maximum expected string length to be less than 2048 characters,
1448 which is same as size of column holding comments in dictionary,
1449 i.e., the mysql.tables.comment DD column.
1450 */
1452 set_nullable(true);
1453 null_on_null = false;
1454
1455 return false;
1456 }
1457
1458 const char *func_name() const override {
1459 return "internal_get_comment_or_error";
1460 }
1461
1462 String *val_str(String *) override;
1463};
1464
1466 public:
1468 : Item_str_func(pos, a, b) {}
1469
1470 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1471 bool resolve_type(THD *) override {
1472 /* maximum string length of the property value is expected
1473 to be less than 256 characters. */
1475 set_nullable(false);
1476 null_on_null = false;
1477
1478 return false;
1479 }
1480
1481 const char *func_name() const override {
1482 return "get_dd_tablespace_private_data";
1483 }
1484
1485 String *val_str(String *) override;
1486};
1487
1489 public:
1491 : Item_str_func(pos, a, b) {}
1492
1493 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1494 bool resolve_type(THD *) override {
1495 /* maximum string length of the property value is expected
1496 to be less than 256 characters. */
1498 set_nullable(false);
1499 null_on_null = false;
1500
1501 return false;
1502 }
1503
1504 const char *func_name() const override { return "get_dd_index_private_data"; }
1505
1506 String *val_str(String *) override;
1507};
1508
1510 public:
1512 : Item_str_func(pos, a) {}
1513
1514 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1515 bool resolve_type(THD *) override {
1516 // maximum string length of all options is expected
1517 // to be less than 256 characters.
1519 set_nullable(true);
1520 null_on_null = false;
1521
1522 return false;
1523 }
1524
1525 const char *func_name() const override {
1526 return "internal_get_partition_nodegroup";
1527 }
1528
1529 String *val_str(String *) override;
1530};
1531
1533 public:
1535 Item *d)
1536 : Item_str_func(pos, a, b, c, d) {}
1537
1538 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1539 bool resolve_type(THD *) override {
1540 // maximum string length of all options is expected
1541 // to be less than 256 characters.
1543 set_nullable(true);
1544 null_on_null = false;
1545
1546 return false;
1547 }
1548
1549 const char *func_name() const override { return "internal_tablespace_type"; }
1550
1551 String *val_str(String *) override;
1552};
1553
1555 public:
1557 Item *b, Item *c, Item *d)
1558 : Item_str_func(pos, a, b, c, d) {}
1559
1560 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1561 bool resolve_type(THD *) override {
1562 // maximum string length of all options is expected
1563 // to be less than 256 characters.
1565 set_nullable(true);
1566 null_on_null = false;
1567
1568 return false;
1569 }
1570
1571 const char *func_name() const override {
1572 return "internal_tablespace_logfile_group_name";
1573 }
1574
1575 String *val_str(String *) override;
1576};
1577
1579 public:
1581 Item *c, Item *d)
1582 : Item_str_func(pos, a, b, c, d) {}
1583
1584 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1585 bool resolve_type(THD *) override {
1586 // maximum string length of all options is expected
1587 // to be less than 256 characters.
1589 set_nullable(true);
1590 null_on_null = false;
1591
1592 return false;
1593 }
1594
1595 const char *func_name() const override {
1596 return "internal_tablespace_status";
1597 }
1598 String *val_str(String *) override;
1599};
1600
1602 public:
1604 Item *c, Item *d)
1605 : Item_str_func(pos, a, b, c, d) {}
1606
1607 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1608 bool resolve_type(THD *) override {
1609 // maximum string length of all options is expected
1610 // to be less than 256 characters.
1612 set_nullable(true);
1613 null_on_null = false;
1614
1615 return false;
1616 }
1617
1618 const char *func_name() const override {
1619 return "internal_tablespace_row_format";
1620 }
1621
1622 String *val_str(String *) override;
1623};
1624
1626 public:
1628 Item *d)
1629 : Item_str_func(pos, a, b, c, d) {}
1630
1631 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1632 bool resolve_type(THD *) override {
1633 // maximum string length of all options is expected
1634 // to be less than 256 characters.
1636 set_nullable(true);
1637 null_on_null = false;
1638
1639 return false;
1640 }
1641
1642 const char *func_name() const override { return "internal_tablespace_extra"; }
1643
1644 String *val_str(String *) override;
1645};
1646
1648 public:
1650 : Item_str_func(pos, list) {}
1651
1652 bool resolve_type(THD *) override {
1653 set_nullable(false);
1655 return false;
1656 }
1657
1658 const char *func_name() const override { return "convert_cpu_id_mask"; }
1659
1660 String *val_str(String *) override;
1661};
1662
1664 public:
1666 : Item_str_func(pos, a, b) {}
1667
1668 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1669 bool resolve_type(THD *) override {
1671 set_nullable(true);
1672 null_on_null = false;
1673
1674 return false;
1675 }
1676
1677 const char *func_name() const override { return "get_dd_property_key_value"; }
1678
1679 String *val_str(String *) override;
1680};
1681
1683 public:
1685 : Item_str_func(pos, a, b) {}
1686
1687 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1688 bool resolve_type(THD *) override {
1690 set_nullable(true);
1691 null_on_null = false;
1692
1693 return false;
1694 }
1695
1696 const char *func_name() const override { return "remove_dd_property_key"; }
1697
1698 String *val_str(String *) override;
1699};
1700
1702 public:
1704 : Item_str_func(pos, a, b) {}
1705
1706 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1707 bool resolve_type(THD *) override {
1708 // maximum string length of all options is expected
1709 // to be less than 256 characters.
1711 set_nullable(true);
1712 null_on_null = false;
1713
1714 return false;
1715 }
1716
1717 const char *func_name() const override {
1718 return "convert_interval_to_user_interval";
1719 }
1720
1721 String *val_str(String *) override;
1722};
1723
1725 public:
1727 : Item_str_func(pos, list) {}
1728
1729 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1730 bool resolve_type(THD *) override {
1732 set_nullable(true);
1733 null_on_null = false;
1734
1735 return false;
1736 }
1737
1738 const char *func_name() const override { return "internal_get_username"; }
1739
1740 String *val_str(String *) override;
1741};
1742
1744 public:
1746 : Item_str_func(pos, list) {}
1747
1748 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1749 bool resolve_type(THD *) override {
1751 set_nullable(true);
1752 null_on_null = false;
1753
1754 return false;
1755 }
1756
1757 const char *func_name() const override { return "internal_get_hostname"; }
1758
1759 String *val_str(String *) override;
1760};
1761
1763 public:
1765 : Item_str_func(pos) {}
1766
1767 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1768 bool resolve_type(THD *) override {
1770 set_nullable(true);
1771 null_on_null = false;
1772
1773 return false;
1774 }
1775
1776 const char *func_name() const override {
1777 return "internal_get_enabled_role_json";
1778 }
1779
1780 String *val_str(String *) override;
1781};
1782
1784 public:
1786 : Item_str_func(pos) {}
1787
1788 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1789 bool resolve_type(THD *) override {
1791 set_nullable(true);
1792 null_on_null = false;
1793
1794 return false;
1795 }
1796
1797 const char *func_name() const override {
1798 return "internal_get_mandatory_roles_json";
1799 }
1800
1801 String *val_str(String *) override;
1802};
1803
1805 public:
1807 : Item_str_func(pos, list) {}
1808
1809 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1810 bool resolve_type(THD *) override {
1811 // maximum string length of all options is expected
1812 // to be less than 256 characters.
1814 set_nullable(false);
1815 null_on_null = false;
1816
1817 return false;
1818 }
1819
1820 const char *func_name() const override {
1821 return "internal_get_dd_column_extra";
1822 }
1823
1824 String *val_str(String *) override;
1825};
1826
1827#endif /* ITEM_STRFUNC_INCLUDED */
Kerberos Client Authentication nullptr
Definition: auth_kerberos_client_plugin.cc:251
void set(const DTCollation &dt)
Definition: item.h:205
void set_repertoire(uint repertoire_arg)
Definition: item.h:231
const CHARSET_INFO * collation
Definition: item.h:187
static const uint32 max_dimensions
Definition: field.h:3948
Definition: field.h:577
Definition: item_cmpfunc.h:294
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_cmpfunc.h:328
The following types of conversions are considered safe:
Definition: item_strfunc.h:955
const CHARSET_INFO * m_cast_cs
The character set we are converting to.
Definition: item_strfunc.h:960
bool m_safe
Definition: item_strfunc.h:969
bool m_charset_conversion
If true, conversion is needed so do it, else allow string copy.
Definition: item_strfunc.h:958
const CHARSET_INFO * m_from_cs
The character set we are converting from.
Definition: item_strfunc.h:962
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:3585
Item_charset_conversion(const POS &pos, Item *a, const CHARSET_INFO *cs_arg)
Definition: item_strfunc.h:1007
bool m_use_cached_value
Marks whether the underlying Item is constant and may be cached.
Definition: item_strfunc.h:965
String * val_str(String *) override
Definition: item_strfunc.cc:3476
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: item_strfunc.h:982
longlong m_cast_length
Length argument value, if any given.
Definition: item_strfunc.h:967
String m_tmp_value
Definition: item_strfunc.h:963
Item_charset_conversion(THD *thd, Item *a, const CHARSET_INFO *cs_arg, bool cache_if_const)
Definition: item_strfunc.h:988
uint32 compute_max_char_length()
Helper for CAST and CONVERT type resolution: common logic to compute the maximum numbers of character...
Definition: item_strfunc.cc:3554
Definition: item.h:4385
Definition: item_strfunc.h:303
Item_func_aes_decrypt(const POS &pos, Item *a, Item *b, Item *c, Item *d)
Definition: item_strfunc.h:311
Item_func_aes_decrypt(const POS &pos, Item *a, Item *b, Item *c, Item *d, Item *e)
Definition: item_strfunc.h:313
String * val_str(String *) override
Definition: item_strfunc.cc:662
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:652
Item_func_aes_decrypt(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_strfunc.h:309
Item_func_aes_decrypt(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:307
Item_str_func super
Definition: item_strfunc.h:304
const char * func_name() const override
Definition: item_strfunc.h:322
Item_func_aes_decrypt(const POS &pos, Item *a, Item *b, Item *c, Item *d, Item *e, Item *f)
Definition: item_strfunc.h:316
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:709
Definition: item_strfunc.h:280
Item_func_aes_encrypt(const POS &pos, Item *a, Item *b, Item *c, Item *d, Item *e, Item *f)
Definition: item_strfunc.h:294
String * val_str(String *) override
Definition: item_strfunc.cc:588
const char * func_name() const override
Definition: item_strfunc.h:300
Item_func_aes_encrypt(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_strfunc.h:287
Item_func_aes_encrypt(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:285
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:578
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:642
Item_func_aes_encrypt(const POS &pos, Item *a, Item *b, Item *c, Item *d)
Definition: item_strfunc.h:289
String tmp_value
Definition: item_strfunc.h:281
Item_str_func super
Definition: item_strfunc.h:282
Item_func_aes_encrypt(const POS &pos, Item *a, Item *b, Item *c, Item *d, Item *e)
Definition: item_strfunc.h:291
Definition: item_strfunc.h:848
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2845
String * val_str_ascii(String *) override
Definition: item_strfunc.cc:2855
Item_func_bin_to_uuid(const POS &pos, Item *arg1, Item *arg2)
Definition: item_strfunc.h:855
Item_func_bin_to_uuid(const POS &pos, Item *arg1)
Definition: item_strfunc.h:853
const char * func_name() const override
Definition: item_strfunc.h:859
char m_text_buf[mysql::gtid::Uuid::TEXT_LENGTH+1]
Buffer to store the text result.
Definition: item_strfunc.h:850
Definition: item_strfunc.h:766
Item_func_char(const POS &pos, PT_item_list *list)
Definition: item_strfunc.h:768
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: item_strfunc.h:786
Item_func_char(const POS &pos, PT_item_list *list, const CHARSET_INFO *cs)
Definition: item_strfunc.h:773
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:779
String * val_str(String *) override
Definition: item_strfunc.cc:2489
const char * func_name() const override
Definition: item_strfunc.h:785
Definition: item_strfunc.h:1139
Item_func_charset(const POS &pos, Item *a)
Definition: item_strfunc.h:1141
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1146
String * val_str(String *) override
Definition: item_strfunc.cc:3153
const char * func_name() const override
Definition: item_strfunc.h:1145
Definition: item_strfunc.h:1153
String * val_str(String *) override
Definition: item_strfunc.cc:3167
const char * func_name() const override
Definition: item_strfunc.h:1159
Item_func_collation(const POS &pos, Item *a)
Definition: item_strfunc.h:1155
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1160
Definition: item_strfunc.h:1230
String buffer
Definition: item_strfunc.h:1231
Item_func_compress(const POS &pos, Item *a)
Definition: item_strfunc.h:1234
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:4058
String * val_str(String *str) override
Definition: item_strfunc.cc:4066
const char * func_name() const override
Definition: item_strfunc.h:1236
Definition: item_strfunc.h:358
const char * func_name() const override
Definition: item_strfunc.h:371
Item_func_concat_ws(const POS &pos, PT_item_list *opt_list)
Definition: item_strfunc.h:365
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1182
String tmp_value
Definition: item_strfunc.h:359
String * val_str(String *) override
concat with separator.
Definition: item_strfunc.cc:1149
Item_func_concat_ws(mem_root_deque< Item * > *list)
Definition: item_strfunc.h:361
Definition: item_strfunc.h:344
String * val_str(String *) override
Concatenate args with the following premises: If only one arg (which is ok), return value of arg;.
Definition: item_strfunc.cc:1099
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1124
Item_func_concat(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:350
Item_func_concat(Item *a, Item *b)
Definition: item_strfunc.h:349
Item_func_concat(const POS &pos, PT_item_list *opt_list)
Definition: item_strfunc.h:347
const char * func_name() const override
Definition: item_strfunc.h:355
String tmp_value
Definition: item_strfunc.h:345
Definition: item_strfunc.h:1090
bool eq_specific(const Item *item) const override
Provide a more specific equality check for a function.
Definition: item_strfunc.cc:3061
Item_func_conv_charset(const POS &pos, Item *a, const CHARSET_INFO *cs)
Definition: item_strfunc.h:1092
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_strfunc.cc:3067
const char * func_name() const override
Definition: item_strfunc.h:1102
Item_func_conv_charset(THD *thd, Item *a, const CHARSET_INFO *cs, bool cache_if_const)
Definition: item_strfunc.h:1097
Definition: item_strfunc.h:877
String * val_str(String *) override
Definition: item_strfunc.cc:2990
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2982
static constexpr uint32_t CONV_MAX_LENGTH
Definition: item_strfunc.h:880
Item_func_conv(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_strfunc.h:881
const char * func_name() const override
Definition: item_strfunc.h:883
Definition: item_strfunc.h:1647
const char * func_name() const override
Definition: item_strfunc.h:1658
Item_func_convert_cpu_id_mask(const POS &pos, Item *list)
Definition: item_strfunc.h:1649
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1652
String * val_str(String *) override
Definition: item_strfunc.cc:5134
Definition: item_strfunc.h:1701
const char * func_name() const override
Definition: item_strfunc.h:1717
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1707
enum Functype functype() const override
Definition: item_strfunc.h:1706
String * val_str(String *) override
Definition: item_strfunc.cc:5348
Item_func_convert_interval_to_user_interval(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:1703
Definition: item_strfunc.h:1198
const char * func_name() const override
Definition: item_strfunc.h:1205
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1206
Item_func_crc32(const POS &pos, Item *a)
Definition: item_strfunc.h:1202
longlong val_int() override
Definition: item_strfunc.cc:4046
String value
Definition: item_strfunc.h:1199
Definition: item_strfunc.h:1305
const Name_string fully_qualified_func_name() const override
Definition: item_strfunc.h:1319
void set_current_role(THD *thd)
Definition: item_strfunc.cc:5190
Item_func_current_role()
Definition: item_strfunc.h:1309
const char * func_name() const override
Definition: item_strfunc.h:1312
bool value_cache_set
a flag whether value_cache is set or not
Definition: item_strfunc.h:1326
Item_func_sysconst super
Definition: item_strfunc.h:1306
Item_func_current_role(const POS &pos)
Definition: item_strfunc.h:1310
String * val_str(String *) override
Definition: item_strfunc.cc:5185
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1315
String value_cache
Cache for the result value.
Definition: item_strfunc.h:1334
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_strfunc.cc:5177
Definition: item_strfunc.h:675
Item_func_user super
Definition: item_strfunc.h:676
bool resolve_type(THD *) override
Overridden to copy definer priv_user and priv_host.
Definition: item_strfunc.cc:1981
Item_func_current_user(const POS &pos)
Definition: item_strfunc.h:697
const Name_string fully_qualified_func_name() const override
Definition: item_strfunc.h:701
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:2058
const char * func_name() const override
Definition: item_strfunc.h:700
LEX_CSTRING m_definer_priv_host
Definition: item_strfunc.h:688
type_conversion_status save_in_field_inner(Field *field, bool) override
We override Item::save_in_field_inner() for reasons explained in the comment of that function - we ne...
Definition: item_strfunc.cc:1975
LEX_CSTRING m_definer_priv_user
Copied from m_name_resolution_ctx in fix_fields if the definer Security_context is set in Name_resolu...
Definition: item_strfunc.h:687
String * val_str(String *) override
Definition: item_strfunc.cc:2006
Name_resolution_context * m_name_resolution_ctx
Used to pass a security context to the resolver functions.
Definition: item_strfunc.h:683
Definition: item_strfunc.h:607
Item_func_sysconst super
Definition: item_strfunc.h:608
String * val_str(String *) override
Definition: item_strfunc.cc:1945
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:616
const Name_string fully_qualified_func_name() const override
Definition: item_strfunc.h:622
Item_func_database(const POS &pos)
Definition: item_strfunc.h:611
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:1937
const char * func_name() const override
Definition: item_strfunc.h:621
Definition: item_strfunc.h:719
const char * func_name() const override
Definition: item_strfunc.h:727
longlong val_int() override
Definition: item_strfunc.cc:2388
String * val_str(String *str) override
Definition: item_strfunc.cc:2401
double val_real() override
Definition: item_strfunc.cc:2376
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2357
Item_func_elt(const POS &pos, PT_item_list *opt_list)
Definition: item_strfunc.h:721
Definition: item_strfunc.h:1066
Item_func_export_set(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_strfunc.h:1068
Item_func_export_set(const POS &pos, Item *a, Item *b, Item *c, Item *d, Item *e)
Definition: item_strfunc.h:1072
Item_func_export_set(const POS &pos, Item *a, Item *b, Item *c, Item *d)
Definition: item_strfunc.h:1070
String * val_str(String *str) override
Definition: item_strfunc.cc:3711
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:3780
const char * func_name() const override
Definition: item_strfunc.h:1077
Definition: item_strfunc.h:748
const char * func_name() const override
Definition: item_strfunc.h:761
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_strfunc.cc:2344
String tmp_str
Definition: item_strfunc.h:749
MY_LOCALE * get_locale(Item *item)
Definition: item_strfunc.cc:2213
MY_LOCALE * locale
Definition: item_strfunc.h:750
Item_func_format(const POS &pos, Item *org, Item *dec)
Definition: item_strfunc.h:753
String * val_str_ascii(String *) override
Definition: item_strfunc.cc:2253
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2228
Item_func_format(const POS &pos, Item *org, Item *dec, Item *lang)
Definition: item_strfunc.h:755
Definition: item_strfunc.h:270
String tmp_value
Definition: item_strfunc.h:271
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:807
const char * func_name() const override
Definition: item_strfunc.h:277
String * val_str(String *) override
Definition: item_strfunc.cc:821
Item_func_from_base64(const POS &pos, Item *a)
Definition: item_strfunc.h:274
Definition: item_strfunc.h:1250
Item_func_from_vector(const POS &pos, Item *a)
Definition: item_strfunc.h:1257
const char * func_name() const override
Definition: item_strfunc.h:1261
String buffer
Definition: item_strfunc.h:1254
static const uint32 per_value_chars
Definition: item_strfunc.h:1251
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:4158
static const uint32 max_output_bytes
Definition: item_strfunc.h:1252
String * val_str(String *str) override
Definition: item_strfunc.cc:4173
Definition: item_strfunc.h:1373
Item_func_get_dd_column_privileges(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_strfunc.h:1375
const char * func_name() const override
Definition: item_strfunc.h:1392
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1379
enum Functype functype() const override
Definition: item_strfunc.h:1378
String * val_str(String *) override
This function prepares string with list of column privileges.
Definition: item_strfunc.cc:4432
Definition: item_strfunc.h:1397
enum Functype functype() const override
Definition: item_strfunc.h:1402
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1403
String * val_str(String *) override
This function prepares string representing create_options for table.
Definition: item_strfunc.cc:4504
Item_func_get_dd_create_options(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_strfunc.h:1399
const char * func_name() const override
Definition: item_strfunc.h:1413
Definition: item_strfunc.h:1488
const char * func_name() const override
Definition: item_strfunc.h:1504
Item_func_get_dd_index_private_data(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:1490
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1494
String * val_str(String *) override
This function prepares string representing se_private_data for index.
Definition: item_strfunc.cc:5049
enum Functype functype() const override
Definition: item_strfunc.h:1493
Definition: item_strfunc.h:1663
String * val_str(String *) override
This function prepares string representing value stored at key supplied.
Definition: item_strfunc.cc:5245
enum Functype functype() const override
Definition: item_strfunc.h:1668
Item_func_get_dd_property_key_value(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:1665
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1669
const char * func_name() const override
Definition: item_strfunc.h:1677
Definition: item_strfunc.h:1418
String * val_str(String *) override
This function prepares string representing options for a schema.
Definition: item_strfunc.cc:4705
const char * func_name() const override
Definition: item_strfunc.h:1434
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1424
enum Functype functype() const override
Definition: item_strfunc.h:1423
Item_func_get_dd_schema_options(const POS &pos, Item *a)
Definition: item_strfunc.h:1420
Definition: item_strfunc.h:1465
String * val_str(String *) override
This function prepares string representing se_private_data for tablespace.
Definition: item_strfunc.cc:4983
const char * func_name() const override
Definition: item_strfunc.h:1481
enum Functype functype() const override
Definition: item_strfunc.h:1470
Item_func_get_dd_tablespace_private_data(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:1467
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1471
Definition: item_strfunc.h:1509
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1515
String * val_str(String *) override
Definition: item_strfunc.cc:4830
enum Functype functype() const override
Definition: item_strfunc.h:1514
Item_func_get_partition_nodegroup(const POS &pos, Item *a)
Definition: item_strfunc.h:1511
const char * func_name() const override
Definition: item_strfunc.h:1525
Definition: item_strfunc.h:888
String tmp_value
Definition: item_strfunc.h:889
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:3333
Item_func_hex(const POS &pos, Item *a)
Definition: item_strfunc.h:892
String * val_str_ascii(String *) override
Definition: item_strfunc.cc:3345
const char * func_name() const override
Definition: item_strfunc.h:893
Definition: item_strfunc.h:399
String * val_str(String *) override
Definition: item_strfunc.cc:1343
const char * func_name() const override
Definition: item_strfunc.h:410
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1395
String tmp_value_res
Holds result in case we need to allocate our own result buffer.
Definition: item_strfunc.h:402
Item_func_insert(const POS &pos, Item *org, Item *start, Item *length, Item *new_str)
Definition: item_strfunc.h:405
String tmp_value
Definition: item_strfunc.h:400
Definition: item_strfunc.h:1439
Item_func_internal_get_comment_or_error(const POS &pos, PT_item_list *list)
Definition: item_strfunc.h:1441
const char * func_name() const override
Definition: item_strfunc.h:1458
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1445
String * val_str(String *) override
Definition: item_strfunc.cc:4753
enum Functype functype() const override
Definition: item_strfunc.h:1444
Definition: item_strfunc.h:1804
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1810
String * val_str(String *) override
This function prepares string representing EXTRA column for I_S.COLUMNS.
Definition: item_strfunc.cc:5525
const char * func_name() const override
Definition: item_strfunc.h:1820
Item_func_internal_get_dd_column_extra(const POS &pos, PT_item_list *list)
Definition: item_strfunc.h:1806
enum Functype functype() const override
Definition: item_strfunc.h:1809
Definition: item_strfunc.h:1762
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1768
enum Functype functype() const override
Definition: item_strfunc.h:1767
Item_func_internal_get_enabled_role_json(const POS &pos)
Definition: item_strfunc.h:1764
String * val_str(String *) override
Definition: item_strfunc.cc:5444
const char * func_name() const override
Definition: item_strfunc.h:1776
Definition: item_strfunc.h:1743
Item_func_internal_get_hostname(const POS &pos, PT_item_list *list)
Definition: item_strfunc.h:1745
enum Functype functype() const override
Definition: item_strfunc.h:1748
const char * func_name() const override
Definition: item_strfunc.h:1757
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1749
String * val_str(String *) override
Definition: item_strfunc.cc:5409
Definition: item_strfunc.h:1783
const char * func_name() const override
Definition: item_strfunc.h:1797
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1789
enum Functype functype() const override
Definition: item_strfunc.h:1788
Item_func_internal_get_mandatory_roles_json(const POS &pos)
Definition: item_strfunc.h:1785
String * val_str(String *) override
Definition: item_strfunc.cc:5476
Definition: item_strfunc.h:1724
String * val_str(String *) override
Definition: item_strfunc.cc:5372
Item_func_internal_get_username(const POS &pos, PT_item_list *list)
Definition: item_strfunc.h:1726
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1730
enum Functype functype() const override
Definition: item_strfunc.h:1729
const char * func_name() const override
Definition: item_strfunc.h:1738
Definition: item_strfunc.h:1625
String * val_str(String *) override
Definition: item_strfunc.cc:4949
const char * func_name() const override
Definition: item_strfunc.h:1642
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1632
enum Functype functype() const override
Definition: item_strfunc.h:1631
Item_func_internal_tablespace_extra(const POS &pos, Item *a, Item *b, Item *c, Item *d)
Definition: item_strfunc.h:1627
const char * func_name() const override
Definition: item_strfunc.h:1571
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1561
String * val_str(String *) override
Definition: item_strfunc.cc:4887
Item_func_internal_tablespace_logfile_group_name(const POS &pos, Item *a, Item *b, Item *c, Item *d)
Definition: item_strfunc.h:1556
enum Functype functype() const override
Definition: item_strfunc.h:1560
Definition: item_strfunc.h:1601
const char * func_name() const override
Definition: item_strfunc.h:1618
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1608
Item_func_internal_tablespace_row_format(const POS &pos, Item *a, Item *b, Item *c, Item *d)
Definition: item_strfunc.h:1603
String * val_str(String *) override
Definition: item_strfunc.cc:4927
enum Functype functype() const override
Definition: item_strfunc.h:1607
Definition: item_strfunc.h:1578
Item_func_internal_tablespace_status(const POS &pos, Item *a, Item *b, Item *c, Item *d)
Definition: item_strfunc.h:1580
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1585
String * val_str(String *) override
Definition: item_strfunc.cc:4910
enum Functype functype() const override
Definition: item_strfunc.h:1584
const char * func_name() const override
Definition: item_strfunc.h:1595
Definition: item_strfunc.h:1532
enum Functype functype() const override
Definition: item_strfunc.h:1538
String * val_str(String *) override
Definition: item_strfunc.cc:4870
const char * func_name() const override
Definition: item_strfunc.h:1549
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1539
Item_func_internal_tablespace_type(const POS &pos, Item *a, Item *b, Item *c, Item *d)
Definition: item_strfunc.h:1534
Definition: item_strfunc.h:862
const char * func_name() const override
Definition: item_strfunc.h:868
longlong val_int() override
Definition: item_strfunc.cc:2895
Item_func_is_uuid(const POS &pos, Item *a)
Definition: item_strfunc.h:866
Item_bool_func super
Definition: item_strfunc.h:863
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:869
Definition: item_strfunc.h:438
Item_func_left(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:442
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1515
String tmp_value
Definition: item_strfunc.h:439
String * val_str(String *) override
Definition: item_strfunc.cc:1468
const char * func_name() const override
Definition: item_strfunc.h:445
Definition: item_strfunc.h:940
const char * func_name() const override
Definition: item_strfunc.h:944
Item_func_like_range_max(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:942
Definition: item_strfunc.h:933
const char * func_name() const override
Definition: item_strfunc.h:937
Item_func_like_range_min(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:935
Definition: item_strfunc.h:912
String max_str
Definition: item_strfunc.h:915
const bool is_min
Definition: item_strfunc.h:916
Item_func_like_range(const POS &pos, Item *a, Item *b, bool is_min_arg)
Definition: item_strfunc.h:919
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:924
String min_str
Definition: item_strfunc.h:914
String * val_str(String *) override
Definition: item_strfunc.cc:3420
Definition: item_strfunc.h:424
const char * func_name() const override
Definition: item_strfunc.h:427
Item_func_lower(const POS &pos, Item *item)
Definition: item_strfunc.h:426
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1444
Definition: item_strfunc.h:823
String * val_str(String *) override
Definition: item_strfunc.cc:2909
Item_func_lpad(const POS &pos, Item *arg1, Item *arg2, Item *arg3)
Definition: item_strfunc.h:827
String tmp_value
Definition: item_strfunc.h:824
String lpad_str
Definition: item_strfunc.h:824
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2776
const char * func_name() const override
Definition: item_strfunc.h:831
Definition: item_strfunc.h:569
Item_func_ltrim(const POS &pos, Item *a)
Definition: item_strfunc.h:571
Definition: item_strfunc.h:730
String * val_str(String *str) override
Definition: item_strfunc.cc:2441
Item_str_func super
Definition: item_strfunc.h:731
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_strfunc.cc:2478
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2425
String tmp_str
Definition: item_strfunc.h:733
Item_func_make_set(const POS &pos, PT_item_list *opt_list)
Definition: item_strfunc.h:736
bool fix_fields(THD *thd, Item **ref) override
Definition: item_strfunc.cc:2421
const char * func_name() const override
Definition: item_strfunc.h:742
Definition: item_strfunc.h:185
const char * func_name() const override
Definition: item_strfunc.h:192
Item_func_md5(const POS &pos, Item *a)
Definition: item_strfunc.h:189
String tmp_value
Definition: item_strfunc.h:186
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:236
String * val_str_ascii(String *) override
Definition: item_strfunc.cc:193
Definition: item_strfunc.h:1080
String * val_str(String *) override
QUOTE() function returns argument string in single quotes suitable for using in a SQL statement.
Definition: item_strfunc.cc:3841
Item_func_quote(const POS &pos, Item *a)
Definition: item_strfunc.h:1084
String tmp_value
Definition: item_strfunc.h:1081
const char * func_name() const override
Definition: item_strfunc.h:1085
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:3800
Definition: item_strfunc.h:325
table_map get_initial_pseudo_tables() const override
Returns the pseudo tables depended upon in order to evaluate this function expression.
Definition: item_strfunc.h:339
static const ulonglong MAX_RANDOM_BYTES_BUFFER
limitation from the SSL library
Definition: item_strfunc.h:329
Item_str_func super
Definition: item_strfunc.h:326
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:717
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:734
Item_func_random_bytes(const POS &pos, Item *a)
Definition: item_strfunc.h:332
String * val_str(String *a) override
Definition: item_strfunc.cc:741
const char * func_name() const override
Definition: item_strfunc.h:338
Definition: item_strfunc.h:1682
Item_func_remove_dd_property_key(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:1684
const char * func_name() const override
Definition: item_strfunc.h:1696
String * val_str(String *) override
This function removes a key value from given property string.
Definition: item_strfunc.cc:5302
enum Functype functype() const override
Definition: item_strfunc.h:1687
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1688
Definition: item_strfunc.h:793
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2539
String * val_str(String *) override
Item_func_repeat::str is carefully written to avoid reallocs as much as possible at the cost of a loc...
Definition: item_strfunc.cc:2573
String tmp_value
Definition: item_strfunc.h:794
Item_func_repeat(const POS &pos, Item *arg1, Item *arg2)
Definition: item_strfunc.h:797
const char * func_name() const override
Definition: item_strfunc.h:801
Definition: item_strfunc.h:386
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1321
String * val_str(String *) override
Replace all occurrences of string2 in string1 with string3.
Definition: item_strfunc.cc:1259
const char * func_name() const override
Definition: item_strfunc.h:396
String tmp_value
Definition: item_strfunc.h:387
String tmp_value_res
Holds result in case we need to allocate our own result buffer.
Definition: item_strfunc.h:389
String tmp_value2
Definition: item_strfunc.h:387
Item_func_replace(const POS &pos, Item *org, Item *find, Item *replace)
Definition: item_strfunc.h:392
Definition: item_strfunc.h:374
Item_func_reverse(Item *a)
Definition: item_strfunc.h:378
String * val_str(String *) override
Definition: item_strfunc.cc:1204
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1246
String tmp_value
Definition: item_strfunc.h:375
Item_func_reverse(const POS &pos, Item *a)
Definition: item_strfunc.h:379
const char * func_name() const override
Definition: item_strfunc.h:383
Definition: item_strfunc.h:448
Item_func_right(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:452
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1547
const char * func_name() const override
Definition: item_strfunc.h:456
String * val_str(String *) override
Definition: item_strfunc.cc:1525
String tmp_value
Definition: item_strfunc.h:449
Definition: item_strfunc.h:1337
Item_func_roles_graphml(const POS &pos)
Definition: item_strfunc.h:1342
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_strfunc.cc:5228
String value_cache
Cache for the result value.
Definition: item_strfunc.h:1367
Item_func_sysconst super
Definition: item_strfunc.h:1338
const char * func_name() const override
Definition: item_strfunc.h:1352
Item_func_roles_graphml()
Definition: item_strfunc.h:1341
bool calculate_graphml(THD *thd)
Constructs and caches the graphml string.
Definition: item_strfunc.cc:5208
String * val_str(String *) override
Definition: item_strfunc.cc:5223
bool value_cache_set
Set to true if value_cache is set.
Definition: item_strfunc.h:1370
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1347
const Name_string fully_qualified_func_name() const override
Definition: item_strfunc.h:1354
Definition: item_strfunc.h:812
String tmp_value
Definition: item_strfunc.h:813
Item_func_rpad(const POS &pos, Item *arg1, Item *arg2, Item *arg3)
Definition: item_strfunc.h:816
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2677
String * val_str(String *) override
Definition: item_strfunc.cc:2704
const char * func_name() const override
Definition: item_strfunc.h:820
String rpad_str
Definition: item_strfunc.h:813
Definition: item_strfunc.h:575
Item_func_rtrim(const POS &pos, Item *a)
Definition: item_strfunc.h:577
Definition: item_strfunc.h:1108
LEX_STRING collation_string
Definition: item_strfunc.h:1111
Item_field * field_for_view_update() override
Definition: item_strfunc.h:1126
bool eq_specific(const Item *item) const override
Provide a more specific equality check for a function.
Definition: item_strfunc.cc:3135
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_strfunc.cc:3142
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: item_strfunc.h:1132
Item_func_set_collation(const POS &pos, Item *a, const LEX_STRING &collation_string_arg)
Definition: item_strfunc.h:1114
const char * func_name() const override
Definition: item_strfunc.h:1122
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:3094
enum Functype functype() const override
Definition: item_strfunc.h:1123
String * val_str(String *) override
Definition: item_strfunc.cc:3086
Item_str_func super
Definition: item_strfunc.h:1109
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:3076
Definition: item_strfunc.h:203
const char * func_name() const override
Definition: item_strfunc.h:209
String * val_str_ascii(String *) override
Definition: item_strfunc.cc:280
Item_func_sha2(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:205
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:354
Definition: item_strfunc.h:195
const char * func_name() const override
Definition: item_strfunc.h:200
String * val_str_ascii(String *) override
Definition: item_strfunc.cc:244
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:265
Item_func_sha(const POS &pos, Item *a)
Definition: item_strfunc.h:197
Definition: item_strfunc.h:708
Item_func_soundex(const POS &pos, Item *a)
Definition: item_strfunc.h:713
String tmp_value
Definition: item_strfunc.h:709
Item_func_soundex(Item *a)
Definition: item_strfunc.h:712
String * val_str(String *) override
Definition: item_strfunc.cc:2111
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2066
const char * func_name() const override
Definition: item_strfunc.h:716
Definition: item_strfunc.h:804
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2617
String * val_str(String *) override
Definition: item_strfunc.cc:2649
const char * func_name() const override
Definition: item_strfunc.h:809
Item_func_space(const POS &pos, Item *arg1)
Definition: item_strfunc.h:806
Definition: item_strfunc.h:244
bool resolve_type(THD *thd) override
The type is always LONGTEXT, just like the digest_text columns in Performance Schema.
Definition: item_strfunc.cc:1059
const char * func_name() const override
Definition: item_strfunc.h:249
uchar * m_token_buffer
Definition: item_strfunc.h:267
Item_func_statement_digest_text(const POS &pos, Item *query_string)
Definition: item_strfunc.h:246
bool check_function_as_value_generator(uchar *checker_args) override
Check if this item is allowed for a virtual column or inside a default expression.
Definition: item_strfunc.h:257
String * val_str(String *) override
Definition: item_strfunc.cc:1068
Definition: item_strfunc.h:222
uchar * m_token_buffer
Definition: item_strfunc.h:241
Item_func_statement_digest(const POS &pos, Item *query_string)
Definition: item_strfunc.h:224
const char * func_name() const override
Definition: item_strfunc.h:227
String * val_str_ascii(String *) override
Implementation of the STATEMENT_DIGEST() native function.
Definition: item_strfunc.cc:1029
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1013
bool check_function_as_value_generator(uchar *checker_args) override
Check if this item is allowed for a virtual column or inside a default expression.
Definition: item_strfunc.h:228
Definition: item_strfunc.h:477
String * val_str(String *) override
Definition: item_strfunc.cc:1657
Item_func_substr_index(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_strfunc.h:481
String tmp_value
Definition: item_strfunc.h:478
const char * func_name() const override
Definition: item_strfunc.h:485
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1646
Definition: item_strfunc.h:459
const char * func_name() const override
Definition: item_strfunc.h:474
Item_func_substr(Item *a, Item *b)
Definition: item_strfunc.h:465
Item_func_substr(Item *a, Item *b, Item *c)
Definition: item_strfunc.h:468
String tmp_value
Definition: item_strfunc.h:462
Item_func_substr(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:466
Item_str_func super
Definition: item_strfunc.h:460
String * val_str(String *) override
Definition: item_strfunc.cc:1558
Item_func_substr(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_strfunc.h:469
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1605
Definition: item_strfunc.h:581
bool check_function_as_value_generator(uchar *checker_args) override
Check if this item is allowed for a virtual column or inside a default expression.
Definition: item_strfunc.h:597
virtual const Name_string fully_qualified_func_name() const =0
Item_func_sysconst(const POS &pos)
Definition: item_strfunc.h:588
Item_str_func super
Definition: item_strfunc.h:582
Item_func_sysconst()
Definition: item_strfunc.h:585
Definition: item_strfunc.h:212
const char * func_name() const override
Definition: item_strfunc.h:219
Item_func_to_base64(const POS &pos, Item *a)
Definition: item_strfunc.h:216
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:772
String * val_str_ascii(String *) override
Definition: item_strfunc.cc:789
String tmp_value
Definition: item_strfunc.h:213
Definition: item_strfunc.h:1240
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:4115
String * val_str(String *str) override
Definition: item_strfunc.cc:4130
String buffer
Definition: item_strfunc.h:1241
const char * func_name() const override
Definition: item_strfunc.h:1246
Item_func_to_vector(const POS &pos, Item *a)
Definition: item_strfunc.h:1244
Definition: item_strfunc.h:488
const bool m_trim_trailing
Definition: item_strfunc.h:509
bool trim_trailing() const
Definition: item_strfunc.h:541
bool trim_leading() const
Definition: item_strfunc.h:536
const char * func_name() const override
Definition: item_strfunc.h:548
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1867
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_strfunc.cc:1907
TRIM_MODE
Why all the trim modes in this enum? We need to maintain parsing information, so that our print() fun...
Definition: item_strfunc.h:495
@ TRIM_BOTH_DEFAULT
Definition: item_strfunc.h:496
@ TRIM_LTRIM
Definition: item_strfunc.h:500
@ TRIM_RTRIM
Definition: item_strfunc.h:501
@ TRIM_BOTH
Definition: item_strfunc.h:497
@ TRIM_LEADING
Definition: item_strfunc.h:498
@ TRIM_TRAILING
Definition: item_strfunc.h:499
Item_func_trim(Item *a, TRIM_MODE tm)
Definition: item_strfunc.h:524
Item_func_trim(Item *a, Item *b, TRIM_MODE tm)
Definition: item_strfunc.h:512
Item_func_trim(const POS &pos, Item *a, TRIM_MODE tm)
Definition: item_strfunc.h:530
String tmp_value
Definition: item_strfunc.h:505
const TRIM_MODE m_trim_mode
Definition: item_strfunc.h:507
Item_func_trim(const POS &pos, Item *a, Item *b, TRIM_MODE tm)
Definition: item_strfunc.h:518
String remove
Definition: item_strfunc.h:506
const bool m_trim_leading
Definition: item_strfunc.h:508
String * val_str(String *) override
Definition: item_strfunc.cc:1772
Definition: item_strfunc.h:1265
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1270
const char * func_name() const override
Definition: item_strfunc.h:1277
String * val_str(String *str) override
Definition: item_strfunc.cc:4205
String buffer
Definition: item_strfunc.h:1266
Item_func_uncompress(const POS &pos, Item *a)
Definition: item_strfunc.h:1269
Definition: item_strfunc.h:1214
const char * func_name() const override
Definition: item_strfunc.h:1220
Item_func_uncompressed_length(const POS &pos, Item *a)
Definition: item_strfunc.h:1218
String value
Definition: item_strfunc.h:1215
longlong val_int() override
Definition: item_strfunc.cc:4017
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1221
Definition: item_strfunc.h:898
Item_func_unhex(const POS &pos, Item *a)
Definition: item_strfunc.h:902
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:3375
String * val_str(String *) override
Convert given hex string to a binary string.
Definition: item_strfunc.cc:3388
String tmp_value
Definition: item_strfunc.h:899
const char * func_name() const override
Definition: item_strfunc.h:906
Definition: item_strfunc.h:431
Item_func_upper(const POS &pos, Item *item)
Definition: item_strfunc.h:433
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1456
const char * func_name() const override
Definition: item_strfunc.h:434
Definition: item_strfunc.h:627
Item_func_user(const POS &pos)
Definition: item_strfunc.h:640
table_map get_initial_pseudo_tables() const override
Returns the pseudo tables depended upon in order to evaluate this function expression.
Definition: item_strfunc.h:644
const Name_string fully_qualified_func_name() const override
Definition: item_strfunc.h:668
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:2048
String * val_str(String *) override
Definition: item_strfunc.cc:1966
Item_func_sysconst super
Definition: item_strfunc.h:628
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_strfunc.h:662
Item_func_user()
Definition: item_strfunc.h:639
const char * func_name() const override
Definition: item_strfunc.h:667
bool evaluate(const char *user, const char *host)
Evaluate user name, must be called once per execution.
Definition: item_strfunc.cc:2025
type_conversion_status save_in_field_inner(Field *field, bool) override
We override Item::save_in_field_inner() for reasons explained in the comment of that function - we ne...
Definition: item_strfunc.cc:1961
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:658
bool check_function_as_value_generator(uchar *checker_args) override
Check if this item is allowed for a virtual column or inside a default expression.
Definition: item_strfunc.h:650
bool m_evaluated
True when function value is evaluated, set to false after each execution.
Definition: item_strfunc.h:632
Definition: item_strfunc.h:834
String * val_str(String *) override
Definition: item_strfunc.cc:2813
Item_func_uuid_to_bin(const POS &pos, Item *arg1, Item *arg2)
Definition: item_strfunc.h:841
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2804
uchar m_bin_buf[mysql::gtid::Uuid::BYTE_LENGTH]
Buffer to store the binary result.
Definition: item_strfunc.h:836
Item_func_uuid_to_bin(const POS &pos, Item *arg1)
Definition: item_strfunc.h:839
const char * func_name() const override
Definition: item_strfunc.h:845
Definition: item_strfunc.h:1281
Item_func_uuid(const POS &pos)
Definition: item_strfunc.h:1286
bool check_function_as_value_generator(uchar *checker_args) override
Check if this item is allowed for a virtual column or inside a default expression.
Definition: item_strfunc.h:1295
table_map get_initial_pseudo_tables() const override
Returns the pseudo tables depended upon in order to evaluate this function expression.
Definition: item_strfunc.h:1289
String * val_str(String *) override
Definition: item_strfunc.cc:4413
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:4298
const char * func_name() const override
Definition: item_strfunc.h:1293
Item_func_uuid()
Definition: item_strfunc.h:1285
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:4291
Item_str_func super
Definition: item_strfunc.h:1282
Definition: item_strfunc.h:1168
String * val_str(String *) override
Definition: item_strfunc.cc:3245
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:3201
const char * func_name() const override
Definition: item_strfunc.h:1190
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_strfunc.cc:3189
const uint num_codepoints
Definition: item_strfunc.h:1178
String tmp_value
Definition: item_strfunc.h:1171
Item_str_func super
Definition: item_strfunc.h:1169
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:3178
Item_field * m_field_ref
Definition: item_strfunc.h:1174
const uint result_length
Definition: item_strfunc.h:1173
bool eq_specific(const Item *item) const override
Provide a more specific equality check for a function.
Definition: item_strfunc.cc:3236
Item_func_weight_string(const POS &pos, Item *a, uint result_length_arg, uint num_codepoints_arg, uint flags_arg, bool as_binary_arg=false)
Definition: item_strfunc.h:1179
const bool as_binary
Definition: item_strfunc.h:1175
uint flags
Definition: item_strfunc.h:1172
Definition: item_func.h:100
Item ** args
Array of pointers to arguments.
Definition: item_func.h:107
bool reject_vector_args()
Definition: item_func.cc:1596
Functype
Definition: item_func.h:209
@ COLLATE_FUNC
Definition: item_func.h:256
@ DD_INTERNAL_FUNC
Definition: item_func.h:266
@ TYPECAST_FUNC
Definition: item_func.h:258
virtual const char * func_name() const =0
bool param_type_is_default(THD *thd, uint start, uint end, uint step, enum_field_types def)
For arguments of this Item_func ("args" array), in range [start, start+step, start+2*step,...
Definition: item_func.cc:528
uint arg_count
How many arguments in 'args'.
Definition: item_func.h:130
bool null_on_null
Affects how to determine that NULL argument implies a NULL function return.
Definition: item_func.h:186
Definition: item_func.h:1020
Definition: item_strfunc.h:1035
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:3638
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1049
String tmp_value
Definition: item_strfunc.h:1038
Item_str_func super
Definition: item_strfunc.h:1036
String * val_str(String *) override
Definition: item_strfunc.cc:3646
bool check_function_as_value_generator(uchar *checker_args) override
Check if this item is allowed for a virtual column or inside a default expression.
Definition: item_strfunc.h:1057
Item_load_file(const POS &pos, Item *a)
Definition: item_strfunc.h:1041
const char * func_name() const override
Definition: item_strfunc.h:1045
table_map get_initial_pseudo_tables() const override
Returns the pseudo tables depended upon in order to evaluate this function expression.
Definition: item_strfunc.h:1046
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item.cc:10763
Definition: item_strfunc.h:148
Item_str_ascii_func(Item *a, Item *b)
Definition: item_strfunc.h:163
Item_str_ascii_func(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_strfunc.h:174
String * val_str_ascii(String *) override=0
Item_str_ascii_func()
Definition: item_strfunc.h:152
Item_str_ascii_func(Item *a, Item *b, Item *c)
Definition: item_strfunc.h:171
String ascii_buf
Definition: item_strfunc.h:149
Item_str_ascii_func(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:166
Item_str_ascii_func(const POS &pos, Item *a)
Definition: item_strfunc.h:159
Item_str_ascii_func(Item *a)
Definition: item_strfunc.h:156
String * val_str(String *str) override
Definition: item_strfunc.h:179
Definition: item_strfunc.h:413
String * val_str(String *) override
Definition: item_strfunc.cc:1412
Item_str_conv(const POS &pos, Item *item)
Definition: item_strfunc.h:420
String tmp_value
Definition: item_strfunc.h:417
uint multiply
Definition: item_strfunc.h:415
my_charset_conv_case converter
Definition: item_strfunc.h:416
Definition: item_strfunc.h:76
Item_str_func()
Definition: item_strfunc.h:80
String * val_str_from_val_str_ascii(String *str, String *str2)
Definition: item_strfunc.cc:150
Item_str_func(Item *a, Item *b)
Definition: item_strfunc.h:88
my_decimal * val_decimal(my_decimal *) override
Definition: item_strfunc.cc:182
String * push_packet_overflow_warning(THD *thd, const char *func)
Calls push_warning_printf for packet overflow.
Definition: item_strfunc.cc:1505
Item_str_func(const POS &pos, PT_item_list *opt_list)
Definition: item_strfunc.h:112
Item_str_func(mem_root_deque< Item * > *list)
Definition: item_strfunc.h:110
Item_str_func(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_strfunc.h:94
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: item_strfunc.h:140
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_strfunc.h:118
Item_func super
Definition: item_strfunc.h:77
bool get_time(MYSQL_TIME *ltime) override
Definition: item_strfunc.h:121
Item_str_func(Item *a)
Definition: item_strfunc.h:84
Item_str_func(Item *a, Item *b, Item *c, Item *d)
Definition: item_strfunc.h:97
void left_right_max_length(THD *thd)
Definition: item_strfunc.cc:1488
enum Item_result result_type() const override
Definition: item_strfunc.h:124
Item_str_func(Item *a, Item *b, Item *c)
Definition: item_strfunc.h:92
longlong val_int() override
Definition: item_strfunc.h:115
Item_str_func(const POS &pos, Item *a, Item *b, Item *c, Item *d, Item *e, Item *f)
Definition: item_strfunc.h:107
Item_str_func(const POS &pos, Item *a)
Definition: item_strfunc.h:86
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:127
double val_real() override
Definition: item_strfunc.h:116
Item_str_func(const POS &pos)
Definition: item_strfunc.h:82
Item_str_func(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:90
Item_str_func(Item *a, Item *b, Item *c, Item *d, Item *e)
Definition: item_strfunc.h:102
bool fix_fields(THD *thd, Item **ref) override
Definition: item_strfunc.cc:172
Item_str_func(const POS &pos, Item *a, Item *b, Item *c, Item *d, Item *e)
Definition: item_strfunc.h:105
Item_str_func(const POS &pos, Item *a, Item *b, Item *c, Item *d)
Definition: item_strfunc.h:99
Definition: item_strfunc.h:1013
const char * func_name() const override
Definition: item_strfunc.h:1030
Item_typecast_char(THD *thd, Item *a, longlong length_arg, const CHARSET_INFO *cs_arg)
Definition: item_strfunc.h:1018
Item_typecast_char(const POS &pos, Item *a, longlong length_arg, const CHARSET_INFO *cs_arg)
Definition: item_strfunc.h:1023
enum Functype functype() const override
Definition: item_strfunc.h:1028
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_strfunc.cc:3457
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: item_strfunc.cc:3470
bool eq_specific(const Item *item) const override
Provide a more specific equality check for a function.
Definition: item_strfunc.cc:3450
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:930
String str_value
str_values's main purpose is to cache the value in save_in_field
Definition: item.h:3576
void set_nullable(bool nullable)
Definition: item.h:3687
void set_data_type_blob(enum_field_types type, uint32 max_l)
Set the Item to be of BLOB type.
Definition: item.h:1683
DTCollation collation
Character set and collation properties assigned for this Item.
Definition: item.h:3583
bool get_time_from_string(MYSQL_TIME *ltime)
Convert val_str() to time in MYSQL_TIME.
Definition: item.cc:1648
virtual Item_field * field_for_view_update()
Definition: item.h:3185
bool fixed
True if item has been resolved.
Definition: item.h:3675
bool null_value
True if item is null.
Definition: item.h:3712
bool unsigned_flag
Definition: item.h:3713
longlong val_int_from_string()
Definition: item.cc:526
bool get_date_from_string(MYSQL_TIME *ltime, my_time_flags_t flags)
Convert val_str() to date in MYSQL_TIME.
Definition: item.cc:1561
void set_data_type_string(uint32 max_l)
Set the Item to be variable length string.
Definition: item.h:1600
bool may_evaluate_const(const THD *thd) const
Return true if this is a const item that may be evaluated in the current phase of statement processin...
Definition: item.cc:1410
virtual String * val_str(String *str)=0
uint32 max_length
Maximum length of result of evaluating this item, in number of bytes.
Definition: item.h:3601
double val_real_from_string()
Definition: item.cc:472
Represents a JSON container value of type "object" (ECMA), type J_OBJECT here.
Definition: json_dom.h:367
bool add_alias(std::string_view key, Json_dom *value)
Insert the value into the object.
Definition: json_dom.h:409
Definition: sql_list.h:494
Definition: sql_locale.h:37
Storage for name strings.
Definition: item.h:298
Wrapper class for an Item list head, used to allocate Item lists in the parser in a context-independe...
Definition: parse_tree_helpers.h:105
Base class for parse tree nodes (excluding the Parse_tree_root hierarchy)
Definition: parse_tree_node_base.h:231
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:167
void mem_free()
Definition: sql_string.h:400
void mark_as_const()
Definition: sql_string.h:247
bool copy()
Definition: sql_string.cc:198
void set(String &str, size_t offset, size_t arg_length)
Definition: sql_string.h:302
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
A (partial) implementation of std::deque allocating its blocks on a MEM_ROOT.
Definition: mem_root_deque.h:111
my_decimal class limits 'decimal_t' type to what we need in MySQL.
Definition: my_decimal.h:96
enum_query_type
Query type constants (usable as bitmap flags).
Definition: enum_query_type.h:31
@ MYSQL_TYPE_LONGLONG
Definition: field_types.h:64
@ MYSQL_TYPE_LONG_BLOB
Definition: field_types.h:86
static const std::string dec("DECRYPTION")
static void start(mysql_harness::PluginFuncEnv *env)
Definition: http_auth_backend_plugin.cc:180
#define NAME_STRING(x)
Definition: item.h:358
CHARSET_INFO * mysqld_collation_get_by_name(const char *name, CHARSET_INFO *name_cs=system_charset_info)
Get collation by name, send error to client on failure.
Definition: item_strfunc.cc:5118
String * mysql_generate_uuid(String *str)
Generate Universal Unique Identifier (UUID).
Definition: item_strfunc.cc:4306
A better implementation of the UNIX ctype(3) library.
MYSQL_STRINGS_EXPORT CHARSET_INFO my_charset_bin
Definition: ctype-bin.cc:500
size_t(* my_charset_conv_case)(const CHARSET_INFO *, char *, size_t, char *, size_t)
Definition: m_ctype.h:336
static constexpr uint32_t MY_CS_UNICODE
Definition: m_ctype.h:130
MYSQL_STRINGS_EXPORT CHARSET_INFO my_charset_utf8mb4_0900_bin
Definition: ctype-uca.cc:11481
static constexpr uint32_t MY_REPERTOIRE_ASCII
Definition: m_ctype.h:152
MYSQL_PLUGIN_IMPORT CHARSET_INFO * system_charset_info
Definition: mysqld.cc:1554
Common definition used by mysys, performance schema and server & client.
static constexpr int HOSTNAME_LENGTH
Definition: my_hostname.h:43
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:56
unsigned char uchar
Definition: my_inttypes.h:52
long long int longlong
Definition: my_inttypes.h:55
uint32_t uint32
Definition: my_inttypes.h:67
uint64_t table_map
Definition: my_table_map.h:30
Interface for low level time utilities.
unsigned int my_time_flags_t
Flags to str_to_datetime and number_to_datetime.
Definition: my_time.h:94
Common definition between mysql server & client.
#define MAX_BLOB_WIDTH
Default width for blob in bytes.
Definition: mysql_com.h:906
#define USERNAME_LENGTH
Definition: mysql_com.h:69
#define NAME_CHAR_LEN
Field/table name length.
Definition: mysql_com.h:60
#define USERNAME_CHAR_LENGTH
Definition: mysql_com.h:64
Time declarations shared between the server and client API: you should not add anything to this heade...
char * user
Definition: mysqladmin.cc:66
const char * host
Definition: mysqladmin.cc:65
static bool replace
Definition: mysqlimport.cc:70
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1105
Definition: commit_order_queue.h:34
PT & ref(PT *tp)
Definition: tablespace_impl.cc:359
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:76
Container::const_iterator find(const Container &c, Value &&value)
Definition: generic.h:39
std::list< T, ut::allocator< T > > list
Specialization of list which uses ut_allocator.
Definition: ut0new.h:2880
type_conversion_status
Status when storing a value in a field or converting from one datatype to another.
Definition: field.h:204
@ VGS_CHECK_CONSTRAINT
Definition: field.h:478
@ VGS_GENERATED_COLUMN
Definition: field.h:476
@ DERIVATION_COERCIBLE
Definition: field.h:184
@ DERIVATION_SYSCONST
Definition: field.h:185
File containing constants that can be used throughout the server.
constexpr const table_map RAND_TABLE_BIT
Definition: sql_const.h:113
constexpr const table_map INNER_TABLE_BIT
Definition: sql_const.h:111
Our own string classes, used pervasively throughout the executor.
case opt name
Definition: sslopt-case.h:29
Definition: m_ctype.h:421
const char * csname
Definition: m_ctype.h:426
unsigned state
Definition: m_ctype.h:425
Struct used to pass around arguments to/from check_function_as_value_generator.
Definition: item.h:488
const char * banned_function_name
the name of the function which is not allowed
Definition: item.h:502
Value_generator_source source
Definition: item.h:500
Definition: mysql_lex_string.h:40
Definition: mysql_lex_string.h:35
char * str
Definition: mysql_lex_string.h:36
size_t length
Definition: mysql_lex_string.h:37
Definition: mysql_time.h:82
Bison "location" class.
Definition: parse_location.h:43
Instances of Name_resolution_context store the information necessary for name resolution of Items and...
Definition: item.h:415
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:420
static const size_t TEXT_LENGTH
The number of bytes in the textual representation of a Uuid.
Definition: uuid.h:168
static constexpr std::size_t BYTE_LENGTH
The number of bytes in the data of a Uuid.
Definition: uuid.h:143
Item_result
Type of the user defined function return slot and arguments.
Definition: udf_registration_types.h:39
@ STRING_RESULT
not valid for UDFs
Definition: udf_registration_types.h:41