MySQL 8.4.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 Item *safe_charset_converter(THD *thd, const CHARSET_INFO *tocs) override;
593 /*
594 Used to create correct Item name in new converted item in
595 safe_charset_converter, return string representation of this function
596 call
597 */
598 virtual const Name_string fully_qualified_func_name() const = 0;
599 bool check_function_as_value_generator(uchar *checker_args) override {
601 pointer_cast<Check_function_as_value_generator_parameters *>(
602 checker_args);
603 func_arg->banned_function_name = func_name();
604 return ((func_arg->source == VGS_GENERATED_COLUMN) ||
605 (func_arg->source == VGS_CHECK_CONSTRAINT));
606 }
607};
608
611
612 public:
613 explicit Item_func_database(const POS &pos) : Item_func_sysconst(pos) {}
614
615 bool do_itemize(Parse_context *pc, Item **res) override;
616
617 String *val_str(String *) override;
618 bool resolve_type(THD *) override {
620 set_nullable(true);
621 return false;
622 }
623 const char *func_name() const override { return "database"; }
624 const Name_string fully_qualified_func_name() const override {
625 return NAME_STRING("database()");
626 }
627};
628
631
632 protected:
633 /// True when function value is evaluated, set to false after each execution
634 bool m_evaluated = false;
635
636 /// Evaluate user name, must be called once per execution
637 bool evaluate(const char *user, const char *host);
638 type_conversion_status save_in_field_inner(Field *field, bool) override;
639
640 public:
642 explicit Item_func_user(const POS &pos) : super(pos) {
644 }
645
647 return INNER_TABLE_BIT;
648 }
649
650 bool do_itemize(Parse_context *pc, Item **res) override;
651
652 bool check_function_as_value_generator(uchar *checker_args) override {
654 pointer_cast<Check_function_as_value_generator_parameters *>(
655 checker_args);
656 func_arg->banned_function_name = func_name();
657 return ((func_arg->source == VGS_GENERATED_COLUMN) ||
658 (func_arg->source == VGS_CHECK_CONSTRAINT));
659 }
660 bool resolve_type(THD *) override {
662 return false;
663 }
664 void cleanup() override {
665 m_evaluated = false;
668 }
669 const char *func_name() const override { return "user"; }
670 const Name_string fully_qualified_func_name() const override {
671 return NAME_STRING("user()");
672 }
673
674 String *val_str(String *) override;
675};
676
679 /*
680 Used to pass a security context to the resolver functions.
681 Only used for definer views. In all other contexts, the security context
682 passed here is nullptr and is instead looked up dynamically at run time
683 from the current THD.
684 */
686
687 // Copied from context in fix_fields if definer Security_context
688 // is set in Name_resolution_context
691
692 protected:
693 type_conversion_status save_in_field_inner(Field *field, bool) override;
694
695 // Overridden to copy definer priv_user and priv_host
696 bool resolve_type(THD *) override;
697
698 public:
699 explicit Item_func_current_user(const POS &pos) : super(pos) {}
700
701 bool do_itemize(Parse_context *pc, Item **res) override;
702 const char *func_name() const override { return "current_user"; }
703 const Name_string fully_qualified_func_name() const override {
704 return NAME_STRING("current_user()");
705 }
706
707 String *val_str(String *) override;
708};
709
712
713 public:
715 Item_func_soundex(const POS &pos, Item *a) : Item_str_func(pos, a) {}
716 String *val_str(String *) override;
717 bool resolve_type(THD *thd) override;
718 const char *func_name() const override { return "soundex"; }
719};
720
721class Item_func_elt final : public Item_str_func {
722 public:
723 Item_func_elt(const POS &pos, PT_item_list *opt_list)
724 : Item_str_func(pos, opt_list) {}
725 double val_real() override;
726 longlong val_int() override;
727 String *val_str(String *str) override;
728 bool resolve_type(THD *thd) override;
729 const char *func_name() const override { return "elt"; }
730};
731
732class Item_func_make_set final : public Item_str_func {
734
736
737 public:
738 Item_func_make_set(const POS &pos, PT_item_list *opt_list)
739 : Item_str_func(pos, opt_list) {}
740
741 String *val_str(String *str) override;
742 bool fix_fields(THD *thd, Item **ref) override;
743 bool resolve_type(THD *) override;
744 const char *func_name() const override { return "make_set"; }
745
746 void print(const THD *thd, String *str,
747 enum_query_type query_type) const override;
748};
749
753
754 public:
755 Item_func_format(const POS &pos, Item *org, Item *dec)
756 : Item_str_ascii_func(pos, org, dec) {}
757 Item_func_format(const POS &pos, Item *org, Item *dec, Item *lang)
758 : Item_str_ascii_func(pos, org, dec, lang) {}
759
760 MY_LOCALE *get_locale(Item *item);
761 String *val_str_ascii(String *) override;
762 bool resolve_type(THD *thd) override;
763 const char *func_name() const override { return "format"; }
764 void print(const THD *thd, String *str,
765 enum_query_type query_type) const override;
766};
767
768class Item_func_char final : public Item_str_func {
769 public:
771 : Item_str_func(pos, list) {
773 }
775 : Item_str_func(pos, list) {
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;
782 return false;
783 }
784 const char *func_name() const override { return "char"; }
785 void add_json_info(Json_object *obj) override {
787 obj->add_alias("charset",
788 create_dom_ptr<Json_string>(collation.collation->csname));
789 }
790};
791
792class Item_func_repeat final : public Item_str_func {
794
795 public:
796 Item_func_repeat(const POS &pos, Item *arg1, Item *arg2)
797 : Item_str_func(pos, arg1, arg2) {}
798 String *val_str(String *) override;
799 bool resolve_type(THD *thd) override;
800 const char *func_name() const override { return "repeat"; }
801};
802
803class Item_func_space final : public Item_str_func {
804 public:
805 Item_func_space(const POS &pos, Item *arg1) : Item_str_func(pos, arg1) {}
806 String *val_str(String *) override;
807 bool resolve_type(THD *) override;
808 const char *func_name() const override { return "space"; }
809};
810
811class Item_func_rpad final : public Item_str_func {
813
814 public:
815 Item_func_rpad(const POS &pos, Item *arg1, Item *arg2, Item *arg3)
816 : Item_str_func(pos, arg1, arg2, arg3) {}
817 String *val_str(String *) override;
818 bool resolve_type(THD *) override;
819 const char *func_name() const override { return "rpad"; }
820};
821
822class Item_func_lpad final : public Item_str_func {
824
825 public:
826 Item_func_lpad(const POS &pos, Item *arg1, Item *arg2, Item *arg3)
827 : Item_str_func(pos, arg1, arg2, arg3) {}
828 String *val_str(String *) override;
829 bool resolve_type(THD *) override;
830 const char *func_name() const override { return "lpad"; }
831};
832
834 /// Buffer to store the binary result
836
837 public:
838 Item_func_uuid_to_bin(const POS &pos, Item *arg1)
839 : Item_str_func(pos, arg1) {}
840 Item_func_uuid_to_bin(const POS &pos, Item *arg1, Item *arg2)
841 : Item_str_func(pos, arg1, arg2) {}
842 String *val_str(String *) override;
843 bool resolve_type(THD *) override;
844 const char *func_name() const override { return "uuid_to_bin"; }
845};
846
848 /// Buffer to store the text result
850
851 public:
852 Item_func_bin_to_uuid(const POS &pos, Item *arg1)
853 : Item_str_ascii_func(pos, arg1) {}
854 Item_func_bin_to_uuid(const POS &pos, Item *arg1, Item *arg2)
855 : Item_str_ascii_func(pos, arg1, arg2) {}
856 String *val_str_ascii(String *) override;
857 bool resolve_type(THD *thd) override;
858 const char *func_name() const override { return "bin_to_uuid"; }
859};
860
861class Item_func_is_uuid final : public Item_bool_func {
863
864 public:
865 Item_func_is_uuid(const POS &pos, Item *a) : Item_bool_func(pos, a) {}
866 longlong val_int() override;
867 const char *func_name() const override { return "is_uuid"; }
868 bool resolve_type(THD *thd) override {
869 bool res = super::resolve_type(thd);
870 set_nullable(true);
871 return res;
872 }
873};
874
875class Item_func_conv final : public Item_str_func {
876 public:
877 // 64 digits plus possible '-'.
878 static constexpr uint32_t CONV_MAX_LENGTH = 64U + 1U;
879 Item_func_conv(const POS &pos, Item *a, Item *b, Item *c)
880 : Item_str_func(pos, a, b, c) {}
881 const char *func_name() const override { return "conv"; }
882 String *val_str(String *) override;
883 bool resolve_type(THD *) override;
884};
885
888
889 public:
890 Item_func_hex(const POS &pos, Item *a) : Item_str_ascii_func(pos, a) {}
891 const char *func_name() const override { return "hex"; }
892 String *val_str_ascii(String *) override;
893 bool resolve_type(THD *thd) override;
894};
895
896class Item_func_unhex final : public Item_str_func {
898
899 public:
900 Item_func_unhex(const POS &pos, Item *a) : Item_str_func(pos, a) {
901 /* there can be bad hex strings */
902 set_nullable(true);
903 }
904 const char *func_name() const override { return "unhex"; }
905 String *val_str(String *) override;
906 bool resolve_type(THD *thd) override;
907};
908
909#ifndef NDEBUG
911 protected:
914 const bool is_min;
915
916 public:
917 Item_func_like_range(const POS &pos, Item *a, Item *b, bool is_min_arg)
918 : Item_str_func(pos, a, b), is_min(is_min_arg) {
919 set_nullable(true);
920 }
921 String *val_str(String *) override;
922 bool resolve_type(THD *thd) override {
923 if (param_type_is_default(thd, 0, 1)) return true;
924 if (param_type_is_default(thd, 1, 2, MYSQL_TYPE_LONGLONG)) return true;
926 return false;
927 }
928};
929
931 public:
933 : Item_func_like_range(pos, a, b, true) {}
934 const char *func_name() const override { return "like_range_min"; }
935};
936
938 public:
940 : Item_func_like_range(pos, a, b, false) {}
941 const char *func_name() const override { return "like_range_max"; }
942};
943#endif
944
945/**
946 The following types of conversions are considered safe:
947
948 Conversion to and from "binary".
949 Conversion to Unicode.
950 Other kind of conversions are potentially lossy.
951*/
953 protected:
954 /// If true, conversion is needed so do it, else allow string copy.
956 /// The character set we are converting to
958 /// The character set we are converting from
959 const CHARSET_INFO *m_from_cs{nullptr};
961 /// Marks whether the underlying Item is constant and may be cached.
963 /// Length argument value, if any given.
964 longlong m_cast_length{-1}; // a priori not used
965 public:
966 bool m_safe;
967
968 protected:
969 /**
970 Helper for CAST and CONVERT type resolution: common logic to compute the
971 maximum numbers of characters of the type of the conversion.
972
973 @returns the maximum numbers of characters possible after the conversion
974 */
976
977 bool resolve_type(THD *thd) override;
978
979 void add_json_info(Json_object *obj) override {
981 obj->add_alias("charset", create_dom_ptr<Json_string>(m_cast_cs->csname));
982 }
983
984 public:
986 bool cache_if_const)
987 : Item_str_func(a), m_cast_cs(cs_arg) {
988 if (cache_if_const && args[0]->may_evaluate_const(thd)) {
989 uint errors = 0;
990 String tmp, *str = args[0]->val_str(&tmp);
991 if (!str || str_value.copy(str->ptr(), str->length(), str->charset(),
992 m_cast_cs, &errors))
993 null_value = true;
994 m_use_cached_value = true;
996 m_safe = (errors == 0);
997 } else {
998 m_use_cached_value = false;
999 // Marks whether the conversion is safe
1001 cs_arg == &my_charset_bin || (cs_arg->state & MY_CS_UNICODE));
1002 }
1003 }
1004 Item_charset_conversion(const POS &pos, Item *a, const CHARSET_INFO *cs_arg)
1005 : Item_str_func(pos, a), m_cast_cs(cs_arg) {}
1006
1007 String *val_str(String *) override;
1008};
1009
1011 protected:
1012 void add_json_info(Json_object *obj) override;
1013
1014 public:
1015 Item_typecast_char(THD *thd, Item *a, longlong length_arg,
1016 const CHARSET_INFO *cs_arg)
1017 : Item_charset_conversion(thd, a, cs_arg, false) {
1018 m_cast_length = length_arg;
1019 }
1020 Item_typecast_char(const POS &pos, Item *a, longlong length_arg,
1021 const CHARSET_INFO *cs_arg)
1022 : Item_charset_conversion(pos, a, cs_arg) {
1023 m_cast_length = length_arg;
1024 }
1025 enum Functype functype() const override { return TYPECAST_FUNC; }
1026 bool eq(const Item *item, bool binary_cmp) const override;
1027 const char *func_name() const override { return "cast_as_char"; }
1028 void print(const THD *thd, String *str,
1029 enum_query_type query_type) const override;
1030};
1031
1032class Item_load_file final : public Item_str_func {
1034
1036
1037 public:
1038 Item_load_file(const POS &pos, Item *a) : Item_str_func(pos, a) {}
1039
1040 bool do_itemize(Parse_context *pc, Item **res) override;
1041 String *val_str(String *) override;
1042 const char *func_name() const override { return "load_file"; }
1044 return INNER_TABLE_BIT;
1045 }
1046 bool resolve_type(THD *thd) override {
1047 if (param_type_is_default(thd, 0, 1)) return true;
1050 set_nullable(true);
1051 return false;
1052 }
1053 bool check_function_as_value_generator(uchar *checker_args) override {
1055 pointer_cast<Check_function_as_value_generator_parameters *>(
1056 checker_args);
1057 func_arg->banned_function_name = func_name();
1058 return true;
1059 }
1060};
1061
1063 public:
1064 Item_func_export_set(const POS &pos, Item *a, Item *b, Item *c)
1065 : Item_str_func(pos, a, b, c) {}
1066 Item_func_export_set(const POS &pos, Item *a, Item *b, Item *c, Item *d)
1067 : Item_str_func(pos, a, b, c, d) {}
1068 Item_func_export_set(const POS &pos, Item *a, Item *b, Item *c, Item *d,
1069 Item *e)
1070 : Item_str_func(pos, a, b, c, d, e) {}
1071 String *val_str(String *str) override;
1072 bool resolve_type(THD *) override;
1073 const char *func_name() const override { return "export_set"; }
1074};
1075
1078
1079 public:
1080 Item_func_quote(const POS &pos, Item *a) : Item_str_func(pos, a) {}
1081 const char *func_name() const override { return "quote"; }
1082 String *val_str(String *) override;
1083 bool resolve_type(THD *thd) override;
1084};
1085
1087 public:
1089 : Item_charset_conversion(pos, a, cs) {
1090 m_safe = false;
1091 }
1092
1094 bool cache_if_const)
1095 : Item_charset_conversion(thd, a, cs, cache_if_const) {
1096 assert(args[0]->fixed);
1097 }
1098 const char *func_name() const override { return "convert"; }
1099 void print(const THD *thd, String *str,
1100 enum_query_type query_type) const override;
1101};
1102
1105
1107
1108 public:
1110 const LEX_STRING &collation_string_arg)
1111 : super(pos, a, nullptr), collation_string(collation_string_arg) {}
1112
1113 bool do_itemize(Parse_context *pc, Item **res) override;
1114 String *val_str(String *) override;
1115 bool resolve_type(THD *) override;
1116 bool eq(const Item *item, bool binary_cmp) const override;
1117 const char *func_name() const override { return "collate"; }
1118 enum Functype functype() const override { return COLLATE_FUNC; }
1119 void print(const THD *thd, String *str,
1120 enum_query_type query_type) const override;
1122 /* this function is transparent for view updating */
1123 return args[0]->field_for_view_update();
1124 }
1125
1126 protected:
1127 void add_json_info(Json_object *obj) override {
1128 obj->add_alias("collation",
1129 create_dom_ptr<Json_string>(collation_string.str,
1131 }
1132};
1133
1134class Item_func_charset final : public Item_str_func {
1135 public:
1136 Item_func_charset(const POS &pos, Item *a) : Item_str_func(pos, a) {
1137 null_on_null = false;
1138 }
1139 String *val_str(String *) override;
1140 const char *func_name() const override { return "charset"; }
1141 bool resolve_type(THD *thd) override {
1143 set_nullable(false);
1144 return Item_str_func::resolve_type(thd);
1145 }
1146};
1147
1149 public:
1150 Item_func_collation(const POS &pos, Item *a) : Item_str_func(pos, a) {
1151 null_on_null = false;
1152 }
1153 String *val_str(String *) override;
1154 const char *func_name() const override { return "collation"; }
1155 bool resolve_type(THD *thd) override {
1156 if (Item_str_func::resolve_type(thd)) return true;
1158 set_nullable(false);
1159 return false;
1160 }
1161};
1162
1165
1167 uint flags;
1168 const uint result_length;
1170 const bool as_binary;
1171
1172 public:
1173 const uint num_codepoints;
1174 Item_func_weight_string(const POS &pos, Item *a, uint result_length_arg,
1175 uint num_codepoints_arg, uint flags_arg,
1176 bool as_binary_arg = false)
1177 : Item_str_func(pos, a),
1178 flags(flags_arg),
1179 result_length(result_length_arg),
1180 as_binary(as_binary_arg),
1181 num_codepoints(num_codepoints_arg) {}
1182
1183 bool do_itemize(Parse_context *pc, Item **res) override;
1184
1185 const char *func_name() const override { return "weight_string"; }
1186 bool eq(const Item *item, bool binary_cmp) const override;
1187 String *val_str(String *) override;
1188 bool resolve_type(THD *) override;
1189 void print(const THD *thd, String *str,
1190 enum_query_type query_type) const override;
1191};
1192
1193class Item_func_crc32 final : public Item_int_func {
1195
1196 public:
1197 Item_func_crc32(const POS &pos, Item *a) : Item_int_func(pos, a) {
1198 unsigned_flag = true;
1199 }
1200 const char *func_name() const override { return "crc32"; }
1201 bool resolve_type(THD *thd) override {
1202 if (param_type_is_default(thd, 0, 1)) return true;
1203 max_length = 10;
1204 return false;
1205 }
1206 longlong val_int() override;
1207};
1208
1211
1212 public:
1214 : Item_int_func(pos, a) {}
1215 const char *func_name() const override { return "uncompressed_length"; }
1216 bool resolve_type(THD *thd) override {
1217 if (param_type_is_default(thd, 0, 1)) return true;
1218 max_length = 10;
1219 return false;
1220 }
1221 longlong val_int() override;
1222};
1223
1224class Item_func_compress final : public Item_str_func {
1226
1227 public:
1228 Item_func_compress(const POS &pos, Item *a) : Item_str_func(pos, a) {}
1229 bool resolve_type(THD *thd) override;
1230 const char *func_name() const override { return "compress"; }
1231 String *val_str(String *str) override;
1232};
1233
1236
1237 public:
1238 Item_func_uncompress(const POS &pos, Item *a) : Item_str_func(pos, a) {}
1239 bool resolve_type(THD *thd) override {
1240 if (Item_str_func::resolve_type(thd)) return true;
1241 set_nullable(true);
1243 return false;
1244 }
1245 const char *func_name() const override { return "uncompress"; }
1246 String *val_str(String *str) override;
1247};
1248
1249class Item_func_uuid final : public Item_str_func {
1251
1252 public:
1254 explicit Item_func_uuid(const POS &pos) : Item_str_func(pos) {}
1255
1256 bool do_itemize(Parse_context *pc, Item **res) override;
1258 return RAND_TABLE_BIT;
1259 }
1260 bool resolve_type(THD *) override;
1261 const char *func_name() const override { return "uuid"; }
1262 String *val_str(String *) override;
1263 bool check_function_as_value_generator(uchar *checker_args) override {
1265 pointer_cast<Check_function_as_value_generator_parameters *>(
1266 checker_args);
1267 func_arg->banned_function_name = func_name();
1268 return ((func_arg->source == VGS_GENERATED_COLUMN) ||
1269 (func_arg->source == VGS_CHECK_CONSTRAINT));
1270 }
1271};
1272
1275
1276 public:
1278 explicit Item_func_current_role(const POS &pos)
1279 : super(pos), value_cache_set(false) {}
1280 const char *func_name() const override { return "current_role"; }
1281 void cleanup() override;
1282 String *val_str(String *) override;
1283 bool resolve_type(THD *) override {
1285 return false;
1286 }
1288 return NAME_STRING("current_role()");
1289 }
1290
1291 protected:
1292 void set_current_role(THD *thd);
1293 /** a flag whether @ref value_cache is set or not */
1295 /**
1296 @brief Cache for the result value
1297
1298 Set by init(). And consumed by val_str().
1299 Needed to avoid re-calculation of the current_roles() in the
1300 course of the query.
1301 */
1303};
1304
1307
1308 public:
1310 explicit Item_func_roles_graphml(const POS &pos)
1311 : super(pos), value_cache_set(false) {}
1312 String *val_str(String *) override;
1313 void cleanup() override;
1314
1315 bool resolve_type(THD *) override {
1317 return false;
1318 }
1319
1320 const char *func_name() const override { return "roles_graphml"; }
1321
1323 return NAME_STRING("roles_graphml()");
1324 }
1325
1326 protected:
1327 bool calculate_graphml(THD *thd);
1328 /**
1329 @brief Cache for the result value
1330
1331 Set by init(). And consumed by val_str().
1332 Needed to avoid re-calculation of the current_roles() in the
1333 course of the query.
1334 */
1336
1337 /** Set to true if @ref value_cache is set */
1339};
1340
1342 public:
1344 : Item_str_func(pos, a, b, c) {}
1345
1346 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1347 bool resolve_type(THD *) override {
1348 /*
1349 There are 14 kinds of grants, with a max length
1350 per privileges is 11 chars.
1351 So, setting max approximate to 200.
1352 */
1354 set_nullable(true);
1355 null_on_null = false;
1356
1357 return false;
1358 }
1359
1360 const char *func_name() const override { return "get_dd_column_privileges"; }
1361
1362 String *val_str(String *) override;
1363};
1364
1366 public:
1368 : Item_str_func(pos, a, b, c) {}
1369
1370 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1371 bool resolve_type(THD *) override {
1372 // maximum string length of all options is expected
1373 // to be less than 256 characters.
1375 set_nullable(false);
1376 null_on_null = false;
1377
1378 return false;
1379 }
1380
1381 const char *func_name() const override { return "get_dd_create_options"; }
1382
1383 String *val_str(String *) override;
1384};
1385
1387 public:
1389 : Item_str_func(pos, a) {}
1390
1391 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1392 bool resolve_type(THD *) override {
1393 // maximum string length of all options is expected
1394 // to be less than 256 characters.
1396 set_nullable(false);
1397 null_on_null = false;
1398
1399 return false;
1400 }
1401
1402 const char *func_name() const override { return "get_dd_schema_options"; }
1403
1404 String *val_str(String *) override;
1405};
1406
1408 public:
1410 : Item_str_func(pos, list) {}
1411
1412 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1413 bool resolve_type(THD *) override {
1414 /*
1415 maximum expected string length to be less than 2048 characters,
1416 which is same as size of column holding comments in dictionary,
1417 i.e., the mysql.tables.comment DD column.
1418 */
1420 set_nullable(true);
1421 null_on_null = false;
1422
1423 return false;
1424 }
1425
1426 const char *func_name() const override {
1427 return "internal_get_comment_or_error";
1428 }
1429
1430 String *val_str(String *) override;
1431};
1432
1434 public:
1436 : Item_str_func(pos, a, b) {}
1437
1438 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1439 bool resolve_type(THD *) override {
1440 /* maximum string length of the property value is expected
1441 to be less than 256 characters. */
1443 set_nullable(false);
1444 null_on_null = false;
1445
1446 return false;
1447 }
1448
1449 const char *func_name() const override {
1450 return "get_dd_tablespace_private_data";
1451 }
1452
1453 String *val_str(String *) override;
1454};
1455
1457 public:
1459 : Item_str_func(pos, a, b) {}
1460
1461 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1462 bool resolve_type(THD *) override {
1463 /* maximum string length of the property value is expected
1464 to be less than 256 characters. */
1466 set_nullable(false);
1467 null_on_null = false;
1468
1469 return false;
1470 }
1471
1472 const char *func_name() const override { return "get_dd_index_private_data"; }
1473
1474 String *val_str(String *) override;
1475};
1476
1478 public:
1480 : Item_str_func(pos, a) {}
1481
1482 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1483 bool resolve_type(THD *) override {
1484 // maximum string length of all options is expected
1485 // to be less than 256 characters.
1487 set_nullable(true);
1488 null_on_null = false;
1489
1490 return false;
1491 }
1492
1493 const char *func_name() const override {
1494 return "internal_get_partition_nodegroup";
1495 }
1496
1497 String *val_str(String *) override;
1498};
1499
1501 public:
1503 Item *d)
1504 : Item_str_func(pos, a, b, c, d) {}
1505
1506 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1507 bool resolve_type(THD *) override {
1508 // maximum string length of all options is expected
1509 // to be less than 256 characters.
1511 set_nullable(true);
1512 null_on_null = false;
1513
1514 return false;
1515 }
1516
1517 const char *func_name() const override { return "internal_tablespace_type"; }
1518
1519 String *val_str(String *) override;
1520};
1521
1523 public:
1525 Item *b, Item *c, Item *d)
1526 : Item_str_func(pos, a, b, c, d) {}
1527
1528 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1529 bool resolve_type(THD *) override {
1530 // maximum string length of all options is expected
1531 // to be less than 256 characters.
1533 set_nullable(true);
1534 null_on_null = false;
1535
1536 return false;
1537 }
1538
1539 const char *func_name() const override {
1540 return "internal_tablespace_logfile_group_name";
1541 }
1542
1543 String *val_str(String *) override;
1544};
1545
1547 public:
1549 Item *c, Item *d)
1550 : Item_str_func(pos, a, b, c, d) {}
1551
1552 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1553 bool resolve_type(THD *) override {
1554 // maximum string length of all options is expected
1555 // to be less than 256 characters.
1557 set_nullable(true);
1558 null_on_null = false;
1559
1560 return false;
1561 }
1562
1563 const char *func_name() const override {
1564 return "internal_tablespace_status";
1565 }
1566 String *val_str(String *) override;
1567};
1568
1570 public:
1572 Item *c, Item *d)
1573 : Item_str_func(pos, a, b, c, d) {}
1574
1575 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1576 bool resolve_type(THD *) override {
1577 // maximum string length of all options is expected
1578 // to be less than 256 characters.
1580 set_nullable(true);
1581 null_on_null = false;
1582
1583 return false;
1584 }
1585
1586 const char *func_name() const override {
1587 return "internal_tablespace_row_format";
1588 }
1589
1590 String *val_str(String *) override;
1591};
1592
1594 public:
1596 Item *d)
1597 : Item_str_func(pos, a, b, c, d) {}
1598
1599 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1600 bool resolve_type(THD *) override {
1601 // maximum string length of all options is expected
1602 // to be less than 256 characters.
1604 set_nullable(true);
1605 null_on_null = false;
1606
1607 return false;
1608 }
1609
1610 const char *func_name() const override { return "internal_tablespace_extra"; }
1611
1612 String *val_str(String *) override;
1613};
1614
1616 public:
1618 : Item_str_func(pos, list) {}
1619
1620 bool resolve_type(THD *) override {
1621 set_nullable(false);
1623 return false;
1624 }
1625
1626 const char *func_name() const override { return "convert_cpu_id_mask"; }
1627
1628 String *val_str(String *) override;
1629};
1630
1632 public:
1634 : Item_str_func(pos, a, b) {}
1635
1636 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1637 bool resolve_type(THD *) override {
1639 set_nullable(true);
1640 null_on_null = false;
1641
1642 return false;
1643 }
1644
1645 const char *func_name() const override { return "get_dd_property_key_value"; }
1646
1647 String *val_str(String *) override;
1648};
1649
1651 public:
1653 : Item_str_func(pos, a, b) {}
1654
1655 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1656 bool resolve_type(THD *) override {
1658 set_nullable(true);
1659 null_on_null = false;
1660
1661 return false;
1662 }
1663
1664 const char *func_name() const override { return "remove_dd_property_key"; }
1665
1666 String *val_str(String *) override;
1667};
1668
1670 public:
1672 : Item_str_func(pos, a, b) {}
1673
1674 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1675 bool resolve_type(THD *) override {
1676 // maximum string length of all options is expected
1677 // to be less than 256 characters.
1679 set_nullable(true);
1680 null_on_null = false;
1681
1682 return false;
1683 }
1684
1685 const char *func_name() const override {
1686 return "convert_interval_to_user_interval";
1687 }
1688
1689 String *val_str(String *) override;
1690};
1691
1693 public:
1695 : Item_str_func(pos, list) {}
1696
1697 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1698 bool resolve_type(THD *) override {
1700 set_nullable(true);
1701 null_on_null = false;
1702
1703 return false;
1704 }
1705
1706 const char *func_name() const override { return "internal_get_username"; }
1707
1708 String *val_str(String *) override;
1709};
1710
1712 public:
1714 : Item_str_func(pos, list) {}
1715
1716 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1717 bool resolve_type(THD *) override {
1719 set_nullable(true);
1720 null_on_null = false;
1721
1722 return false;
1723 }
1724
1725 const char *func_name() const override { return "internal_get_hostname"; }
1726
1727 String *val_str(String *) override;
1728};
1729
1731 public:
1733 : Item_str_func(pos) {}
1734
1735 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1736 bool resolve_type(THD *) override {
1738 set_nullable(true);
1739 null_on_null = false;
1740
1741 return false;
1742 }
1743
1744 const char *func_name() const override {
1745 return "internal_get_enabled_role_json";
1746 }
1747
1748 String *val_str(String *) override;
1749};
1750
1752 public:
1754 : Item_str_func(pos) {}
1755
1756 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1757 bool resolve_type(THD *) override {
1759 set_nullable(true);
1760 null_on_null = false;
1761
1762 return false;
1763 }
1764
1765 const char *func_name() const override {
1766 return "internal_get_mandatory_roles_json";
1767 }
1768
1769 String *val_str(String *) override;
1770};
1771
1773 public:
1775 : Item_str_func(pos, list) {}
1776
1777 enum Functype functype() const override { return DD_INTERNAL_FUNC; }
1778 bool resolve_type(THD *) override {
1779 // maximum string length of all options is expected
1780 // to be less than 256 characters.
1782 set_nullable(false);
1783 null_on_null = false;
1784
1785 return false;
1786 }
1787
1788 const char *func_name() const override {
1789 return "internal_get_dd_column_extra";
1790 }
1791
1792 String *val_str(String *) override;
1793};
1794
1795#endif /* ITEM_STRFUNC_INCLUDED */
Kerberos Client Authentication nullptr
Definition: auth_kerberos_client_plugin.cc:251
void set(const DTCollation &dt)
Definition: item.h:198
void set_repertoire(uint repertoire_arg)
Definition: item.h:224
const CHARSET_INFO * collation
Definition: item.h:180
Definition: field.h:575
Definition: item_cmpfunc.h:295
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_cmpfunc.h:329
The following types of conversions are considered safe:
Definition: item_strfunc.h:952
const CHARSET_INFO * m_cast_cs
The character set we are converting to.
Definition: item_strfunc.h:957
bool m_safe
Definition: item_strfunc.h:966
bool m_charset_conversion
If true, conversion is needed so do it, else allow string copy.
Definition: item_strfunc.h:955
const CHARSET_INFO * m_from_cs
The character set we are converting from.
Definition: item_strfunc.h:959
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:3599
Item_charset_conversion(const POS &pos, Item *a, const CHARSET_INFO *cs_arg)
Definition: item_strfunc.h:1004
bool m_use_cached_value
Marks whether the underlying Item is constant and may be cached.
Definition: item_strfunc.h:962
String * val_str(String *) override
Definition: item_strfunc.cc:3490
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: item_strfunc.h:979
longlong m_cast_length
Length argument value, if any given.
Definition: item_strfunc.h:964
String m_tmp_value
Definition: item_strfunc.h:960
Item_charset_conversion(THD *thd, Item *a, const CHARSET_INFO *cs_arg, bool cache_if_const)
Definition: item_strfunc.h:985
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:3568
Definition: item.h:4349
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:661
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:651
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:708
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:587
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:577
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:641
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:847
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2840
String * val_str_ascii(String *) override
Definition: item_strfunc.cc:2849
Item_func_bin_to_uuid(const POS &pos, Item *arg1, Item *arg2)
Definition: item_strfunc.h:854
Item_func_bin_to_uuid(const POS &pos, Item *arg1)
Definition: item_strfunc.h:852
const char * func_name() const override
Definition: item_strfunc.h:858
char m_text_buf[mysql::gtid::Uuid::TEXT_LENGTH+1]
Buffer to store the text result.
Definition: item_strfunc.h:849
Definition: item_strfunc.h:768
Item_func_char(const POS &pos, PT_item_list *list)
Definition: item_strfunc.h:770
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: item_strfunc.h:785
Item_func_char(const POS &pos, PT_item_list *list, const CHARSET_INFO *cs)
Definition: item_strfunc.h:774
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:784
Definition: item_strfunc.h:1134
Item_func_charset(const POS &pos, Item *a)
Definition: item_strfunc.h:1136
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1141
String * val_str(String *) override
Definition: item_strfunc.cc:3147
const char * func_name() const override
Definition: item_strfunc.h:1140
Definition: item_strfunc.h:1148
String * val_str(String *) override
Definition: item_strfunc.cc:3161
const char * func_name() const override
Definition: item_strfunc.h:1154
Item_func_collation(const POS &pos, Item *a)
Definition: item_strfunc.h:1150
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1155
Definition: item_strfunc.h:1224
String buffer
Definition: item_strfunc.h:1225
Item_func_compress(const POS &pos, Item *a)
Definition: item_strfunc.h:1228
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:4065
String * val_str(String *str) override
Definition: item_strfunc.cc:4073
const char * func_name() const override
Definition: item_strfunc.h:1230
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:1175
String tmp_value
Definition: item_strfunc.h:359
String * val_str(String *) override
concat with separator.
Definition: item_strfunc.cc:1142
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:1093
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1118
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:1086
Item_func_conv_charset(const POS &pos, Item *a, const CHARSET_INFO *cs)
Definition: item_strfunc.h:1088
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_strfunc.cc:3054
const char * func_name() const override
Definition: item_strfunc.h:1098
Item_func_conv_charset(THD *thd, Item *a, const CHARSET_INFO *cs, bool cache_if_const)
Definition: item_strfunc.h:1093
Definition: item_strfunc.h:875
String * val_str(String *) override
Definition: item_strfunc.cc:2983
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2976
static constexpr uint32_t CONV_MAX_LENGTH
Definition: item_strfunc.h:878
Item_func_conv(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_strfunc.h:879
const char * func_name() const override
Definition: item_strfunc.h:881
Definition: item_strfunc.h:1615
const char * func_name() const override
Definition: item_strfunc.h:1626
Item_func_convert_cpu_id_mask(const POS &pos, Item *list)
Definition: item_strfunc.h:1617
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1620
String * val_str(String *) override
Definition: item_strfunc.cc:5051
Definition: item_strfunc.h:1669
const char * func_name() const override
Definition: item_strfunc.h:1685
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1675
enum Functype functype() const override
Definition: item_strfunc.h:1674
String * val_str(String *) override
Definition: item_strfunc.cc:5265
Item_func_convert_interval_to_user_interval(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:1671
Definition: item_strfunc.h:1193
const char * func_name() const override
Definition: item_strfunc.h:1200
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1201
Item_func_crc32(const POS &pos, Item *a)
Definition: item_strfunc.h:1197
longlong val_int() override
Definition: item_strfunc.cc:4053
String value
Definition: item_strfunc.h:1194
Definition: item_strfunc.h:1273
const Name_string fully_qualified_func_name() const override
Definition: item_strfunc.h:1287
void set_current_role(THD *thd)
Definition: item_strfunc.cc:5107
Item_func_current_role()
Definition: item_strfunc.h:1277
const char * func_name() const override
Definition: item_strfunc.h:1280
bool value_cache_set
a flag whether value_cache is set or not
Definition: item_strfunc.h:1294
Item_func_sysconst super
Definition: item_strfunc.h:1274
Item_func_current_role(const POS &pos)
Definition: item_strfunc.h:1278
String * val_str(String *) override
Definition: item_strfunc.cc:5102
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1283
String value_cache
Cache for the result value.
Definition: item_strfunc.h:1302
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_strfunc.cc:5094
Definition: item_strfunc.h:677
Item_func_user super
Definition: item_strfunc.h:678
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1985
LEX_CSTRING definer_priv_host
Definition: item_strfunc.h:690
Item_func_current_user(const POS &pos)
Definition: item_strfunc.h:699
const Name_string fully_qualified_func_name() const override
Definition: item_strfunc.h:703
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:2062
const char * func_name() const override
Definition: item_strfunc.h:702
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:1979
LEX_CSTRING definer_priv_user
Definition: item_strfunc.h:689
String * val_str(String *) override
Definition: item_strfunc.cc:2010
Name_resolution_context * context
Definition: item_strfunc.h:685
Definition: item_strfunc.h:609
Item_func_sysconst super
Definition: item_strfunc.h:610
String * val_str(String *) override
Definition: item_strfunc.cc:1949
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:618
const Name_string fully_qualified_func_name() const override
Definition: item_strfunc.h:624
Item_func_database(const POS &pos)
Definition: item_strfunc.h:613
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:1941
const char * func_name() const override
Definition: item_strfunc.h:623
Definition: item_strfunc.h:721
const char * func_name() const override
Definition: item_strfunc.h:729
longlong val_int() override
Definition: item_strfunc.cc:2389
String * val_str(String *str) override
Definition: item_strfunc.cc:2402
double val_real() override
Definition: item_strfunc.cc:2377
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2359
Item_func_elt(const POS &pos, PT_item_list *opt_list)
Definition: item_strfunc.h:723
Definition: item_strfunc.h:1062
Item_func_export_set(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_strfunc.h:1064
Item_func_export_set(const POS &pos, Item *a, Item *b, Item *c, Item *d, Item *e)
Definition: item_strfunc.h:1068
Item_func_export_set(const POS &pos, Item *a, Item *b, Item *c, Item *d)
Definition: item_strfunc.h:1066
String * val_str(String *str) override
Definition: item_strfunc.cc:3720
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:3789
const char * func_name() const override
Definition: item_strfunc.h:1073
Definition: item_strfunc.h:750
const char * func_name() const override
Definition: item_strfunc.h:763
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_strfunc.cc:2346
String tmp_str
Definition: item_strfunc.h:751
MY_LOCALE * get_locale(Item *item)
Definition: item_strfunc.cc:2216
MY_LOCALE * locale
Definition: item_strfunc.h:752
Item_func_format(const POS &pos, Item *org, Item *dec)
Definition: item_strfunc.h:755
String * val_str_ascii(String *) override
Definition: item_strfunc.cc:2255
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2231
Item_func_format(const POS &pos, Item *org, Item *dec, Item *lang)
Definition: item_strfunc.h:757
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:804
const char * func_name() const override
Definition: item_strfunc.h:277
String * val_str(String *) override
Definition: item_strfunc.cc:817
Item_func_from_base64(const POS &pos, Item *a)
Definition: item_strfunc.h:274
Definition: item_strfunc.h:1341
Item_func_get_dd_column_privileges(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_strfunc.h:1343
const char * func_name() const override
Definition: item_strfunc.h:1360
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1347
enum Functype functype() const override
Definition: item_strfunc.h:1346
String * val_str(String *) override
This function prepares string with list of column privileges.
Definition: item_strfunc.cc:4349
Definition: item_strfunc.h:1365
enum Functype functype() const override
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:1371
String * val_str(String *) override
This function prepares string representing create_options for table.
Definition: item_strfunc.cc:4421
Item_func_get_dd_create_options(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_strfunc.h:1367
const char * func_name() const override
Definition: item_strfunc.h:1381
Definition: item_strfunc.h:1456
const char * func_name() const override
Definition: item_strfunc.h:1472
Item_func_get_dd_index_private_data(const POS &pos, Item *a, Item *b)
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:1462
String * val_str(String *) override
This function prepares string representing se_private_data for index.
Definition: item_strfunc.cc:4966
enum Functype functype() const override
Definition: item_strfunc.h:1461
Definition: item_strfunc.h:1631
String * val_str(String *) override
This function prepares string representing value stored at key supplied.
Definition: item_strfunc.cc:5162
enum Functype functype() const override
Definition: item_strfunc.h:1636
Item_func_get_dd_property_key_value(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:1633
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1637
const char * func_name() const override
Definition: item_strfunc.h:1645
Definition: item_strfunc.h:1386
String * val_str(String *) override
This function prepares string representing options for a schema.
Definition: item_strfunc.cc:4622
const char * func_name() 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:1392
enum Functype functype() const override
Definition: item_strfunc.h:1391
Item_func_get_dd_schema_options(const POS &pos, Item *a)
Definition: item_strfunc.h:1388
Definition: item_strfunc.h:1433
String * val_str(String *) override
This function prepares string representing se_private_data for tablespace.
Definition: item_strfunc.cc:4900
const char * func_name() const override
Definition: item_strfunc.h:1449
enum Functype functype() const override
Definition: item_strfunc.h:1438
Item_func_get_dd_tablespace_private_data(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:1435
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1439
Definition: item_strfunc.h:1477
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1483
String * val_str(String *) override
Definition: item_strfunc.cc:4747
enum Functype functype() const override
Definition: item_strfunc.h:1482
Item_func_get_partition_nodegroup(const POS &pos, Item *a)
Definition: item_strfunc.h:1479
const char * func_name() const override
Definition: item_strfunc.h:1493
Definition: item_strfunc.h:886
String tmp_value
Definition: item_strfunc.h:887
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:3338
Item_func_hex(const POS &pos, Item *a)
Definition: item_strfunc.h:890
String * val_str_ascii(String *) override
Definition: item_strfunc.cc:3350
const char * func_name() const override
Definition: item_strfunc.h:891
Definition: item_strfunc.h:399
String * val_str(String *) override
Definition: item_strfunc.cc:1333
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:1385
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:1407
Item_func_internal_get_comment_or_error(const POS &pos, PT_item_list *list)
Definition: item_strfunc.h:1409
const char * func_name() const override
Definition: item_strfunc.h:1426
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1413
String * val_str(String *) override
Definition: item_strfunc.cc:4670
enum Functype functype() const override
Definition: item_strfunc.h:1412
Definition: item_strfunc.h:1772
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1778
String * val_str(String *) override
This function prepares string representing EXTRA column for I_S.COLUMNS.
Definition: item_strfunc.cc:5442
const char * func_name() const override
Definition: item_strfunc.h:1788
Item_func_internal_get_dd_column_extra(const POS &pos, PT_item_list *list)
Definition: item_strfunc.h:1774
enum Functype functype() const override
Definition: item_strfunc.h:1777
Definition: item_strfunc.h:1730
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1736
enum Functype functype() const override
Definition: item_strfunc.h:1735
Item_func_internal_get_enabled_role_json(const POS &pos)
Definition: item_strfunc.h:1732
String * val_str(String *) override
Definition: item_strfunc.cc:5361
const char * func_name() const override
Definition: item_strfunc.h:1744
Definition: item_strfunc.h:1711
Item_func_internal_get_hostname(const POS &pos, PT_item_list *list)
Definition: item_strfunc.h:1713
enum Functype functype() const override
Definition: item_strfunc.h:1716
const char * func_name() const override
Definition: item_strfunc.h:1725
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1717
String * val_str(String *) override
Definition: item_strfunc.cc:5326
Definition: item_strfunc.h:1751
const char * func_name() const override
Definition: item_strfunc.h:1765
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1757
enum Functype functype() const override
Definition: item_strfunc.h:1756
Item_func_internal_get_mandatory_roles_json(const POS &pos)
Definition: item_strfunc.h:1753
String * val_str(String *) override
Definition: item_strfunc.cc:5393
Definition: item_strfunc.h:1692
String * val_str(String *) override
Definition: item_strfunc.cc:5289
Item_func_internal_get_username(const POS &pos, PT_item_list *list)
Definition: item_strfunc.h:1694
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1698
enum Functype functype() const override
Definition: item_strfunc.h:1697
const char * func_name() const override
Definition: item_strfunc.h:1706
Definition: item_strfunc.h:1593
String * val_str(String *) override
Definition: item_strfunc.cc:4866
const char * func_name() const override
Definition: item_strfunc.h:1610
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1600
enum Functype functype() const override
Definition: item_strfunc.h:1599
Item_func_internal_tablespace_extra(const POS &pos, Item *a, Item *b, Item *c, Item *d)
Definition: item_strfunc.h:1595
const char * func_name() const override
Definition: item_strfunc.h:1539
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1529
String * val_str(String *) override
Definition: item_strfunc.cc:4804
Item_func_internal_tablespace_logfile_group_name(const POS &pos, Item *a, Item *b, Item *c, Item *d)
Definition: item_strfunc.h:1524
enum Functype functype() const override
Definition: item_strfunc.h:1528
Definition: item_strfunc.h:1569
const char * func_name() const override
Definition: item_strfunc.h:1586
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1576
Item_func_internal_tablespace_row_format(const POS &pos, Item *a, Item *b, Item *c, Item *d)
Definition: item_strfunc.h:1571
String * val_str(String *) override
Definition: item_strfunc.cc:4844
enum Functype functype() const override
Definition: item_strfunc.h:1575
Definition: item_strfunc.h:1546
Item_func_internal_tablespace_status(const POS &pos, Item *a, Item *b, Item *c, Item *d)
Definition: item_strfunc.h:1548
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1553
String * val_str(String *) override
Definition: item_strfunc.cc:4827
enum Functype functype() const override
Definition: item_strfunc.h:1552
const char * func_name() const override
Definition: item_strfunc.h:1563
Definition: item_strfunc.h:1500
enum Functype functype() const override
Definition: item_strfunc.h:1506
String * val_str(String *) override
Definition: item_strfunc.cc:4787
const char * func_name() const override
Definition: item_strfunc.h:1517
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1507
Item_func_internal_tablespace_type(const POS &pos, Item *a, Item *b, Item *c, Item *d)
Definition: item_strfunc.h:1502
Definition: item_strfunc.h:861
const char * func_name() const override
Definition: item_strfunc.h:867
longlong val_int() override
Definition: item_strfunc.cc:2889
Item_func_is_uuid(const POS &pos, Item *a)
Definition: item_strfunc.h:865
Item_bool_func super
Definition: item_strfunc.h:862
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:868
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:1502
String tmp_value
Definition: item_strfunc.h:439
String * val_str(String *) override
Definition: item_strfunc.cc:1455
const char * func_name() const override
Definition: item_strfunc.h:445
Definition: item_strfunc.h:937
const char * func_name() const override
Definition: item_strfunc.h:941
Item_func_like_range_max(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:939
Definition: item_strfunc.h:930
const char * func_name() const override
Definition: item_strfunc.h:934
Item_func_like_range_min(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:932
Definition: item_strfunc.h:910
String max_str
Definition: item_strfunc.h:913
const bool is_min
Definition: item_strfunc.h:914
Item_func_like_range(const POS &pos, Item *a, Item *b, bool is_min_arg)
Definition: item_strfunc.h:917
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:922
String min_str
Definition: item_strfunc.h:912
String * val_str(String *) override
Definition: item_strfunc.cc:3424
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:1433
Definition: item_strfunc.h:822
String * val_str(String *) override
Definition: item_strfunc.cc:2903
Item_func_lpad(const POS &pos, Item *arg1, Item *arg2, Item *arg3)
Definition: item_strfunc.h:826
String tmp_value
Definition: item_strfunc.h:823
String lpad_str
Definition: item_strfunc.h:823
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2773
const char * func_name() const override
Definition: item_strfunc.h:830
Definition: item_strfunc.h:569
Item_func_ltrim(const POS &pos, Item *a)
Definition: item_strfunc.h:571
Definition: item_strfunc.h:732
String * val_str(String *str) override
Definition: item_strfunc.cc:2441
Item_str_func super
Definition: item_strfunc.h:733
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:2426
String tmp_str
Definition: item_strfunc.h:735
Item_func_make_set(const POS &pos, PT_item_list *opt_list)
Definition: item_strfunc.h:738
bool fix_fields(THD *thd, Item **ref) override
Definition: item_strfunc.cc:2422
const char * func_name() const override
Definition: item_strfunc.h:744
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:235
String * val_str_ascii(String *) override
Definition: item_strfunc.cc:192
Definition: item_strfunc.h:1076
String * val_str(String *) override
QUOTE() function returns argument string in single quotes suitable for using in a SQL statement.
Definition: item_strfunc.cc:3848
Item_func_quote(const POS &pos, Item *a)
Definition: item_strfunc.h:1080
String tmp_value
Definition: item_strfunc.h:1077
const char * func_name() const override
Definition: item_strfunc.h:1081
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:3808
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:715
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:732
Item_func_random_bytes(const POS &pos, Item *a)
Definition: item_strfunc.h:332
String * val_str(String *a) override
Definition: item_strfunc.cc:738
const char * func_name() const override
Definition: item_strfunc.h:338
Definition: item_strfunc.h:1650
Item_func_remove_dd_property_key(const POS &pos, Item *a, Item *b)
Definition: item_strfunc.h:1652
const char * func_name() const override
Definition: item_strfunc.h:1664
String * val_str(String *) override
This function removes a key value from given property string.
Definition: item_strfunc.cc:5219
enum Functype functype() const override
Definition: item_strfunc.h:1655
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1656
Definition: item_strfunc.h:792
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:2572
String tmp_value
Definition: item_strfunc.h:793
Item_func_repeat(const POS &pos, Item *arg1, Item *arg2)
Definition: item_strfunc.h:796
const char * func_name() const override
Definition: item_strfunc.h:800
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:1312
String * val_str(String *) override
Replace all occurrences of string2 in string1 with string3.
Definition: item_strfunc.cc:1250
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:1196
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1238
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:1533
const char * func_name() const override
Definition: item_strfunc.h:456
String * val_str(String *) override
Definition: item_strfunc.cc:1511
String tmp_value
Definition: item_strfunc.h:449
Definition: item_strfunc.h:1305
Item_func_roles_graphml(const POS &pos)
Definition: item_strfunc.h:1310
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_strfunc.cc:5145
String value_cache
Cache for the result value.
Definition: item_strfunc.h:1335
Item_func_sysconst super
Definition: item_strfunc.h:1306
const char * func_name() const override
Definition: item_strfunc.h:1320
Item_func_roles_graphml()
Definition: item_strfunc.h:1309
bool calculate_graphml(THD *thd)
Constructs and caches the graphml string.
Definition: item_strfunc.cc:5125
String * val_str(String *) override
Definition: item_strfunc.cc:5140
bool value_cache_set
Set to true if value_cache is set.
Definition: item_strfunc.h:1338
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1315
const Name_string fully_qualified_func_name() const override
Definition: item_strfunc.h:1322
Definition: item_strfunc.h:811
String tmp_value
Definition: item_strfunc.h:812
Item_func_rpad(const POS &pos, Item *arg1, Item *arg2, Item *arg3)
Definition: item_strfunc.h:815
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2675
String * val_str(String *) override
Definition: item_strfunc.cc:2701
const char * func_name() const override
Definition: item_strfunc.h:819
String rpad_str
Definition: item_strfunc.h:812
Definition: item_strfunc.h:575
Item_func_rtrim(const POS &pos, Item *a)
Definition: item_strfunc.h:577
Definition: item_strfunc.h:1103
bool eq(const Item *item, bool binary_cmp) const override
Definition: item_strfunc.cc:3121
LEX_STRING collation_string
Definition: item_strfunc.h:1106
Item_field * field_for_view_update() override
Definition: item_strfunc.h:1121
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_strfunc.cc:3136
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: item_strfunc.h:1127
Item_func_set_collation(const POS &pos, Item *a, const LEX_STRING &collation_string_arg)
Definition: item_strfunc.h:1109
const char * func_name() const override
Definition: item_strfunc.h:1117
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:3081
enum Functype functype() const override
Definition: item_strfunc.h:1118
String * val_str(String *) override
Definition: item_strfunc.cc:3073
Item_str_func super
Definition: item_strfunc.h:1104
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:3063
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:279
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:353
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:243
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:264
Item_func_sha(const POS &pos, Item *a)
Definition: item_strfunc.h:197
Definition: item_strfunc.h:710
Item_func_soundex(const POS &pos, Item *a)
Definition: item_strfunc.h:715
String tmp_value
Definition: item_strfunc.h:711
Item_func_soundex(Item *a)
Definition: item_strfunc.h:714
String * val_str(String *) override
Definition: item_strfunc.cc:2114
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2070
const char * func_name() const override
Definition: item_strfunc.h:718
Definition: item_strfunc.h:803
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2616
String * val_str(String *) override
Definition: item_strfunc.cc:2647
const char * func_name() const override
Definition: item_strfunc.h:808
Item_func_space(const POS &pos, Item *arg1)
Definition: item_strfunc.h:805
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:1054
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:1062
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:1024
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:1009
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:1640
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:1630
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:1543
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:1590
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:599
Item * safe_charset_converter(THD *thd, const CHARSET_INFO *tocs) override
Definition: item_strfunc.cc:1919
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:769
String * val_str_ascii(String *) override
Definition: item_strfunc.cc:786
String tmp_value
Definition: item_strfunc.h:213
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:1850
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_strfunc.cc:1889
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:1755
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.h:1239
const char * func_name() const override
Definition: item_strfunc.h:1245
String * val_str(String *str) override
Definition: item_strfunc.cc:4122
String buffer
Definition: item_strfunc.h:1235
Item_func_uncompress(const POS &pos, Item *a)
Definition: item_strfunc.h:1238
Definition: item_strfunc.h:1209
const char * func_name() const override
Definition: item_strfunc.h:1215
Item_func_uncompressed_length(const POS &pos, Item *a)
Definition: item_strfunc.h:1213
String value
Definition: item_strfunc.h:1210
longlong val_int() override
Definition: item_strfunc.cc:4024
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1216
Definition: item_strfunc.h:896
Item_func_unhex(const POS &pos, Item *a)
Definition: item_strfunc.h:900
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:3380
String * val_str(String *) override
Convert given hex string to a binary string.
Definition: item_strfunc.cc:3392
String tmp_value
Definition: item_strfunc.h:897
const char * func_name() const override
Definition: item_strfunc.h:904
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:1444
const char * func_name() const override
Definition: item_strfunc.h:434
Definition: item_strfunc.h:629
Item_func_user(const POS &pos)
Definition: item_strfunc.h:642
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:646
const Name_string fully_qualified_func_name() const override
Definition: item_strfunc.h:670
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:2052
String * val_str(String *) override
Definition: item_strfunc.cc:1970
Item_func_sysconst super
Definition: item_strfunc.h:630
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_strfunc.h:664
Item_func_user()
Definition: item_strfunc.h:641
const char * func_name() const override
Definition: item_strfunc.h:669
bool evaluate(const char *user, const char *host)
Evaluate user name, must be called once per execution.
Definition: item_strfunc.cc:2029
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:1965
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:660
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:652
bool m_evaluated
True when function value is evaluated, set to false after each execution.
Definition: item_strfunc.h:634
Definition: item_strfunc.h:833
String * val_str(String *) override
Definition: item_strfunc.cc:2808
Item_func_uuid_to_bin(const POS &pos, Item *arg1, Item *arg2)
Definition: item_strfunc.h:840
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:2800
uchar m_bin_buf[mysql::gtid::Uuid::BYTE_LENGTH]
Buffer to store the binary result.
Definition: item_strfunc.h:835
Item_func_uuid_to_bin(const POS &pos, Item *arg1)
Definition: item_strfunc.h:838
const char * func_name() const override
Definition: item_strfunc.h:844
Definition: item_strfunc.h:1249
Item_func_uuid(const POS &pos)
Definition: item_strfunc.h:1254
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:1263
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:1257
String * val_str(String *) override
Definition: item_strfunc.cc:4330
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:4215
const char * func_name() const override
Definition: item_strfunc.h:1261
Item_func_uuid()
Definition: item_strfunc.h:1253
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:4209
Item_str_func super
Definition: item_strfunc.h:1250
Definition: item_strfunc.h:1163
String * val_str(String *) override
Definition: item_strfunc.cc:3248
bool eq(const Item *item, bool binary_cmp) const override
Definition: item_strfunc.cc:3229
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.cc:3195
const char * func_name() const override
Definition: item_strfunc.h:1185
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_strfunc.cc:3183
const uint num_codepoints
Definition: item_strfunc.h:1173
String tmp_value
Definition: item_strfunc.h:1166
Item_str_func super
Definition: item_strfunc.h:1164
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:3172
Item_field * m_field_ref
Definition: item_strfunc.h:1169
const uint result_length
Definition: item_strfunc.h:1168
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:1174
const bool as_binary
Definition: item_strfunc.h:1170
uint flags
Definition: item_strfunc.h:1167
Definition: item_func.h:102
Item ** args
Array of pointers to arguments.
Definition: item_func.h:109
Functype
Definition: item_func.h:187
@ COLLATE_FUNC
Definition: item_func.h:234
@ DD_INTERNAL_FUNC
Definition: item_func.h:244
@ TYPECAST_FUNC
Definition: item_func.h:236
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:527
uint arg_count
How many arguments in 'args'.
Definition: item_func.h:132
bool null_on_null
Affects how to determine that NULL argument implies a NULL function return.
Definition: item_func.h:164
Definition: item_func.h:983
Definition: item_strfunc.h:1032
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_strfunc.cc:3647
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_strfunc.h:1046
String tmp_value
Definition: item_strfunc.h:1035
Item_str_func super
Definition: item_strfunc.h:1033
String * val_str(String *) override
Definition: item_strfunc.cc:3655
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:1053
Item_load_file(const POS &pos, Item *a)
Definition: item_strfunc.h:1038
const char * func_name() const override
Definition: item_strfunc.h:1042
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:1043
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item.cc:10922
virtual const char * func_name() const =0
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:1401
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:149
Item_str_func(Item *a, Item *b)
Definition: item_strfunc.h:88
my_decimal * val_decimal(my_decimal *) override
Definition: item_strfunc.cc:181
String * push_packet_overflow_warning(THD *thd, const char *func)
Calls push_warning_printf for packet overflow.
Definition: item_strfunc.cc:1492
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:1475
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:171
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:1010
const char * func_name() const override
Definition: item_strfunc.h:1027
Item_typecast_char(THD *thd, Item *a, longlong length_arg, const CHARSET_INFO *cs_arg)
Definition: item_strfunc.h:1015
Item_typecast_char(const POS &pos, Item *a, longlong length_arg, const CHARSET_INFO *cs_arg)
Definition: item_strfunc.h:1020
bool eq(const Item *item, bool binary_cmp) const override
Definition: item_strfunc.cc:3454
enum Functype functype() const override
Definition: item_strfunc.h:1025
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_strfunc.cc:3471
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: item_strfunc.cc:3484
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:934
String str_value
str_values's main purpose is to cache the value in save_in_field
Definition: item.h:3528
void set_nullable(bool nullable)
Definition: item.h:3637
void set_data_type_blob(enum_field_types type, uint32 max_l)
Set the Item to be of BLOB type.
Definition: item.h:1668
DTCollation collation
Character set and collation properties assigned for this Item.
Definition: item.h:3535
bool get_time_from_string(MYSQL_TIME *ltime)
Convert val_str() to time in MYSQL_TIME.
Definition: item.cc:1688
virtual Item_field * field_for_view_update()
Definition: item.h:3150
bool fixed
True if item has been resolved.
Definition: item.h:3625
bool null_value
True if item is null.
Definition: item.h:3662
bool unsigned_flag
Definition: item.h:3663
longlong val_int_from_string()
Definition: item.cc:522
bool get_date_from_string(MYSQL_TIME *ltime, my_time_flags_t flags)
Convert val_str() to date in MYSQL_TIME.
Definition: item.cc:1601
void set_data_type_string(uint32 max_l)
Set the Item to be variable length string.
Definition: item.h:1585
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:1350
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:3553
double val_real_from_string()
Definition: item.cc:468
Represents a JSON container value of type "object" (ECMA), type J_OBJECT here.
Definition: json_dom.h:369
bool add_alias(const std::string &key, Json_dom *value)
Insert the value into the object.
Definition: json_dom.h:411
Definition: sql_list.h:467
Definition: sql_locale.h:37
Storage for name strings.
Definition: item.h:291
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:95
enum_query_type
Query type constants (usable as bitmap flags).
Definition: enum_query_type.h:31
type_conversion_status
Status when storing a value in a field or converting from one datatype to another.
Definition: field.h:202
@ VGS_CHECK_CONSTRAINT
Definition: field.h:476
@ VGS_GENERATED_COLUMN
Definition: field.h:474
@ DERIVATION_COERCIBLE
Definition: field.h:182
@ DERIVATION_SYSCONST
Definition: field.h:183
@ MYSQL_TYPE_LONGLONG
Definition: field_types.h:64
@ MYSQL_TYPE_LONG_BLOB
Definition: field_types.h:85
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:351
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:5035
String * mysql_generate_uuid(String *str)
Generate Universal Unique Identifier (UUID).
Definition: item_strfunc.cc:4223
A better implementation of the UNIX ctype(3) library.
MYSQL_STRINGS_EXPORT CHARSET_INFO my_charset_bin
Definition: ctype-bin.cc:509
size_t(* my_charset_conv_case)(const CHARSET_INFO *, char *, size_t, char *, size_t)
Definition: m_ctype.h:338
static constexpr uint32_t MY_CS_UNICODE
Definition: m_ctype.h:130
static constexpr uint32_t MY_REPERTOIRE_ASCII
Definition: m_ctype.h:152
MYSQL_PLUGIN_IMPORT CHARSET_INFO * system_charset_info
Definition: mysqld.cc:1542
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 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:1073
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:2878
File containing constants that can be used throughout the server.
constexpr const table_map RAND_TABLE_BIT
Definition: sql_const.h:112
constexpr const table_map INNER_TABLE_BIT
Definition: sql_const.h:110
constexpr const int MAX_FIELD_NAME
Definition: sql_const.h:44
Our own string classes, used pervasively throughout the executor.
case opt name
Definition: sslopt-case.h:29
Definition: m_ctype.h:423
const char * csname
Definition: m_ctype.h:428
unsigned state
Definition: m_ctype.h:427
Struct used to pass around arguments to/from check_function_as_value_generator.
Definition: item.h:491
const char * banned_function_name
the name of the function which is not allowed
Definition: item.h:505
Value_generator_source source
Definition: item.h:503
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
Definition: item.h:401
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