1#ifndef ITEM_SUM_INCLUDED
2#define ITEM_SUM_INCLUDED
53#include "mysqld_error.h"
569 if (item ==
nullptr)
return nullptr;
593 bool eq(
const Item *item,
bool binary_cmp)
const override;
787 snprintf(buff,
sizeof(buff),
"%s as window function",
func_name());
900 void clear()
override;
902 void endup()
override;
995 return static_cast<double>(
val_int());
1039 void clear()
override;
1040 bool add()
override;
1060 void clear()
override;
1061 bool add()
override;
1136 pointer_cast<Check_function_as_value_generator_parameters *>(args);
1200 return "sum_bit_field";
1223 template <
typename... Args>
1225 Args &&... parent_args);
1261 const char *
func_name()
const override {
return "json_arrayagg"; }
1262 void clear()
override;
1263 bool add()
override;
1297 const char *
func_name()
const override {
return "json_objectagg"; }
1298 void clear()
override;
1299 bool add()
override;
1323 void clear()
override;
1324 bool add()
override;
1362 return "variance_field";
1366 pointer_cast<Check_function_as_value_generator_parameters *>(args);
1459 void clear()
override;
1460 bool add()
override;
1468 return sample ?
"var_samp" :
"variance";
1496 pointer_cast<Check_function_as_value_generator_parameters *>(args);
1516 return sample ?
"stddev_samp" :
"std";
1654 void clear()
override;
1680 bool add()
override;
1830 void clear()
override;
1852 bool add()
override;
1907 const char *
func_name()
const override {
return "bit_and"; }
1919 const char *
func_name()
const override {
return "bit_xor"; }
1954 if (
udf.
fix_fields(thd,
this, this->arg_count, this->args))
return true;
1960 void clear()
override;
1961 bool add()
override;
2030 const char *end_not_used;
2034 &end_not_used, &err_not_used)
2045 return cs->cset->strtoll10(
cs, res->
ptr(), &
end, &err_not_used);
2163 const char *
func_name()
const override {
return "group_concat"; }
2166 void clear()
override;
2167 bool add()
override;
2178 const char *end_ptr = res->
ptr() + res->
length();
2196 context = pointer_cast<Item_ident::Change_context *>(arg)->m_context;
2260 const char *
func_name()
const override {
return "row_number"; }
2273 void clear()
override;
2308 return m_dense ?
"dense_rank" :
"rank";
2331 void clear()
override;
2344 const char *
func_name()
const override {
return "cume_dist"; }
2385 const char *
func_name()
const override {
return "percent_rank"; }
2397 void clear()
override;
2487 void clear()
override;
2556 return m_is_first ?
"first_value" :
"last_value";
2564 void clear()
override;
2625 const char *
func_name()
const override {
return "nth_value"; }
2632 void clear()
override;
2683 const char *
func_name()
const override {
return "grouping"; }
2701 :
Item_sum((*sum_func_per_level)[0]),
2703 args = (*THR_MALLOC)->ArrayAlloc<
Item *>(sum_func_per_level->
size());
2705 for (
Item &item : *sum_func_per_level) {
2724 const char *
func_name()
const override {
return "rollup_sum_switcher"; }
2741 void clear()
override;
2764 Item *ret =
nullptr;
2783 return down_cast<Item_sum *>(
args[i]);
2828 return aggr ? false :
true;
2846 bool add()
override;
2851 void clear()
override;
2852 const char *
func_name()
const override {
return "st_collect"; }
The distinct aggregator.
Definition: item_sum.h:802
uint tree_key_length
Definition: item_sum.h:855
uint32 * field_lengths
Definition: item_sum.h:832
bool arg_is_null(bool use_null_value) override
NULLness of being-aggregated argument.
Definition: item_sum.cc:2134
bool endup_done
Definition: item_sum.h:813
Const_distinct
Definition: item_sum.h:857
@ CONST_NULL
Set to true if the result is known to be always NULL.
Definition: item_sum.h:868
@ CONST_NOT_NULL
Set to true if count distinct is on only const items.
Definition: item_sum.h:875
@ NOT_CONST
Definition: item_sum.h:858
static int composite_key_cmp(const void *arg, const void *a, const void *b)
Correctly compare composite keys.
Definition: item_sum.cc:941
void endup() override
Calculate the aggregate function value.
Definition: item_sum.cc:1313
~Aggregator_distinct() override
Definition: item_sum.cc:2084
bool use_distinct_values
When feeding back the data in endup() from Unique/temp table back to Item_sum::add() methods we must ...
Definition: item_sum.h:886
double arg_val_real() override
Floating point value of being-aggregated argument.
Definition: item_sum.cc:2129
void clear() override
Invalidate calculated value and clear the distinct rows.
Definition: item_sum.cc:1212
bool setup(THD *) override
Called before feeding the first row.
Definition: item_sum.cc:1012
bool unique_walk_function(void *element)
Aggregate a distinct row from the distinct hash table.
Definition: item_sum.cc:2077
Unique * tree
Definition: item_sum.h:847
Temp_table_param * tmp_table_param
Definition: item_sum.h:838
bool add() override
Process incoming row.
Definition: item_sum.cc:1244
TABLE * table
Definition: item_sum.h:824
Aggregator_type Aggrtype() override
Definition: item_sum.h:897
my_decimal * arg_val_decimal(my_decimal *value) override
Decimal value of being-aggregated argument.
Definition: item_sum.cc:2124
enum Aggregator_distinct::Const_distinct const_distinct
Aggregator_distinct(Item_sum *sum)
Definition: item_sum.h:889
The pass-through aggregator.
Definition: item_sum.h:916
void clear() override
Called when we need to wipe out all the data from the aggregator : all the values acumulated and all ...
Definition: item_sum.h:922
Aggregator_simple(Item_sum *sum)
Definition: item_sum.h:918
bool setup(THD *thd) override
Called before adding the first row.
Definition: item_sum.h:921
Aggregator_type Aggrtype() override
Definition: item_sum.h:919
my_decimal * arg_val_decimal(my_decimal *value) override
Decimal value of being-aggregated argument.
Definition: item_sum.cc:2101
void endup() override
Called when there are no more data and the final value is to be retrieved.
Definition: item_sum.h:924
double arg_val_real() override
Floating point value of being-aggregated argument.
Definition: item_sum.cc:2105
bool add() override
Called when there's a new value to be aggregated.
Definition: item_sum.h:923
bool arg_is_null(bool use_null_value) override
NULLness of being-aggregated argument.
Definition: item_sum.cc:2109
The abstract base class for the Aggregator_* classes.
Definition: item_sum.h:100
Item_sum * item_sum
Definition: item_sum.h:112
virtual bool arg_is_null(bool use_null_value)=0
NULLness of being-aggregated argument.
Aggregator_type
Definition: item_sum.h:118
@ SIMPLE_AGGREGATOR
Definition: item_sum.h:118
@ DISTINCT_AGGREGATOR
Definition: item_sum.h:118
virtual bool add()=0
Called when there's a new value to be aggregated.
virtual void endup()=0
Called when there are no more data and the final value is to be retrieved.
virtual Aggregator_type Aggrtype()=0
virtual ~Aggregator()=default
virtual my_decimal * arg_val_decimal(my_decimal *value)=0
Decimal value of being-aggregated argument.
virtual void clear()=0
Called when we need to wipe out all the data from the aggregator : all the values acumulated and all ...
Aggregator(Item_sum *arg)
Definition: item_sum.h:115
virtual double arg_val_real()=0
Floating point value of being-aggregated argument.
virtual bool setup(THD *)=0
Called before adding the first row.
Definition: item_cmpfunc.h:132
void set(const DTCollation &dt)
Definition: item.h:192
Definition: item_sum.h:1166
const char * func_name() const override
Definition: item_sum.h:1176
uint prec_increment
Definition: item_sum.h:1169
uint f_precision
Definition: item_sum.h:1168
uint dec_bin_size
Definition: item_sum.h:1168
uint f_scale
Definition: item_sum.h:1168
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:3640
String * val_str(String *) override
Definition: item_sum.cc:3655
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:1175
enum Type type() const override
Definition: item_sum.h:1171
double val_real() override
Definition: item_sum.cc:3625
Item_avg_field(Item_result res_type, Item_sum_avg *item)
Definition: item_sum.cc:3606
CUME_DIST window function, cf.
Definition: item_sum.h:2338
Item_cume_dist(const POS &pos, PT_window *w)
Definition: item_sum.h:2342
Item_non_framing_wf super
Definition: item_sum.h:2339
double val_real() override
Definition: item_sum.cc:4811
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2345
void clear() override
Definition: item_sum.h:2356
const char * func_name() const override
Definition: item_sum.h:2344
bool needs_partition_cardinality() const override
Return true if we need to make two passes over the rows in the partition - either because we need the...
Definition: item_sum.h:2355
String * val_str(String *) override
Definition: item_sum.cc:4831
bool check_wf_semantics1(THD *thd, Query_block *select, Window_evaluation_requirements *reqs) override
Only relevant for aggregates qua window functions.
Definition: item_sum.cc:4801
longlong val_int() override
Definition: item_sum.cc:4823
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2347
my_decimal * val_decimal(my_decimal *buffer) override
Definition: item_sum.cc:4835
Item_result result_type() const override
Definition: item_sum.h:2361
FIRST_VALUE/LAST_VALUE window functions, cf.
Definition: item_sum.h:2537
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2559
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.cc:5035
void reset_field() override
Definition: item_sum.h:2578
const char * func_name() const override
Definition: item_sum.h:2555
bool setup_first_last()
Definition: item_sum.cc:5072
double val_real() override
Definition: item_sum.cc:5122
String * val_str(String *str) override
Definition: item_sum.cc:5177
void update_after_wf_arguments_changed(THD *thd) override
Signal to the function that its arguments may have changed, and that any internal caches etc.
Definition: item_sum.cc:5089
bool check_wf_semantics1(THD *thd, Query_block *select, Window_evaluation_requirements *reqs) override
Only relevant for aggregates qua window functions.
Definition: item_sum.cc:5021
bool compute()
Core logic of FIRST/LAST_VALUE window functions.
Definition: item_sum.cc:5093
int64 cnt
used when evaluating on-the-fly (non-buffered processing)
Definition: item_sum.h:2542
Item_result m_hybrid_type
Definition: item_sum.h:2540
enum Item_result result_type() const override
Definition: item_sum.h:2567
Item_cache * m_value
Definition: item_sum.h:2541
bool val_json(Json_wrapper *wr) override
Get a JSON value from an Item.
Definition: item_sum.cc:5153
void update_field() override
Definition: item_sum.h:2579
enum_null_treatment m_null_treatment
Definition: item_sum.h:2539
Item_sum super
Definition: item_sum.h:2543
void clear() override
Definition: item_sum.cc:5083
bool uses_only_one_row() const override
Only for framing window functions.
Definition: item_sum.h:2587
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_sum.cc:5064
bool add() override
Definition: item_sum.h:2580
Item_first_last_value(const POS &pos, bool first, Item *a, enum_null_treatment null_treatment, PT_window *w)
Definition: item_sum.h:2546
bool m_is_first
if true, the function is FIRST_VALUE, else LAST_VALUE
Definition: item_sum.h:2538
longlong val_int() override
Definition: item_sum.cc:5112
my_decimal * val_decimal(my_decimal *decimal_buffer) override
Definition: item_sum.cc:5163
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.cc:5143
bool fix_fields(THD *thd, Item **items) override
Definition: item_sum.cc:5045
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.cc:5132
Definition: item_sum.h:2092
void clear() override
Definition: item_sum.cc:4302
bool m_result_finalized
True if result has been written to output buffer.
Definition: item_sum.h:2133
String result
Definition: item_sum.h:2109
Item_func_group_concat * original
Following is 0 normal object and pointer to original one for copy (to correctly free resources)
Definition: item_sum.h:2138
longlong val_int() override
Definition: item_sum.h:2174
my_decimal * val_decimal(my_decimal *decimal_value) override
Definition: item_sum.h:2181
friend int dump_leaf_key(void *key_arg, element_count count, void *item_arg)
Append data from current leaf to item->result.
Definition: item_sum.cc:4048
uint row_count
Definition: item_sum.h:2124
void make_unique() override
Definition: item_sum.cc:4576
bool change_context_processor(uchar *arg) override
Definition: item_sum.h:2195
bool setup(THD *thd) override
Definition: item_sum.cc:4454
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: item_sum.cc:4176
Item_sum super
Definition: item_sum.h:2093
bool distinct
True if GROUP CONCAT has the DISTINCT attribute.
Definition: item_sum.h:2096
TABLE * table
Temporary table used to perform group concat.
Definition: item_sum.h:2122
friend int group_concat_key_cmp_with_distinct(const void *arg, const void *key1, const void *key2)
Compares the values for fields in expr list of GROUP_CONCAT.
Definition: item_sum.cc:3970
double val_real() override
Definition: item_sum.cc:4584
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2162
String * val_str(String *str) override
Definition: item_sum.cc:4591
friend int group_concat_key_cmp_with_order(const void *arg, const void *key1, const void *key2)
function of sort for syntax: GROUP_CONCAT(expr,... ORDER BY col,... )
Definition: item_sum.cc:4005
bool force_copy_fields
Definition: item_sum.h:2131
bool fix_fields(THD *, Item **) override
Definition: item_sum.cc:4363
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.h:2184
Unique * unique_filter
If DISTINCT is used with this GROUP_CONCAT, this member is used to filter out duplicates.
Definition: item_sum.h:2120
bool check_wf_semantics1(THD *, Query_block *, Window_evaluation_requirements *) override
Only relevant for aggregates qua window functions.
Definition: item_sum.h:2200
void no_rows_in_result() override
Mark an aggregate as having no rows.
Definition: item_sum.cc:4300
Mem_root_array< ORDER > order_array
Definition: item_sum.h:2123
TREE tree_base
Definition: item_sum.h:2110
void update_field() override
Definition: item_sum.h:2169
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_sum.cc:4616
bool always_null
True if the result is always NULL.
Definition: item_sum.h:2098
Temp_table_param * tmp_table_param
Describes the temporary table used to perform group concat.
Definition: item_sum.h:2108
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.cc:4229
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:4292
const char * func_name() const override
Definition: item_sum.h:2163
Item_result result_type() const override
Definition: item_sum.h:2164
Field * make_string_field(TABLE *table_arg) const override
Create a field to hold a string value from an item.
Definition: item_sum.cc:4259
uint m_order_arg_count
The number of ORDER BY items.
Definition: item_sum.h:2100
TREE * tree
Definition: item_sum.h:2111
Item_func_group_concat(const POS &pos, bool is_distinct, PT_item_list *select_list, PT_order_list *opt_order_list, String *separator, PT_window *w)
Constructor of Item_func_group_concat.
Definition: item_sum.cc:4138
bool add() override
Definition: item_sum.cc:4314
Name_resolution_context * context
Resolver context, points to containing query block.
Definition: item_sum.h:2104
void reset_field() override
Definition: item_sum.h:2168
uint m_field_arg_count
The number of selected items, aka the concat field list.
Definition: item_sum.h:2102
uint group_concat_max_len
The maximum permitted result length in bytes as set in group_concat_max_len system variable.
Definition: item_sum.h:2129
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.h:2187
bool warning_for_row
Definition: item_sum.h:2130
String * separator
String containing separator between group items.
Definition: item_sum.h:2106
~Item_func_group_concat() override
Definition: item_sum.h:2155
Class for implementation of the GROUPING function.
Definition: item_sum.h:2678
bool aggregate_check_group(uchar *arg) override
This function is expected to check if GROUPING function with its arguments is "group-invariant".
Definition: item_sum.cc:6182
longlong val_int() override
Evaluation of the GROUPING function.
Definition: item_sum.cc:6153
Item_func_grouping(const POS &pos, PT_item_list *a)
Definition: item_sum.h:2680
const char * func_name() const override
Definition: item_sum.h:2683
bool fix_fields(THD *thd, Item **ref) override
Resolve the fields in the GROUPING function.
Definition: item_sum.cc:6098
void update_used_tables() override
Updates used tables, not null tables information and accumulates properties up the item tree,...
Definition: item_sum.cc:6194
enum Functype functype() const override
Definition: item_sum.h:2684
Definition: item_func.h:93
Item ** args
Array of pointers to arguments.
Definition: item_func.h:100
virtual Item * get_arg(uint i)
Definition: item_func.h:406
Functype
Definition: item_func.h:178
@ GROUPING_FUNC
Definition: item_func.h:230
virtual uint argument_count() const
Definition: item_func.h:126
table_map used_tables_cache
Value used in calculation of result of used_tables()
Definition: item_func.h:164
bool param_type_is_default(THD *thd, uint start, uint end, uint step, enum_field_types def)
For arguments of this Item_func ("args" array), in range [start, start+step, start+2*step,...
Definition: item_func.cc:516
bool propagate_type(THD *thd, const Type_properties &type) override
Default implementation for all functions: Propagate base_item's type into all arguments.
Definition: item_func.cc:492
Item ** arguments() const
Definition: item_func.h:127
virtual void fix_num_length_and_dec()
Definition: item_func.cc:832
const char * original_db_name() const
Definition: item.h:3922
void set_original_field_name(const char *name_arg)
Definition: item.h:3919
const char * original_table_name() const
Definition: item.h:3923
Definition: item_func.h:895
LEAD/LAG window functions, cf.
Definition: item_sum.h:2445
bool fix_fields(THD *thd, Item **items) override
Definition: item_sum.cc:5448
bool has_value() const
Definition: item_sum.h:2518
bool m_is_lead
if true, the function is LEAD, else LAG
Definition: item_sum.h:2447
bool needs_partition_cardinality() const override
Return true if we need to make two passes over the rows in the partition - either because we need the...
Definition: item_sum.h:2502
const char * func_name() const override
Definition: item_sum.h:2479
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.cc:5569
void set_use_default(bool value)
Definition: item_sum.h:2520
String * val_str(String *str) override
Definition: item_sum.cc:5561
bool m_use_default
execution state: use default value for current row
Definition: item_sum.h:2462
enum Item_result result_type() const override
Definition: item_sum.h:2491
Item_cache * m_default
Definition: item_sum.h:2451
bool compute()
Core logic of LEAD/LAG window functions.
Definition: item_sum.cc:5596
Item_lead_lag(const POS &pos, bool lead, PT_item_list *opt_list, enum_null_treatment null_treatment, PT_window *w)
Definition: item_sum.h:2466
bool check_wf_semantics1(THD *thd, Query_block *select, Window_evaluation_requirements *reqs) override
Only relevant for aggregates qua window functions.
Definition: item_sum.cc:5508
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2482
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.cc:5578
enum_null_treatment m_null_treatment
Definition: item_sum.h:2446
void clear() override
Definition: item_sum.cc:5520
bool use_default() const
Definition: item_sum.h:2521
bool m_has_value
Execution state: if set, we already have a value for current row.
Definition: item_sum.h:2461
longlong val_int() override
Definition: item_sum.cc:5532
my_decimal * val_decimal(my_decimal *decimal_buffer) override
Definition: item_sum.cc:5548
bool check_wf_semantics2(Window_evaluation_requirements *reqs) override
Like check_wf_semantics1.
Definition: item_sum.cc:5457
Item_result m_hybrid_type
Definition: item_sum.h:2449
int64 m_n
canonicalized offset value
Definition: item_sum.h:2448
double val_real() override
Definition: item_sum.cc:5540
void set_has_value(bool value)
Definition: item_sum.h:2517
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.cc:5395
bool val_json(Json_wrapper *wr) override
Get a JSON value from an Item.
Definition: item_sum.cc:5586
bool setup_lead_lag()
Definition: item_sum.cc:5492
Item_cache * m_value
Definition: item_sum.h:2450
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_sum.cc:5485
Item_non_framing_wf super
Definition: item_sum.h:2463
void update_after_wf_arguments_changed(THD *thd) override
Signal to the function that its arguments may have changed, and that any internal caches etc.
Definition: item_sum.cc:5527
Common parent class for window functions that always work on the entire partition,...
Definition: item_sum.h:2216
Item_non_framing_wf(const POS &pos, PT_window *w)
Definition: item_sum.h:2220
bool add() override
Definition: item_sum.h:2237
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.h:2231
Item_non_framing_wf(const POS &pos, Item *a, PT_window *w)
Definition: item_sum.h:2221
Item_non_framing_wf(const POS &pos, PT_item_list *opt_list, PT_window *w)
Definition: item_sum.h:2223
Item_sum super
Definition: item_sum.h:2217
Item_non_framing_wf(THD *thd, Item_non_framing_wf *i)
Definition: item_sum.h:2225
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.h:2227
void update_field() override
Definition: item_sum.h:2236
void reset_field() override
Definition: item_sum.h:2235
bool framing() const override
All aggregates are framing, i.e.
Definition: item_sum.h:2244
bool fix_fields(THD *thd, Item **items) override
Definition: item_sum.cc:4652
NTH_VALUE window function, cf.
Definition: item_sum.h:2603
int64 m_cnt
used when evaluating on-the-fly (non-buffered processing)
Definition: item_sum.h:2610
void update_field() override
Definition: item_sum.h:2650
bool compute()
Core logic of NTH_VALUE window functions.
Definition: item_sum.cc:5288
String * val_str(String *str) override
Definition: item_sum.cc:5355
Item_sum super
Definition: item_sum.h:2612
bool check_wf_semantics2(Window_evaluation_requirements *reqs) override
Like check_wf_semantics1.
Definition: item_sum.cc:4915
enum Item_result result_type() const override
Definition: item_sum.h:2638
Item_result m_hybrid_type
Definition: item_sum.h:2607
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_sum.cc:5240
my_decimal * val_decimal(my_decimal *decimal_buffer) override
Definition: item_sum.cc:5341
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.cc:5375
bool setup_nth()
Definition: item_sum.cc:5247
bool fix_fields(THD *thd, Item **items) override
Definition: item_sum.cc:5200
enum_field_types m_hybrid_field_type
Definition: item_sum.h:2608
int64 m_n
The N of the function.
Definition: item_sum.h:2605
double val_real() override
Definition: item_sum.cc:5331
bool m_from_last
true iff FROM_LAST was specified
Definition: item_sum.h:2606
Item_cache * m_value
Definition: item_sum.h:2609
bool val_json(Json_wrapper *wr) override
Get a JSON value from an Item.
Definition: item_sum.cc:5385
enum_null_treatment m_null_treatment
Definition: item_sum.h:2604
void reset_field() override
Definition: item_sum.h:2649
longlong val_int() override
Definition: item_sum.cc:5321
Item_nth_value(const POS &pos, PT_item_list *a, bool from_last, enum_null_treatment null_treatment, PT_window *w)
Definition: item_sum.h:2615
void clear() override
Definition: item_sum.cc:5258
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.cc:5187
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2626
void update_after_wf_arguments_changed(THD *thd) override
Signal to the function that its arguments may have changed, and that any internal caches etc.
Definition: item_sum.cc:5264
bool add() override
Definition: item_sum.h:2651
const char * func_name() const override
Definition: item_sum.h:2625
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.cc:5365
bool check_wf_semantics1(THD *thd, Query_block *select, Window_evaluation_requirements *reqs) override
Only relevant for aggregates qua window functions.
Definition: item_sum.cc:5268
bool uses_only_one_row() const override
Only for framing window functions.
Definition: item_sum.h:2658
NTILE window function, cf.
Definition: item_sum.h:2408
void clear() override
Definition: item_sum.h:2438
Item_non_framing_wf super
Definition: item_sum.h:2409
String * val_str(String *) override
Definition: item_sum.cc:4990
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2421
const char * func_name() const override
Definition: item_sum.h:2418
bool needs_partition_cardinality() const override
Return true if we need to make two passes over the rows in the partition - either because we need the...
Definition: item_sum.h:2439
bool check_wf_semantics2(Window_evaluation_requirements *reqs) override
Like check_wf_semantics1.
Definition: item_sum.cc:5005
bool fix_fields(THD *thd, Item **items) override
Definition: item_sum.cc:4933
double val_real() override
Definition: item_sum.cc:4985
longlong val_int() override
Definition: item_sum.cc:4939
longlong m_value
Definition: item_sum.h:2410
my_decimal * val_decimal(my_decimal *buff) override
Definition: item_sum.cc:4992
Item_ntile(const POS &pos, Item *a, PT_window *w)
Definition: item_sum.h:2413
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2419
bool check_wf_semantics1(THD *thd, Query_block *select, Window_evaluation_requirements *reqs) override
Only relevant for aggregates qua window functions.
Definition: item_sum.cc:4997
Item_result result_type() const override
Definition: item_sum.h:2437
PERCENT_RANK window function, cf.
Definition: item_sum.h:2367
String * val_str(String *) override
Definition: item_sum.cc:4898
Item_percent_rank(const POS &pos, PT_window *w)
Definition: item_sum.h:2378
ulonglong m_rank_ctr
Increment when window order columns change.
Definition: item_sum.h:2370
const char * func_name() const override
Definition: item_sum.h:2385
Item_result result_type() const override
Definition: item_sum.h:2402
~Item_percent_rank() override
bool check_wf_semantics1(THD *thd, Query_block *select, Window_evaluation_requirements *reqs) override
Only relevant for aggregates qua window functions.
Definition: item_sum.cc:4840
ulonglong m_peers
Needed to make PERCENT_RANK same for peers.
Definition: item_sum.h:2371
double val_real() override
Definition: item_sum.cc:4864
Item_non_framing_wf super
Definition: item_sum.h:2368
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2388
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2386
bool needs_partition_cardinality() const override
Return true if we need to make two passes over the rows in the partition - either because we need the...
Definition: item_sum.h:2395
bool m_last_peer_visited
Set when the last peer has been visited.
Definition: item_sum.h:2375
void clear() override
Definition: item_sum.cc:4907
my_decimal * val_decimal(my_decimal *buffer) override
Definition: item_sum.cc:4902
longlong val_int() override
Definition: item_sum.cc:4890
RANK or DENSE_RANK window function, cf.
Definition: item_sum.h:2287
Item_result result_type() const override
Definition: item_sum.h:2332
void update_after_wf_arguments_changed(THD *thd) override
Signal to the function that its arguments may have changed, and that any internal caches etc.
Definition: item_sum.cc:4707
bool check_wf_semantics1(THD *thd, Query_block *select, Window_evaluation_requirements *reqs) override
Only relevant for aggregates qua window functions.
Definition: item_sum.cc:4720
ulonglong m_duplicates
Needed to make RANK different from DENSE_RANK.
Definition: item_sum.h:2292
bool m_dense
If true, the object represents DENSE_RANK.
Definition: item_sum.h:2289
longlong val_int() override
Definition: item_sum.cc:4738
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2311
~Item_rank() override
Definition: item_sum.cc:4794
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2315
Item_rank(const POS &pos, bool dense, PT_window *w)
Definition: item_sum.h:2296
my_decimal * val_decimal(my_decimal *buff) override
Definition: item_sum.cc:4773
const char * func_name() const override
Definition: item_sum.h:2307
double val_real() override
Definition: item_sum.cc:4766
String * val_str(String *) override
Definition: item_sum.cc:4771
ulonglong m_rank_ctr
Increment when window order columns change.
Definition: item_sum.h:2291
void clear() override
Clear state for a new partition.
Definition: item_sum.cc:4778
Mem_root_array< Cached_item * > m_previous
Values of previous row's ORDER BY items.
Definition: item_sum.h:2294
Item_non_framing_wf super
Definition: item_sum.h:2288
Item with result field.
Definition: item.h:5503
longlong llrint_with_overflow_check(double realval)
Definition: item.h:5554
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item.cc:10495
virtual const char * func_name() const =0
A wrapper Item that contains a number of aggregate items, one for each level of rollup (see Item_roll...
Definition: item_sum.h:2698
table_map used_tables() const override
Definition: item_sum.h:2725
Field * create_tmp_field(bool group, TABLE *table) override
Definition: item_sum.cc:6271
void update_field() override
Definition: item_sum.h:2740
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2727
Item * get_arg(uint i) override
Definition: item_sum.h:2762
Item * set_arg(THD *thd, uint i, Item *new_val) override
Definition: item_sum.h:2763
bool is_null() override
The method allows to determine nullness of a complex expression without fully evaluating it,...
Definition: item_sum.cc:6257
void set_current_rollup_level(int level)
Definition: item_sum.h:2773
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.cc:6211
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_sum.cc:6262
bool aggregator_setup(THD *thd) override
Called to initialize the aggregator.
Definition: item_sum.cc:6304
Item_result result_type() const override
Definition: item_sum.h:2726
String * val_str(String *str) override
Definition: item_sum.cc:6236
int set_aggregator(Aggregator::Aggregator_type aggregator) override
Definition: item_sum.cc:6293
Item_sum * unwrap_sum() override
Non-const version.
Definition: item_sum.h:2778
longlong val_int() override
Definition: item_sum.cc:6229
void reset_field() override
Definition: item_sum.h:2739
const Item_sum * unwrap_sum() const override
In case we are an Item_rollup_sum_switcher, return the underlying Item_sum, otherwise,...
Definition: item_sum.h:2777
Item_rollup_sum_switcher(List< Item > *sum_func_per_level)
Definition: item_sum.h:2700
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.cc:6217
bool aggregator_add_all()
Definition: item_sum.h:2751
Item * current_arg() const
Definition: item_sum.cc:6206
Item_sum * master() const
Definition: item_sum.h:2774
Item_sum * child(size_t i) const
Definition: item_sum.h:2782
enum Sumfunctype real_sum_func() const override
Definition: item_sum.h:2736
bool is_rollup_sum_wrapper() const override
Overridden by Item_rollup_sum_switcher.
Definition: item_sum.h:2776
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2735
const char * func_name() const override
Definition: item_sum.h:2724
int m_current_rollup_level
Definition: item_sum.h:2787
double val_real() override
Definition: item_sum.cc:6222
bool val_json(Json_wrapper *result) override
Get a JSON value from an Item.
Definition: item_sum.cc:6250
uint argument_count() const override
Definition: item_sum.h:2770
my_decimal * val_decimal(my_decimal *dec) override
Definition: item_sum.cc:6243
bool add() override
Definition: item_sum.h:2742
void clear() override
Definition: item_sum.cc:6275
bool reset_and_add_for_rollup(int last_unchanged_group_item_idx)
Definition: item_sum.cc:6281
const int m_num_levels
Definition: item_sum.h:2786
ROW_NUMBER window function, cf.
Definition: item_sum.h:2250
ulonglong m_ctr
Increment for each row in partition.
Definition: item_sum.h:2252
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2263
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2261
bool check_wf_semantics1(THD *, Query_block *, Window_evaluation_requirements *) override
Only relevant for aggregates qua window functions.
Definition: item_sum.h:2277
Item_row_number(const POS &pos, PT_window *w)
Definition: item_sum.h:2255
my_decimal * val_decimal(my_decimal *buff) override
Definition: item_sum.cc:4700
Item_result result_type() const override
Definition: item_sum.h:2275
String * val_str(String *) override
Definition: item_sum.cc:4696
longlong val_int() override
Definition: item_sum.cc:4677
void clear() override
Definition: item_sum.cc:4705
const char * func_name() const override
Definition: item_sum.h:2260
double val_real() override
Definition: item_sum.cc:4691
Definition: item_sum.h:1483
enum Type type() const override
Definition: item_sum.h:1486
Item_std_field(Item_sum_std *item)
Definition: item_sum.cc:3753
bool check_function_as_value_generator(uchar *args) override
Check if this item is allowed for a virtual column or inside a default expression.
Definition: item_sum.h:1494
enum Item_result result_type() const override
Definition: item_sum.h:1489
double val_real() override
Definition: item_sum.cc:3756
const char * func_name() const override
Definition: item_sum.h:1490
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:3764
Definition: item_sum.h:1901
Item_sum_and(const POS &pos, Item *item_par, PT_window *w)
Definition: item_sum.h:1903
const char * func_name() const override
Definition: item_sum.h:1907
Item_sum_and(THD *thd, Item_sum_and *item)
Definition: item_sum.h:1906
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:3221
Definition: item_sum.h:1305
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.cc:2202
void clear() override
Definition: item_sum.cc:2257
String * val_str(String *str) override
Definition: item_sum.cc:2376
const char * func_name() const override
Definition: item_sum.h:1335
void update_field() override
calc next value and merge it with field_value.
Definition: item_sum.cc:3450
Item_sum_sum super
Definition: item_sum.h:1309
Item * result_item(Field *) override
Definition: item_sum.h:1332
double val_real() override
Definition: item_sum.cc:2266
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.h:1338
Item_sum_avg(const POS &pos, Item *item_par, bool distinct, PT_window *w)
Definition: item_sum.h:1313
Field * create_tmp_field(bool group, TABLE *table) override
Definition: item_sum.cc:2235
my_decimal m_avg_dec
Definition: item_sum.h:1310
uint f_scale
Definition: item_sum.h:1308
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1320
double m_avg
Definition: item_sum.h:1311
longlong val_int() override
Definition: item_sum.h:1327
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:2228
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:2291
void reset_field() override
Definition: item_sum.cc:3350
uint prec_increment
Definition: item_sum.h:1307
uint dec_bin_size
Definition: item_sum.h:1308
bool add() override
Definition: item_sum.cc:2259
Item_sum_avg(THD *thd, Item_sum_avg *item)
Definition: item_sum.h:1316
uint f_precision
Definition: item_sum.h:1308
This is used in connection with an Item_sum_bit,.
Definition: item_sum.h:1183
double val_real() override
Definition: item_sum.cc:3696
enum Type type() const override
Definition: item_sum.h:1197
ulonglong reset_bits
Definition: item_sum.h:1185
Item_sum_bit_field(Item_result res_type, Item_sum_bit *item, ulonglong reset_bits)
Definition: item_sum.cc:3661
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:1194
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:3713
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.cc:3739
longlong val_int() override
Definition: item_sum.cc:3681
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.cc:3746
String * val_str(String *) override
Definition: item_sum.cc:3721
const char * func_name() const override
Definition: item_sum.h:1198
Base class used to implement BIT_AND, BIT_OR and BIT_XOR.
Definition: item_sum.h:1732
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.cc:3110
bool add_bits(const String *s1, ulonglong b1)
Accumulate the value of 's1' (if in string mode) or of 'b1' (if in integer mode).
Definition: item_sum.cc:1575
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.h:1841
void remove_bits(const String *s1, ulonglong b1)
For windowing: perform inverse aggregation.
Definition: item_sum.cc:1497
const char initial_value_buff_storage[1]
Buffer used to avoid String allocation in the constructor.
Definition: item_sum.h:1743
static constexpr uint DIGIT_CNT_CARD
Definition: item_sum.h:1786
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1828
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.cc:1441
bool m_is_xor
true iff BIT_XOR
Definition: item_sum.h:1789
void clear() override
Definition: item_sum.cc:3193
Item * result_item(Field *) override
Definition: item_sum.h:1824
bool fix_fields(THD *thd, Item **ref) override
Definition: item_sum.cc:1416
longlong val_int() override
Definition: item_sum.cc:3168
Item_sum super
Definition: item_sum.h:1733
ulonglong * m_digit_cnt
Execution state (windowing): Used for AND, OR to be able to invert window functions in optimized mode...
Definition: item_sum.h:1778
Item_result hybrid_type
Stores the Item's result type. Can only be INT_RESULT or STRING_RESULT.
Definition: item_sum.h:1741
ulonglong reset_bits
Stores the neutral element for function.
Definition: item_sum.h:1735
Item_sum_bit(const POS &pos, Item *item_par, ulonglong reset_arg, PT_window *w)
Definition: item_sum.h:1792
bool is_and() const
Definition: item_sum.h:1854
void reset_field() override
Definition: item_sum.cc:3378
ulonglong m_count
Execution state (windowing): this is for counting rows entering and leaving the window frame,...
Definition: item_sum.h:1749
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.cc:3117
double val_real() override
Definition: item_sum.cc:3142
bool add() override
Common implementation of Item_sum_or::add, Item_sum_and:add and Item_sum_xor::add.
Definition: item_sum.cc:1659
my_decimal * val_decimal(my_decimal *decimal_value) override
Definition: item_sum.cc:3124
enum Item_result result_type() const override
Definition: item_sum.h:1829
uint m_digit_cnt_card
Definition: item_sum.h:1784
Item_sum_bit(THD *thd, Item_sum_bit *item)
Copy constructor, used for executing subqueries with temporary tables.
Definition: item_sum.h:1805
String * val_str(String *str) override
Definition: item_sum.cc:3079
void update_field() override
Definition: item_sum.cc:3388
ulonglong bits
Stores the result value for the INT_RESULT.
Definition: item_sum.h:1737
ulonglong m_frame_null_count
Execution state (windowing): this is for counting NULLs of rows entering and leaving the window frame...
Definition: item_sum.h:1757
String value_buff
Stores the result value for the STRING_RESULT.
Definition: item_sum.h:1739
Implements ST_Collect which aggregates geometries into Multipoints, Multilinestrings,...
Definition: item_sum.h:2792
bool add() override
Definition: item_sum.cc:6379
void clear() override
Definition: item_sum.cc:6373
void read_result_field()
Definition: item_sum.cc:6431
bool fix_fields(THD *thd, Item **ref) override
Definition: item_sum.cc:6342
bool get_date(MYSQL_TIME *, my_time_flags_t) override
Definition: item_sum.h:2812
std::optional< gis::srid_t > srid
Definition: item_sum.h:2794
Item_sum_collect(const POS &pos, Item *a, PT_window *w, bool distinct)
Definition: item_sum.h:2803
void update_field() override
Definition: item_sum.cc:6521
longlong val_int() override
Definition: item_sum.h:2810
bool get_time(MYSQL_TIME *) override
Definition: item_sum.h:2813
std::unique_ptr< gis::Geometrycollection > m_geometrycollection
Definition: item_sum.h:2795
String * val_str(String *str) override
Definition: item_sum.cc:6474
void reset_field() override
Definition: item_sum.cc:6584
Item_sum_collect(THD *thd, Item_sum *item)
Definition: item_sum.h:2800
void store_result_field()
Definition: item_sum.cc:6527
my_decimal * val_decimal(my_decimal *decimal_buffer) override
Definition: item_sum.cc:6579
bool check_wf_semantics1(THD *thd, Query_block *, Window_evaluation_requirements *r) override
Only relevant for aggregates qua window functions.
Definition: item_sum.cc:6364
const char * func_name() const override
Definition: item_sum.h:2852
void pop_front()
Definition: item_sum.cc:6467
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2814
Item_result result_type() const override
Definition: item_sum.h:2815
int set_aggregator(Aggregator::Aggregator_type) override
Definition: item_sum.h:2816
double val_real() override
Definition: item_sum.h:2811
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:6426
Definition: item_sum.h:1055
longlong count
Definition: item_sum.h:1056
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:1087
longlong val_int() override
Definition: item_sum.cc:2164
void update_field() override
Definition: item_sum.cc:3441
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:2145
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1084
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.cc:2196
void make_const(longlong count_arg)
Definition: item_sum.h:1094
void reset_field() override
Definition: item_sum.cc:3342
Item_sum_count(Item_int *number)
Definition: item_sum.h:1067
Item_sum_count(THD *thd, Item_sum_count *item)
Definition: item_sum.h:1082
Item_sum_count(const POS &pos, PT_item_list *list, PT_window *w)
Constructs an instance for COUNT(DISTINCT)
Definition: item_sum.h:1078
void clear() override
Definition: item_sum.cc:2153
const char * func_name() const override
Definition: item_sum.h:1101
Item_sum_count(const POS &pos, Item *item_par, PT_window *w)
Definition: item_sum.h:1065
void no_rows_in_result() override
Mark an aggregate as having no rows.
Definition: item_sum.h:1093
bool add() override
Definition: item_sum.cc:2155
This is used in connection which a parent Item_sum:
Definition: item_sum.h:1118
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.h:1140
Item_result hybrid_type
Stores the Item's result type.
Definition: item_sum.h:1123
enum Item_result result_type() const override
Definition: item_sum.h:1126
bool check_function_as_value_generator(uchar *args) override
Check if this item is allowed for a virtual column or inside a default expression.
Definition: item_sum.h:1134
Field * field
The tmp table's column containing the value of the set function.
Definition: item_sum.h:1121
bool mark_field_in_map(uchar *arg) override
Mark underlying field in read or write map of a table.
Definition: item_sum.h:1127
Abstract base class for the MIN and MAX aggregate functions.
Definition: item_sum.h:1528
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:3032
void no_rows_in_result() override
Mark an aggregate as having no rows.
Definition: item_sum.cc:3027
bool setup_hybrid(Item *item, Item *value_arg)
MIN/MAX function setup.
Definition: item_sum.cc:1751
bool uses_only_one_row() const override
Only for framing window functions.
Definition: item_sum.h:1679
virtual Item_sum_hybrid * clone_hybrid(THD *thd) const =0
Create a clone of this object.
bool add() override
Definition: item_sum.cc:3062
const bool m_is_min
Tells if this is the MIN function (true) or the MAX function (false).
Definition: item_sum.h:1535
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.cc:2963
bool compute()
This function implements the optimized version of retrieving min/max value.
Definition: item_sum.cc:2776
void min_max_update_int_field()
Definition: item_sum.cc:3572
longlong val_int() override
Definition: item_sum.cc:2898
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.cc:2953
void reset_field() override
Definition: item_sum.cc:3245
void clear() override
Definition: item_sum.cc:2727
int64 m_saved_last_value_at
Execution state: keeps track of at which row we saved a non-null last value.
Definition: item_sum.h:1575
Item_cache * arg_cache
Definition: item_sum.h:1544
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.cc:3013
void min_max_update_json_field()
Definition: item_sum.cc:3525
void update_field() override
Definition: item_sum.cc:3486
longlong val_date_temporal() override
Return date value of item in packed longlong format.
Definition: item_sum.cc:2924
void update_after_wf_arguments_changed(THD *thd) override
Signal to the function that its arguments may have changed, and that any internal caches etc.
Definition: item_sum.cc:2737
bool keep_field_type() const override
Definition: item_sum.h:1668
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:2936
int64 m_cnt
Execution state: keeps track if this is the first row in the frame when buffering is not needed.
Definition: item_sum.h:1569
void min_max_update_real_field()
Definition: item_sum.cc:3559
Item_sum_hybrid(THD *thd, const Item_sum_hybrid *item)
Definition: item_sum.h:1639
bool any_value()
Definition: item_sum.h:1676
Item_result hybrid_type
Definition: item_sum.h:1546
bool was_values
Definition: item_sum.h:1547
longlong val_time_temporal() override
Return time value of item in packed longlong format.
Definition: item_sum.cc:2912
bool m_optimize
Set to true when min/max can be optimized using window's ordering.
Definition: item_sum.h:1555
Item_sum_hybrid(const POS &pos, Item *item_par, bool is_min, PT_window *w)
Definition: item_sum.h:1623
Item_sum_hybrid(Item *item_par, bool is_min)
Definition: item_sum.h:1607
Item_sum super
Definition: item_sum.h:1529
void min_max_update_temporal_field()
Definition: item_sum.cc:3507
bool check_wf_semantics1(THD *thd, Query_block *select, Window_evaluation_requirements *r) override
Only relevant for aggregates qua window functions.
Definition: item_sum.cc:2742
bool fix_fields(THD *, Item **) override
Definition: item_sum.cc:1720
String * val_str(String *) override
Definition: item_sum.cc:2973
Arg_comparator * cmp
Definition: item_sum.h:1545
void min_max_update_str_field()
Definition: item_sum.cc:3543
enum Item_result result_type() const override
Definition: item_sum.h:1669
void min_max_update_decimal_field()
Definition: item_sum.cc:3590
double val_real() override
Definition: item_sum.cc:2884
Field * create_tmp_field(bool group, TABLE *table) override
Definition: item_sum.cc:1768
bool m_want_first
For min() - Set to true when results are ordered in ascending and false when descending.
Definition: item_sum.h:1563
Item_cache * value
Definition: item_sum.h:1544
bool m_nulls_first
Set to true if the window is ordered ascending.
Definition: item_sum.h:1551
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_sum.cc:3002
TYPELIB * get_typelib() const override
Get the typelib information for an item of type set or enum.
Definition: item_sum.h:1670
bool val_json(Json_wrapper *wr) override
Get a JSON value from an Item.
Definition: item_sum.cc:2988
Definition: item_sum.h:973
Item_sum_int(const POS &pos, Item *item_par, PT_window *w)
Definition: item_sum.h:975
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.h:999
Item_sum_int(THD *thd, Item_sum_int *item)
Definition: item_sum.h:985
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.h:1002
double val_real() override
Definition: item_sum.h:993
Item_sum_int(Item *item_par)
Definition: item_sum.h:989
enum Item_result result_type() const override
Definition: item_sum.h:1003
String * val_str(String *str) override
Definition: item_sum.cc:1383
Item_sum_int(const POS &pos, PT_item_list *list, PT_window *w)
Definition: item_sum.h:980
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:1385
Implements aggregation of values into an array.
Definition: item_sum.h:1249
Item_sum_json_array(THD *thd, Item_sum *item, unique_ptr_destroy_only< Json_wrapper > wrapper, unique_ptr_destroy_only< Json_array > array)
Definition: item_sum.cc:5834
~Item_sum_json_array() override
bool add() override
Definition: item_sum.cc:5907
unique_ptr_destroy_only< Json_array > m_json_array
Accumulates the final value.
Definition: item_sum.h:1251
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:5956
const char * func_name() const override
Definition: item_sum.h:1261
void clear() override
Definition: item_sum.cc:5849
Implements aggregation of values into an object.
Definition: item_sum.h:1268
Item_sum_json_object(THD *thd, Item_sum *item, unique_ptr_destroy_only< Json_wrapper > wrapper, unique_ptr_destroy_only< Json_object > object)
Definition: item_sum.cc:5858
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:6064
bool add() override
Definition: item_sum.cc:5969
unique_ptr_destroy_only< Json_object > m_json_object
Accumulates the final value.
Definition: item_sum.h:1270
~Item_sum_json_object() override
const char * func_name() const override
Definition: item_sum.h:1297
bool check_wf_semantics1(THD *thd, Query_block *select, Window_evaluation_requirements *reqs) override
Only relevant for aggregates qua window functions.
Definition: item_sum.cc:5883
std::map< std::string, int > m_key_map
Map of keys in Json_object and the count for each key within a window frame.
Definition: item_sum.h:1279
void clear() override
Definition: item_sum.cc:5873
bool m_optimize
If window provides ordering on the key in Json_object, a key_map is not needed to handle rows leaving...
Definition: item_sum.h:1287
String m_tmp_key_value
Buffer used to get the value of the key.
Definition: item_sum.h:1272
Common abstraction for Item_sum_json_array and Item_sum_json_object.
Definition: item_sum.h:1205
void reset_field() override
Definition: item_sum.cc:5794
void update_field() override
Definition: item_sum.cc:5814
bool val_json(Json_wrapper *wr) override
Get a JSON value from an Item.
Definition: item_sum.cc:5712
unique_ptr_destroy_only< Json_wrapper > m_wrapper
Wrapper around the container (object/array) which accumulates the value.
Definition: item_sum.h:1214
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1230
longlong val_int() override
Definition: item_sum.cc:5750
String m_value
String used when reading JSON binary values or JSON text values.
Definition: item_sum.h:1210
String m_conversion_buffer
String used for converting JSON text values to utf8mb4 charset.
Definition: item_sum.h:1212
Item_sum super
Definition: item_sum.h:1206
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.cc:5788
~Item_sum_json() override
String * val_str(String *str) override
Definition: item_sum.cc:5694
my_decimal * val_decimal(my_decimal *decimal_buffer) override
Definition: item_sum.cc:5765
Item_result result_type() const override
Definition: item_sum.h:1231
bool fix_fields(THD *thd, Item **pItem) override
Definition: item_sum.cc:5668
bool check_wf_semantics1(THD *, Query_block *, Window_evaluation_requirements *) override
Only relevant for aggregates qua window functions.
Definition: item_sum.cc:5663
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.cc:5782
Item_sum_json(unique_ptr_destroy_only< Json_wrapper > wrapper, Args &&... parent_args)
Construct an Item_sum_json instance.
Definition: item_sum.cc:5654
double val_real() override
Definition: item_sum.cc:5735
Definition: item_sum.h:1713
Item_sum_max(Item *item_par)
Definition: item_sum.h:1715
Item_sum_max(THD *thd, const Item_sum_max *item)
Definition: item_sum.h:1718
const char * func_name() const override
Definition: item_sum.h:1721
Item_sum_max * clone_hybrid(THD *thd) const override
Create a clone of this object.
Definition: item_sum.cc:3043
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1720
Item_sum_max(const POS &pos, Item *item_par, PT_window *w)
Definition: item_sum.h:1716
Definition: item_sum.h:1699
Item_sum_min(THD *thd, const Item_sum_min *item)
Definition: item_sum.h:1704
Item_sum_min(Item *item_par)
Definition: item_sum.h:1701
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1706
const char * func_name() const override
Definition: item_sum.h:1707
Item_sum_min(const POS &pos, Item *item_par, PT_window *w)
Definition: item_sum.h:1702
Item_sum_min * clone_hybrid(THD *thd) const override
Create a clone of this object.
Definition: item_sum.cc:3039
Common abstract class for: Item_avg_field Item_variance_field.
Definition: item_sum.h:1151
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.h:1157
bool is_null() override
The method allows to determine nullness of a complex expression without fully evaluating it,...
Definition: item_sum.h:1163
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.h:1160
longlong val_int() override
Definition: item_sum.h:1153
Definition: item_sum.h:930
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:1379
Item_sum_num(THD *thd, Item_sum_num *item)
Definition: item_sum.h:949
bool fix_fields(THD *, Item **) override
Definition: item_sum.cc:1389
longlong val_int() override
Definition: item_sum.h:958
enum_field_types default_data_type() const override
Get the default data (output) type for the specific item.
Definition: item_sum.h:951
String * val_str(String *str) override
Definition: item_sum.cc:1377
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.h:964
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.h:967
Item_sum super
Definition: item_sum.h:931
Item_sum_num(Item *item_par)
Definition: item_sum.h:955
bool is_evaluated
Definition: item_sum.h:940
Item_sum_num(const POS &pos, Item *item_par, PT_window *window)
Definition: item_sum.h:943
void reset_field() override
Definition: item_sum.cc:3232
Item_sum_num(const POS &pos, PT_item_list *list, PT_window *w)
Definition: item_sum.h:946
Definition: item_sum.h:1891
Item_sum_or(THD *thd, Item_sum_or *item)
Definition: item_sum.h:1896
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:3207
const char * func_name() const override
Definition: item_sum.h:1897
Item_sum_or(const POS &pos, Item *item_par, PT_window *w)
Definition: item_sum.h:1893
Definition: item_sum.h:1506
double val_real() override
Definition: item_sum.cc:2386
Item_sum_std(const POS &pos, Item *item_par, uint sample_arg, PT_window *w)
Definition: item_sum.h:1508
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:2395
Item_sum_std(THD *thd, Item_sum_std *item)
Definition: item_sum.h:1511
const char * func_name() const override
Definition: item_sum.h:1515
enum Item_result result_type() const override
Definition: item_sum.h:1519
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1512
Item * result_item(Field *) override
Definition: item_sum.h:1514
Definition: item_sum.h:1006
ulonglong m_count
Execution state: this is for counting rows entering and leaving the window frame, see m_frame_null_co...
Definition: item_sum.h:1017
bool check_wf_semantics1(THD *thd, Query_block *select, Window_evaluation_requirements *reqs) override
Only relevant for aggregates qua window functions.
Definition: item_sum.cc:1900
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:1832
enum Item_result result_type() const override
Definition: item_sum.h:1045
double sum
Definition: item_sum.h:1009
bool add() override
Definition: item_sum.cc:1922
Item_result hybrid_type
Definition: item_sum.h:1008
void no_rows_in_result() override
Mark an aggregate as having no rows.
Definition: item_sum.cc:1851
void reset_field() override
Definition: item_sum.cc:3324
String * val_str(String *str) override
Definition: item_sum.cc:2011
longlong val_int() override
Definition: item_sum.cc:1943
my_decimal dec_buffs[2]
Definition: item_sum.h:1010
void clear() override
Definition: item_sum.cc:1839
const char * func_name() const override
Definition: item_sum.h:1051
Item_sum_sum(const POS &pos, Item *item_par, bool distinct, PT_window *window)
Definition: item_sum.h:1027
void update_field() override
calc next value and merge it with field_value.
Definition: item_sum.cc:3412
uint curr_dec_buff
Definition: item_sum.h:1011
ulonglong m_frame_null_count
Execution state: this is for counting NULLs of rows entering and leaving the window frame,...
Definition: item_sum.h:1024
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:2017
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.cc:1853
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1036
double val_real() override
Definition: item_sum.cc:1967
Definition: item_sum.h:2059
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.h:2070
longlong val_int() override
Definition: item_sum.cc:3881
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.h:2073
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:3883
Item_sum_udf_decimal(const POS &pos, udf_func *udf_arg, PT_item_list *opt_list)
Definition: item_sum.h:2061
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:3892
double val_real() override
Definition: item_sum.cc:3879
enum Item_result result_type() const override
Definition: item_sum.h:2076
String * val_str(String *) override
Definition: item_sum.cc:3875
Item_sum_udf_decimal(THD *thd, Item_sum_udf_decimal *item)
Definition: item_sum.h:2064
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2077
Definition: item_sum.h:1969
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:1988
longlong val_int() override
Definition: item_sum.h:1975
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:3871
String * val_str(String *str) override
Definition: item_sum.cc:3867
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:3854
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.h:1982
double val_real() override
Definition: item_sum.cc:3859
Item_sum_udf_float(THD *thd, Item_sum_udf_float *item)
Definition: item_sum.h:1973
Item_sum_udf_float(const POS &pos, udf_func *udf_arg, PT_item_list *opt_list)
Definition: item_sum.h:1971
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.h:1985
Definition: item_sum.h:1996
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.h:2009
Item_sum_udf_int(THD *thd, Item_sum_udf_int *item)
Definition: item_sum.h:2000
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2014
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.h:2012
enum Item_result result_type() const override
Definition: item_sum.h:2013
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:3896
String * val_str(String *str) override
Definition: item_sum.cc:3908
Item_sum_udf_int(const POS &pos, udf_func *udf_arg, PT_item_list *opt_list)
Definition: item_sum.h:1998
longlong val_int() override
Definition: item_sum.cc:3900
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:3912
double val_real() override
Definition: item_sum.h:2003
Definition: item_sum.h:2021
bool resolve_type(THD *) override
Default max_length is max argument length.
Definition: item_sum.cc:3918
double val_real() override
Definition: item_sum.h:2028
String * val_str(String *) override
Definition: item_sum.cc:3934
enum Item_result result_type() const override
Definition: item_sum.h:2054
bool get_date(MYSQL_TIME *ltime, my_time_flags_t fuzzydate) override
Definition: item_sum.h:2048
bool get_time(MYSQL_TIME *ltime) override
Definition: item_sum.h:2051
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:3926
my_decimal * val_decimal(my_decimal *dec) override
Definition: item_sum.cc:3930
Item_sum_udf_str(THD *thd, Item_sum_udf_str *item)
Definition: item_sum.h:2025
longlong val_int() override
Definition: item_sum.h:2037
Item_sum_udf_str(const POS &pos, udf_func *udf_arg, PT_item_list *opt_list)
Definition: item_sum.h:2023
Definition: item_sum.h:1429
ulonglong count
Definition: item_sum.h:1439
void update_field() override
Definition: item_sum.cc:2703
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.cc:2574
double val_real() override
Definition: item_sum.cc:2648
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.h:1473
void clear() override
Definition: item_sum.cc:2628
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:2594
Item * result_item(Field *) override
Definition: item_sum.h:1465
Item_sum_variance(const POS &pos, Item *item_par, uint sample_arg, PT_window *w)
Definition: item_sum.h:1449
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1458
double recurrence_s
Definition: item_sum.h:1437
bool optimize
If set, uses a algorithm II mentioned in the class description to calculate the variance which helps ...
Definition: item_sum.h:1447
const char * func_name() const override
Definition: item_sum.h:1467
bool add() override
Definition: item_sum.cc:2630
void no_rows_in_result() override
Mark an aggregate as having no rows.
Definition: item_sum.h:1466
double recurrence_s2
Definition: item_sum.h:1438
Item_result hybrid_type
Definition: item_sum.h:1433
bool check_wf_semantics1(THD *thd, Query_block *select, Window_evaluation_requirements *reqs) override
Only relevant for aggregates qua window functions.
Definition: item_sum.cc:2558
double recurrence_m
Used in recurrence relation.
Definition: item_sum.h:1437
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:2678
uint prec_increment
Definition: item_sum.h:1441
enum Item_result result_type() const override
Definition: item_sum.h:1472
void reset_field() override
Definition: item_sum.cc:2683
uint sample
Definition: item_sum.h:1440
Field * create_tmp_field(bool group, TABLE *table) override
Create a new field to match the type of value we're expected to yield.
Definition: item_sum.cc:2607
Definition: item_sum.h:1911
const char * func_name() const override
Definition: item_sum.h:1919
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:3214
Item_sum_xor(const POS &pos, Item *item_par, PT_window *w)
Definition: item_sum.h:1913
Item_sum_xor(THD *thd, Item_sum_xor *item)
Definition: item_sum.h:1918
Class Item_sum is the base class used for special expressions that SQL calls 'set functions'.
Definition: item_sum.h:398
virtual void update_after_wf_arguments_changed(THD *)
Signal to the function that its arguments may have changed, and that any internal caches etc.
Definition: item_sum.h:658
bool collect_grouped_aggregates(uchar *) override
Definition: item_sum.cc:688
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_sum.h:580
virtual bool check_wf_semantics1(THD *thd, Query_block *select, Window_evaluation_requirements *reqs)
Only relevant for aggregates qua window functions.
Definition: item_sum.cc:409
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_sum.cc:871
virtual bool check_wf_semantics2(Window_evaluation_requirements *reqs)
Like check_wf_semantics1.
Definition: item_sum.h:716
void aggregator_clear()
Called to cleanup the aggregator.
Definition: item_sum.h:670
virtual const Item_sum * unwrap_sum() const
In case we are an Item_rollup_sum_switcher, return the underlying Item_sum, otherwise,...
Definition: item_sum.h:776
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.cc:479
bool aggregate_check_distinct(uchar *arg) override
Definition: item_sum.cc:604
bool init_sum_func_check(THD *thd)
Prepare an aggregate function for checking of context.
Definition: item_sum.cc:153
virtual bool aggregator_setup(THD *thd)
Called to initialize the aggregator.
Definition: item_sum.h:664
bool wf_common_init()
Common initial actions for window functions.
Definition: item_sum.cc:892
Item_sum(const POS &pos, PT_window *w)
Definition: item_sum.h:514
bool force_copy_fields
Used in making ROLLUP.
Definition: item_sum.h:426
void no_rows_in_result() override
Mark an aggregate as having no rows.
Definition: item_sum.h:604
bool allow_group_via_temp_table
If incremental update of fields is supported.
Definition: item_sum.h:493
int8 max_aggr_level
max level of unbound column references
Definition: item_sum.h:490
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_sum.cc:461
void make_const()
Definition: item_sum.h:587
Item * replace_aggregate(uchar *) override
Definition: item_sum.cc:719
Window * window()
Definition: item_sum.h:726
virtual void make_unique()
Definition: item_sum.h:609
bool fix_fields(THD *thd, Item **ref) override
Definition: item_sum.cc:859
bool reset_and_add()
Resets the aggregate value to its default and aggregates the current value of its attribute(s).
Definition: item_sum.h:544
bool is_null() override
The method allows to determine nullness of a complex expression without fully evaluating it,...
Definition: item_sum.h:585
virtual Item * result_item(Field *field)
Definition: item_sum.h:567
bool forced_const
True means that this field has been evaluated during optimization.
Definition: item_sum.h:507
virtual void update_field()=0
bool check_sum_func(THD *thd, Item **ref)
Validate the semantic requirements of a set function.
Definition: item_sum.cc:246
bool clean_up_after_removal(uchar *arg) override
Remove the item from the list of inner aggregation functions in the Query_block it was moved to by It...
Definition: item_sum.cc:517
void unsupported_as_wf()
Definition: item_sum.h:785
Aggregator * aggr
Aggregator class instance.
Definition: item_sum.h:407
const Window * window() const
Definition: item_sum.h:727
virtual bool needs_partition_cardinality() const
Return true if we need to make two passes over the rows in the partition - either because we need the...
Definition: item_sum.h:756
virtual bool is_rollup_sum_wrapper() const
Overridden by Item_rollup_sum_switcher.
Definition: item_sum.h:770
bool aggregate_check_group(uchar *arg) override
Definition: item_sum.cc:628
bool with_distinct
Indicates how the aggregate function was specified by the parser : true if it was written as AGGREGAT...
Definition: item_sum.h:433
virtual enum Sumfunctype real_sum_func() const
Definition: item_sum.h:538
nesting_map save_deny_window_func
WFs are forbidden when resolving Item_sum; this member is used to restore WF allowance status afterwa...
Definition: item_sum.h:499
bool collect_scalar_subqueries(uchar *) override
Definition: item_sum.cc:727
virtual void reset_field()=0
virtual bool framing() const
All aggregates are framing, i.e.
Definition: item_sum.h:740
bool has_with_distinct() const
Definition: item_sum.h:437
void update_used_tables() override
Updates used tables, not null tables information and accumulates properties up the item tree,...
Definition: item_sum.cc:747
Item * set_arg(THD *thd, uint i, Item *new_val) override
Definition: item_sum.cc:817
bool m_window_resolved
True if we have already resolved this window functions window reference.
Definition: item_sum.h:417
virtual Field * create_tmp_field(bool group, TABLE *table)
Definition: item_sum.cc:661
friend class Aggregator_simple
Definition: item_sum.h:400
void add_used_tables_for_aggr_func()
Add used_tables information for aggregate function, based on its aggregated query block.
Definition: item_sum.cc:805
Item ** referenced_by[2]
For a group aggregate which is aggregated into an outer query block; none, or just the first or both ...
Definition: item_sum.h:479
Sumfunctype
Definition: item_sum.h:439
@ COUNT_FUNC
Definition: item_sum.h:440
@ STD_FUNC
Definition: item_sum.h:448
@ AVG_DISTINCT_FUNC
Definition: item_sum.h:445
@ DENSE_RANK_FUNC
Definition: item_sum.h:456
@ FIRST_LAST_VALUE_FUNC
Definition: item_sum.h:461
@ SUM_BIT_FUNC
Definition: item_sum.h:450
@ COUNT_DISTINCT_FUNC
Definition: item_sum.h:441
@ SUM_FUNC
Definition: item_sum.h:442
@ CUME_DIST_FUNC
Definition: item_sum.h:457
@ SUM_DISTINCT_FUNC
Definition: item_sum.h:443
@ UDF_SUM_FUNC
Definition: item_sum.h:451
@ ROLLUP_SUM_SWITCHER_FUNC
Definition: item_sum.h:463
@ JSON_AGG_FUNC
Definition: item_sum.h:453
@ ROW_NUMBER_FUNC
Definition: item_sum.h:454
@ MAX_FUNC
Definition: item_sum.h:447
@ GEOMETRY_AGGREGATE_FUNC
Definition: item_sum.h:464
@ AVG_FUNC
Definition: item_sum.h:444
@ MIN_FUNC
Definition: item_sum.h:446
@ NTILE_FUNC
Definition: item_sum.h:459
@ NTH_VALUE_FUNC
Definition: item_sum.h:462
@ GROUP_CONCAT_FUNC
Definition: item_sum.h:452
@ RANK_FUNC
Definition: item_sum.h:455
@ LEAD_LAG_FUNC
Definition: item_sum.h:460
@ PERCENT_RANK_FUNC
Definition: item_sum.h:458
@ VARIANCE_FUNC
Definition: item_sum.h:449
virtual int set_aggregator(Aggregator::Aggregator_type aggregator)
Definition: item_sum.cc:822
bool aggregator_add()
Called to add value to the aggregator.
Definition: item_sum.h:676
Item_sum(Item *a)
Definition: item_sum.h:517
void set_distinct(bool distinct)
Definition: item_sum.h:679
Item_sum * next_sum
next in the circular chain of registered objects
Definition: item_sum.h:481
Item_sum * in_sum_func
the containing set function if any
Definition: item_sum.h:482
virtual bool keep_field_type() const
Definition: item_sum.h:565
bool collect_item_field_or_view_ref_processor(uchar *) override
Collects fields and view references that have the qualifying table in the specified query block.
Definition: item_sum.cc:737
bool has_force_copy_fields() const
Definition: item_sum.h:436
Type type() const override
Definition: item_sum.h:534
void mark_as_sum_func()
Definition: item_sum.cc:451
Query_block * aggr_query_block
For a group aggregate, query block where function is aggregated.
Definition: item_sum.h:489
PT_window * m_window
If sum is a window function, this field contains the window.
Definition: item_sum.h:412
Item_sum(const POS &pos, Item *a, PT_window *w)
Definition: item_sum.h:522
static ulonglong ram_limitation(THD *thd)
Calculate the affordable RAM limit for structures like TREE or Unique used in Item_sum_*.
Definition: item_sum.cc:125
bool reset_wf_state(uchar *arg) override
Reset execution state for such window function types as determined by arg.
Definition: item_sum.cc:879
table_map used_tables() const override
Definition: item_sum.h:577
virtual Item_sum * unwrap_sum()
Non-const version.
Definition: item_sum.h:778
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_sum.cc:768
virtual bool setup(THD *)
Definition: item_sum.h:694
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.cc:849
int8 max_sum_func_level
max level of aggregation for contained functions
Definition: item_sum.h:492
virtual bool uses_only_one_row() const
Only for framing window functions.
Definition: item_sum.h:746
Item ** get_arg_ptr(uint i)
Definition: item_sum.h:644
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: item_sum.cc:93
virtual enum Sumfunctype sum_func() const =0
Item_sum(const POS &pos, Item *a, Item *b, PT_window *w)
Definition: item_sum.h:525
bool eq(const Item *item, bool binary_cmp) const override
Definition: item_sum.cc:577
bool has_aggregate_ref_in_group_by(uchar *arg) override
Check if an aggregate is referenced from within the GROUP BY clause of the query block in which it is...
Definition: item_sum.cc:653
Query_block * base_query_block
query block where function is placed
Definition: item_sum.h:483
Definition: item_sum.h:1927
udf_handler udf
Definition: item_sum.h:1931
void update_field() override
Definition: item_sum.h:1963
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.cc:3834
bool itemize(Parse_context *pc, Item **res) override
The same as contextualize() but with additional parameter.
Definition: item_sum.cc:3812
void reset_field() override
Definition: item_sum.h:1962
bool add() override
Definition: item_sum.cc:3827
bool fix_fields(THD *thd, Item **ref) override
Definition: item_sum.h:1948
Item_udf_sum(const POS &pos, udf_func *udf_arg, PT_item_list *opt_list)
Definition: item_sum.h:1934
void clear() override
Definition: item_sum.cc:3821
~Item_udf_sum() override
Definition: item_sum.h:1942
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_sum.cc:3843
Item_udf_sum(THD *thd, Item_udf_sum *item)
Definition: item_sum.h:1938
Item_sum super
Definition: item_sum.h:1928
const char * func_name() const override
Definition: item_sum.h:1947
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1958
Definition: item_sum.h:1347
my_decimal * val_decimal(my_decimal *dec_buf) override
Definition: item_sum.h:1356
const char * func_name() const override
Definition: item_sum.h:1360
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:1359
enum Type type() const override
Definition: item_sum.h:1353
Item_variance_field(Item_sum_variance *item)
Definition: item_sum.cc:3783
uint sample
Definition: item_sum.h:1349
String * val_str(String *str) override
Definition: item_sum.h:1355
double val_real() override
Definition: item_sum.cc:3797
bool check_function_as_value_generator(uchar *args) override
Check if this item is allowed for a virtual column or inside a default expression.
Definition: item_sum.h:1364
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:802
virtual double val_real()=0
String str_value
str_values's main purpose is to cache the value in save_in_field
Definition: item.h:3261
void set_nullable(bool nullable)
Definition: item.h:3344
DTCollation collation
Character set and collation properties assigned for this Item.
Definition: item.h:3268
bool get_time_from_decimal(MYSQL_TIME *ltime)
Convert val_decimal() to time in MYSQL_TIME.
Definition: item.cc:1506