1#ifndef ITEM_CMPFUNC_INCLUDED
2#define ITEM_CMPFUNC_INCLUDED
238 if ((*left)->is_temporal()) (*left)->cmp_context =
INT_RESULT;
239 if ((*right)->is_temporal()) (*right)->cmp_context =
INT_RESULT;
259 bool *is_null)
const;
280 const Item *warn_item,
bool *is_null){
nullptr};
285 const Item *warn_item,
bool *is_null){
nullptr};
380 const char *
func_name()
const override {
return "true"; }
395 const char *
func_name()
const override {
return "false"; }
399 str->append(
"false");
516 const char *
func_name()
const override {
return "<in_optimizer>"; }
528 virtual const char *
symbol(
bool invert)
const = 0;
537 bool eqne_op()
const override {
return true; }
538 bool l_op()
const override {
return false; }
554 const char *
symbol(
bool invert)
const override {
return invert ?
"<>" :
"="; }
563 const char *
symbol(
bool invert [[maybe_unused]])
const override {
576 const char *
symbol(
bool invert)
const override {
return invert ?
"=" :
"<>"; }
586 const char *
symbol(
bool invert)
const override {
return invert ?
"<=" :
">"; }
587 bool eqne_op()
const override {
return false; }
588 bool l_op()
const override {
return false; }
594 const char *
symbol(
bool invert)
const override {
return invert ?
">=" :
"<"; }
595 bool eqne_op()
const override {
return false; }
596 bool l_op()
const override {
return true; }
602 const char *
symbol(
bool invert)
const override {
return invert ?
"<" :
">="; }
603 bool eqne_op()
const override {
return false; }
604 bool l_op()
const override {
return false; }
610 const char *
symbol(
bool invert)
const override {
return invert ?
">" :
"<="; }
611 bool eqne_op()
const override {
return false; }
612 bool l_op()
const override {
return true; }
717 const char *
func_name()
const override {
return "xor"; }
726 double rows_in_table)
override;
736 const char *
func_name()
const override {
return "not"; }
744 double rows_in_table)
override;
765 const char *
func_name()
const override {
return "match"; }
774 double rows_in_table)
override {
776 fields_to_ignore, rows_in_table);
870 const char *
func_name()
const override {
return "<if>"; }
882 assert(
m_join !=
nullptr);
931 const char *
func_name()
const override {
return "<not>"; }
968 const char *
func_name()
const override {
return "<nop>"; }
1006 bool is_multi_column_key,
1007 String *join_key_buffer) const;
1062 double rows_in_table)
override;
1132 double rows_in_table)
override;
1152 double rows_in_table)
override;
1172 double rows_in_table)
override;
1192 double rows_in_table)
override;
1205 const char *
func_name()
const override {
return "reject_if"; }
1213 double rows_in_table)
override;
1244 double rows_in_table)
override;
1264 double rows_in_table)
override;
1282 :
Item_int_func(pos, a, b, c), negated(false), pred_level(false) {
1283 if (is_negation) negate();
1287 if (is_negation) negate();
1299 bool eq(
const Item *item,
bool binary_cmp)
const override;
1318 compare_as_dates_with_strings(false),
1319 compare_as_temporal_dates(false),
1320 compare_as_temporal_times(false) {}
1324 const char *
func_name()
const override {
return "between"; }
1341 double rows_in_table)
override;
1346 if (pred_level && !negated)
return;
1394 :
super(pos, alloc_row(pos,
mem_root, expr1, expr2, opt_expr_list)),
1403 const char *
func_name()
const override {
return "interval"; }
1438 double real_op()
override;
1453 const char *
func_name()
const override {
return "coalesce"; }
1464 double real_op()
override;
1484 const char *
func_name()
const override {
return "any_value"; }
1631 bool fill(
Item **items,
uint item_count);
1656 bool find_item(
Item *item)
override;
1657 bool compare_elems(
uint pos1,
uint pos2)
const override;
1661 void sort_array()
override;
1685 down_cast<Item_int *>(item)->value = base[pos].val;
1688 bool find_item(
Item *item)
override;
1689 bool compare_elems(
uint pos1,
uint pos2)
const override;
1692 void set(
uint pos,
Item *item)
override { val_item(item, &base[pos]); }
1693 void sort_array()
override;
1694 virtual void val_item(
Item *item, packed_longlong *
result);
1706 void val_item(
Item *item, packed_longlong *
result)
override;
1718 void val_item(
Item *item, packed_longlong *
result)
override;
1738 void val_item(
Item *item, packed_longlong *
result)
override;
1751 down_cast<Item_float *>(item)->value = base[pos];
1753 bool find_item(
Item *item)
override;
1754 bool compare_elems(
uint pos1,
uint pos2)
const override;
1758 void sort_array()
override;
1771 down_cast<Item_decimal *>(item)->set_decimal_value(&base[pos]);
1773 bool find_item(
Item *item)
override;
1774 bool compare_elems(
uint pos1,
uint pos2)
const override;
1778 void sort_array()
override;
1845 const cmp_item_string *l_cmp = down_cast<const cmp_item_string *>(ci);
1851 if (res && (res != &value || !res->
is_alloced())) {
1884 void store_value(
Item *item)
override;
1898 const bool rc = value != arg->
val_int();
1902 const cmp_item_int *l_cmp = down_cast<const cmp_item_int *>(ci);
1903 return (value < l_cmp->value) ? -1 : ((value == l_cmp->
value) ? 0 : 1);
1923 void store_value(
Item *item)
override;
1938 const bool rc = value != arg->
val_real();
1942 const cmp_item_real *l_cmp = down_cast<const cmp_item_real *>(ci);
1943 return (value < l_cmp->value) ? -1 : ((value == l_cmp->
value) ? 0 : 1);
1952 void store_value(
Item *item)
override;
1989 Item *first_expr_arg,
Item *else_expr_arg)
1997 ncases =
list->size();
1998 if (first_expr_arg) {
1999 first_expr_num =
list->size();
2000 list->push_back(first_expr_arg);
2002 if (else_expr_arg) {
2003 else_expr_num =
list->size();
2004 list->push_back(else_expr_arg);
2007 memset(&cmp_items, 0,
sizeof(cmp_items));
2058 bool have_null{
false};
2060 bool m_populated{
false};
2064 bool m_values_are_const{
true};
2066 bool m_need_populate{
false};
2072 bool dep_subq_in_list{
false};
2074 bool first_resolve_call{
true};
2083 memset(&cmp_items, 0,
sizeof(cmp_items));
2103 bool populate_bisection(
THD *thd);
2119 double rows_in_table)
override;
2123 if (pred_level && negated)
return;
2129 for (
Item **arg =
args + 1; arg != arg_end; arg++)
2140 bool list_contains_null();
2162 float get_single_col_filtering_effect(
Item_ident *fieldref,
2165 double rows_in_table);
2166 void cleanup_arrays();
2180 allocate_template_comparators(thd, item);
2185 : comparators(other.comparators),
n(other.
n) {
2186 other.comparators =
nullptr;
2191 Item *arg)
override;
2192 void store_value(
Item *item)
override;
2196 void store_value_by_template(
cmp_item *tmpl,
Item *)
override;
2208 bool allocate_template_comparators(
THD *thd,
Item *item);
2230 bool find_item(
Item *item)
override;
2231 bool compare_elems(
uint pos1,
uint pos2)
const override;
2243 void sort_array()
override;
2251 bool cache_used =
false;
2269 double rows_in_table)
override;
2295 const char *
func_name()
const override {
return "<is_not_null_test>"; }
2325 const char *
func_name()
const override {
return "isnotnull"; }
2339 double rows_in_table)
override;
2344 bool escape_is_const =
false;
2346 bool escape_evaluated =
false;
2347 bool eval_escape_clause(
THD *thd);
2355 assert(escape_arg !=
nullptr);
2359 assert(escape_arg !=
nullptr);
2386 assert(escape_is_evaluated());
2401 double rows_in_table)
override;
2413 bool check_covering_prefix_keys(
THD *thd);
2441 return list.push_back(item);
2445 return list.push_front(item);
2449 list.prepend(nlist);
2460 bool eq(
const Item *item,
bool binary_cmp)
const override;
2472 bool truth_transform_arguments(
THD *thd,
Bool_test test);
2476 bool remove_const_conds(
THD *thd,
Item *item,
Item **new_item);
2566 bool cond_false{
false};
2568 bool compare_as_dates{
false};
2579 bool compare_const(
THD *thd,
Item *c);
2593 bool update_const(
THD *thd);
2596 const char *
func_name()
const override {
return "multiple equal"; }
2606 return const_arg() ==
nullptr;
2624 template <
typename Node_cmp_func>
2636 return m_fields->cbegin();
2640 return m_fields->cbegin();
2643 return m_fields->cend();
2652 : m_fields(&item->fields) {}
2654 return m_fields->cbegin();
2658 return m_fields->cbegin();
2661 return m_fields->cend();
2663 size_t size()
const {
return m_fields->size(); }
2677 bool eq(
const Item *item,
bool binary_cmp)
const override;
2679 return fields.
head()->collation.collation;
2689 double rows_in_table)
override;
2733 double rows_in_table)
override;
2762 double rows_in_table)
override;
2771 if (item ==
nullptr)
return nullptr;
2810 down_cast<const Item_cond *>(item)->functype() ==
2820template <
class Func>
2822 if (condition ==
nullptr) {
2824 }
else if (
IsAnd(condition)) {
2825 for (
Item &item : *down_cast<Item_cond_and *>(condition)->argument_list()) {
2832 return func(condition);
Definition: item_cmpfunc.h:139
bool inject_cast_nodes()
Comparison function are expected to operate on arguments having the same data types.
Definition: item_cmpfunc.cc:1319
int compare_time_packed()
Compare arguments using numeric packed temporal representation.
Definition: item_cmpfunc.cc:1857
void cleanup()
Definition: item_cmpfunc.cc:747
uint get_child_comparator_count() const
Definition: item_cmpfunc.h:244
int compare_int_signed_unsigned()
Compare signed (*left) with unsigned (*B)
Definition: item_cmpfunc.cc:1920
String value1
Definition: item_cmpfunc.h:167
void set_datetime_cmp_func(Item_result_field *owner_arg, Item **a1, Item **b1)
Definition: item_cmpfunc.cc:1477
Item * left_cache
Definition: item_cmpfunc.h:148
longlong(* get_value_a_func)(THD *thd, Item ***item_arg, Item **cache_arg, const Item *warn_item, bool *is_null)
A function pointer that is used for retrieving the value from argument "left".
Definition: item_cmpfunc.h:279
int compare_int_unsigned_signed()
Compare unsigned (*left) with signed (*B)
Definition: item_cmpfunc.cc:1941
Arg_comparator * comparators
Definition: item_cmpfunc.h:144
Item_result m_compare_type
Definition: item_cmpfunc.h:289
Arg_comparator * get_child_comparators() const
Definition: item_cmpfunc.h:246
static bool can_compare_as_dates(const Item *a, const Item *b)
Checks whether compare_datetime() can be used to compare items.
Definition: item_cmpfunc.cc:1061
double precision
Definition: item_cmpfunc.h:146
int compare_datetime()
Compare item values as dates.
Definition: item_cmpfunc.cc:1601
uint16 comparator_count
Definition: item_cmpfunc.h:145
Item ** right
Definition: item_cmpfunc.h:141
arg_cmp_func func
Definition: item_cmpfunc.h:142
String value2
Definition: item_cmpfunc.h:167
Item ** left
Definition: item_cmpfunc.h:140
Item ** get_left_ptr() const
Definition: item_cmpfunc.h:261
Json_scalar_holder * json_scalar
Only used by compare_json() in the case where a JSON value is compared to an SQL value.
Definition: item_cmpfunc.h:162
void set_cmp_context_for_datetime()
Definition: item_cmpfunc.h:236
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:1131
static arg_cmp_func comparator_matrix[5]
Definition: item_cmpfunc.h:231
bool use_custom_value_extractors() const
Definition: item_cmpfunc.h:250
int compare()
Definition: item_cmpfunc.h:210
Item_result get_compare_type() const
Definition: item_cmpfunc.h:242
int compare_int_signed()
Definition: item_cmpfunc.cc:1831
int compare_binary_string()
Compare strings byte by byte.
Definition: item_cmpfunc.cc:1760
Item * get_right() const
Definition: item_cmpfunc.h:262
int compare_json()
Compare two Item objects as JSON.
Definition: item_cmpfunc.cc:1693
int compare_real()
Definition: item_cmpfunc.cc:1778
bool set_null
Definition: item_cmpfunc.h:150
static bool get_date_from_const(Item *date_arg, Item *str_arg, ulonglong *const_value)
Check if str_arg is a constant and convert it to datetime packed value.
Definition: item_cmpfunc.cc:986
bool try_year_cmp_func(Item_result type)
Definition: item_cmpfunc.cc:1420
Item * right_cache
Definition: item_cmpfunc.h:149
Item_result_field * owner
Definition: item_cmpfunc.h:143
longlong(* get_value_b_func)(THD *thd, Item ***item_arg, Item **cache_arg, const Item *warn_item, bool *is_null)
Definition: item_cmpfunc.h:284
int compare_real_fixed()
Definition: item_cmpfunc.cc:1813
longlong extract_value_from_argument(THD *thd, Item *item, bool left_argument, bool *is_null) const
Definition: item_cmpfunc.cc:7806
int compare_string()
Definition: item_cmpfunc.cc:1728
int compare_decimal()
Definition: item_cmpfunc.cc:1796
int compare_row()
Definition: item_cmpfunc.cc:1959
bool compare_null_values()
Compare NULL values for two arguments.
Definition: item_cmpfunc.cc:2050
bool set_compare_func(Item_result_field *owner, Item_result type)
Definition: item_cmpfunc.cc:763
DTCollation cmp_collation
Definition: item_cmpfunc.h:165
Arg_comparator(Item **left, Item **right)
Definition: item_cmpfunc.h:171
int compare_int_unsigned()
Compare values as BIGINT UNSIGNED.
Definition: item_cmpfunc.cc:1893
Definition: item_cmpfunc.h:2696
uint max_members
Definition: item_cmpfunc.h:2698
COND_EQUAL * upper_levels
Definition: item_cmpfunc.h:2700
List< Item_equal > current_level
Definition: item_cmpfunc.h:2701
COND_EQUAL()
Definition: item_cmpfunc.h:2703
Abstract factory interface for creating comparison predicates.
Definition: item_cmpfunc.h:522
virtual ~Comp_creator()=default
virtual bool l_op() const =0
virtual bool eqne_op() const =0
virtual Item_bool_func * create(Item *a, Item *b) const =0
virtual const char * symbol(bool invert) const =0
This interface is only used by Item_allany_subselect.
const CHARSET_INFO * collation
Definition: item.h:175
Definition: item_cmpfunc.h:552
Item_bool_func * create_scalar_predicate(Item *a, Item *b) const override
Creates only an item tree node, without attempting to rewrite row constructors.
Definition: item_cmpfunc.cc:282
const char * symbol(bool invert) const override
This interface is only used by Item_allany_subselect.
Definition: item_cmpfunc.h:554
Item_bool_func * combine(List< Item > list) const override
Combines a list of conditions exp op exp.
Definition: item_cmpfunc.cc:287
Definition: item_cmpfunc.h:561
const char * symbol(bool invert) const override
This interface is only used by Item_allany_subselect.
Definition: item_cmpfunc.h:563
Item_bool_func * create_scalar_predicate(Item *a, Item *b) const override
Creates only an item tree node, without attempting to rewrite row constructors.
Definition: item_cmpfunc.cc:291
Item_bool_func * combine(List< Item > list) const override
Combines a list of conditions exp op exp.
Definition: item_cmpfunc.cc:296
Definition: item_cmpfunc.h:599
Item_bool_func * create(Item *a, Item *b) const override
Definition: item_cmpfunc.cc:317
bool l_op() const override
Definition: item_cmpfunc.h:604
bool eqne_op() const override
Definition: item_cmpfunc.h:603
const char * symbol(bool invert) const override
This interface is only used by Item_allany_subselect.
Definition: item_cmpfunc.h:602
Definition: item_cmpfunc.h:583
bool l_op() const override
Definition: item_cmpfunc.h:588
Item_bool_func * create(Item *a, Item *b) const override
Definition: item_cmpfunc.cc:309
bool eqne_op() const override
Definition: item_cmpfunc.h:587
const char * symbol(bool invert) const override
This interface is only used by Item_allany_subselect.
Definition: item_cmpfunc.h:586
A class that represents a join condition in a hash join.
Definition: item_cmpfunc.h:86
const size_t m_max_character_length
Definition: item_cmpfunc.h:125
const table_map m_right_used_tables
Definition: item_cmpfunc.h:119
Item_eq_base * m_join_condition
Definition: item_cmpfunc.h:111
Item * right_extractor() const
Definition: item_cmpfunc.h:93
HashJoinCondition(Item_eq_base *join_condition, MEM_ROOT *mem_root)
Definition: item_cmpfunc.cc:7771
const table_map m_left_used_tables
Definition: item_cmpfunc.h:118
bool store_full_sort_key() const
Definition: item_cmpfunc.h:104
bool left_uses_any_table(table_map tables) const
Definition: item_cmpfunc.h:94
bool m_store_full_sort_key
Definition: item_cmpfunc.h:133
Item * left_extractor() const
Definition: item_cmpfunc.h:92
Item_eq_base * join_condition() const
Definition: item_cmpfunc.h:90
bool m_null_equals_null
Definition: item_cmpfunc.h:136
Item * m_right_extractor
Definition: item_cmpfunc.h:113
bool right_uses_any_table(table_map tables) const
Definition: item_cmpfunc.h:98
Item * m_left_extractor
Definition: item_cmpfunc.h:112
size_t max_character_length() const
Definition: item_cmpfunc.h:102
bool null_equals_null() const
Returns true if this join condition evaluates to TRUE if both operands are NULL.
Definition: item_cmpfunc.h:108
void set_str_value(String *str)
Definition: item.h:3599
Base class for functions that usually take two arguments, which are possibly strings,...
Definition: item_cmpfunc.h:621
bool have_rev_func() const override
Definition: item_cmpfunc.h:655
optimize_type select_optimize(const THD *) override
Definition: item_cmpfunc.h:651
bool abort_on_null
Definition: item_cmpfunc.h:628
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:667
bool convert_constant_arg(THD *thd, Item *field, Item **item, bool *converted)
Definition: item_cmpfunc.cc:607
Item_result compare_type() const
Definition: item_cmpfunc.h:666
Arg_comparator cmp
Definition: item_cmpfunc.h:627
Item_bool_func2(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_cmpfunc.h:639
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_cmpfunc.cc:625
Item_bool_func2(Item *a, Item *b, Item *c)
Definition: item_cmpfunc.h:633
Item_bool_func2(Item *a, Item *b)
Definition: item_cmpfunc.h:630
virtual bool set_cmp_func()
Sets up a comparator of the correct type based on the type of the function's arguments.
Definition: item_cmpfunc.h:648
const CHARSET_INFO * compare_collation() const override
Definition: item_cmpfunc.h:663
bool is_null() override
The method allows to determine nullness of a complex expression without fully evaluating it,...
Definition: item_cmpfunc.h:662
Item_bool_func2(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:636
virtual enum Functype rev_functype() const
Definition: item_cmpfunc.h:654
bool ignore_unknown() const
Treat UNKNOWN result like FALSE because callers see no difference.
Definition: item_cmpfunc.h:669
const Arg_comparator * get_comparator() const
Definition: item_cmpfunc.h:674
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_cmpfunc.h:657
Item * replace_scalar_subquery(uchar *) override
When walking the item tree seeing an Item_singlerow_subselect matching a target, replace it with a su...
Definition: item_cmpfunc.cc:742
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_cmpfunc.h:670
Definition: item_cmpfunc.h:292
Item_bool_func(Item *a)
Definition: item_cmpfunc.h:299
Item_bool_func(Item *a, Item *b, Item *c)
Definition: item_cmpfunc.h:304
Item_bool_func(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:310
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:346
void set_created_by_in2exists()
Definition: item_cmpfunc.h:332
bool created_by_in2exists() const override
Whether this Item was created by the IN->EXISTS subquery transformation.
Definition: item_cmpfunc.h:331
Item_bool_func(const POS &pos)
Definition: item_cmpfunc.h:295
Item_bool_func(THD *thd, Item_bool_func *item)
Definition: item_cmpfunc.h:318
Item_bool_func(Item *a, Item *b)
Definition: item_cmpfunc.h:307
Item_bool_func(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_cmpfunc.h:313
uint decimal_precision() const override
Definition: item_cmpfunc.h:330
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_cmpfunc.h:326
Item_bool_func(const POS &pos, Item *a)
Definition: item_cmpfunc.h:300
bool is_bool_func() const override
Definition: item_cmpfunc.h:325
Item_bool_func()
Definition: item_cmpfunc.h:294
static const Bool_test bool_transform[10][8]
Array that transforms a boolean test according to another.
Definition: item_cmpfunc.h:339
static const char * bool_transform_names[10]
Definition: item_cmpfunc.h:334
Definition: item_cmpfunc.h:2706
Item * copy_andor_structure(THD *thd) override
Definition: item_cmpfunc.h:2721
Item_cond_and(List< Item > &list_arg)
Definition: item_cmpfunc.h:2717
COND_EQUAL cond_equal
Definition: item_cmpfunc.h:2708
const char * func_name() const override
Definition: item_cmpfunc.h:2720
enum Functype functype() const override
Definition: item_cmpfunc.h:2718
Item_cond_and()
Definition: item_cmpfunc.h:2711
Item_cond_and(const POS &pos, Item *i1, Item *i2)
Definition: item_cmpfunc.h:2714
Item_cond_and(Item *i1, Item *i2)
Definition: item_cmpfunc.h:2713
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:2728
Item_cond_and(THD *thd, Item_cond_and *item)
Definition: item_cmpfunc.h:2716
Definition: item_cmpfunc.h:2738
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:2757
enum Functype functype() const override
Definition: item_cmpfunc.h:2747
Item_cond_or(Item *i1, Item *i2)
Definition: item_cmpfunc.h:2742
Item * copy_andor_structure(THD *thd) override
Definition: item_cmpfunc.h:2750
Item_cond_or(List< Item > &list_arg)
Definition: item_cmpfunc.h:2746
Item_cond_or(const POS &pos, Item *i1, Item *i2)
Definition: item_cmpfunc.h:2743
Item_cond_or()
Definition: item_cmpfunc.h:2740
const char * func_name() const override
Definition: item_cmpfunc.h:2749
Item_cond_or(THD *thd, Item_cond_or *item)
Definition: item_cmpfunc.h:2745
Definition: item_cmpfunc.h:2416
void add_at_head(List< Item > *nlist)
Definition: item_cmpfunc.h:2447
bool add_at_head(Item *item)
Definition: item_cmpfunc.h:2443
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:2467
Item_cond(Item *i1, Item *i2)
Definition: item_cmpfunc.h:2426
Item_bool_func super
Definition: item_cmpfunc.h:2417
bool ignore_unknown() const
Treat UNKNOWN result like FALSE because callers see no difference.
Definition: item_cmpfunc.h:2478
void copy_andor_arguments(THD *thd, Item_cond *item)
Definition: item_cmpfunc.cc:5443
table_map used_tables() const override
Definition: item_cmpfunc.h:2461
Item_cond(const POS &pos, Item *i1, Item *i2)
Definition: item_cmpfunc.h:2430
Item_cond(List< Item > &nlist)
Definition: item_cmpfunc.h:2437
bool subst_argument_checker(uchar **) override
Definition: item_cmpfunc.h:2473
List< Item > * argument_list()
Definition: item_cmpfunc.h:2459
Type type() const override
Definition: item_cmpfunc.h:2458
Item_cond()
Definition: item_cmpfunc.h:2425
List< Item > list
Definition: item_cmpfunc.h:2420
bool equality_substitution_analyzer(uchar **) override
Definition: item_cmpfunc.h:2479
bool add(Item *item)
Definition: item_cmpfunc.h:2439
bool abort_on_null
Definition: item_cmpfunc.h:2421
Base class for the equality comparison operators = and <=>.
Definition: item_cmpfunc.h:980
Item_eq_base(Item *a, Item *b)
Definition: item_cmpfunc.h:982
Item_equal * source_multiple_equality
If this equality originally came from a multi-equality, this documents which one it came from (otherw...
Definition: item_cmpfunc.h:1039
bool contains_only_equi_join_condition() const final
Whether this Item is an equi-join condition.
Definition: item_cmpfunc.cc:7379
Item_eq_base(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:983
Item * create_cast_if_needed(MEM_ROOT *mem_root, Item *argument) const
Wrap the argument in a typecast, if needed.
Definition: item_cmpfunc.cc:7743
bool append_join_key_for_hash_join(THD *thd, table_map tables, const HashJoinCondition &join_condition, bool is_multi_column_key, String *join_key_buffer) const
Read the value from the join condition, and append it to the output vector "join_key_buffer".
Definition: item_cmpfunc.cc:7717
Definition: item_cmpfunc.h:2649
ConstFieldProxy(const Item_equal *item)
Definition: item_cmpfunc.h:2651
List_STL_Iterator< const Item_field > cbegin() const
Definition: item_cmpfunc.h:2657
List_STL_Iterator< const Item_field > cend() const
Definition: item_cmpfunc.h:2660
List_STL_Iterator< const Item_field > begin() const
Definition: item_cmpfunc.h:2653
size_t size() const
Definition: item_cmpfunc.h:2663
const List< Item_field > * m_fields
Definition: item_cmpfunc.h:2666
List_STL_Iterator< const Item_field > end() const
Definition: item_cmpfunc.h:2656
Definition: item_cmpfunc.h:2630
List_STL_Iterator< Item_field > begin()
Definition: item_cmpfunc.h:2633
List_STL_Iterator< Item_field > end()
Definition: item_cmpfunc.h:2634
List< Item_field > * m_fields
Definition: item_cmpfunc.h:2647
List_STL_Iterator< const Item_field > begin() const
Definition: item_cmpfunc.h:2635
List_STL_Iterator< const Item_field > cbegin() const
Definition: item_cmpfunc.h:2639
List_STL_Iterator< const Item_field > cend() const
Definition: item_cmpfunc.h:2642
List_STL_Iterator< const Item_field > end() const
Definition: item_cmpfunc.h:2638
FieldProxy(Item_equal *item)
Definition: item_cmpfunc.h:2632
Definition: item_cmpfunc.h:2556
ConstFieldProxy get_fields() const
Definition: item_cmpfunc.h:2669
bool contains_only_equi_join_condition() const override
Whether this Item is an equi-join condition.
Definition: item_cmpfunc.h:2605
void set_const_arg(Item *c)
Definition: item_cmpfunc.h:2578
void check_covering_prefix_keys()
bool cast_incompatible_args(uchar *) override
Wrap incompatible arguments in CAST nodes to the expected data types.
Definition: item_cmpfunc.h:2598
Item * const_arg() const
Definition: item_cmpfunc.h:2577
const CHARSET_INFO * compare_collation() const override
Definition: item_cmpfunc.h:2678
void sort(Node_cmp_func compare)
Order field items in multiple equality according to a sorting criteria.
Definition: item_cmpfunc.h:2625
Arg_comparator cmp
Helper for comparing constants.
Definition: item_cmpfunc.h:2564
Item_field * get_first()
Get the first field of multiple equality, use for semantic checking.
Definition: item_cmpfunc.h:2590
const char * func_name() const override
Definition: item_cmpfunc.h:2596
optimize_type select_optimize(const THD *) override
Definition: item_cmpfunc.h:2597
List< Item_field > fields
List of equal field items.
Definition: item_cmpfunc.h:2558
FieldProxy get_fields()
Definition: item_cmpfunc.h:2668
enum Functype functype() const override
Definition: item_cmpfunc.h:2594
bool equality_substitution_analyzer(uchar **) override
Definition: item_cmpfunc.h:2682
ANY_VALUE(expr) is like expr except that it is not checked by aggregate_check logic.
Definition: item_cmpfunc.h:1480
const char * func_name() const override
Definition: item_cmpfunc.h:1484
Item_func_any_value(const POS &pos, Item *a)
Definition: item_cmpfunc.h:1482
Item_func_any_value(Item *a)
Definition: item_cmpfunc.h:1483
Definition: item_cmpfunc.h:1303
Arg_comparator ge_cmp
Definition: item_cmpfunc.h:1315
optimize_type select_optimize(const THD *) override
Definition: item_cmpfunc.h:1322
bool compare_as_dates_with_strings
Definition: item_cmpfunc.h:1310
bool is_bool_func() const override
Definition: item_cmpfunc.h:1331
Item_func_between(const POS &pos, Item *a, Item *b, Item *c, bool is_negation)
Definition: item_cmpfunc.h:1316
Item_result cmp_type
Definition: item_cmpfunc.h:1307
bool compare_as_temporal_dates
Definition: item_cmpfunc.h:1311
const CHARSET_INFO * compare_collation() const override
Definition: item_cmpfunc.h:1332
String value0
Definition: item_cmpfunc.h:1308
const char * func_name() const override
Definition: item_cmpfunc.h:1324
void update_not_null_tables()
Definition: item_cmpfunc.h:1344
uint decimal_precision() const override
Definition: item_cmpfunc.h:1335
DTCollation cmp_collation
Definition: item_cmpfunc.h:1304
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:1336
bool compare_as_temporal_times
Definition: item_cmpfunc.h:1312
enum Functype functype() const override
Definition: item_cmpfunc.h:1323
A predicate that is "always true" or "always false".
Definition: item_cmpfunc.h:355
Item_func_bool_const(const POS &pos)
Definition: item_cmpfunc.h:363
Item_func_bool_const()
Definition: item_cmpfunc.h:357
bool fix_fields(THD *, Item **) override
Definition: item_cmpfunc.h:369
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_cmpfunc.h:371
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:370
CASE ... WHEN ... THEN ... END function implementation.
Definition: item_cmpfunc.h:1975
Item_result cmp_type
Definition: item_cmpfunc.h:1982
enum_field_types default_data_type() const override
Get the default data (output) type for the specific item.
Definition: item_cmpfunc.h:2020
const CHARSET_INFO * compare_collation() const override
Definition: item_cmpfunc.h:2031
cmp_item * case_item
Definition: item_cmpfunc.h:1985
int else_expr_num
Definition: item_cmpfunc.h:1978
DTCollation cmp_collation
Definition: item_cmpfunc.h:1983
Item_func super
Definition: item_cmpfunc.h:1976
Item_func_case(const POS &pos, mem_root_deque< Item * > *list, Item *first_expr_arg, Item *else_expr_arg)
Definition: item_cmpfunc.h:1988
int get_first_expr_num() const
Definition: item_cmpfunc.h:2010
const char * func_name() const override
Definition: item_cmpfunc.h:2027
enum Item_result result_type() const override
Definition: item_cmpfunc.h:2026
enum Item_result cached_result_type left_result_type
Definition: item_cmpfunc.h:1979
uint ncases
Definition: item_cmpfunc.h:1981
String tmp_value
Definition: item_cmpfunc.h:1980
enum Functype functype() const override
Definition: item_cmpfunc.h:2034
int get_else_expr_num() const
Definition: item_cmpfunc.h:2011
Definition: item_cmpfunc.h:1415
Item_func_coalesce(const POS &pos, Item *a)
Definition: item_cmpfunc.h:1421
Item_func_coalesce(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:1417
enum Item_result result_type() const override
Definition: item_cmpfunc.h:1452
Item_func_coalesce(Item *a, Item *b)
Definition: item_cmpfunc.h:1434
const char * func_name() const override
Definition: item_cmpfunc.h:1453
enum_field_types default_data_type() const override
Get the default data (output) type for the specific item.
Definition: item_cmpfunc.h:1431
Item_func_coalesce(Item *a)
Definition: item_cmpfunc.h:1424
Item_func_coalesce(const POS &pos, PT_item_list *list)
Definition: item_cmpfunc.h:1427
enum Functype functype() const override
Definition: item_cmpfunc.h:1454
void set_numeric_type() override
Definition: item_cmpfunc.h:1451
Item_func_comparison is a class for comparison functions that take two arguments and return a boolean...
Definition: item_cmpfunc.h:685
bool subst_argument_checker(uchar **) override
Definition: item_cmpfunc.h:697
Item_func_comparison(Item *a, Item *b)
Definition: item_cmpfunc.h:687
Item_func_comparison(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:690
bool is_null() override
The method allows to determine nullness of a complex expression without fully evaluating it,...
Definition: item_cmpfunc.cc:6653
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.cc:6528
virtual Item * negated_item()
just fake method, should never be called.
Definition: item_cmpfunc.cc:6648
bool cast_incompatible_args(uchar *) override
Wrap incompatible arguments in CAST nodes to the expected data types.
Definition: item_cmpfunc.cc:6668
Implements the comparison operator equals (=)
Definition: item_cmpfunc.h:1045
enum Functype functype() const override
Definition: item_cmpfunc.h:1050
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:1057
cond_result eq_cmp_result() const override
Definition: item_cmpfunc.h:1052
Item_func_eq(Item *a, Item *b)
Definition: item_cmpfunc.h:1047
Item_func_eq(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:1048
enum Functype rev_functype() const override
Definition: item_cmpfunc.h:1051
const char * func_name() const override
Definition: item_cmpfunc.h:1053
bool equality_substitution_analyzer(uchar **) override
Definition: item_cmpfunc.h:1055
The <=> operator evaluates the same as.
Definition: item_cmpfunc.h:1108
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:1126
bool set_cmp_func() override
Sets up a comparator of the correct type based on the type of the function's arguments.
Definition: item_cmpfunc.h:1117
cond_result eq_cmp_result() const override
Definition: item_cmpfunc.h:1124
enum Functype functype() const override
Definition: item_cmpfunc.h:1122
enum Functype rev_functype() const override
Definition: item_cmpfunc.h:1123
const char * func_name() const override
Definition: item_cmpfunc.h:1125
Item_func_equal(Item *a, Item *b)
Definition: item_cmpfunc.h:1110
bool is_null() override
The method allows to determine nullness of a complex expression without fully evaluating it,...
Definition: item_cmpfunc.h:1127
Item_func_equal(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:1113
A predicate that is "always false".
Definition: item_cmpfunc.h:391
longlong val_int() override
Definition: item_cmpfunc.h:397
Item_func_false()
Definition: item_cmpfunc.h:393
const char * func_name() const override
Definition: item_cmpfunc.h:395
Item_func_false(const POS &pos)
Definition: item_cmpfunc.h:394
enum Functype functype() const override
Definition: item_cmpfunc.h:401
bool val_bool() override
Definition: item_cmpfunc.h:396
void print(const THD *, String *str, enum_query_type) const override
This method is used for to:
Definition: item_cmpfunc.h:398
Implements the comparison operator greater than or equals (>=)
Definition: item_cmpfunc.h:1138
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:1147
enum Functype rev_functype() const override
Definition: item_cmpfunc.h:1143
cond_result eq_cmp_result() const override
Definition: item_cmpfunc.h:1144
Item_func_ge(Item *a, Item *b)
Definition: item_cmpfunc.h:1140
const char * func_name() const override
Definition: item_cmpfunc.h:1145
enum Functype functype() const override
Definition: item_cmpfunc.h:1142
Implements the comparison operator greater than (>)
Definition: item_cmpfunc.h:1158
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:1167
Item_func_gt(Item *a, Item *b)
Definition: item_cmpfunc.h:1160
cond_result eq_cmp_result() const override
Definition: item_cmpfunc.h:1164
enum Functype rev_functype() const override
Definition: item_cmpfunc.h:1163
const char * func_name() const override
Definition: item_cmpfunc.h:1165
enum Functype functype() const override
Definition: item_cmpfunc.h:1162
Definition: item_cmpfunc.h:1489
Item_func_if(Item *a, Item *b, Item *c)
Definition: item_cmpfunc.h:1493
enum Functype functype() const override
Definition: item_cmpfunc.h:1520
enum Item_result result_type() const override
Definition: item_cmpfunc.h:1509
enum_field_types default_data_type() const override
Get the default data (output) type for the specific item.
Definition: item_cmpfunc.h:1511
const char * func_name() const override
Definition: item_cmpfunc.h:1519
void update_not_null_tables()
Definition: item_cmpfunc.h:1524
enum Item_result cached_result_type
Definition: item_cmpfunc.h:1490
Item_func_if(const POS &pos, Item *a, Item *b, Item *c)
Definition: item_cmpfunc.h:1497
Definition: item_cmpfunc.h:1457
bool field_type_defined
Definition: item_cmpfunc.h:1459
Item_func_ifnull(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:1462
const char * func_name() const override
Definition: item_cmpfunc.h:1471
in_expr [NOT] IN (in_value_list).
Definition: item_cmpfunc.h:2048
DTCollation cmp_collation
Definition: item_cmpfunc.h:2078
Item_func_in(const POS &pos, PT_item_list *list, bool is_negation)
Definition: item_cmpfunc.h:2081
enum Functype functype() const override
Definition: item_cmpfunc.h:2108
const char * func_name() const override
Definition: item_cmpfunc.h:2109
Item_result left_result_type
Definition: item_cmpfunc.h:2076
bool is_bool_func() const override
Definition: item_cmpfunc.h:2110
uint decimal_precision() const override
Definition: item_cmpfunc.h:2093
const CHARSET_INFO * compare_collation() const override
Definition: item_cmpfunc.h:2111
void update_not_null_tables()
Definition: item_cmpfunc.h:2121
optimize_type select_optimize(const THD *) override
Definition: item_cmpfunc.h:2105
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:2114
Definition: item_cmpfunc.h:1384
Item_row * row
Definition: item_cmpfunc.h:1387
bool use_decimal_comparison
Definition: item_cmpfunc.h:1388
const char * func_name() const override
Definition: item_cmpfunc.h:1403
interval_range * intervals
Definition: item_cmpfunc.h:1389
uint decimal_precision() const override
Definition: item_cmpfunc.h:1404
Item_int_func super
Definition: item_cmpfunc.h:1385
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:1392
Definition: item_cmpfunc.h:2312
const CHARSET_INFO * compare_collation() const override
Definition: item_cmpfunc.h:2330
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:2333
const char * func_name() const override
Definition: item_cmpfunc.h:2325
optimize_type select_optimize(const THD *) override
Definition: item_cmpfunc.h:2326
Item_func_isnotnull(Item *a)
Definition: item_cmpfunc.h:2314
enum Functype functype() const override
Definition: item_cmpfunc.h:2320
Item_func_isnotnull(const POS &pos, Item *a)
Definition: item_cmpfunc.h:2315
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_cmpfunc.h:2321
Definition: item_cmpfunc.h:2248
Item_func_isnull(Item *a)
Definition: item_cmpfunc.h:2255
Item_func_isnull(const POS &pos, Item *a)
Definition: item_cmpfunc.h:2256
const char * func_name() const override
Definition: item_cmpfunc.h:2262
Item_bool_func super
Definition: item_cmpfunc.h:2249
enum Functype functype() const override
Definition: item_cmpfunc.h:2260
bool cached_value
Definition: item_cmpfunc.h:2252
const CHARSET_INFO * compare_collation() const override
Definition: item_cmpfunc.h:2274
optimize_type select_optimize(const THD *) override
Definition: item_cmpfunc.h:2270
Implements the comparison operator less than or equals (<=)
Definition: item_cmpfunc.h:1178
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:1187
cond_result eq_cmp_result() const override
Definition: item_cmpfunc.h:1184
enum Functype rev_functype() const override
Definition: item_cmpfunc.h:1183
Item_func_le(Item *a, Item *b)
Definition: item_cmpfunc.h:1180
const char * func_name() const override
Definition: item_cmpfunc.h:1185
enum Functype functype() const override
Definition: item_cmpfunc.h:1182
Definition: item_cmpfunc.h:2342
Item_func_like(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:2361
int escape() const
Returns the escape character.
Definition: item_cmpfunc.h:2385
int m_escape
The escape character (0 if no escape character).
Definition: item_cmpfunc.h:2349
enum Functype functype() const override
Definition: item_cmpfunc.h:2365
bool escape_was_used_in_parsing() const
Definition: item_cmpfunc.h:2382
Item_func_like(Item *a, Item *b, Item *escape_arg)
Definition: item_cmpfunc.h:2353
Item_func_like(Item *a, Item *b)
Definition: item_cmpfunc.h:2352
cond_result eq_cmp_result() const override
Result may be not equal with equal inputs if ESCAPE character is present.
Definition: item_cmpfunc.h:2368
const char * func_name() const override
Definition: item_cmpfunc.h:2369
bool escape_is_evaluated() const
Has the escape clause been evaluated? It only needs to be evaluated once per execution,...
Definition: item_cmpfunc.h:2396
Item_func_like(const POS &pos, Item *a, Item *b, Item *escape_arg)
Definition: item_cmpfunc.h:2357
Implements the comparison operator less than (<)
Definition: item_cmpfunc.h:1230
Item_func_lt(Item *a, Item *b)
Definition: item_cmpfunc.h:1232
cond_result eq_cmp_result() const override
Definition: item_cmpfunc.h:1236
enum Functype functype() const override
Definition: item_cmpfunc.h:1234
bool gc_subst_analyzer(uchar **) override
Analyzer function for GC substitution.
Definition: item_cmpfunc.h:1239
enum Functype rev_functype() const override
Definition: item_cmpfunc.h:1235
const char * func_name() const override
Definition: item_cmpfunc.h:1237
Wrapper class when MATCH function is used in WHERE clause.
Definition: item_cmpfunc.h:759
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:771
Item_func_match_predicate(Item *a)
Definition: item_cmpfunc.h:761
const char * func_name() const override
Definition: item_cmpfunc.h:765
longlong val_int() override
Definition: item_cmpfunc.cc:7065
enum Functype functype() const override
Definition: item_cmpfunc.h:764
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_cmpfunc.h:766
Implements the comparison operator not equals (<>)
Definition: item_cmpfunc.h:1250
enum Functype rev_functype() const override
Definition: item_cmpfunc.h:1255
cond_result eq_cmp_result() const override
Definition: item_cmpfunc.h:1256
const char * func_name() const override
Definition: item_cmpfunc.h:1258
optimize_type select_optimize(const THD *) override
Definition: item_cmpfunc.h:1257
Item_func_ne(Item *a, Item *b)
Definition: item_cmpfunc.h:1252
enum Functype functype() const override
Definition: item_cmpfunc.h:1254
Definition: item_cmpfunc.h:964
table_map not_null_tables() const override
Return table map of tables that can't be NULL tables (tables that are used in a context where if they...
Definition: item_cmpfunc.h:969
Item * truth_transformer(THD *, Bool_test) override
Apply NOT transformation to the item and return a new one.
Definition: item_cmpfunc.cc:6589
Item_func_nop_all(Item *a)
Definition: item_cmpfunc.h:966
const char * func_name() const override
Definition: item_cmpfunc.h:968
longlong val_int() override
Special NOP (No OPeration) for ALL subquery.
Definition: item_cmpfunc.cc:433
Definition: item_cmpfunc.h:909
bool empty_underlying_subquery()
Definition: item_cmpfunc.cc:397
bool abort_on_null
Definition: item_cmpfunc.h:914
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_cmpfunc.cc:416
const char * func_name() const override
Definition: item_cmpfunc.h:931
Item_subselect * subselect
Definition: item_cmpfunc.h:913
Item * truth_transformer(THD *, Bool_test) override
Apply NOT transformation to the item and return a new one.
Definition: item_cmpfunc.cc:6600
longlong val_int() override
special NOT for ALL subquery.
Definition: item_cmpfunc.cc:383
void set_subselect(Item_subselect *item)
Definition: item_cmpfunc.h:936
table_map not_null_tables() const override
Return table map of tables that can't be NULL tables (tables that are used in a context where if they...
Definition: item_cmpfunc.h:937
void set_sum_test(Item_sum_hybrid *item)
Definition: item_cmpfunc.h:934
bool show
Definition: item_cmpfunc.h:917
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:926
enum Functype functype() const override
Definition: item_cmpfunc.h:930
void set_sub_test(Item_maxmin_subselect *item)
Definition: item_cmpfunc.h:935
bool ignore_unknown() const
Treat UNKNOWN result like FALSE because callers see no difference.
Definition: item_cmpfunc.h:928
Item_sum_hybrid * test_sum_item
Definition: item_cmpfunc.h:911
Item_func_not_all(Item *a)
Definition: item_cmpfunc.h:919
Item_maxmin_subselect * test_sub_item
Definition: item_cmpfunc.h:912
Definition: item_cmpfunc.h:729
Item * truth_transformer(THD *, Bool_test) override
Apply NOT transformation to the item and return a new one.
Definition: item_cmpfunc.cc:6522
enum Functype functype() const override
Definition: item_cmpfunc.h:735
const char * func_name() const override
Definition: item_cmpfunc.h:736
longlong val_int() override
Definition: item_cmpfunc.cc:351
Item_func_not(Item *a)
Definition: item_cmpfunc.h:731
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.cc:325
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_cmpfunc.cc:372
Item_func_not(const POS &pos, Item *a)
Definition: item_cmpfunc.h:732
Definition: item_cmpfunc.h:1530
enum_field_types default_data_type() const override
Get the default data (output) type for the specific item.
Definition: item_cmpfunc.h:1544
enum Functype functype() const override
Definition: item_cmpfunc.h:1550
Item_result result_type() const override
Definition: item_cmpfunc.h:1543
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:1565
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_cmpfunc.h:1555
enum Item_result cached_result_type
Definition: item_cmpfunc.h:1531
Item_func_nullif(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:1534
const char * func_name() const override
Definition: item_cmpfunc.h:1549
uint decimal_precision() const override
Definition: item_cmpfunc.h:1553
Definition: item_func.h:779
Definition: item_cmpfunc.h:1276
void negate()
Definition: item_cmpfunc.h:1291
bool ignore_unknown() const
Definition: item_cmpfunc.h:1293
bool subst_argument_checker(uchar **) override
Definition: item_cmpfunc.h:1300
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:1294
bool pred_level
Definition: item_cmpfunc.h:1279
Item_func_opt_neg(const POS &pos, Item *a, Item *b, Item *c, bool is_negation)
Definition: item_cmpfunc.h:1281
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:1292
Item_func_opt_neg(const POS &pos, PT_item_list *list, bool is_negation)
Definition: item_cmpfunc.h:1285
bool negated
Definition: item_cmpfunc.h:1278
Internal function used by subquery to derived transformation to check if a subquery is scalar.
Definition: item_cmpfunc.h:1201
table_map get_initial_pseudo_tables() const override
We add RAND_TABLE_BIT to prevent moving this item from the JOIN condition: it might raise an error to...
Definition: item_cmpfunc.h:1222
const char * func_name() const override
Definition: item_cmpfunc.h:1205
bool is_valid_for_pushdown(uchar *arg) override
Redefine to avoid pushing into derived table.
Definition: item_cmpfunc.h:1207
Item_func_reject_if(Item *a)
Definition: item_cmpfunc.h:1203
Definition: item_cmpfunc.h:1355
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_cmpfunc.h:1364
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_cmpfunc.h:1370
const char * func_name() const override
Definition: item_cmpfunc.h:1361
Item_func_strcmp(const POS &pos, Item *a, Item *b)
Definition: item_cmpfunc.h:1357
enum Functype functype() const override
Definition: item_cmpfunc.h:1362
optimize_type select_optimize(const THD *) override
Definition: item_cmpfunc.h:1360
Definition: item_cmpfunc.h:811
bool fix_fields(THD *thd, Item **ref) override
Definition: item_cmpfunc.h:875
enum_trig_type
Definition: item_cmpfunc.h:813
@ FOUND_MATCH
This trigger type deactivates predicated from WHERE condition when no row satisfying the join conditi...
Definition: item_cmpfunc.h:828
@ IS_NOT_NULL_COMPL
This trigger type deactivates join conditions when a row has been NULL-complemented.
Definition: item_cmpfunc.h:819
@ OUTER_FIELD_IS_NOT_NULL
In IN->EXISTS subquery transformation, new predicates are added: WHERE inner_field=outer_field OR inn...
Definition: item_cmpfunc.h:837
const char * func_name() const override
'<if>', to distinguish from the if() SQL function
Definition: item_cmpfunc.h:870
void add_trig_func_tables()
Definition: item_cmpfunc.h:880
void update_used_tables() override
Updates used tables, not null tables information and accumulates properties up the item tree,...
Definition: item_cmpfunc.h:889
enum enum_trig_type get_trig_type() const
Definition: item_cmpfunc.h:899
bool contains_only_equi_join_condition() const override
Whether this Item is an equi-join condition.
Definition: item_cmpfunc.cc:7419
Item_func_trig_cond(Item *a, bool *f, const JOIN *join, plan_idx idx, enum_trig_type trig_type_arg)
Definition: item_cmpfunc.h:860
table_map get_inner_tables() const
Get table_map of inner tables spanned by associated outer join operation.
Definition: item_cmpfunc.cc:7111
const JOIN * get_join() const
Definition: item_cmpfunc.h:898
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_cmpfunc.cc:7131
void get_table_range(Table_ref **first_table, Table_ref **last_table) const
Get range of inner tables spanned by associated outer join operation.
Definition: item_cmpfunc.cc:7090
bool * get_trig_var()
Definition: item_cmpfunc.h:900
plan_idx idx() const
Definition: item_cmpfunc.h:904
plan_idx m_idx
Optional: if join!=NULL: index of table.
Definition: item_cmpfunc.h:846
void fix_after_pullout(Query_block *parent_query_block, Query_block *removed_query_block) override
Fix after tables have been moved from one query_block level to the parent level, e....
Definition: item_cmpfunc.h:893
longlong val_int() override
Definition: item_cmpfunc.cc:7076
enum_trig_type trig_type
Type of trig_var; for printing.
Definition: item_cmpfunc.h:848
enum Functype functype() const override
Definition: item_cmpfunc.h:868
bool * trig_var
Pointer to trigger variable.
Definition: item_cmpfunc.h:842
enum_trig_type get_trig_type()
Definition: item_cmpfunc.h:901
const JOIN * m_join
Optional: JOIN of table which is the source of trig_var.
Definition: item_cmpfunc.h:844
A predicate that is "always true".
Definition: item_cmpfunc.h:376
bool val_bool() override
Definition: item_cmpfunc.h:381
enum Functype functype() const override
Definition: item_cmpfunc.h:386
Item_func_true()
Definition: item_cmpfunc.h:378
void print(const THD *, String *str, enum_query_type) const override
This method is used for to:
Definition: item_cmpfunc.h:383
Item_func_true(const POS &pos)
Definition: item_cmpfunc.h:379
const char * func_name() const override
Definition: item_cmpfunc.h:380
longlong val_int() override
Definition: item_cmpfunc.h:382
Item class, to represent X IS [NOT] (TRUE | FALSE) boolean predicates.
Definition: item_cmpfunc.h:408
Bool_test truth_test
The value we're testing for.
Definition: item_cmpfunc.h:467
Item_bool_func super
Definition: item_cmpfunc.h:409
longlong val_int() override
Definition: item_cmpfunc.cc:2105
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:451
enum Functype functype() const override
Definition: item_cmpfunc.h:423
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_cmpfunc.cc:2095
Item_func_truth(const POS &pos, Item *a, Bool_test truth_test)
Definition: item_cmpfunc.h:425
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_cmpfunc.cc:2089
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:416
Item_func_truth(Item *a, Bool_test truth_test)
Definition: item_cmpfunc.h:438
const char * func_name() const override
Definition: item_cmpfunc.h:420
XOR inherits from Item_bool_func2 because it is not optimized yet.
Definition: item_cmpfunc.h:708
Item_bool_func2 super
Definition: item_cmpfunc.h:709
const char * func_name() const override
Definition: item_cmpfunc.h:717
longlong val_int() override
Make a logical XOR of the arguments.
Definition: item_cmpfunc.cc:6481
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.cc:6443
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: item_cmpfunc.cc:6428
enum Functype functype() const override
Definition: item_cmpfunc.h:716
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:720
Item_func_xor(const POS &pos, Item *i1, Item *i2)
Definition: item_cmpfunc.h:713
Item_func_xor(Item *i1, Item *i2)
Definition: item_cmpfunc.h:712
Item * truth_transformer(THD *, Bool_test) override
XOR can be negated by negating one of the operands:
Definition: item_cmpfunc.cc:6540
Definition: item_func.h:93
my_decimal * val_decimal(my_decimal *) override
Definition: item_func.cc:809
void split_sum_func(THD *thd, Ref_item_array ref_item_array, mem_root_deque< Item * > *fields) override
See comments in Item_cmp_func::split_sum_func()
Definition: item_func.cc:701
Item ** args
Array of pointers to arguments.
Definition: item_func.h:100
void update_used_tables() override
Updates used tables, not null tables information and accumulates properties up the item tree,...
Definition: item_func.cc:708
void traverse_cond(Cond_traverser traverser, void *arg, traverse_order order) override
Definition: item_func.cc:620
Item * compile(Item_analyzer analyzer, uchar **arg_p, Item_transformer transformer, uchar *arg_t) override
Compile Item_func object with a processor and a transformer callback functions.
Definition: item_func.cc:678
Functype
Definition: item_func.h:176
@ TRIG_COND_FUNC
Definition: item_func.h:219
@ NOT_ALL_FUNC
Definition: item_func.h:216
@ LIKE_FUNC
Definition: item_func.h:187
@ FALSE_FUNC
Definition: item_func.h:298
@ NULLIF_FUNC
Definition: item_func.h:260
@ NOT_FUNC
Definition: item_func.h:215
@ XOR_FUNC
Definition: item_func.h:193
@ COND_OR_FUNC
Definition: item_func.h:192
@ COND_AND_FUNC
Definition: item_func.h:191
@ EQ_FUNC
Definition: item_func.h:178
@ TRUE_FUNC
Definition: item_func.h:297
@ IN_FUNC
Definition: item_func.h:195
@ LE_FUNC
Definition: item_func.h:182
@ MATCH_FUNC
Definition: item_func.h:186
@ LT_FUNC
Definition: item_func.h:181
@ ISNULL_FUNC
Definition: item_func.h:188
@ ISNOTNULLTEST_FUNC
Definition: item_func.h:198
@ MULT_EQUAL_FUNC
Definition: item_func.h:196
@ ISTRUTH_FUNC
Definition: item_func.h:190
@ BETWEEN
Definition: item_func.h:194
@ IF_FUNC
Definition: item_func.h:259
@ STRCMP_FUNC
Definition: item_func.h:296
@ NE_FUNC
Definition: item_func.h:180
@ GE_FUNC
Definition: item_func.h:183
@ EQUAL_FUNC
Definition: item_func.h:179
@ GT_FUNC
Definition: item_func.h:184
@ UNKNOWN_FUNC
Definition: item_func.h:177
@ ISNOTNULL_FUNC
Definition: item_func.h:189
@ CASE_FUNC
Definition: item_func.h:261
@ COALESCE_FUNC
Definition: item_func.h:290
void print_op(const THD *thd, String *str, enum_query_type query_type) const
Definition: item_func.cc:737
table_map used_tables_cache
Value used in calculation of result of used_tables()
Definition: item_func.h:162
optimize_type
Definition: item_func.h:300
@ OPTIMIZE_NONE
Definition: item_func.h:301
@ OPTIMIZE_EQUAL
Definition: item_func.h:305
@ OPTIMIZE_NULL
Definition: item_func.h:304
@ OPTIMIZE_KEY
Definition: item_func.h:302
@ OPTIMIZE_OP
Definition: item_func.h:303
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_func.h:624
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_func.cc:721
bool fix_fields(THD *, Item **ref) override
Definition: item_func.cc:394
void fix_after_pullout(Query_block *parent_query_block, Query_block *removed_query_block) override
Fix after tables have been moved from one query_block level to the parent level, e....
Definition: item_func.cc:448
bool set_arguments(mem_root_deque< Item * > *list, bool context_free)
Copy arguments from list to args array.
Definition: item_func.cc:317
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: item_func.cc:349
uint arg_count
How many arguments in 'args'.
Definition: item_func.h:123
Field * tmp_table_field(TABLE *t_arg) override
Definition: item_func.cc:767
bool eq(const Item *item, bool binary_cmp) const override
Definition: item_func.cc:751
table_map not_null_tables_cache
Value used in calculation of result of not_null_tables()
Definition: item_func.h:164
bool null_on_null
Affects how to determine that NULL argument implies a NULL function return.
Definition: item_func.h:155
bool walk(Item_processor processor, enum_walk walk, uchar *arg) override
Traverses a tree of Items in prefix and/or postfix order.
Definition: item_func.cc:609
Item * transform(Item_transformer transformer, uchar *arg) override
Transform an Item_func object with a transformer callback function.
Definition: item_func.cc:653
virtual bool resolve_type_inner(THD *)
Resolve type of function after all arguments have had their data types resolved.
Definition: item_func.h:456
uint allowed_arg_cols
Definition: item_func.h:160
Definition: item_cmpfunc.h:489
bool is_null() override
The method allows to determine nullness of a complex expression without fully evaluating it,...
Definition: item_cmpfunc.cc:2405
Item_cache * cache
Definition: item_cmpfunc.h:491
const char * func_name() const override
Definition: item_cmpfunc.h:516
longlong val_int() override
The implementation of optimized <outer expression> [NOT] IN <subquery> predicates.
Definition: item_cmpfunc.cc:2320
Item_in_optimizer(Item_in_subselect *item)
Definition: item_cmpfunc.h:501
int result_for_null_param
Stores the value of "NULL IN (SELECT ...)" for uncorrelated subqueries: UNKNOWN - "NULL in (SELECT ....
Definition: item_cmpfunc.h:498
void fix_after_pullout(Query_block *parent_query_block, Query_block *removed_query_block) override
Fix after tables have been moved from one query_block level to the parent level, e....
Definition: item_cmpfunc.cc:2217
bool fix_left(THD *thd, Item **ref)
Definition: item_cmpfunc.cc:2138
void update_used_tables() override
Updates used tables, not null tables information and accumulates properties up the item tree,...
Definition: item_cmpfunc.cc:2410
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_cmpfunc.cc:2400
void split_sum_func(THD *thd, Ref_item_array ref_item_array, mem_root_deque< Item * > *fields) override
Definition: item_cmpfunc.cc:2228
Item_cache ** get_cache()
Definition: item_cmpfunc.h:517
bool fix_fields(THD *, Item **) override
Definition: item_cmpfunc.cc:2180
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_cmpfunc.cc:2235
Representation of IN subquery predicates of the form "left_expr IN (SELECT ...)".
Definition: item_subselect.h:525
Definition: item_func.h:926
String * val_str(String *str) override
Definition: item_func.cc:1436
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_func.h:974
double val_real() override
Definition: item_func.cc:1430
enum Item_result result_type() const override
Definition: item_func.h:978
bool get_time(MYSQL_TIME *ltime) override
Definition: item_func.h:977
Definition: item_cmpfunc.h:2287
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_cmpfunc.h:2306
Item_in_subselect * owner
Definition: item_cmpfunc.h:2288
const char * func_name() const override
Definition: item_cmpfunc.h:2295
Item_is_not_null_test(Item_in_subselect *ow, Item *a)
Definition: item_cmpfunc.h:2291
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:2303
enum Functype functype() const override
Definition: item_cmpfunc.h:2293
Definition: item_subselect.h:370
Item with result field.
Definition: item.h:5590
Field * result_field
Definition: item.h:5592
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item.cc:10610
Item which stores (x,y,...) and ROW(x,y,...).
Definition: item_row.h:53
Definition: item_subselect.h:79
Abstract base class for the MIN and MAX aggregate functions.
Definition: item_sum.h:1529
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:850
virtual double val_real()=0
virtual 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)
Calculate the filter contribution that is relevant for table 'filter_for_table' for this item.
Definition: item.h:1947
void set_nullable(bool nullable)
Definition: item.h:3424
DTCollation collation
Character set and collation properties assigned for this Item.
Definition: item.h:3341
void set_data_type_bool()
Definition: item.h:1395
bool is_nullable() const
Definition: item.h:3423
void set_subquery()
Set the "has subquery" property.
Definition: item.h:3215
void fix_char_length(uint32 max_char_length_arg)
Definition: item.h:3172
virtual Item * equality_substitution_transformer(uchar *)
Definition: item.h:2814
virtual uint decimal_precision() const
Definition: item.cc:648
virtual bool val_json(Json_wrapper *result)
Get a JSON value from an Item.
Definition: item.h:1919
virtual longlong val_int()=0
virtual void print(const THD *, String *str, enum_query_type) const
This method is used for to:
Definition: item.h:2313
bool fixed
True if item has been resolved.
Definition: item.h:3412
bool null_value
True if item is null.
Definition: item.h:3449
Type
Definition: item.h:886
@ COND_ITEM
Definition: item.h:900
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:2384
virtual table_map not_null_tables() const
Return table map of tables that can't be NULL tables (tables that are used in a context where if they...
Definition: item.h:2202
virtual TYPELIB * get_typelib() const
Get the typelib information for an item of type set or enum.
Definition: item.h:1647
bool unsigned_flag
Definition: item.h:3450
virtual bool aggregate_check_group(uchar *)
Definition: item.h:2744
virtual bool is_null()
The method allows to determine nullness of a complex expression without fully evaluating it,...
Definition: item.h:2365
virtual bool aggregate_check_distinct(uchar *)
Definition: item.h:2742
cond_result
Definition: item.h:919
@ COND_TRUE
Definition: item.h:919
@ COND_FALSE
Definition: item.h:919
@ COND_OK
Definition: item.h:919
traverse_order
Definition: item.h:921
Bool_test
< Modifier for result transformation
Definition: item.h:934
@ BOOL_NOT_FALSE
Definition: item.h:938
@ BOOL_NOT_TRUE
Definition: item.h:937
@ BOOL_IS_TRUE
Definition: item.h:934
@ BOOL_IS_FALSE
Definition: item.h:935
@ BOOL_NEGATED
Definition: item.h:941
uint32 max_length
Maximum length of result of evaluating this item, in number of bytes.
Definition: item.h:3359
virtual enum Type type() const =0
virtual uint cols() const
Definition: item.h:2979
Definition: sql_optimizer.h:132
A class that is capable of holding objects of any sub-type of Json_scalar.
Definition: json_dom.h:1892
Abstraction for accessing JSON values irrespective of whether they are (started out as) binary JSON v...
Definition: json_dom.h:1160
Definition: item_cmpfunc.h:607
Item_bool_func * create(Item *a, Item *b) const override
Definition: item_cmpfunc.cc:321
bool l_op() const override
Definition: item_cmpfunc.h:612
const char * symbol(bool invert) const override
This interface is only used by Item_allany_subselect.
Definition: item_cmpfunc.h:610
bool eqne_op() const override
Definition: item_cmpfunc.h:611
Abstract base class for the comparison operators =, <> and <=>.
Definition: item_cmpfunc.h:534
virtual Item_bool_func * create_scalar_predicate(Item *a, Item *b) const =0
Creates only an item tree node, without attempting to rewrite row constructors.
virtual Item_bool_func * combine(List< Item > list) const =0
Combines a list of conditions exp op exp.
bool eqne_op() const override
Definition: item_cmpfunc.h:537
Item_bool_func * create(Item *a, Item *b) const override
This implementation of the factory method also implements flattening of row constructors.
Definition: item_cmpfunc.cc:263
bool l_op() const override
Definition: item_cmpfunc.h:538
Definition: sql_list.h:619
Definition: sql_list.h:433
void sort(Node_cmp_func cmp)
Sort the list.
Definition: sql_list.h:533
T * head()
Definition: sql_list.h:459
Definition: item_cmpfunc.h:591
Item_bool_func * create(Item *a, Item *b) const override
Definition: item_cmpfunc.cc:313
bool l_op() const override
Definition: item_cmpfunc.h:596
bool eqne_op() const override
Definition: item_cmpfunc.h:595
const char * symbol(bool invert) const override
This interface is only used by Item_allany_subselect.
Definition: item_cmpfunc.h:594
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:60
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:425
Definition: item_cmpfunc.h:574
Item_bool_func * create_scalar_predicate(Item *a, Item *b) const override
Creates only an item tree node, without attempting to rewrite row constructors.
Definition: item_cmpfunc.cc:300
const char * symbol(bool invert) const override
This interface is only used by Item_allany_subselect.
Definition: item_cmpfunc.h:576
Item_bool_func * combine(List< Item > list) const override
Combines a list of conditions exp op exp.
Definition: item_cmpfunc.cc:305
Wrapper class for an Item list head, used to allocate Item lists in the parser in a context-independe...
Definition: parse_tree_helpers.h:104
Base class for parse tree nodes (excluding the Parse_tree_root hierarchy)
Definition: parse_tree_node_base.h:138
This class represents a query block, aka a query specification, which is a query consisting of a SELE...
Definition: sql_lex.h:1155
String class wrapper with a preallocated buffer of size buff_sz.
Definition: sql_string.h:629
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:166
bool copy()
Definition: sql_string.cc:191
bool is_alloced() const
Definition: sql_string.h:414
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:33
uint elements
Definition: sql_list.h:135
Definition: item_cmpfunc.h:1913
longlong value
Definition: item_cmpfunc.h:1914
bool has_date
Distinguish between DATE/DATETIME/TIMESTAMP and TIME.
Definition: item_cmpfunc.h:1920
const Item * warn_item
Definition: item_cmpfunc.h:1918
Definition: item_cmpfunc.h:1948
my_decimal value
Definition: item_cmpfunc.h:1949
Definition: item_cmpfunc.h:1889
longlong value
Definition: item_cmpfunc.h:1890
void store_value(Item *item) override
Definition: item_cmpfunc.h:1893
int cmp(Item *arg) override
Definition: item_cmpfunc.h:1897
int compare(const cmp_item *ci) const override
Definition: item_cmpfunc.h:1901
Definition: item_cmpfunc.h:1863
unique_ptr_destroy_only< Json_wrapper > m_value
Cached JSON value to look up.
Definition: item_cmpfunc.h:1866
~cmp_item_json() override
String m_str_value
String buffer.
Definition: item_cmpfunc.h:1870
unique_ptr_destroy_only< Json_scalar_holder > m_holder
Cache for the value above.
Definition: item_cmpfunc.h:1868
Definition: item_cmpfunc.h:1929
int cmp(Item *arg) override
Definition: item_cmpfunc.h:1937
double value
Definition: item_cmpfunc.h:1930
void store_value(Item *item) override
Definition: item_cmpfunc.h:1933
int compare(const cmp_item *ci) const override
Definition: item_cmpfunc.h:1941
Definition: item_cmpfunc.h:2169
cmp_item_row(cmp_item_row &&other)
Definition: item_cmpfunc.h:2184
uint n
Definition: item_cmpfunc.h:2171
cmp_item_row(THD *thd, Item *item)
Definition: item_cmpfunc.h:2179
cmp_item_row()
Definition: item_cmpfunc.h:2174
cmp_item which stores a scalar (i.e. non-ROW).
Definition: item_cmpfunc.h:1829
void set_null_value(bool nv)
Definition: item_cmpfunc.h:1832
bool m_null_value
If stored value is NULL.
Definition: item_cmpfunc.h:1831
Definition: item_cmpfunc.h:1835
const String * value_res
Definition: item_cmpfunc.h:1837
int compare(const cmp_item *ci) const override
Definition: item_cmpfunc.h:1844
cmp_item_string(const CHARSET_INFO *cs)
Definition: item_cmpfunc.h:1842
void store_value(Item *item) override
Definition: item_cmpfunc.h:1849
const CHARSET_INFO * cmp_charset
Definition: item_cmpfunc.h:1839
StringBuffer< STRING_BUFFER_USUAL_SIZE > value
Definition: item_cmpfunc.h:1838
Definition: item_cmpfunc.h:1785
virtual void store_value(Item *item)=0
virtual int compare(const cmp_item *item) const =0
virtual int cmp(Item *item)=0
virtual ~cmp_item()=default
virtual cmp_item * make_same()=0
virtual void store_value_by_template(cmp_item *, Item *item)
Definition: item_cmpfunc.h:1823
Definition: item_cmpfunc.h:1697
Item_basic_constant * create_item(MEM_ROOT *mem_root) const override
Create an instance of Item_{type} (e.g.
Definition: item_cmpfunc.h:1701
in_datetime_as_longlong(MEM_ROOT *mem_root, uint elements)
Definition: item_cmpfunc.h:1699
Definition: item_cmpfunc.h:1725
Item_basic_constant * create_item(MEM_ROOT *mem_root) const override
Create an instance of Item_{type} (e.g.
Definition: item_cmpfunc.h:1732
Item * warn_item
An item used to issue warnings.
Definition: item_cmpfunc.h:1727
in_datetime(MEM_ROOT *mem_root, Item *warn_item_arg, uint elements)
Definition: item_cmpfunc.h:1730
Definition: item_cmpfunc.h:1761
Mem_root_array< my_decimal > base
Definition: item_cmpfunc.h:1762
in_decimal(MEM_ROOT *mem_root, uint elements)
Definition: item_cmpfunc.h:1765
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:1770
Item_basic_constant * create_item(MEM_ROOT *mem_root) const override
Create an instance of Item_{type} (e.g.
Definition: item_cmpfunc.h:1767
Definition: item_cmpfunc.h:1741
in_double(MEM_ROOT *mem_root, uint elements)
Definition: item_cmpfunc.h:1745
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:1750
Mem_root_array< double > base
Definition: item_cmpfunc.h:1742
Item_basic_constant * create_item(MEM_ROOT *mem_root) const override
Create an instance of Item_{type} (e.g.
Definition: item_cmpfunc.h:1747
Definition: item_cmpfunc.h:1664
Item_basic_constant * create_item(MEM_ROOT *mem_root) const override
Create an instance of Item_{type} (e.g.
Definition: item_cmpfunc.h:1677
in_longlong(MEM_ROOT *mem_root, uint elements)
Definition: item_cmpfunc.h:1675
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:1684
void set(uint pos, Item *item) override
Definition: item_cmpfunc.h:1692
Mem_root_array< packed_longlong > base
Definition: item_cmpfunc.h:1672
Definition: item_cmpfunc.h:2211
Mem_root_array< cmp_item_row * > base_pointers
Definition: item_cmpfunc.h:2215
Mem_root_array< cmp_item_row > base_objects
Definition: item_cmpfunc.h:2213
Item_basic_constant * create_item(MEM_ROOT *) const override
Create an instance of Item_{type} (e.g.
Definition: item_cmpfunc.h:2233
unique_ptr_destroy_only< cmp_item_row > tmp
Definition: item_cmpfunc.h:2212
bool is_row_result() const override
Definition: item_cmpfunc.h:2219
void value_to_item(uint, Item_basic_constant *) const override
Store the value at position pos into provided item object.
Definition: item_cmpfunc.h:2237
Definition: item_cmpfunc.h:1640
Mem_root_array< String * > base_pointers
Definition: item_cmpfunc.h:1645
Mem_root_array< String > base_objects
Definition: item_cmpfunc.h:1643
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:1653
const CHARSET_INFO * collation
Definition: item_cmpfunc.h:1646
String tmp
Definition: item_cmpfunc.h:1642
Item_basic_constant * create_item(MEM_ROOT *mem_root) const override
Create an instance of Item_{type} (e.g.
Definition: item_cmpfunc.h:1650
Definition: item_cmpfunc.h:1709
Item_basic_constant * create_item(MEM_ROOT *mem_root) const override
Create an instance of Item_{type} (e.g.
Definition: item_cmpfunc.h:1713
in_time_as_longlong(MEM_ROOT *mem_root, uint elements)
Definition: item_cmpfunc.h:1711
Definition: item_cmpfunc.h:1572
const uint m_size
Size of the vector.
Definition: item_cmpfunc.h:1574
virtual void set(uint pos, Item *item)=0
virtual void value_to_item(uint pos, Item_basic_constant *item) const =0
Store the value at position pos into provided item object.
virtual ~in_vector()=default
virtual bool find_item(Item *item)=0
Calls item->val_int() or item->val_str() etc.
virtual bool is_row_result() const
Definition: item_cmpfunc.h:1618
virtual bool compare_elems(uint pos1, uint pos2) const =0
Compare values number pos1 and pos2 for equality.
virtual Item_basic_constant * create_item(MEM_ROOT *mem_root) const =0
Create an instance of Item_{type} (e.g.
virtual void sort_array()=0
Sort the IN-list array, so we can do efficient lookup with binary_search.
in_vector(uint elements)
See Item_func_in::resolve_type() for why we need both count and used_count.
Definition: item_cmpfunc.h:1582
A (partial) implementation of std::deque allocating its blocks on a MEM_ROOT.
Definition: mem_root_deque.h:109
my_decimal class limits 'decimal_t' type to what we need in MySQL.
Definition: my_decimal.h:93
static MEM_ROOT mem_root
Definition: client_plugin.cc:109
static bool contains(const std::vector< std::string > &container, const std::string &file)
Definition: config_files.cc:40
enum_query_type
Query type constants (usable as bitmap flags).
Definition: enum_query_type.h:30
Fido Client Authentication nullptr
Definition: fido_client_plugin.cc:221
This file contains the field type.
enum_field_types
Column types for MySQL.
Definition: field_types.h:52
@ MYSQL_TYPE_VARCHAR
Definition: field_types.h:68
@ MYSQL_TYPE_TIME
Definition: field_types.h:64
@ MYSQL_TYPE_DATETIME
Definition: field_types.h:65
bool(Item::* Item_analyzer)(uchar **argp)
Definition: item.h:711
void(* Cond_traverser)(const Item *item, void *arg)
Definition: item.h:721
Item *(Item::* Item_transformer)(uchar *arg)
Type for transformers used by Item::transform and Item::compile.
Definition: item.h:720
static void ensure_multi_equality_fields_are_available(Item **args, int arg_idx, table_map available_tables, bool replace, bool *found)
Definition: item_cmpfunc.cc:7843
int(Arg_comparator::* arg_cmp_func)()
Definition: item_cmpfunc.h:73
Eq_creator eq_creator
Definition: mysqld.cc:1521
Ge_creator ge_creator
Definition: mysqld.cc:1526
Item * make_condition(Parse_context *pc, Item *item)
Ensure that all expressions involved in conditions are boolean functions.
Definition: item_cmpfunc.cc:5402
void find_and_adjust_equal_fields(Item *item, table_map available_tables, bool replace, bool *found)
Definition: item_cmpfunc.cc:7824
Lt_creator lt_creator
Definition: mysqld.cc:1525
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:872
Gt_creator gt_creator
Definition: mysqld.cc:1524
static const int UNKNOWN
Definition: item_cmpfunc.h:470
bool IsAnd(const Item *item)
Returns true if the item is a conjunction.
Definition: item_cmpfunc.h:2808
Ne_creator ne_creator
Definition: mysqld.cc:1522
Equal_creator equal_creator
Definition: mysqld.cc:1523
bool WalkConjunction(Item *condition, Func func)
Calls "func" on each term in "condition" if it's a conjunction (and recursively on any conjunction di...
Definition: item_cmpfunc.h:2821
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:903
Le_creator le_creator
Definition: mysqld.cc:1527
longlong get_datetime_value(THD *thd, Item ***item_arg, Item **, const Item *warn_item, bool *is_null)
Retrieve correct DATETIME value from given item.
Definition: item_cmpfunc.cc:1510
Item * and_conds(Item *a, Item *b)
Builds condition: (a AND b) IS TRUE.
Definition: item_cmpfunc.h:2766
String * eval_string_arg(const CHARSET_INFO *to_cs, Item *arg, String *buffer)
Evaluate an argument string and return it in the desired character set.
Definition: item_func.cc:255
This file follows Google coding style, except for the name MEM_ROOT (which is kept for historical rea...
std::unique_ptr< T, Destroy_only< T > > unique_ptr_destroy_only
std::unique_ptr, but only destroying.
Definition: my_alloc.h:488
Header for compiler-dependent features.
It is interface module to fixed precision decimals library.
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:55
unsigned char uchar
Definition: my_inttypes.h:51
long long int longlong
Definition: my_inttypes.h:54
uint16_t uint16
Definition: my_inttypes.h:64
uint64_t table_map
Definition: my_table_map.h:29
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:93
Time declarations shared between the server and client API: you should not add anything to this heade...
enum_mysql_timestamp_type
Definition: mysql_time.h:44
static bool replace
Definition: mysqlimport.cc:65
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1054
Definition: commit_order_queue.h:33
PT & ref(PT *tp)
Definition: tablespace_impl.cc:358
std::string join(Container cont, const std::string &delim)
join elements of an container into a string separated by a delimiter.
Definition: string.h:150
static mysql_service_status_t add(reference_caching_channel channel, const char *implementation_name) noexcept
Definition: component.cc:134
std::set< Key, Compare, ut::allocator< Key > > set
Specialization of set which uses ut_allocator.
Definition: ut0new.h:2880
std::list< T, ut::allocator< T > > list
Specialization of list which uses ut_allocator.
Definition: ut0new.h:2876
required uint32 status
Definition: replication_asynchronous_connection_failover.proto:60
required string type
Definition: replication_group_member_actions.proto:33