60#include "mysqld_error.h"
176#define MY_COLL_ALLOW_SUPERSET_CONV 1
177#define MY_COLL_ALLOW_COERCIBLE_CONV 2
178#define MY_COLL_DISALLOW_NONE 4
179#define MY_COLL_ALLOW_NUMERIC_CONV 8
181#define MY_COLL_ALLOW_CONV \
182 (MY_COLL_ALLOW_SUPERSET_CONV | MY_COLL_ALLOW_COERCIBLE_CONV)
183#define MY_COLL_CMP_CONV (MY_COLL_ALLOW_CONV | MY_COLL_DISALLOW_NONE)
216 uint repertoire_arg) {
301 if (is_null_terminated)
358#define NAME_STRING(x) Name_string(STRING_WITH_LEN(x))
365#define ITEM_TO_QUERY_SUBSTRING_CHAR_LIMIT (300)
396 void copy(
const char *str_arg,
size_t length_arg,
const CHARSET_INFO *cs_arg,
397 bool is_autogenerated_arg);
509 ? ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
511 ? ER_DEFAULT_VAL_GENERATED_FUNCTION_IS_NOT_ALLOWED
512 : ER_CHECK_CONSTRAINT_FUNCTION_IS_NOT_ALLOWED);
782 if (*num < std::numeric_limits<T>::max()) {
949 static void *
operator new(
size_t size)
noexcept {
950 return (*THR_MALLOC)->Alloc(
size);
953 const std::nothrow_t &arg
954 [[maybe_unused]] = std::nothrow)
noexcept {
958 static void operator delete(
void *ptr [[maybe_unused]],
959 size_t size [[maybe_unused]]) {
963 const std::nothrow_t &)
noexcept {}
1252 if (pc->m_show_parse_tree ==
nullptr || this->m_pos.is_empty())
1267 void
rename(
char *new_name);
1297 [[maybe_unused]]) {}
1329 bool pin =
false,
bool inherit =
false) {
1367 const Query_block *outer_query_block [[maybe_unused]]) {
1368 return std::nullopt;
1389 bool no_conversions);
1403 bool no_conversions);
1447 virtual bool eq(
const Item *)
const;
1873 bool *incl_endp [[maybe_unused]]) {
2096 my_error(ER_NOT_SUPPORTED_YET,
MYF(0),
"item type for JSON");
2128 double rows_in_table [[maybe_unused]]) {
2130 assert((read_tables & filter_for_table) == 0);
2257 return decimal_value;
2503 const char *used_alias)
const;
2522 bool skip_registered);
2639 return (*
reinterpret_cast<std::remove_reference_t<T> *
>(arg))(
this);
2645 return (*
reinterpret_cast<std::remove_reference_t<T> *
>(*arg))(
this);
2716 if ((this->*analyzer)(arg_p))
return ((this->*transformer)(arg_t));
2722 (*traverser)(
this, arg);
2842 table->mark_column_used(field, mark_field->
mark);
2897 assert(root !=
nullptr);
3055 if (*arg) *arg =
nullptr;
3175 virtual uint
cols()
const {
return 1; }
3342 if (this_context == other_context) {
3539 Item **items, uint nitems);
3768 [[maybe_unused]])
const {
3809 return item->
walk(&Item::walk_helper_thunk<T>, walk,
3810 reinterpret_cast<uchar *
>(&functor));
3818 auto to_const = [&](
const Item *descendant) {
return functor(descendant); };
3819 return WalkItem(
const_cast<Item *
>(item), walk, to_const);
3829template <
class T,
class U>
3831 uchar *analyzer_ptr =
reinterpret_cast<uchar *
>(&analyzer);
3832 return item->
compile(&Item::analyze_helper_thunk<T>, &analyzer_ptr,
3833 &Item::walk_helper_thunk<U>,
3834 reinterpret_cast<uchar *
>(&transformer));
3844 return item->
transform(&Item::walk_helper_thunk<T>,
3845 pointer_cast<uchar *>(&transformer));
3922 Field *field,
bool no_conversions)
override;
3936 Field *field,
bool no_conversions) {
4084 bool no_conversions)
override {
4094 uint nitems, uint
flags,
int item_sep);
4097 uint nitems,
int item_sep = 1) {
4103 Item **items, uint nitems,
4227 const char *table_name_arg,
const char *field_name_arg)
4240 const char *table_name_arg,
const char *field_name_arg)
4316 const char *db_name_arg,
const char *table_name_arg)
const;
4352 bool any_privileges);
4364 const char *table_name_arg)
4400 bool no_conversions)
override;
4457 assert(item_equal !=
nullptr);
4487 const char *table_name_arg,
const char *field_name_arg);
4488 Item_field(
const POS &pos,
const char *db_arg,
const char *table_name_arg,
4489 const char *field_name_arg);
4497 bool eq(
const Item *item)
const override;
4555 return pointer_cast<Field *>(arg) ==
field;
4559 auto mark_field = pointer_cast<Mark_field *>(arg);