57#include "mysqld_error.h"
99#define COND_FILTER_ALLPASS 1.0f
101#define COND_FILTER_EQUALITY 0.1f
103#define COND_FILTER_INEQUALITY 0.3333f
105#define COND_FILTER_BETWEEN 0.1111f
112#define COND_FILTER_STALE -1.0f
128#define COND_FILTER_STALE_NO_CONST -2.0f
163#define MY_COLL_ALLOW_SUPERSET_CONV 1
164#define MY_COLL_ALLOW_COERCIBLE_CONV 2
165#define MY_COLL_DISALLOW_NONE 4
166#define MY_COLL_ALLOW_NUMERIC_CONV 8
168#define MY_COLL_ALLOW_CONV \
169 (MY_COLL_ALLOW_SUPERSET_CONV | MY_COLL_ALLOW_COERCIBLE_CONV)
170#define MY_COLL_CMP_CONV (MY_COLL_ALLOW_CONV | MY_COLL_DISALLOW_NONE)
203 uint repertoire_arg) {
288 if (is_null_terminated)
345#define NAME_STRING(x) Name_string(STRING_WITH_LEN(x))
376 void copy(
const char *str_arg,
size_t length_arg,
const CHARSET_INFO *cs_arg,
377 bool is_autogenerated_arg);
465 DBUG_PRINT(
"outer_field", (
"creating ctx %p",
this));
506 ? ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
508 ? ER_DEFAULT_VAL_GENERATED_FUNCTION_IS_NOT_ALLOWED
509 : ER_CHECK_CONSTRAINT_FUNCTION_IS_NOT_ALLOWED);
822 static void *
operator new(
size_t size)
noexcept {
823 return (*THR_MALLOC)->Alloc(size);
826 const std::nothrow_t &arg
827 [[maybe_unused]] = std::nothrow)
noexcept {
831 static void operator delete(
void *ptr [[maybe_unused]],
832 size_t size [[maybe_unused]]) {
836 const std::nothrow_t &)
noexcept {}
1111 void rename(
char *new_name);
1141 [[maybe_unused]]) {}
1173 bool pin =
false,
bool inherit =
false) {
1220 bool no_conversions);
1234 bool no_conversions);
1266 virtual bool eq(
const Item *,
bool binary_cmp)
const;
1636 bool *incl_endp [[maybe_unused]]) {
1859 my_error(ER_NOT_SUPPORTED_YET,
MYF(0),
"item type for JSON");
1891 double rows_in_table [[maybe_unused]]) {
1893 assert((read_tables & filter_for_table) == 0);
1996 return decimal_value;
2241 bool used_alias)
const;
2259 bool skip_registered);
2369 return (this->*processor)(arg);
2375 return (*
reinterpret_cast<std::remove_reference_t<T> *
>(arg))(
this);
2381 return (*
reinterpret_cast<std::remove_reference_t<T> *
>(*arg))(
this);
2452 if ((this->*analyzer)(arg_p))
return ((this->*transformer)(arg_t));
2458 (*traverser)(
this, arg);
2580 if (table !=
nullptr && table != field->
table)
return false;
2582 table = field->
table;
2638 assert(root !=
nullptr);
2657 assert(arg !=
nullptr);
2803 if (*arg) *arg =
nullptr;
3431 [[maybe_unused]])
const {
3472 return item->
walk(&Item::walk_helper_thunk<T>, walk,
3473 reinterpret_cast<uchar *
>(&functor));
3483template <
class T,
class U>
3485 uchar *analyzer_ptr =
reinterpret_cast<uchar *
>(&analyzer);
3486 return item->
compile(&Item::analyze_helper_thunk<T>, &analyzer_ptr,
3487 &Item::walk_helper_thunk<U>,
3488 reinterpret_cast<uchar *
>(&transformer));
3567 Field *field,
bool no_conversions)
override;
3581 Field *field,
bool no_conversions) {
3730 bool no_conversions)
override {
3744 uint nitems,
int item_sep = 1) {
3769#define NO_FIELD_INDEX ((uint16)(-1))
3868 const char *table_name_arg,
const char *field_name_arg)
3883 const char *table_name_arg,
const char *field_name_arg)
3961 const char *db_name_arg,
const char *table_name_arg)
const;
4007 bool any_privileges);
4019 const char *table_name_arg)
4058 bool no_conversions)
override;
4114 if (
item_equal ==
nullptr && item_equal_arg !=
nullptr) {
4152 const char *table_name_arg,
const char *field_name_arg);
4154 const char *field_name_arg);
4163 bool eq(
const Item *item,
bool binary_cmp)
const override;
4220 return pointer_cast<Field *>(arg) ==
field;
4224 auto mark_field = pointer_cast<Mark_field *>(arg);
4292 double rows_in_table)
override;
4313 float default_filter)
const;
4365 const char *opt_table_name)
4366 :
super(
pos, opt_schema_name, opt_table_name,
"*") {}
4406 bool no_conversions)
override;
4424 bool eq(
const Item *item,
bool binary_cmp)
const override;
4455 bool no_conversions)
override;