1 #ifndef ITEM_CMPFUNC_INCLUDED 2 #define ITEM_CMPFUNC_INCLUDED 28 #include <sys/types.h> 146 static bool get_date_from_const(
Item *date_arg,
Item *str_arg,
160 size_t m_max_str_length{0};
203 bool inject_cast_nodes();
210 inline int compare() {
return (this->*func)(); }
212 int compare_string();
213 int compare_binary_string();
215 int compare_decimal();
216 int compare_int_signed();
217 int compare_int_signed_unsigned();
218 int compare_int_unsigned_signed();
219 int compare_int_unsigned();
220 int compare_time_packed();
222 int compare_real_fixed();
223 int compare_datetime();
225 bool compare_null_values();
227 static bool can_compare_as_dates(
const Item *a,
const Item *b);
240 if ((*left)->is_temporal()) (*left)->cmp_context =
INT_RESULT;
241 if ((*right)->is_temporal()) (*right)->cmp_context =
INT_RESULT;
253 return get_value_a_func !=
nullptr;
260 longlong extract_value_from_argument(
THD *thd,
Item *item,
bool left_argument,
261 bool *is_null)
const;
279 const Item *warn_item,
bool *is_null){
nullptr};
284 const Item *warn_item,
bool *is_null){
nullptr};
308 m_created_by_in2exists(item->m_created_by_in2exists) {}
318 static const char *bool_transform_names[10];
343 used_tables_cache = 0;
344 not_null_tables_cache = 0;
349 used_tables_cache = 0;
350 not_null_tables_cache = 0;
355 void cleanup()
override { result_field =
nullptr; }
364 const char *
func_name()
const override {
return "true"; }
370 enum Functype functype()
const override {
return TRUE_FUNC; }
379 const char *
func_name()
const override {
return "false"; }
396 bool resolve_type(
THD *)
override;
400 truth_test = super::bool_transform[truth_test][test];
404 return super::bool_transform_names[truth_test];
406 enum Functype functype()
const override {
return ISTRUTH_FUNC; }
409 : super(pos, a), truth_test(truth_test) {
410 null_on_null =
false;
411 switch (truth_test) {
422 : super(a), truth_test(truth_test) {
423 null_on_null =
false;
424 switch (truth_test) {
440 switch (truth_test) {
493 bool fix_fields(
THD *,
Item **)
override;
494 bool fix_left(
THD *thd,
Item **ref);
495 void fix_after_pullout(
SELECT_LEX *parent_select,
497 bool is_null()
override;
499 void cleanup()
override;
500 const char *
func_name()
const override {
return "<in_optimizer>"; }
502 void keep_top_level_cache();
506 void set_arg_resolve(
THD *thd,
uint i,
Item *newp)
override;
507 void update_used_tables()
override;
517 virtual const char *symbol(
bool invert)
const = 0;
518 virtual bool eqne_op()
const = 0;
519 virtual bool l_op()
const = 0;
526 bool eqne_op()
const override {
return true; }
527 bool l_op()
const override {
return false; }
543 const char *
symbol(
bool invert)
const override {
return invert ?
"<>" :
"="; }
552 const char *
symbol(
bool invert MY_ATTRIBUTE((unused)))
const override {
565 const char *
symbol(
bool invert)
const override {
return invert ?
"=" :
"<>"; }
575 const char *
symbol(
bool invert)
const override {
return invert ?
"<=" :
">"; }
576 bool eqne_op()
const override {
return false; }
577 bool l_op()
const override {
return false; }
583 const char *
symbol(
bool invert)
const override {
return invert ?
">=" :
"<"; }
584 bool eqne_op()
const override {
return false; }
585 bool l_op()
const override {
return true; }
591 const char *
symbol(
bool invert)
const override {
return invert ?
"<" :
">="; }
592 bool eqne_op()
const override {
return false; }
593 bool l_op()
const override {
return false; }
599 const char *
symbol(
bool invert)
const override {
return invert ?
">" :
"<="; }
600 bool eqne_op()
const override {
return false; }
601 bool l_op()
const override {
return true; }
606 bool convert_constant_arg(
THD *thd,
Item *field,
Item **item,
616 cmp(m_embedded_arguments, m_embedded_arguments + 1),
617 abort_on_null(
false) {}
621 cmp(m_embedded_arguments, m_embedded_arguments + 1),
622 abort_on_null(
false) {}
624 bool resolve_type(
THD *)
override;
627 m_embedded_arguments + 1,
true);
639 virtual enum Functype rev_functype()
const {
return UNKNOWN_FUNC; }
640 bool have_rev_func()
const override {
return rev_functype() != UNKNOWN_FUNC; }
647 bool is_null()
override {
return args[0]->is_null() || args[1]->is_null(); }
660 Item *replace_scalar_subquery(
uchar *)
override;
673 allowed_arg_cols = 0;
677 allowed_arg_cols = 0;
681 virtual Item *negated_item();
683 bool is_null()
override;
685 bool cast_incompatible_args(
uchar *)
override;
686 bool contains_only_equi_join_condition()
const override;
702 enum Functype functype()
const override {
return XOR_FUNC; }
703 const char *
func_name()
const override {
return "xor"; }
709 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
712 double rows_in_table)
override;
721 enum Functype functype()
const override {
return NOT_FUNC; }
722 const char *
func_name()
const override {
return "not"; }
727 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
730 double rows_in_table)
override;
750 enum Functype functype()
const override {
return MATCH_FUNC; }
751 const char *
func_name()
const override {
return "match"; }
754 args[0]->print(thd, str, query_type);
760 double rows_in_table)
override {
761 return args[0]->get_filtering_effect(thd, filter_for_table, read_tables,
762 fields_to_ignore, rows_in_table);
823 OUTER_FIELD_IS_NOT_NULL
852 trig_type(trig_type_arg) {}
854 enum Functype functype()
const override {
return TRIG_COND_FUNC; }
856 const char *
func_name()
const override {
return "<if>"; }
863 add_trig_func_tables();
867 if (trig_type == IS_NOT_NULL_COMPL || trig_type == FOUND_MATCH) {
870 used_tables_cache |= get_inner_tables();
871 }
else if (trig_type == OUTER_FIELD_IS_NOT_NULL) {
877 add_trig_func_tables();
887 bool contains_only_equi_join_condition()
const override;
905 abort_on_null(
false),
911 enum Functype functype()
const override {
return NOT_ALL_FUNC; }
912 const char *
func_name()
const override {
return "<not>"; }
941 bool empty_underlying_subquery();
949 const char *
func_name()
const override {
return "<nop>"; }
963 enum Functype functype()
const override {
return EQ_FUNC; }
964 enum Functype rev_functype()
const override {
return EQ_FUNC; }
967 Item *negated_item()
override;
969 Item *equality_substitution_transformer(
uchar *arg)
override;
972 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
975 double rows_in_table)
override;
989 bool append_join_key_for_hash_join(
THD *thd,
table_map tables,
991 String *join_key_buffer)
const;
1056 null_on_null =
false;
1060 null_on_null =
false;
1063 bool resolve_type(
THD *thd)
override;
1064 enum Functype functype()
const override {
return EQUAL_FUNC; }
1065 enum Functype rev_functype()
const override {
return EQUAL_FUNC; }
1070 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
1073 double rows_in_table)
override;
1083 enum Functype functype()
const override {
return GE_FUNC; }
1084 enum Functype rev_functype()
const override {
return LE_FUNC; }
1087 Item *negated_item()
override;
1090 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
1093 double rows_in_table)
override;
1103 enum Functype functype()
const override {
return GT_FUNC; }
1104 enum Functype rev_functype()
const override {
return LT_FUNC; }
1107 Item *negated_item()
override;
1110 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
1113 double rows_in_table)
override;
1123 enum Functype functype()
const override {
return LE_FUNC; }
1124 enum Functype rev_functype()
const override {
return GE_FUNC; }
1127 Item *negated_item()
override;
1130 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
1133 double rows_in_table)
override;
1143 enum Functype functype()
const override {
return LT_FUNC; }
1144 enum Functype rev_functype()
const override {
return GT_FUNC; }
1147 Item *negated_item()
override;
1150 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
1153 double rows_in_table)
override;
1163 enum Functype functype()
const override {
return NE_FUNC; }
1164 enum Functype rev_functype()
const override {
return NE_FUNC; }
1168 Item *negated_item()
override;
1170 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
1173 double rows_in_table)
override;
1192 if (is_negation) negate();
1196 if (is_negation) negate();
1204 if (test != BOOL_NEGATED)
return nullptr;
1208 bool eq(
const Item *item,
bool binary_cmp)
const override;
1227 compare_as_dates_with_strings(
false),
1228 compare_as_temporal_dates(
false),
1229 compare_as_temporal_times(
false) {}
1232 enum Functype functype()
const override {
return BETWEEN; }
1233 const char *
func_name()
const override {
return "between"; }
1234 bool fix_fields(
THD *,
Item **)
override;
1235 void fix_after_pullout(
SELECT_LEX *parent_select,
1237 bool resolve_type(
THD *)
override;
1247 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
1250 double rows_in_table)
override;
1251 void update_used_tables()
override;
1255 if (pred_level && !negated)
return;
1258 not_null_tables_cache =
1259 args[0]->not_null_tables() |
1260 (args[1]->not_null_tables() & args[2]->not_null_tables());
1271 enum Functype functype()
const override {
return STRCMP_FUNC; }
1300 : super(pos, alloc_row(pos, mem_root, expr1, expr2, opt_expr_list)),
1303 allowed_arg_cols = 0;
1308 bool resolve_type(
THD *)
override;
1309 const char *
func_name()
const override {
return "interval"; }
1313 void update_used_tables()
override;
1325 null_on_null =
false;
1328 null_on_null =
false;
1334 null_on_null =
false;
1339 double real_op()
override;
1350 bool resolve_type(
THD *thd)
override;
1351 bool resolve_type_inner(
THD *thd)
override;
1354 const char *
func_name()
const override {
return "coalesce"; }
1355 enum Functype functype()
const override {
return COALESCE_FUNC; }
1365 double real_op()
override;
1373 Field *tmp_table_field(
TABLE *table)
override;
1374 uint decimal_precision()
const override;
1385 const char *
func_name()
const override {
return "any_value"; }
1386 bool aggregate_check_group(
uchar *arg)
override;
1387 bool aggregate_check_distinct(
uchar *arg)
override;
1396 null_on_null =
false;
1400 null_on_null =
false;
1403 double val_real()
override;
1410 enum Item_result result_type()
const override {
return cached_result_type; }
1411 bool fix_fields(
THD *,
Item **)
override;
1415 bool resolve_type(
THD *thd)
override;
1416 bool resolve_type_inner(
THD *thd)
override;
1417 void fix_after_pullout(
SELECT_LEX *parent_select,
1419 uint decimal_precision()
const override;
1421 enum Functype functype()
const override {
return IF_FUNC; }
1422 void update_used_tables()
override;
1426 not_null_tables_cache =
1427 (args[1]->not_null_tables() & args[2]->not_null_tables());
1437 null_on_null =
false;
1439 double val_real()
override;
1448 bool resolve_type(
THD *thd)
override;
1449 bool resolve_type_inner(
THD *thd)
override;
1451 return args[0]->decimal_precision();
1454 enum Functype functype()
const override {
return NULLIF_FUNC; }
1461 bool is_null()
override;
1493 virtual bool find_item(
Item *item) = 0;
1517 virtual bool compare_elems(
uint pos1,
uint pos2)
const = 0;
1541 virtual void resize_and_sort() = 0;
1560 bool find_item(
Item *item)
override;
1561 bool compare_elems(
uint pos1,
uint pos2)
const override;
1565 void resize_and_sort()
override;
1580 :
in_vector(elements), base(mem_root, elements) {}
1592 bool find_item(
Item *item)
override;
1593 bool compare_elems(
uint pos1,
uint pos2)
const override;
1596 void set(
uint pos,
Item *item)
override { val_item(item, &base[pos]); }
1597 void resize_and_sort()
override;
1635 :
in_longlong(mem_root, elements), warn_item(warn_item_arg) {}
1650 :
in_vector(elements), base(mem_root, elements) {}
1657 bool find_item(
Item *item)
override;
1658 bool compare_elems(
uint pos1,
uint pos2)
const override;
1662 void resize_and_sort()
override;
1670 :
in_vector(elements), base(mem_root, elements) {}
1677 bool find_item(
Item *item)
override;
1678 bool compare_elems(
uint pos1,
uint pos2)
const override;
1682 void resize_and_sort()
override;
1693 virtual void store_value(
Item *item) = 0;
1698 virtual int cmp(
Item *item) = 0;
1743 if (res && (res != &value || !res->
is_alloced())) {
1755 if (value_res && res)
1756 return sortcmp(value_res, res, cmp_charset) != 0;
1757 else if (!value_res && !res)
1786 void store_value(
Item *item)
override;
1800 const bool rc = value != arg->
val_int();
1805 return (value < l_cmp->value) ? -1 : ((value == l_cmp->
value) ? 0 : 1);
1825 void store_value(
Item *item)
override;
1840 const bool rc = value != arg->
val_real();
1845 return (value < l_cmp->value) ? -1 : ((value == l_cmp->
value) ? 0 : 1);
1854 void store_value(
Item *item)
override;
1891 Item *first_expr_arg,
Item *else_expr_arg)
1898 null_on_null =
false;
1899 ncases = list->
size();
1900 if (first_expr_arg) {
1901 first_expr_num = list->
size();
1904 if (else_expr_arg) {
1905 else_expr_num = list->
size();
1908 set_arguments(list,
true);
1909 memset(&cmp_items, 0,
sizeof(cmp_items));
1914 double val_real()
override;
1921 bool fix_fields(
THD *thd,
Item **ref)
override;
1925 bool resolve_type(
THD *thd)
override;
1926 bool resolve_type_inner(
THD *thd)
override;
1927 uint decimal_precision()
const override;
1928 enum Item_result result_type()
const override {
return cached_result_type; }
1936 enum Functype functype()
const override {
return CASE_FUNC; }
1960 bool have_null{
false};
1962 bool populated{
false};
1966 bool values_are_const{
true};
1972 bool dep_subq_in_list{
false};
1974 bool first_resolve_call{
true};
1983 memset(&cmp_items, 0,
sizeof(cmp_items));
1984 allowed_arg_cols = 0;
1988 bool fix_fields(
THD *,
Item **)
override;
1989 void fix_after_pullout(
SELECT_LEX *parent_select,
1991 bool resolve_type(
THD *)
override;
1992 void update_used_tables()
override;
2003 bool populate_bisection(
THD *thd);
2004 void cleanup()
override;
2008 enum Functype functype()
const override {
return IN_FUNC; }
2016 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
2019 double rows_in_table)
override;
2023 if (pred_level && negated)
return;
2028 Item **arg_end = args + arg_count;
2029 for (
Item **arg = args + 1; arg != arg_end; arg++)
2031 not_null_tables_cache |= args[0]->not_null_tables();
2040 bool list_contains_null();
2062 float get_single_col_filtering_effect(
Item_ident *fieldref,
2065 double rows_in_table);
2066 void cleanup_arrays();
2076 alloc_comparators(thd, item);
2081 : comparators(other.comparators), n(other.n) {
2082 other.comparators =
nullptr;
2086 void store_value(
Item *item)
override;
2090 void store_value_by_template(
cmp_item *tmpl,
Item *)
override;
2092 comparators[col] = comparator;
2096 bool alloc_comparators(
THD *thd,
Item *item);
2108 bool find_item(
Item *item)
override;
2109 bool compare_elems(
uint pos1,
uint pos2)
const override;
2111 tmp->set_comparator(col, comparator);
2123 void resize_and_sort()
override;
2132 bool cache_used =
false;
2138 null_on_null =
false;
2141 enum Functype functype()
const override {
return ISNULL_FUNC; }
2142 bool resolve_type(
THD *thd)
override;
2145 void update_used_tables()
override;
2147 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
2150 double rows_in_table)
override;
2156 return args[0]->collation.collation;
2158 bool fix_fields(
THD *thd,
Item **ref)
override;
2174 enum Functype functype()
const override {
return ISNOTNULLTEST_FUNC; }
2176 const char *
func_name()
const override {
return "<is_not_null_test>"; }
2177 void update_used_tables()
override;
2196 null_on_null =
false;
2200 enum Functype functype()
const override {
return ISNOTNULL_FUNC; }
2205 const char *
func_name()
const override {
return "isnotnull"; }
2211 return args[0]->collation.collation;
2214 null_on_null =
true;
2216 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
2219 double rows_in_table)
override;
2229 bool escape_is_const =
false;
2231 bool escape_evaluated =
false;
2232 bool eval_escape_clause(
THD *thd);
2239 escape_item(escape_arg),
2240 escape_used_in_parsing(escape_used) {}
2243 escape_item(opt_escape_arg),
2244 escape_used_in_parsing(opt_escape_arg !=
nullptr) {}
2249 enum Functype functype()
const override {
return LIKE_FUNC; }
2253 bool fix_fields(
THD *thd,
Item **ref)
override;
2254 bool resolve_type(
THD *)
override;
2255 void cleanup()
override;
2256 Item *replace_scalar_subquery(
uchar *)
override;
2257 void update_used_tables()
override;
2272 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
2275 double rows_in_table)
override;
2287 bool check_covering_prefix_keys(
THD *thd);
2328 bool fix_fields(
THD *,
Item **ref)
override;
2329 void fix_after_pullout(
SELECT_LEX *parent_select,
2334 bool eq(
const Item *item,
bool binary_cmp)
const override;
2336 void update_used_tables()
override;
2346 bool truth_transform_arguments(
THD *thd,
Bool_test test);
2350 bool remove_const_conds(
THD *thd,
Item *item,
Item **new_item);
2443 cond_false(
false) {}
2450 bool compare_const(
THD *thd,
Item *c);
2464 bool update_const(
THD *thd);
2465 enum Functype functype()
const override {
return MULT_EQUAL_FUNC; }
2467 const char *
func_name()
const override {
return "multiple equal"; }
2492 template <
typename Node_cmp_func>
2494 fields.
sort(compare);
2497 bool resolve_type(
THD *)
override;
2498 bool fix_fields(
THD *thd,
Item **
ref)
override;
2499 void update_used_tables()
override;
2509 Item *equality_substitution_transformer(
uchar *arg)
override;
2511 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
2514 double rows_in_table)
override;
2518 void check_covering_prefix_keys();
2554 enum Functype functype()
const override {
return COND_AND_FUNC; }
2566 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
2569 double rows_in_table)
override;
2571 bool contains_only_equi_join_condition()
const override;
2583 enum Functype functype()
const override {
return COND_OR_FUNC; }
2595 float get_filtering_effect(
THD *thd,
table_map filter_for_table,
2598 double rows_in_table)
override;
2607 if (item ==
nullptr)
return nullptr;
2613 const Item *warn_item,
bool *is_null);
Abstraction for accessing JSON values irrespective of whether they are (started out as) binary JSON v...
Definition: json_dom.h:1166
Item *(Item::* Item_transformer)(uchar *arg)
Type for transformers used by Item::transform and Item::compile.
Definition: item.h:717
static int cmp(Bigint *a, Bigint *b)
Definition: dtoa.cc:1071
Definition: item_cmpfunc.h:2574
const CHARSET_INFO * cmp_charset
Definition: item_cmpfunc.h:1731
Item_result result_type() const override
Definition: item_cmpfunc.h:1444
unsigned long long int ulonglong
Definition: my_inttypes.h:55
cmp_item_string(const CHARSET_INFO *cs)
Definition: item_cmpfunc.h:1734
Item_result left_result_type
Definition: item_cmpfunc.h:1976
const CHARSET_INFO * compare_collation() const override
Definition: item_cmpfunc.h:2210
DTCollation cmp_collation
Definition: item_cmpfunc.h:1885
const CHARSET_INFO * compare_collation() const override
Definition: item_cmpfunc.h:2155
cond_result eq_cmp_result() const override
Definition: item_cmpfunc.h:2251
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size...
Definition: item_cmpfunc.h:310
const Item * warn_item
Definition: item_cmpfunc.h:1820
This file contains the field type.
Item_cond(const POS &pos, Item *i1, Item *i2)
Definition: item_cmpfunc.h:2304
in_expr [NOT] IN (in_value_list).
Definition: item_cmpfunc.h:1950
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_cmpfunc.h:642
bool equality_substitution_analyzer(uchar **) override
Definition: item_cmpfunc.h:2353
virtual double val_real()=0
static void print(const char *key, int keylen, const char *val, int vallen)
Print the key value pair.
Definition: mcstat.c:106
Item_cond(List< Item > &nlist)
Definition: item_cmpfunc.h:2311
unsigned char uchar
Definition: my_inttypes.h:51
Item_func_eq * m_join_condition
Definition: item_cmpfunc.h:106
Item_func_interval(const POS &pos, MEM_ROOT *mem_root, Item *expr1, Item *expr2, class PT_item_list *opt_expr_list=nullptr)
Definition: item_cmpfunc.h:1298
Item_func_coalesce(const POS &pos, PT_item_list *list)
Definition: item_cmpfunc.h:1332
List< Item_field > fields
Definition: item_cmpfunc.h:2431
Definition: sql_optimizer.h:125
bool use_custom_value_extractors() const
Definition: item_cmpfunc.h:252
Our own string classes, used pervasively throughout the executor.
const char * func_name() const override
Definition: item_cmpfunc.h:364
enum_field_types default_data_type() const override
Get the default data (output) type for the specific item.
Definition: item_cmpfunc.h:1922
Definition: item_cmpfunc.h:890
optimize_type
Definition: item_func.h:279
A predicate that is "always true" or "always false".
Definition: item_cmpfunc.h:339
void apply_is_true() override
Apply the IS TRUE truth property, meaning that an UNKNOWN result and a FALSE result are treated the s...
Definition: item_cmpfunc.h:434
Item_func super
Definition: item_cmpfunc.h:1878
longlong value
Definition: item_cmpfunc.h:1792
const char * func_name() const override
Definition: item_cmpfunc.h:500
Item_result
Type of the user defined function return slot and arguments.
Definition: udf_registration_types.h:38
Definition: item_cmpfunc.h:588
Item_result compare_type() const
Definition: item_cmpfunc.h:651
const char * func_name() const override
Definition: item_cmpfunc.h:949
uint decimal_precision() const override
Definition: item_cmpfunc.h:1310
Item_in_optimizer(Item *a, Item_in_subselect *b)
Definition: item_cmpfunc.h:489
void add(ENGINE_HANDLE *h, ENGINE_HANDLE_V1 *h1)
Definition: suite_stubs.c:69
const uint count
Original size of the vector.
Definition: item_cmpfunc.h:1475
bool l_op() const override
Definition: item_cmpfunc.h:577
Item_cond_or(List< Item > &list_arg)
Definition: item_cmpfunc.h:2582
bool l_op() const override
Definition: item_cmpfunc.h:585
Item_func_false(const POS &pos)
Definition: item_cmpfunc.h:378
Item * m_right_extractor
Definition: item_cmpfunc.h:108
uint decimal_precision() const override
Definition: item_cmpfunc.h:1244
Item_bool_func2 super
Definition: item_cmpfunc.h:695
T pointer_cast(void *p)
Casts from one pointer type, to another, without using reinterpret_cast or C-style cast: foo f; bar *...
Definition: template_utils.h:73
Item_func_between(const POS &pos, Item *a, Item *b, Item *c, bool is_negation)
Definition: item_cmpfunc.h:1225
Item_func_false()
Definition: item_cmpfunc.h:377
uint used_count
The actual size of the vector (NULL may be ignored)
Definition: item_cmpfunc.h:1477
HashJoinCondition(Item_func_eq *join_condition, MEM_ROOT *mem_root)
Definition: item_cmpfunc.cc:7491
const char * symbol(bool invert) const override
This interface is only used by Item_allany_subselect.
Definition: item_cmpfunc.h:575
Arg_comparator(Item **left, Item **right)
Definition: item_cmpfunc.h:169
longlong val_int() override
Definition: item_cmpfunc.h:381
bool basic_const_item() const override
Returns true if this is a simple constant item like an integer, not a constant expression.
Definition: item_cmpfunc.h:354
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:970
void value_to_item(uint pos, Item_basic_constant *item) const override
Store the value at position pos into provided item object.
Definition: item_cmpfunc.h:1654
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:2593
bool get_mysql_time_from_str(THD *thd, String *str, enum_mysql_timestamp_type warn_type, const char *warn_name, MYSQL_TIME *l_time)
Parse date provided in a string to a MYSQL_TIME.
Definition: item_cmpfunc.cc:872
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:1088
Item_result cmp_type
Definition: item_cmpfunc.h:1216
cmp_item_row()
Definition: item_cmpfunc.h:2074
Item_cond_and(Item *i1, Item *i2)
Definition: item_cmpfunc.h:2549
const table_map m_right_used_tables
Definition: item_cmpfunc.h:114
Item_func_in(const POS &pos, PT_item_list *list, bool is_negation)
Definition: item_cmpfunc.h:1981
Item_func_comparison is a class for comparison functions that take two arguments and return a boolean...
Definition: item_cmpfunc.h:670
Item_func_isnull(const POS &pos, Item *a)
Definition: item_cmpfunc.h:2137
Arg_comparator le_cmp
Definition: item_cmpfunc.h:1224
Item_bool_func super
Definition: item_cmpfunc.h:392
Definition: item_cmpfunc.h:1431
bool subst_argument_checker(uchar **) override
Definition: item_cmpfunc.h:2347
bool left_uses_any_table(table_map tables) const
Definition: item_cmpfunc.h:93
Item_func_gt(Item *a, Item *b)
Definition: item_cmpfunc.h:1101
Item_func_comparison(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:675
File containing constants that can be used throughout the server.
const char * func_name() const override
Definition: item_cmpfunc.h:2205
bool unsigned_flag
Definition: item.h:3229
Item_func_if(Item *a, Item *b, Item *c)
Definition: item_cmpfunc.h:1394
Some integer typedefs for easier portability.
Definition: item_cmpfunc.h:1689
cond_result eq_cmp_result() const override
Definition: item_cmpfunc.h:1085
unique_ptr_destroy_only< Json_scalar_holder > m_holder
Cache for the value above.
Definition: item_cmpfunc.h:1770
bool ignore_unknown() const
Definition: item_cmpfunc.h:1202
bool is_bool_func() const override
Definition: item_cmpfunc.h:309
Item_func_nop_all(Item *a)
Definition: item_cmpfunc.h:947
void rewind(void)
Definition: sql_list.h:601
bool l_op() const override
Definition: item_cmpfunc.h:601
A wrapper class which provides array bounds checking.
Definition: sql_array.h:41
bool val_bool() override
Definition: item_cmpfunc.h:380
const char * func_name() const override
Definition: item_cmpfunc.h:1372
double value
Definition: item_cmpfunc.h:1832
void apply_is_true() override
Apply the IS TRUE truth property, meaning that an UNKNOWN result and a FALSE result are treated the s...
Definition: item_cmpfunc.h:907
A (partial) implementation of std::deque allocating its blocks on a MEM_ROOT.
Definition: mem_root_deque.h:109
Gt_creator gt_creator
Definition: mysqld.cc:1432
Implements the comparison operator less than or equals (<=)
Definition: item_cmpfunc.h:1119
XOR inherits from Item_bool_func2 because it is not optimized yet.
Definition: item_cmpfunc.h:694
Item_row * row
Definition: item_cmpfunc.h:1293
virtual void apply_is_true()
Apply the IS TRUE truth property, meaning that an UNKNOWN result and a FALSE result are treated the s...
Definition: item.h:2208
in_vector(uint elements)
See Item_func_in::resolve_type() for why we need both count and used_count.
Definition: item_cmpfunc.h:1483
Item_field * get_first()
Get the first field of multiple equality, use for semantic checking.
Definition: item_cmpfunc.h:2461
uint ncases
Definition: item_cmpfunc.h:1883
bool copy()
Definition: sql_string.cc:189
A class that is capable of holding objects of any sub-type of Json_scalar.
Definition: json_dom.h:1902
bool compare_as_dates_with_strings
Definition: item_cmpfunc.h:1219
Eq_creator eq_creator
Definition: mysqld.cc:1429
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size...
Definition: item_cmpfunc.h:1277
optimize_type select_optimize(const THD *) override
Definition: item_cmpfunc.h:2206
Item_cond_or(THD *thd, Item_cond_or *item)
Definition: item_cmpfunc.h:2581
Definition: item_cmpfunc.h:596
Item_cond_and(const POS &pos, Item *i1, Item *i2)
Definition: item_cmpfunc.h:2550
bool(Item::* Item_analyzer)(uchar **argp)
Definition: item.h:708
float get_filtering_effect(THD *thd, table_map filter_for_table, table_map read_tables, const MY_BITMAP *fields_to_ignore, double rows_in_table) override
Calculate the filter contribution that is relevant for table 'filter_for_table' for this item...
Definition: item_cmpfunc.h:757
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:1245
bool escape_used_in_parsing
Definition: item_cmpfunc.h:2227
This class represents a query block, aka a query specification, which is a query consisting of a SELE...
Definition: sql_lex.h:1089
Item_basic_constant * create_item(MEM_ROOT *mem_root) const override
Create an instance of Item_{type} (e.g.
Definition: item_cmpfunc.h:1581
String value2
Definition: item_cmpfunc.h:1217
Implements the comparison operator greater than (>)
Definition: item_cmpfunc.h:1099
in_longlong(MEM_ROOT *mem_root, uint elements)
Definition: item_cmpfunc.h:1579
const char * func_name() const override
Definition: item_cmpfunc.h:2143
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size...
Definition: item_func.h:580
Item_equal()
Definition: item_cmpfunc.h:2439
Definition: item_func.h:131
int compare(const cmp_item *ci) const override
Definition: item_cmpfunc.h:1803
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_cmpfunc.h:2186
Definition: field_types.h:68
in_double(MEM_ROOT *mem_root, uint elements)
Definition: item_cmpfunc.h:1649
cond_result eq_cmp_result() const override
Definition: item_cmpfunc.h:965
bool push_back(const Element_type &element)
Adds the given element to the end of the deque.
Definition: mem_root_deque.h:176
Implements the comparison operator equals (=)
Definition: item_cmpfunc.h:957
Definition: item_cmpfunc.h:1390
const char * func_name() const override
Definition: item_cmpfunc.h:1167
optimize_type select_optimize(const THD *) override
Definition: item_cmpfunc.h:2151
Definition: item_cmpfunc.h:604
Item_equal_iterator(Item_equal &item_equal)
Definition: item_cmpfunc.h:2533
Definition: item_cmpfunc.h:475
const char * func_name() const override
Definition: item_cmpfunc.h:2252
virtual table_map not_null_tables() const
Definition: item.h:2053
cond_result eq_cmp_result() const override
Definition: item_cmpfunc.h:1165
virtual longlong val_int()=0
Definition: item_cmpfunc.h:2290
int escape
Definition: item_cmpfunc.h:2235
Item_bool_func(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:303
COND_EQUAL * upper_levels
Definition: item_cmpfunc.h:2525
const char * func_name() const override
Definition: item_cmpfunc.h:2585
Item_func_le(Item *a, Item *b)
Definition: item_cmpfunc.h:1121
const char * func_name() const override
Definition: item_cmpfunc.h:1086
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_func.cc:598
Item * truth_transformer(THD *, Bool_test test) override
Informs an item that it is wrapped in a truth test, in case it wants to transforms itself to implemen...
Definition: item_cmpfunc.h:399
bool is_bool_func() const override
Definition: item_cmpfunc.h:1240
void set_sub_test(Item_maxmin_subselect *item)
Definition: item_cmpfunc.h:916
size_t size() const
Definition: mem_root_deque.h:444
A predicate that is "always false".
Definition: item_cmpfunc.h:375
bool add(Item *item)
Definition: item_cmpfunc.h:2313
const char * func_name() const override
Definition: item_cmpfunc.h:1067
Item_func_isnull(Item *a)
Definition: item_cmpfunc.h:2136
Item_result type
Definition: item_cmpfunc.h:1285
const char * func_name() const override
Definition: item_cmpfunc.h:2556
Lt_creator lt_creator
Definition: mysqld.cc:1433
Item_subselect * subselect
Definition: item_cmpfunc.h:894
Item_func_like(Item *a, Item *b, Item *escape_arg, bool escape_used)
Definition: item_cmpfunc.h:2237
Definition: item_cmpfunc.h:1815
bool cond_false
Definition: item_cmpfunc.h:2435
int compare(const cmp_item *ci) const override
Definition: item_cmpfunc.h:1736
void value_to_item(uint pos, Item_basic_constant *item) const override
Store the value at position pos into provided item object.
Definition: item_cmpfunc.h:1557
std::string join(Container cont, const std::string &delim)
join elements of an container into a string seperated by a delimiter.
Definition: string.h:144
virtual ~Comp_creator()
Definition: item_cmpfunc.h:513
int get_else_expr_num() const
Definition: item_cmpfunc.h:1913
bool add_at_head(Item *item)
Definition: item_cmpfunc.h:2317
Item_basic_constant * create_item(MEM_ROOT *mem_root) const override
Create an instance of Item_{type} (e.g.
Definition: item_cmpfunc.h:1636
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:1128
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:2564
List< Item > * argument_list()
Definition: item_cmpfunc.h:2333
bool escape_was_used_in_parsing() const
Definition: item_cmpfunc.h:2262
Item * m_left_extractor
Definition: item_cmpfunc.h:107
void set_str_value(String *str)
Definition: item.h:3369
const CHARSET_INFO * collation
Definition: item_cmpfunc.h:1550
longlong val_int() override
Definition: item_cmpfunc.h:366
Item * right_extractor() const
Definition: item_cmpfunc.h:92
bool right_uses_any_table(table_map tables) const
Definition: item_cmpfunc.h:97
This trigger type deactivates join conditions when a row has been NULL-complemented.
Definition: item_cmpfunc.h:805
#define RAND_TABLE_BIT
Definition: sql_const.h:110
enum_walk
Enumeration for {Item,SELECT_LEX[_UNIT],Table_function}walk.
Definition: sql_const.h:438
const char * symbol(bool invert) const override
This interface is only used by Item_allany_subselect.
Definition: item_cmpfunc.h:565
void set_numeric_type() override
Definition: item_cmpfunc.h:1352
const char * func_name() const override
Definition: item_cmpfunc.h:1385
DTCollation cmp_collation
Definition: item_cmpfunc.h:163
void value_to_item(uint, Item_basic_constant *) const override
Store the value at position pos into provided item object.
Definition: item_cmpfunc.h:2117
Arg_comparator * get_child_comparators() const
Definition: item_cmpfunc.h:248
Item_bool_func(Item *a)
Definition: item_cmpfunc.h:297
arg_cmp_func func
Definition: item_cmpfunc.h:134
bool eqne_op() const override
Definition: item_cmpfunc.h:600
cmp_item_row(cmp_item_row &&other)
Definition: item_cmpfunc.h:2080
Wrapper class for an Item list head, used to allocate Item lists in the parser in a context-independe...
Definition: parse_tree_helpers.h:100
const char * func_name() const override
Definition: item_cmpfunc.h:1453
optimize_type select_optimize(const THD *) override
Definition: item_cmpfunc.h:1166
const CHARSET_INFO * compare_collation() const override
Definition: item_cmpfunc.h:2011
Definition: item_subselect.h:78
void add_trig_func_tables()
Definition: item_cmpfunc.h:866
enum_query_type
Query type constants (usable as bitmap flags).
Definition: enum_query_type.h:30
cond_result eq_cmp_result() const override
Definition: item_cmpfunc.h:1105
int compare()
Definition: item_cmpfunc.h:210
Definition: item_cmpfunc.h:1544
enum_field_types default_data_type() const override
Get the default data (output) type for the specific item.
Definition: item_cmpfunc.h:1412
bool m_created_by_in2exists
True <=> this item was added by IN->EXISTS subquery transformation, and should thus be deleted if we ...
Definition: item_cmpfunc.h:330
void store_value(Item *item) override
Definition: item_cmpfunc.h:1835
const char * func_name() const override
Definition: item_cmpfunc.h:2467
void set_null_value(bool nv)
Definition: item_cmpfunc.h:1724
Using this class is fraught with peril, and you need to be very careful when doing so...
Definition: sql_string.h:164
enum_trig_type get_trig_type()
Definition: item_cmpfunc.h:882
void apply_is_true() override
Apply the IS TRUE truth property, meaning that an UNKNOWN result and a FALSE result are treated the s...
Definition: item_cmpfunc.h:2341
StringBuffer< STRING_BUFFER_USUAL_SIZE > value
Definition: item_cmpfunc.h:1730
const char * func_name() const override
Definition: item_cmpfunc.h:1126
in_datetime(MEM_ROOT *mem_root, Item *warn_item_arg, uint elements)
Definition: item_cmpfunc.h:1634
const char * func_name() const override
Definition: item_cmpfunc.h:1106
const char * func_name() const override
Definition: item_cmpfunc.h:1146
int get_first_expr_num() const
Definition: item_cmpfunc.h:1912
Definition: item_cmpfunc.h:1831
Item_field ** ref(void)
Definition: sql_list.h:594
DTCollation cmp_collation
Definition: item_cmpfunc.h:1213
int cmp(Item *arg) override
Definition: item_cmpfunc.h:1751
interval_range * intervals
Definition: item_cmpfunc.h:1295
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size...
Definition: item_cmpfunc.h:2201
void apply_is_true() override
Apply the IS TRUE truth property, meaning that an UNKNOWN result and a FALSE result are treated the s...
Definition: item_cmpfunc.h:1201
Item * truth_transformer(THD *, Bool_test test) override
Informs an item that it is wrapped in a truth test, in case it wants to transforms itself to implemen...
Definition: item_cmpfunc.h:1203
table_map used_tables() const override
Definition: item_cmpfunc.h:2335
enum_trig_type
Definition: item_cmpfunc.h:799
void value_to_item(uint pos, Item_basic_constant *item) const override
Store the value at position pos into provided item object.
Definition: item_cmpfunc.h:1588
Definition: item_cmpfunc.h:2099
String value2
Definition: item_cmpfunc.h:165
Structure to return status from str_to_datetime(), str_to_time(), number_to_datetime(), number_to_time()
Definition: my_time.h:158
cond_result
Definition: item.h:844
Item * const_item
Definition: item_cmpfunc.h:2432
bool subst_argument_checker(uchar **) override
Definition: item_cmpfunc.h:682
Mem_root_array< cmp_item_row > base_objects
Definition: item_cmpfunc.h:2101
Item_func_match_predicate(Item *a)
Definition: item_cmpfunc.h:747
cond_result eq_cmp_result() const override
Definition: item_cmpfunc.h:1125
Definition: item_cmpfunc.h:550
Item_func_xor(Item *i1, Item *i2)
Definition: item_cmpfunc.h:698
virtual ~cmp_item()
Definition: item_cmpfunc.h:1692
Ge_creator ge_creator
Definition: mysqld.cc:1434
Item_func_ne(Item *a, Item *b)
Definition: item_cmpfunc.h:1161
cmp_item * case_item
Definition: item_cmpfunc.h:1887
int8 plan_idx
This represents the index of a JOIN_TAB/QEP_TAB in an array.
Definition: sql_opt_exec_shared.h:39
bool eqne_op() const override
Definition: item_cmpfunc.h:592
const table_map m_left_used_tables
Definition: item_cmpfunc.h:113
Item_func_equal(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:1058
A predicate that is "always true".
Definition: item_cmpfunc.h:360
bool fix_fields(THD *, Item **ref) override
Definition: item_func.cc:271
Definition: item_cmpfunc.h:291
Item_func_like(const POS &pos, Item *a, Item *b, Item *opt_escape_arg)
Definition: item_cmpfunc.h:2241
longlong val_int() override
Definition: item_cmpfunc.h:749
enum_trig_type trig_type
Type of trig_var; for printing.
Definition: item_cmpfunc.h:834
#define DBUG_ASSERT(A)
Definition: my_dbug.h:199
in_decimal(MEM_ROOT *mem_root, uint elements)
Definition: item_cmpfunc.h:1669
const char * symbol(bool invert) const override
This interface is only used by Item_allany_subselect.
Definition: item_cmpfunc.h:591
bool is_alloced() const
Definition: sql_string.h:412
Item_bool_func(const POS &pos, Item *a)
Definition: item_cmpfunc.h:298
optimize_type select_optimize(const THD *) override
Definition: item_cmpfunc.h:2468
Definition: item_cmpfunc.h:131
Definition: item_cmpfunc.h:2430
Item_cache ** get_cache()
Definition: item_cmpfunc.h:501
Item_func_truth(const POS &pos, Item *a, Bool_test truth_test)
Definition: item_cmpfunc.h:408
plan_idx idx() const
Definition: item_cmpfunc.h:885
Item_func_any_value(const POS &pos, Item *a)
Definition: item_cmpfunc.h:1384
const char * symbol(bool invert) const override
This interface is only used by Item_allany_subselect.
Definition: item_cmpfunc.h:552
unique_ptr_destroy_only< Json_wrapper > m_value
Cached JSON value to look up.
Definition: item_cmpfunc.h:1768
Mem_root_array< String > base_objects
Definition: item_cmpfunc.h:1547
bool set_cmp_func()
Definition: item_cmpfunc.h:625
bool append(const String &s)
Definition: sql_string.cc:443
Definition: item_cmpfunc.h:1570
const Arg_comparator * get_comparator() const
Definition: item_cmpfunc.h:659
void print(const THD *, String *str, enum_query_type) const override
This method is used for to:
Definition: item_cmpfunc.h:367
Mem_root_array< double > base
Definition: item_cmpfunc.h:1646
char * pos
Definition: do_ctype.cc:76
A class that represents a join condition in a hash join.
Definition: item_cmpfunc.h:85
static void ensure_multi_equality_fields_are_available(Item **args, int arg_idx, table_map available_tables)
Definition: item_cmpfunc.cc:7536
const char * func_name() const override
Definition: item_cmpfunc.h:751
bool equality_substitution_analyzer(uchar **) override
Definition: item_cmpfunc.h:968
bool eqne_op() const override
Definition: item_cmpfunc.h:526
Implements the comparison operator not equals (<>)
Definition: item_cmpfunc.h:1159
Item_bool_func()
Definition: item_cmpfunc.h:293
int compare(const cmp_item *ci) const override
Definition: item_cmpfunc.h:1843
Bison "location" class.
Definition: parse_location.h:42
Item_func_eq(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:960
Bool_test truth_test
The value we're testing for.
Definition: item_cmpfunc.h:450
Item_func_eq * join_condition() const
Definition: item_cmpfunc.h:89
Item_func_opt_neg(const POS &pos, PT_item_list *list, bool is_negation)
Definition: item_cmpfunc.h:1194
Item * warn_item
An item used to issue warnings.
Definition: item_cmpfunc.h:1631
const char * func_name() const override
Definition: item_cmpfunc.h:1309
Definition: item_cmpfunc.h:1727
Item_func_opt_neg(const POS &pos, Item *a, Item *b, Item *c, bool is_negation)
Definition: item_cmpfunc.h:1190
Item_func_comparison(Item *a, Item *b)
Definition: item_cmpfunc.h:672
Item * get_const()
Definition: item_cmpfunc.h:2448
Item * make_condition(Parse_context *pc, Item *item)
Ensure that all expressions involved in conditions are boolean functions.
Definition: item_cmpfunc.cc:5231
bool is_null() override
The method allows to determine nullness of a complex expression without fully evaluating it...
Definition: item_cmpfunc.h:647
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size...
Definition: item_cmpfunc.cc:621
Item_bool_func2(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:619
Item class, to represent X IS [NOT] (TRUE | FALSE) boolean predicates.
Definition: item_cmpfunc.h:391
Definition: item_cmpfunc.h:1185
Definition: my_bitmap.h:41
Item_cond_or(Item *i1, Item *i2)
Definition: item_cmpfunc.h:2578
cmp_item()
Definition: item_cmpfunc.h:1691
void set_max_str_length(size_t max_str_length)
When comparing strings, compare at most max_str_length bytes.
Definition: item_cmpfunc.h:633
Item_func_strcmp(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:1266
Item_field * operator++(int)
Definition: item_cmpfunc.h:2535
uint n
Definition: item_cmpfunc.h:2071
my_decimal class limits 'decimal_t' type to what we need in MySQL.
Definition: my_decimal.h:91
bool equality_substitution_analyzer(uchar **) override
Definition: item_cmpfunc.h:2507
Item_func_coalesce(const POS &pos, Item *a)
Definition: item_cmpfunc.h:1327
Definition: item_cmpfunc.h:2222
Functype
Definition: item_func.h:168
Definition: item_cmpfunc.h:2168
Definition: udf_registration_types.h:39
cmp_item_row(THD *thd, Item *item)
Definition: item_cmpfunc.h:2075
void update_not_null_tables()
Definition: item_cmpfunc.h:1253
double
Definition: udf_registration_types.h:42
bool subst_argument_checker(uchar **) override
Definition: item_cmpfunc.h:1209
cond_result eq_cmp_result() const override
Definition: item_cmpfunc.h:1066
bool unsigned_flag
Definition: item_cmpfunc.h:1572
List< Item_equal > current_level
Definition: item_cmpfunc.h:2526
Implements the comparison operator greater than or equals (>=)
Definition: item_cmpfunc.h:1079
Definition: item_cmpfunc.h:1645
void set_created_by_in2exists()
Definition: item_cmpfunc.h:316
Header for compiler-dependent features.
Abstract factory interface for creating comparison predicates.
Definition: item_cmpfunc.h:511
const char * symbol(bool invert) const override
This interface is only used by Item_allany_subselect.
Definition: item_cmpfunc.h:543
void update_not_null_tables()
Definition: item_cmpfunc.h:1425
Definition: item_cmpfunc.h:1358
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:2014
Item_is_not_null_test(Item_in_subselect *ow, Item *a)
Definition: item_cmpfunc.h:2172
Definition: item_cmpfunc.h:1290
enum_field_types
Column types for MySQL.
Definition: field_types.h:52
uint16_t uint16
Definition: my_inttypes.h:64
Item_bool_func(THD *thd, Item_bool_func *item)
Definition: item_cmpfunc.h:306
unsigned int uint
Definition: uca-dump.cc:29
#define final(a, b, c)
Definition: hash.c:109
Item_cond_or()
Definition: item_cmpfunc.h:2576
virtual bool is_row_result() const
Definition: item_cmpfunc.h:1519
Definition: item_cmpfunc.h:797
bool null_value
True if item is null.
Definition: item.h:3228
plan_idx m_idx
Optional: if join!=NULL: index of table.
Definition: item_cmpfunc.h:832
#define true
Definition: config_static.h:44
void(* Cond_traverser)(const Item *item, void *arg)
Definition: item.h:718
void copy_andor_arguments(THD *thd, Item_cond *item)
Definition: item_cmpfunc.cc:5273
bool field_type_defined
Definition: item_cmpfunc.h:1360
long long int longlong
Definition: my_inttypes.h:54
virtual ~in_vector()
Definition: item_cmpfunc.h:1485
Definition: item_cmpfunc.h:715
COND_EQUAL()
Definition: item_cmpfunc.h:2528
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item.cc:10237
const char * func_name() const override
Definition: item_cmpfunc.h:2176
int first_expr_num
Definition: item_cmpfunc.h:1880
Type
Definition: item.h:811
const CHARSET_INFO * collation
Definition: item.h:173
void sort(Node_cmp_func cmp)
Sort the list.
Definition: sql_list.h:531
List< Item > list
Definition: item_cmpfunc.h:2294
Item_bool_func2 super
Definition: item_cmpfunc.h:2223
void set_comparator(uint col, cmp_item *comparator)
Definition: item_cmpfunc.h:2110
stdx::expected< int, std::error_code > create()
Create the dblwr data structures in the system tablespace.
Definition: linux_epoll.h:59
Item_func_ifnull(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:1363
const char * func_name() const override
Definition: item_cmpfunc.h:722
COND_EQUAL cond_equal
Definition: item_cmpfunc.h:2544
const char * func_name() const override
Definition: item_cmpfunc.h:1354
Item_int_func super
Definition: item_cmpfunc.h:1291
table_map not_null_tables() const override
Definition: item_cmpfunc.h:950
Bool_test
< Modifier for result transformation
Definition: item.h:858
Le_creator le_creator
Definition: mysqld.cc:1435
optimize_type select_optimize(const THD *) override
Definition: item_cmpfunc.h:636
const char * func_name() const override
Definition: item_cmpfunc.h:1929
type
Definition: base.h:36
It is interface module to fixed precision decimals library.
double precision
Definition: item_cmpfunc.h:138
optimize_type select_optimize(const THD *) override
Definition: item_cmpfunc.h:1231
Definition: item_func.h:888
bool get_mysql_time_from_str_no_warn(THD *thd, String *str, MYSQL_TIME *l_time, MYSQL_TIME_STATUS *status)
A minion of get_mysql_time_from_str, see its description.
Definition: item_cmpfunc.cc:841
Item_func_ge(Item *a, Item *b)
Definition: item_cmpfunc.h:1081
Item_func_eq(Item *a, Item *b)
Definition: item_cmpfunc.h:959
Definition: m_ctype.h:359
Item_func_isnotnull(Item *a)
Definition: item_cmpfunc.h:2194
virtual String * val_str(String *str)=0
Definition: item_cmpfunc.h:2531
Item which stores (x,y,...) and ROW(x,y,...).
Definition: item_row.h:53
int sortcmp(const String *a, const String *b, const CHARSET_INFO *cs)
Definition: sql_string.cc:718
bool fix_fields(THD *thd, Item **ref) override
Definition: item_cmpfunc.h:861
int compare_datetime()
Compare item values as dates.
Definition: item_cmpfunc.cc:1552
void update_used_tables() override
Updates used tables, not null tables information and accumulates properties up the item tree...
Definition: item_cmpfunc.h:875
Item_basic_constant * create_item(MEM_ROOT *) const override
Create an instance of Item_{type} (e.g.
Definition: item_cmpfunc.h:2113
const CHARSET_INFO * compare_collation() const override
Definition: item_cmpfunc.h:1933
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:89
Item_func_case(const POS &pos, mem_root_deque< Item *> *list, Item *first_expr_arg, Item *else_expr_arg)
Definition: item_cmpfunc.h:1890
Definition: item_cmpfunc.h:563
#define OUTER_REF_TABLE_BIT
Definition: sql_const.h:109
bool show
Definition: item_cmpfunc.h:898
bool ignore_unknown() const
Treat UNKNOWN result like FALSE because callers see no difference.
Definition: item_cmpfunc.h:654
Arg_comparator cmp
Definition: item_cmpfunc.h:2434
bool is_bool_func() const override
This is a workaround for the broken inheritance hierarchy: this should inherit from Item_func instead...
Definition: item_cmpfunc.h:1466
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_cmpfunc.h:655
Item * copy_andor_structure(THD *thd) override
Definition: item_cmpfunc.h:2586
void sort(Node_cmp_func compare)
Order field items in multiple equality according to a sorting criteria.
Definition: item_cmpfunc.h:2493
Definition: item_cmpfunc.h:1473
Item * left_extractor() const
Definition: item_cmpfunc.h:91
Definition: item_func.h:741
Item_func_coalesce(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:1323
CASE ...
Definition: item_cmpfunc.h:1877
Item_func_not(const POS &pos, Item *a)
Definition: item_cmpfunc.h:718
table_map get_initial_pseudo_tables() const override
We add RAND_TABLE_BIT to prevent moving this item from HAVING to WHERE.
Definition: item_cmpfunc.h:2183
optimize_type select_optimize(const THD *) override
Definition: item_cmpfunc.h:1269
std::unique_ptr< T, Destroy_only< T > > unique_ptr_destroy_only
std::unique_ptr, but only destroying.
Definition: my_alloc.h:409
void apply_is_true() override
Apply the IS TRUE truth property, meaning that an UNKNOWN result and a FALSE result are treated the s...
Definition: item_cmpfunc.h:706
Item_func_true()
Definition: item_cmpfunc.h:362
Item_func_not(Item *a)
Definition: item_cmpfunc.h:717
static MEM_ROOT mem_root
Definition: client_plugin.cc:109
Definition: item_cmpfunc.h:580
const char * symbol(bool invert) const override
This interface is only used by Item_allany_subselect.
Definition: item_cmpfunc.h:599
String tmp_value
Definition: item_cmpfunc.h:1882
optimize_type select_optimize(const THD *) override
Definition: item_cmpfunc.h:2005
cmp_item which stores a scalar (i.e. non-ROW).
Definition: item_cmpfunc.h:1721
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:1108
Definition: item_cmpfunc.h:2192
Type type() const override
Definition: item_cmpfunc.h:2332
Item_func_xor(const POS &pos, Item *i1, Item *i2)
Definition: item_cmpfunc.h:699
bool(Item::* Item_processor)(uchar *arg)
Processor type for {Item,SELECT_LEX[_UNIT],Table_function}walk.
Definition: sql_const.h:456
Item_cond()
Definition: item_cmpfunc.h:2299
unsigned int my_time_flags_t
Flags to str_to_datetime and number_to_datetime.
Definition: my_time.h:82
Item_basic_constant * create_item(MEM_ROOT *mem_root) const override
Create an instance of Item_{type} (e.g.
Definition: item_cmpfunc.h:1605
const JOIN * m_join
Optional: JOIN of table which is the source of trig_var.
Definition: item_cmpfunc.h:830
bool eqne_op() const override
Definition: item_cmpfunc.h:584
Definition: item_cmpfunc.h:1284
Mem_root_array< packed_longlong > base
Definition: item_cmpfunc.h:1576
Item_maxmin_subselect * test_sub_item
Definition: item_cmpfunc.h:893
void store_value(Item *item) override
Definition: item_cmpfunc.h:1795
bool set_cmp_func(Item_result_field *owner_arg, Item **left, Item **right, Item_result type)
Sets compare functions for various datatypes.
Definition: item_cmpfunc.cc:1094
Definition: item_cmpfunc.h:1765
Abstract base class for the comparison operators =, <> and <=>.
Definition: item_cmpfunc.h:523
bool use_decimal_comparison
Definition: item_cmpfunc.h:1294
Item_result_field * owner
Definition: item_cmpfunc.h:135
bool escape_is_evaluated() const
Has the escape clause been evaluated? It only needs to be evaluated once per execution, since we require it to be constant during execution.
Definition: item_cmpfunc.h:2270
const char * symbol(bool invert) const override
This interface is only used by Item_allany_subselect.
Definition: item_cmpfunc.h:583
traverse_order
Definition: item.h:846
Definition: item_cmpfunc.h:1601
Item_bool_func(Item *a, Item *b)
Definition: item_cmpfunc.h:301
Definition: item_cmpfunc.h:1629
Item_func_isnotnull(const POS &pos, Item *a)
Definition: item_cmpfunc.h:2195
Arg_comparator cmp
Definition: item_cmpfunc.h:610
bool l_op() const override
Definition: item_cmpfunc.h:593
const char * func_name() const override
Definition: item_cmpfunc.h:1270
ANY_VALUE(expr) is like expr except that it is not checked by aggregate_check logic.
Definition: item_cmpfunc.h:1382
Definition: item_cmpfunc.h:1665
bool fix_fields(THD *, Item **) override
Definition: item_cmpfunc.h:353
Definition: mysql_time.h:81
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_cmpfunc.h:752
void print(const THD *, String *str, enum_query_type) const override
This method is used for to:
Definition: item_cmpfunc.h:382
bool m_store_full_sort_key
Definition: item_cmpfunc.h:128
Item_basic_constant * create_item(MEM_ROOT *mem_root) const override
Create an instance of Item_{type} (e.g.
Definition: item_cmpfunc.h:1617
void value_to_item(uint pos, Item_basic_constant *item) const override
Store the value at position pos into provided item object.
Definition: item_cmpfunc.h:1674
const char * func_name() const override
Definition: item_cmpfunc.h:379
enum_mysql_timestamp_type
Definition: mysql_time.h:44
Mem_root_array< my_decimal > base
Definition: item_cmpfunc.h:1666
bool cast_incompatible_args(uchar *) override
Wrap incompatible arguments in CAST nodes to the expected data types.
Definition: item_cmpfunc.h:2469
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_cmpfunc.h:355
Item_result get_compare_type() const
Definition: item_cmpfunc.h:244
uint decimal_precision() const override
Definition: item_cmpfunc.h:1450
Wrapper class when MATCH function is used in WHERE clause.
Definition: item_cmpfunc.h:745
const char * func_name() const override
Definition: item_cmpfunc.h:966
Equal_creator equal_creator
Definition: mysqld.cc:1431
int(Arg_comparator::* arg_cmp_func)()
Definition: item_cmpfunc.h:72
bool l_op() const override
Definition: item_cmpfunc.h:527
void update_used_tables() override
Updates used tables, not null tables information and accumulates properties up the item tree...
Definition: item_func.cc:586
DTCollation collation
Character set and collation properties assigned for this Item.
Definition: item.h:3134
void apply_is_true() override
Apply the IS TRUE truth property, meaning that an UNKNOWN result and a FALSE result are treated the s...
Definition: item_cmpfunc.h:652
in_time_as_longlong(MEM_ROOT *mem_root, uint elements)
Definition: item_cmpfunc.h:1615
Mem_root_array< cmp_item_row * > base_pointers
Definition: item_cmpfunc.h:2103
Definition: item_cmpfunc.h:1791
const String * value_res
Definition: item_cmpfunc.h:1729
uint elements
Definition: sql_list.h:135
Item_func_if(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_cmpfunc.h:1398
table_map not_null_tables() const override
Definition: item_cmpfunc.h:918
my_decimal dec
Definition: item_cmpfunc.h:1287
bool is_row_result() const override
Definition: item_cmpfunc.h:2107
bool compare_as_temporal_times
Definition: item_cmpfunc.h:1221
longlong val
Definition: item_cmpfunc.h:1571
enum_field_types default_data_type() const override
Get the default data (output) type for the specific item.
Definition: item_cmpfunc.h:1336
Item * copy_andor_structure(THD *thd) override
Definition: item_cmpfunc.h:2557
Definition: item_cmpfunc.h:2521
Item * and_conds(Item *a, Item *b)
Builds condition: (a AND b) IS TRUE.
Definition: item_cmpfunc.h:2602
DTCollation cmp_collation
Definition: item_cmpfunc.h:1978
bool abort_on_null
Definition: item_cmpfunc.h:611
Item_func_bool_const(const POS &pos)
Definition: item_cmpfunc.h:347
Definition: sql_list.h:588
uint max_members
Definition: item_cmpfunc.h:2523
void update_not_null_tables()
Definition: item_cmpfunc.h:2021
void get_date(char *to, int flag, time_t date)
Store textual representation of date in a character array.
Definition: my_systime.cc:107
Item_func_true(const POS &pos)
Definition: item_cmpfunc.h:363
void prepend(List< T > *list)
Definition: sql_list.h:465
Item_bool_func super
Definition: item_cmpfunc.h:2129
void print_op(const THD *thd, String *str, enum_query_type query_type) const
Definition: item_func.cc:614
Item_bool_func(const POS &pos)
Definition: item_cmpfunc.h:294
Ne_creator ne_creator
Definition: mysqld.cc:1430
Item_basic_constant * create_item(MEM_ROOT *mem_root) const override
Create an instance of Item_{type} (e.g.
Definition: item_cmpfunc.h:1651
cond_result eq_cmp_result() const override
Definition: item_cmpfunc.h:1145
Definition: field_types.h:69
void set_max_str_length(size_t max_length)
When comparing strings, compare at most max_length bytes.
Definition: item_cmpfunc.h:209
if(!(yy_init))
Definition: lexyy.cc:1144
longlong cached_value
Definition: item_cmpfunc.h:2133
Definition: item_cmpfunc.h:1613
bool created_by_in2exists() const override
Whether this Item was created by the IN->EXISTS subquery transformation.
Definition: item_cmpfunc.h:315
Time declarations shared between the server and client API: you should not add anything to this heade...
Item with result field.
Definition: item.h:5295
const char * func_name() const override
Definition: item_cmpfunc.h:403
const CHARSET_INFO * compare_collation() const override
Definition: item_cmpfunc.h:1241
Item_func_equal(Item *a, Item *b)
Definition: item_cmpfunc.h:1055
Mem_root_array< String * > base_pointers
Definition: item_cmpfunc.h:1549
void apply_is_true() override
Apply the IS TRUE truth property, meaning that an UNKNOWN result and a FALSE result are treated the s...
Definition: item_cmpfunc.h:2213
double dbl
Definition: item_cmpfunc.h:1286
bool ignore_unknown() const
Treat UNKNOWN result like FALSE because callers see no difference.
Definition: item_cmpfunc.h:2352
void set_cmp_context_for_datetime()
Definition: item_cmpfunc.h:238
bool store_full_sort_key() const
Definition: item_cmpfunc.h:103
unique_ptr_destroy_only< cmp_item_row > tmp
Definition: item_cmpfunc.h:2100
void negate()
Definition: item_cmpfunc.h:1200
Definition: item_cmpfunc.h:1321
const CHARSET_INFO * compare_collation() const override
Definition: item_cmpfunc.h:2503
uint get_child_comparator_count() const
Definition: item_cmpfunc.h:246
Implements the comparison operator less than (<)
Definition: item_cmpfunc.h:1139
Target down_cast(Source *arg)
Casts from one pointer type to another in a type hierarchy.
Definition: template_utils.h:94
Item_cond(Item *i1, Item *i2)
Definition: item_cmpfunc.h:2300
uint64_t table_map
Definition: my_table_map.h:29
Definition: item_cmpfunc.h:2128
void set_comparator(uint col, cmp_item *comparator)
Definition: item_cmpfunc.h:2091
Definition: item_cmpfunc.h:1850
Definition: item_subselect.h:361
void set_const(Item *c)
Definition: item_cmpfunc.h:2449
bool * trig_var
Pointer to trigger variable.
Definition: item_cmpfunc.h:828
bool * get_trig_var()
Definition: item_cmpfunc.h:881
Definition: item_cmpfunc.h:945
const string value("\alue\)
Item * truth_transformer(THD *, Bool_test) override
Informs an item that it is wrapped in a truth test, in case it wants to transforms itself to implemen...
Definition: item_cmpfunc.h:1068
const size_t m_max_character_length
Definition: item_cmpfunc.h:120
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_cmpfunc.h:1456
Definition: item_cmpfunc.h:2069
static STATUS status
Definition: mysql.cc:199
Interface for low level time utilities.
Item_func_lt(Item *a, Item *b)
Definition: item_cmpfunc.h:1141
Representation of IN subquery predicates of the form "left_expr IN (SELECT ...)". ...
Definition: item_subselect.h:514
static bool contains(const std::vector< std::string > &container, const std::string &file)
Definition: config_files.cc:42
const char * func_name() const override
Definition: item_cmpfunc.h:912
int cmp(Item *arg) override
Definition: item_cmpfunc.h:1839
bool has_date
Distinguish between DATE/DATETIME/TIMESTAMP and TIME.
Definition: item_cmpfunc.h:1822
Abstract base class for the MIN and MAX aggregate functions.
Definition: item_sum.h:1536
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:77
bool is_bool_func() const override
Definition: item_cmpfunc.h:2010
bool val_bool() override
Definition: item_cmpfunc.h:365
bool compare_as_dates
Definition: item_cmpfunc.h:2436
longlong get_datetime_value(THD *thd, Item ***item_arg, Item **cache_arg, const Item *warn_item, bool *is_null)
Retrieve correct DATETIME value from given item.
Definition: item_cmpfunc.cc:1461
Item_cond_or(const POS &pos, Item *i1, Item *i2)
Definition: item_cmpfunc.h:2579
#define STRING_BUFFER_USUAL_SIZE
Definition: sql_const.h:126
bool push_back(T *a)
Definition: sql_list.h:445
int cmp(Item *arg) override
Definition: item_cmpfunc.h:1799
Item_func_trig_cond(Item *a, bool *f, const JOIN *join, plan_idx idx, enum_trig_type trig_type_arg)
Definition: item_cmpfunc.h:846
uint decimal_precision() const override
Definition: item_cmpfunc.h:314
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_cmpfunc.h:1273
Definition: item_cmpfunc.h:572
Item_sum_hybrid * test_sum_item
Definition: item_cmpfunc.h:892
bool have_rev_func() const override
Definition: item_cmpfunc.h:640
Item_func_truth(Item *a, Bool_test truth_test)
Definition: item_cmpfunc.h:421
cmp_item * eval_item
Definition: item_cmpfunc.h:2433
const char * func_name() const override
Definition: item_cmpfunc.h:1233
const char * func_name() const override
Definition: item_cmpfunc.h:2009
Item_basic_constant * create_item(MEM_ROOT *mem_root) const override
Create an instance of Item_{type} (e.g.
Definition: item_cmpfunc.h:1554
void set_subselect(Item_subselect *item)
Definition: item_cmpfunc.h:917
bool abort_on_null
Definition: item_cmpfunc.h:895
const JOIN * get_join() const
Definition: item_cmpfunc.h:879
void set_sum_test(Item_sum_hybrid *item)
Definition: item_cmpfunc.h:915
void store_value(Item *item) override
Definition: item_cmpfunc.h:1741
Definition: item_cmpfunc.h:1212
bool abort_on_null
Definition: item_cmpfunc.h:2295
my_decimal value
Definition: item_cmpfunc.h:1851
T * head()
Definition: sql_list.h:457
longlong value
Definition: item_cmpfunc.h:1816
uint decimal_precision() const override
Definition: item_cmpfunc.h:1993
bool m_null_value
If stored value is NULL.
Definition: item_cmpfunc.h:1723
String tmp
Definition: item_cmpfunc.h:1546
#define false
Definition: config_static.h:43
bool eqne_op() const override
Definition: item_cmpfunc.h:576
Definition: field_types.h:72
Definition: item_cmpfunc.h:541
bool pred_level
Definition: item_cmpfunc.h:1188
Definition: item_cmpfunc.h:1568
void rewind(void)
Definition: item_cmpfunc.h:2539
void add_at_head(List< Item > *nlist)
Definition: item_cmpfunc.h:2321
bool compare_as_temporal_dates
Definition: item_cmpfunc.h:1220
static int compare(size_t a, size_t b)
Function to compare two size_t integers for their relative order.
Definition: rpl_utility.cc:104
Definition: item_cmpfunc.h:2542
const char * func_name() const override
Definition: item_cmpfunc.h:703
Item_cond_and(THD *thd, Item_cond_and *item)
Definition: item_cmpfunc.h:2552
Item_func_not_all(Item *a)
Definition: item_cmpfunc.h:900
bool transform(const dd::Spatial_reference_system *source_srs, const Geometry &in, const dd::Spatial_reference_system *target_srs, const char *func_name, std::unique_ptr< Geometry > *out) noexcept
Transforms a geometry from one SRS to another.
Definition: transform.cc:228
void cleanup()
Definition: item_cmpfunc.cc:716
Item_result cmp_type
Definition: item_cmpfunc.h:1884
Item_in_subselect * owner
Definition: item_cmpfunc.h:2169
size_t max_character_length() const
Definition: item_cmpfunc.h:101
const char * func_name() const override
Definition: item_cmpfunc.h:1420
Item_basic_constant * create_item(MEM_ROOT *mem_root) const override
Create an instance of Item_{type} (e.g.
Definition: item_cmpfunc.h:1671
Definition: item_cmpfunc.h:1264
const CHARSET_INFO * compare_collation() const override
Definition: item_cmpfunc.h:648
String m_str_value
String buffer.
Definition: item_cmpfunc.h:1772
This trigger type deactivates predicated from WHERE condition when no row satisfying the join conditi...
Definition: item_cmpfunc.h:814
Item_func_bool_const()
Definition: item_cmpfunc.h:341
Item_func_nullif(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:1435
bool ignore_unknown() const
Treat UNKNOWN result like FALSE because callers see no difference.
Definition: item_cmpfunc.h:909
The <=> operator evaluates the same as.
Definition: item_cmpfunc.h:1053
This file follows Google coding style, except for the name MEM_ROOT (which is kept for historical rea...
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_class.h:803
Item_bool_func super
Definition: item_cmpfunc.h:2291
Dialog Client Authentication nullptr
Definition: dialog.cc:353
Item * escape_item
Definition: item_cmpfunc.h:2225
in_datetime_as_longlong(MEM_ROOT *mem_root, uint elements)
Definition: item_cmpfunc.h:1603
bool push_front(T *a)
Definition: sql_list.h:451
const char * func_name() const override
'<if>', to distinguish from the if() SQL function
Definition: item_cmpfunc.h:856
Item_cond_and()
Definition: item_cmpfunc.h:2547
enum_field_types default_data_type() const override
Get the default data (output) type for the specific item.
Definition: item_cmpfunc.h:1445
Item_cond_and(List< Item > &list_arg)
Definition: item_cmpfunc.h:2553
Item_bool_func2(Item *a, Item *b)
Definition: item_cmpfunc.h:614
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:1148
cmp_item ** comparators
Definition: item_cmpfunc.h:2070
virtual void store_value_by_template(cmp_item *, Item *item)
Definition: item_cmpfunc.h:1715
bool negated
Definition: item_cmpfunc.h:1187