1#ifndef ITEM_SUM_INCLUDED
2#define ITEM_SUM_INCLUDED
54#include "mysqld_error.h"
579 if (item ==
nullptr)
return nullptr;
604 bool eq(
const Item *item)
const override;
800 snprintf(buff,
sizeof(buff),
"%s as window function",
func_name());
917 void clear()
override;
919 void endup()
override;
1015 return static_cast<double>(
val_int());
1068 void clear()
override;
1069 bool add()
override;
1089 void clear()
override;
1090 bool add()
override;
1174 pointer_cast<Check_function_as_value_generator_parameters *>(args);
1263 template <
typename... Args>
1267 Args &&...parent_args);
1281 bool no_conversions)
override;
1311 const char *
func_name()
const override {
return "json_arrayagg"; }
1313 void clear()
override;
1314 bool add()
override;
1348 const char *
func_name()
const override {
return "json_objectagg"; }
1350 void clear()
override;
1351 bool add()
override;
1375 void clear()
override;
1376 bool add()
override;
1408 pointer_cast<Check_function_as_value_generator_parameters *>(args);
1505 void clear()
override;
1506 bool add()
override;
1516 return sample ?
"var_samp" :
"variance";
1540 pointer_cast<Check_function_as_value_generator_parameters *>(args);
1560 return sample ?
"stddev_samp" :
"std";
1698 void clear()
override;
1724 bool add()
override;
1876 void clear()
override;
1899 bool add()
override;
1954 const char *
func_name()
const override {
return "bit_and"; }
1966 const char *
func_name()
const override {
return "bit_xor"; }
2001 if (
udf.
fix_fields(thd,
this, this->arg_count, this->args))
return true;
2007 void clear()
override;
2008 bool add()
override;
2082 const char *end_not_used;
2086 &end_not_used, &err_not_used)
2097 return cs->cset->strtoll10(
cs, res->
ptr(), &
end, &err_not_used);
2215 const char *
func_name()
const override {
return "group_concat"; }
2218 void clear()
override;
2219 bool add()
override;
2230 const char *end_ptr = res->
ptr() + res->
length();
2260 context = pointer_cast<Item_ident::Change_context *>(arg)->m_context;
2323 const char *
func_name()
const override {
return "row_number"; }
2336 void clear()
override;
2371 return m_dense ?
"dense_rank" :
"rank";
2394 void clear()
override;
2407 const char *
func_name()
const override {
return "cume_dist"; }
2448 const char *
func_name()
const override {
return "percent_rank"; }
2460 void clear()
override;
2551 void clear()
override;
2621 return m_is_first ?
"first_value" :
"last_value";
2629 void clear()
override;
2691 const char *
func_name()
const override {
return "nth_value"; }
2698 void clear()
override;
2750 const char *
func_name()
const override {
return "grouping"; }
2775 :
Item_sum((*sum_func_per_level)[0]),
2777 args = (*THR_MALLOC)->ArrayAlloc<
Item *>(sum_func_per_level->
size());
2779 for (
Item &item : *sum_func_per_level) {
2799 const char *
func_name()
const override {
return "rollup_sum_switcher"; }
2816 void clear()
override;
2846 Item *ret =
nullptr;
2865 return down_cast<Item_sum *>(
args[i]);
2904 if (
aggr !=
nullptr) {
2910 return aggr ? false :
true;
2928 bool add()
override;
2933 void clear()
override;
2934 const char *
func_name()
const override {
return "st_collect"; }
Kerberos Client Authentication nullptr
Definition: auth_kerberos_client_plugin.cc:247
The distinct aggregator.
Definition: item_sum.h:819
uint tree_key_length
Definition: item_sum.h:872
uint32 * field_lengths
Definition: item_sum.h:849
bool arg_is_null(bool use_null_value) override
NULLness of being-aggregated argument.
Definition: item_sum.cc:2263
bool endup_done
Definition: item_sum.h:830
Const_distinct
Definition: item_sum.h:874
@ CONST_NULL
Set to true if the result is known to be always NULL.
Definition: item_sum.h:885
@ CONST_NOT_NULL
Set to true if count distinct is on only const items.
Definition: item_sum.h:892
@ NOT_CONST
Definition: item_sum.h:875
static int composite_key_cmp(const void *arg, const void *a, const void *b)
Correctly compare composite keys.
Definition: item_sum.cc:1033
void endup() override
Calculate the aggregate function value.
Definition: item_sum.cc:1426
~Aggregator_distinct() override
Definition: item_sum.cc:2213
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:903
double arg_val_real() override
Floating point value of being-aggregated argument.
Definition: item_sum.cc:2258
void clear() override
Invalidate calculated value and clear the distinct rows.
Definition: item_sum.cc:1320
bool setup(THD *) override
Called before feeding the first row.
Definition: item_sum.cc:1104
bool unique_walk_function(void *element)
Aggregate a distinct row from the distinct hash table.
Definition: item_sum.cc:2206
Unique * tree
Definition: item_sum.h:864
Temp_table_param * tmp_table_param
Definition: item_sum.h:855
bool add() override
Process incoming row.
Definition: item_sum.cc:1352
TABLE * table
Definition: item_sum.h:841
Aggregator_type Aggrtype() override
Definition: item_sum.h:914
my_decimal * arg_val_decimal(my_decimal *value) override
Decimal value of being-aggregated argument.
Definition: item_sum.cc:2253
enum Aggregator_distinct::Const_distinct const_distinct
Aggregator_distinct(Item_sum *sum)
Definition: item_sum.h:906
The pass-through aggregator.
Definition: item_sum.h:933
void clear() override
Called when we need to wipe out all the data from the aggregator: all the values accumulated and all ...
Definition: item_sum.h:939
Aggregator_simple(Item_sum *sum)
Definition: item_sum.h:935
bool setup(THD *thd) override
Called before adding the first row.
Definition: item_sum.h:938
Aggregator_type Aggrtype() override
Definition: item_sum.h:936
my_decimal * arg_val_decimal(my_decimal *value) override
Decimal value of being-aggregated argument.
Definition: item_sum.cc:2230
void endup() override
Called when there are no more data and the final value is to be retrieved.
Definition: item_sum.h:941
double arg_val_real() override
Floating point value of being-aggregated argument.
Definition: item_sum.cc:2234
bool add() override
Called when there's a new value to be aggregated.
Definition: item_sum.h:940
bool arg_is_null(bool use_null_value) override
NULLness of being-aggregated argument.
Definition: item_sum.cc:2238
The abstract base class for the Aggregator_* classes.
Definition: item_sum.h:101
Item_sum * item_sum
Definition: item_sum.h:113
virtual bool arg_is_null(bool use_null_value)=0
NULLness of being-aggregated argument.
Aggregator_type
Definition: item_sum.h:119
@ SIMPLE_AGGREGATOR
Definition: item_sum.h:119
@ DISTINCT_AGGREGATOR
Definition: item_sum.h:119
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 accumulated and all ...
Aggregator(Item_sum *arg)
Definition: item_sum.h:116
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:145
void set(const DTCollation &dt)
Definition: item.h:204
Date_val is a temporal type that represents dates within the range 0000-01-01 and 9999-12-31.
Definition: my_temporal.h:421
Definition: my_temporal.h:341
Definition: item_sum.h:1203
Item_aggr_avg_field(Item_sum_avg *item)
Definition: item_sum.cc:3870
String * val_str(String *) override
Definition: item_sum.cc:3912
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:3898
uint m_prec_increment
Definition: item_sum.h:1215
uint m_dec_bin_size
Definition: item_sum.h:1214
double val_real() override
Definition: item_sum.cc:3887
enum Type type() const override
Definition: item_sum.h:1206
uint m_scale
Definition: item_sum.h:1213
uint m_precision
Definition: item_sum.h:1212
This is used in connection with an Item_sum_bit,.
Definition: item_sum.h:1219
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.cc:3995
enum Type type() const override
Definition: item_sum.h:1229
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.cc:4010
ulonglong m_reset_bits
Definition: item_sum.h:1232
longlong val_int() override
Definition: item_sum.cc:3934
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.cc:4002
double val_real() override
Definition: item_sum.cc:3949
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:3966
String * val_str(String *) override
Definition: item_sum.cc:3974
Item_aggr_bit_field(Item_sum_bit *item, ulonglong reset_bits)
Definition: item_sum.cc:3917
Common abstract class for aggregate field classes that return numeric values: Item_aggr_avg_field Ite...
Definition: item_sum.h:1185
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.h:1194
longlong val_int() override
Definition: item_sum.h:1187
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.h:1191
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.h:1197
bool is_null() override
The method allows to determine nullness of a complex expression without fully evaluating it,...
Definition: item_sum.h:1200
Definition: item_sum.h:1531
enum Type type() const override
Definition: item_sum.h:1534
enum Item_result result_type() const override
Definition: item_sum.h:1537
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:1538
double val_real() override
Definition: item_sum.cc:4020
Item_aggr_std_field(Item_sum_std *item)
Definition: item_sum.cc:4017
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:4026
Definition: item_sum.h:1397
double val_real() override
Definition: item_sum.cc:4060
Item_aggr_variance_field(Item_sum_variance *item)
Definition: item_sum.cc:4048
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:1406
String * val_str(String *str) override
Definition: item_sum.h:1402
my_decimal * val_decimal(my_decimal *dec_buf) override
Definition: item_sum.h:1403
uint m_sample
Definition: item_sum.h:1414
enum Type type() const override
Definition: item_sum.h:1400
This is used in connection with a parent aggregate Item:
Definition: item_sum.h:1154
bool mark_field_in_map(uchar *arg) override
Mark underlying field in read or write map of a table.
Definition: item_sum.h:1165
Item_result m_result_type
Stores the Item's result type.
Definition: item_sum.h:1159
Field * m_field
The tmp table's column containing the value of the set function.
Definition: item_sum.h:1157
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:1172
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:1164
enum Item_result result_type() const override
Definition: item_sum.h:1162
CUME_DIST window function, cf.
Definition: item_sum.h:2401
Item_cume_dist(const POS &pos, PT_window *w)
Definition: item_sum.h:2405
Item_non_framing_wf super
Definition: item_sum.h:2402
double val_real() override
Definition: item_sum.cc:5114
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2408
void clear() override
Definition: item_sum.h:2419
const char * func_name() const override
Definition: item_sum.h:2407
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:2418
String * val_str(String *) override
Definition: item_sum.cc:5134
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:5104
longlong val_int() override
Definition: item_sum.cc:5126
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2410
my_decimal * val_decimal(my_decimal *buffer) override
Definition: item_sum.cc:5138
Item_result result_type() const override
Definition: item_sum.h:2424
FIRST_VALUE/LAST_VALUE window functions, cf.
Definition: item_sum.h:2602
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2624
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.cc:5453
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.cc:5342
void reset_field() override
Definition: item_sum.h:2644
const char * func_name() const override
Definition: item_sum.h:2620
bool setup_first_last()
Definition: item_sum.cc:5384
double val_real() override
Definition: item_sum.cc:5433
String * val_str(String *str) override
Definition: item_sum.cc:5496
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:5401
bool 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:5372
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:5328
bool compute()
Core logic of FIRST/LAST_VALUE window functions.
Definition: item_sum.cc:5405
int64 cnt
used when evaluating on-the-fly (non-buffered processing)
Definition: item_sum.h:2607
Item_result m_hybrid_type
Definition: item_sum.h:2605
enum Item_result result_type() const override
Definition: item_sum.h:2632
Item_cache * m_value
Definition: item_sum.h:2606
bool val_json(Json_wrapper *wr) override
Get a JSON value from an Item.
Definition: item_sum.cc:5474
void update_field() override
Definition: item_sum.h:2645
enum_null_treatment m_null_treatment
Definition: item_sum.h:2604
Item_sum super
Definition: item_sum.h:2608
void clear() override
Definition: item_sum.cc:5395
bool uses_only_one_row() const override
Only for framing window functions.
Definition: item_sum.h:2653
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.cc:5443
bool add() override
Definition: item_sum.h:2646
Item_first_last_value(const POS &pos, bool first, Item *a, enum_null_treatment null_treatment, PT_window *w)
Definition: item_sum.h:2611
bool m_is_first
if true, the function is FIRST_VALUE, else LAST_VALUE
Definition: item_sum.h:2603
longlong val_int() override
Definition: item_sum.cc:5423
my_decimal * val_decimal(my_decimal *decimal_buffer) override
Definition: item_sum.cc:5484
bool fix_fields(THD *thd, Item **items) override
Definition: item_sum.cc:5353
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.cc:5464
Definition: item_sum.h:2146
void clear() override
Definition: item_sum.cc:4576
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.h:2239
bool m_result_finalized
True if result has been written to output buffer.
Definition: item_sum.h:2185
String result
Definition: item_sum.h:2161
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:2190
longlong val_int() override
Definition: item_sum.h:2226
const String * get_separator_str() const noexcept
Definition: item_sum.h:2245
uint32_t get_group_concat_max_len() const noexcept
Definition: item_sum.h:2246
my_decimal * val_decimal(my_decimal *decimal_value) override
Definition: item_sum.h:2233
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:4320
uint row_count
Definition: item_sum.h:2176
void make_unique() override
Definition: item_sum.cc:4849
bool change_context_processor(uchar *arg) override
Definition: item_sum.h:2259
bool setup(THD *thd) override
Definition: item_sum.cc:4732
Item_sum super
Definition: item_sum.h:2147
bool distinct
True if GROUP CONCAT has the DISTINCT attribute.
Definition: item_sum.h:2150
TABLE * table
Temporary table used to perform group concat.
Definition: item_sum.h:2174
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:4241
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.h:2240
double val_real() override
Definition: item_sum.cc:4857
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2214
String * val_str(String *str) override
Definition: item_sum.cc:4864
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:4277
bool force_copy_fields
Definition: item_sum.h:2183
bool fix_fields(THD *, Item **) override
Definition: item_sum.cc:4639
Unique * unique_filter
If DISTINCT is used with this GROUP_CONCAT, this member is used to filter out duplicates.
Definition: item_sum.h:2172
bool check_wf_semantics1(THD *, Query_block *, Window_evaluation_requirements *) override
Only relevant for aggregates qua window functions.
Definition: item_sum.h:2264
void no_rows_in_result() override
Mark an aggregate as having no rows.
Definition: item_sum.cc:4574
Mem_root_array< ORDER > order_array
Definition: item_sum.h:2175
TREE tree_base
Definition: item_sum.h:2162
void update_field() override
Definition: item_sum.h:2221
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_sum.cc:4889
Temp_table_param * tmp_table_param
Describes the temporary table used to perform group concat.
Definition: item_sum.h:2160
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.cc:4501
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:4566
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_sum.cc:4449
const char * func_name() const override
Definition: item_sum.h:2215
Item_result result_type() const override
Definition: item_sum.h:2216
Field * make_string_field(TABLE *table_arg) const override
Create a field to hold a string value from an item.
Definition: item_sum.cc:4533
uint64 hash() override
Generate hash unique to an item depending on its attributes.
Definition: item_sum.cc:4925
uint m_order_arg_count
The number of ORDER BY items.
Definition: item_sum.h:2152
TREE * tree
Definition: item_sum.h:2163
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:4411
bool has_distinct() const noexcept
Definition: item_sum.h:2244
bool add() override
Definition: item_sum.cc:4588
Name_resolution_context * context
Resolver context, points to containing query block.
Definition: item_sum.h:2156
void reset_field() override
Definition: item_sum.h:2220
uint m_field_arg_count
The number of selected items, aka the concat field list.
Definition: item_sum.h:2154
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:2181
bool warning_for_row
Definition: item_sum.h:2182
String * separator
String containing separator between group items.
Definition: item_sum.h:2158
~Item_func_group_concat() override
Definition: item_sum.h:2207
const Mem_root_array< ORDER > & get_order_array() const noexcept
Definition: item_sum.h:2249
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.h:2236
Class for implementation of the GROUPING function.
Definition: item_sum.h:2745
const Query_block * m_query_block
The query block in which this function is called.
Definition: item_sum.h:2762
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:6677
longlong val_int() override
Evaluation of the GROUPING function.
Definition: item_sum.cc:6626
Item_func_grouping(const POS &pos, PT_item_list *a)
Definition: item_sum.h:2747
const char * func_name() const override
Definition: item_sum.h:2750
bool fix_fields(THD *thd, Item **ref) override
Resolve GROUPING function.
Definition: item_sum.cc:6557
bool aggregate_check_distinct(uchar *arg) override
Used by Distinct_check::check_query to determine whether an error should be returned if the GROUPING ...
Definition: item_sum.cc:6647
bool check_args_found_in_group_by() const
Definition: item_sum.cc:6595
bool check_function_as_value_generator(uchar *) override
Check if this item is allowed for a virtual column or inside a default expression.
Definition: item_sum.cc:6609
void update_used_tables() override
Updates used tables, not null tables information and accumulates properties up the item tree,...
Definition: item_sum.cc:6689
enum Functype functype() const override
Definition: item_sum.h:2751
Definition: item_func.h:101
Item ** args
Array of pointers to arguments.
Definition: item_func.h:108
virtual Item * get_arg(uint i)
Get the i'th argument of the function that this object represents.
Definition: item_func.h:504
Functype
Definition: item_func.h:214
@ GROUPING_FUNC
Definition: item_func.h:268
virtual uint argument_count() const
Definition: item_func.h:132
table_map used_tables_cache
Value used in calculation of result of used_tables()
Definition: item_func.h:194
virtual const char * func_name() const =0
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:530
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:506
Item ** arguments() const
Definition: item_func.h:133
virtual void fix_num_length_and_dec()
Definition: item_func.cc:901
const char * original_db_name() const
Definition: item.h:4426
void set_original_field_name(const char *name_arg)
Definition: item.h:4423
const char * original_table_name() const
Definition: item.h:4427
Definition: item_func.h:1048
LEAD/LAG window functions, cf.
Definition: item_sum.h:2508
bool fix_fields(THD *thd, Item **items) override
Definition: item_sum.cc:5777
bool has_value() const
Definition: item_sum.h:2583
bool m_is_lead
if true, the function is LEAD, else LAG
Definition: item_sum.h:2510
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:2567
const char * func_name() const override
Definition: item_sum.h:2542
bool 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:5837
void set_use_default(bool value)
Definition: item_sum.h:2585
String * val_str(String *str) override
Definition: item_sum.cc:5915
bool m_use_default
execution state: use default value for current row
Definition: item_sum.h:2525
enum Item_result result_type() const override
Definition: item_sum.h:2555
Item_cache * m_default
Definition: item_sum.h:2514
bool compute()
Core logic of LEAD/LAG window functions.
Definition: item_sum.cc:5964
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.cc:5937
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:2529
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:5864
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2545
enum_null_treatment m_null_treatment
Definition: item_sum.h:2509
void clear() override
Definition: item_sum.cc:5876
bool use_default() const
Definition: item_sum.h:2586
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.cc:5928
TYPELIB * get_typelib() const override
Get the typelib information for an item of type set or enum.
Definition: item_sum.cc:5786
bool m_has_value
Execution state: if set, we already have a value for current row.
Definition: item_sum.h:2524
longlong val_int() override
Definition: item_sum.cc:5888
my_decimal * val_decimal(my_decimal *decimal_buffer) override
Definition: item_sum.cc:5904
bool check_wf_semantics2(Window_evaluation_requirements *reqs) override
Like check_wf_semantics1.
Definition: item_sum.cc:5809
Item_result m_hybrid_type
Definition: item_sum.h:2512
int64 m_n
canonicalized offset value
Definition: item_sum.h:2511
double val_real() override
Definition: item_sum.cc:5896
void set_has_value(bool value)
Definition: item_sum.h:2582
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.cc:5727
bool val_json(Json_wrapper *wr) override
Get a JSON value from an Item.
Definition: item_sum.cc:5954
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.cc:5946
bool setup_lead_lag()
Definition: item_sum.cc:5848
Item_cache * m_value
Definition: item_sum.h:2513
Item_non_framing_wf super
Definition: item_sum.h:2526
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:5883
Common parent class for window functions that always work on the entire partition,...
Definition: item_sum.h:2280
Item_non_framing_wf(const POS &pos, PT_window *w)
Definition: item_sum.h:2284
bool add() override
Definition: item_sum.h:2300
Item_non_framing_wf(const POS &pos, Item *a, PT_window *w)
Definition: item_sum.h:2285
Item_non_framing_wf(const POS &pos, PT_item_list *opt_list, PT_window *w)
Definition: item_sum.h:2287
Item_sum super
Definition: item_sum.h:2281
Item_non_framing_wf(THD *thd, Item_non_framing_wf *i)
Definition: item_sum.h:2289
void update_field() override
Definition: item_sum.h:2299
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.h:2291
void reset_field() override
Definition: item_sum.h:2298
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.h:2294
bool framing() const override
All aggregates are framing, i.e.
Definition: item_sum.h:2307
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.h:2295
bool fix_fields(THD *thd, Item **items) override
Definition: item_sum.cc:4944
NTH_VALUE window function, cf.
Definition: item_sum.h:2669
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.cc:5707
int64 m_cnt
used when evaluating on-the-fly (non-buffered processing)
Definition: item_sum.h:2676
void update_field() override
Definition: item_sum.h:2717
bool compute()
Core logic of NTH_VALUE window functions.
Definition: item_sum.cc:5612
String * val_str(String *str) override
Definition: item_sum.cc:5677
Item_sum super
Definition: item_sum.h:2678
bool check_wf_semantics2(Window_evaluation_requirements *reqs) override
Like check_wf_semantics1.
Definition: item_sum.cc:5218
enum Item_result result_type() const override
Definition: item_sum.h:2704
Item_result m_hybrid_type
Definition: item_sum.h:2673
my_decimal * val_decimal(my_decimal *decimal_buffer) override
Definition: item_sum.cc:5665
bool setup_nth()
Definition: item_sum.cc:5571
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.cc:5697
bool fix_fields(THD *thd, Item **items) override
Definition: item_sum.cc:5520
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.cc:5687
enum_field_types m_hybrid_field_type
Definition: item_sum.h:2674
int64 m_n
The N of the function.
Definition: item_sum.h:2671
double val_real() override
Definition: item_sum.cc:5655
bool m_from_last
true iff FROM_LAST was specified
Definition: item_sum.h:2672
Item_cache * m_value
Definition: item_sum.h:2675
bool val_json(Json_wrapper *wr) override
Get a JSON value from an Item.
Definition: item_sum.cc:5717
enum_null_treatment m_null_treatment
Definition: item_sum.h:2670
void reset_field() override
Definition: item_sum.h:2716
longlong val_int() override
Definition: item_sum.cc:5645
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:2681
void clear() override
Definition: item_sum.cc:5582
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.cc:5506
bool 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:5560
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2692
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:5588
bool add() override
Definition: item_sum.h:2718
const char * func_name() const override
Definition: item_sum.h:2691
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:5592
bool uses_only_one_row() const override
Only for framing window functions.
Definition: item_sum.h:2725
NTILE window function, cf.
Definition: item_sum.h:2471
void clear() override
Definition: item_sum.h:2501
Item_non_framing_wf super
Definition: item_sum.h:2472
String * val_str(String *) override
Definition: item_sum.cc:5297
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2484
const char * func_name() const override
Definition: item_sum.h:2481
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
bool check_wf_semantics2(Window_evaluation_requirements *reqs) override
Like check_wf_semantics1.
Definition: item_sum.cc:5312
bool fix_fields(THD *thd, Item **items) override
Definition: item_sum.cc:5236
double val_real() override
Definition: item_sum.cc:5292
longlong val_int() override
Definition: item_sum.cc:5242
longlong m_value
Definition: item_sum.h:2473
my_decimal * val_decimal(my_decimal *buff) override
Definition: item_sum.cc:5299
Item_ntile(const POS &pos, Item *a, PT_window *w)
Definition: item_sum.h:2476
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2482
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:5304
Item_result result_type() const override
Definition: item_sum.h:2500
PERCENT_RANK window function, cf.
Definition: item_sum.h:2430
String * val_str(String *) override
Definition: item_sum.cc:5201
Item_percent_rank(const POS &pos, PT_window *w)
Definition: item_sum.h:2441
ulonglong m_rank_ctr
Increment when window order columns change.
Definition: item_sum.h:2433
const char * func_name() const override
Definition: item_sum.h:2448
Item_result result_type() const override
Definition: item_sum.h:2465
~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:5143
ulonglong m_peers
Needed to make PERCENT_RANK same for peers.
Definition: item_sum.h:2434
double val_real() override
Definition: item_sum.cc:5167
Item_non_framing_wf super
Definition: item_sum.h:2431
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2451
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2449
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:2458
bool m_last_peer_visited
Set when the last peer has been visited.
Definition: item_sum.h:2438
void clear() override
Definition: item_sum.cc:5210
my_decimal * val_decimal(my_decimal *buffer) override
Definition: item_sum.cc:5205
longlong val_int() override
Definition: item_sum.cc:5193
RANK or DENSE_RANK window function, cf.
Definition: item_sum.h:2350
Item_result result_type() const override
Definition: item_sum.h:2395
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:4999
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:5023
ulonglong m_duplicates
Needed to make RANK different from DENSE_RANK.
Definition: item_sum.h:2355
bool m_dense
If true, the object represents DENSE_RANK.
Definition: item_sum.h:2352
longlong val_int() override
Definition: item_sum.cc:5041
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2374
~Item_rank() override
Definition: item_sum.cc:5097
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2378
Item_rank(const POS &pos, bool dense, PT_window *w)
Definition: item_sum.h:2359
my_decimal * val_decimal(my_decimal *buff) override
Definition: item_sum.cc:5076
const char * func_name() const override
Definition: item_sum.h:2370
double val_real() override
Definition: item_sum.cc:5069
String * val_str(String *) override
Definition: item_sum.cc:5074
ulonglong m_rank_ctr
Increment when window order columns change.
Definition: item_sum.h:2354
void clear() override
Clear state for a new partition.
Definition: item_sum.cc:5081
Mem_root_array< Cached_item * > m_previous
Values of previous row's ORDER BY items.
Definition: item_sum.h:2357
Item_non_framing_wf super
Definition: item_sum.h:2351
Item with result field.
Definition: item.h:6031
longlong llrint_with_overflow_check(double realval)
Definition: item.h:6070
A wrapper Item that contains a number of aggregate items, one for each level of rollup (see Item_roll...
Definition: item_sum.h:2772
table_map used_tables() const override
Definition: item_sum.h:2800
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.cc:6705
Field * create_tmp_field(bool group, TABLE *table) override
Definition: item_sum.cc:6770
void update_field() override
Definition: item_sum.h:2815
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2802
Item * get_arg(uint i) override
Get the i'th argument of the function that this object represents.
Definition: item_sum.h:2843
Item * set_arg(THD *thd, uint i, Item *new_val) override
Definition: item_sum.h:2845
bool is_null() override
The method allows to determine nullness of a complex expression without fully evaluating it,...
Definition: item_sum.cc:6756
void set_current_rollup_level(int level)
Definition: item_sum.h:2855
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_sum.cc:6761
bool aggregator_setup(THD *thd) override
Called to initialize the aggregator.
Definition: item_sum.cc:6817
Item_result result_type() const override
Definition: item_sum.h:2801
String * val_str(String *str) override
Definition: item_sum.cc:6735
int set_aggregator(Aggregator::Aggregator_type aggregator) override
Definition: item_sum.cc:6806
Item_sum * unwrap_sum() override
Non-const version.
Definition: item_sum.h:2860
longlong val_int() override
Definition: item_sum.cc:6728
void reset_field() override
Definition: item_sum.h:2814
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:2859
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.cc:6716
Item_rollup_sum_switcher(List< Item > *sum_func_per_level)
Definition: item_sum.h:2774
bool aggregator_add_all()
Definition: item_sum.h:2832
Item * current_arg() const
Definition: item_sum.cc:6700
void no_rows_in_result() override
Mark an aggregate as having no rows.
Definition: item_sum.h:2821
Item_sum * master() const
Definition: item_sum.h:2856
Item_sum * child(size_t i) const
Definition: item_sum.h:2864
enum Sumfunctype real_sum_func() const override
Definition: item_sum.h:2811
bool is_rollup_sum_wrapper() const override
Overridden by Item_rollup_sum_switcher.
Definition: item_sum.h:2858
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2810
const char * func_name() const override
Definition: item_sum.h:2799
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.cc:6710
int m_current_rollup_level
Definition: item_sum.h:2869
double val_real() override
Definition: item_sum.cc:6721
bool val_json(Json_wrapper *result) override
Get a JSON value from an Item.
Definition: item_sum.cc:6749
uint argument_count() const override
Definition: item_sum.h:2852
my_decimal * val_decimal(my_decimal *dec) override
Definition: item_sum.cc:6742
bool add() override
Definition: item_sum.h:2817
void clear() override
Definition: item_sum.cc:6788
bool reset_and_add_for_rollup(int last_unchanged_group_item_idx)
Definition: item_sum.cc:6794
const int m_num_levels
Definition: item_sum.h:2868
const Item * get_arg(uint i) const override
Get the i'th argument of the function that this object represents.
Definition: item_sum.h:2844
ROW_NUMBER window function, cf.
Definition: item_sum.h:2313
ulonglong m_ctr
Increment for each row in partition.
Definition: item_sum.h:2315
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2326
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2324
bool check_wf_semantics1(THD *, Query_block *, Window_evaluation_requirements *) override
Only relevant for aggregates qua window functions.
Definition: item_sum.h:2340
Item_row_number(const POS &pos, PT_window *w)
Definition: item_sum.h:2318
my_decimal * val_decimal(my_decimal *buff) override
Definition: item_sum.cc:4992
Item_result result_type() const override
Definition: item_sum.h:2338
String * val_str(String *) override
Definition: item_sum.cc:4988
longlong val_int() override
Definition: item_sum.cc:4969
void clear() override
Definition: item_sum.cc:4997
const char * func_name() const override
Definition: item_sum.h:2323
double val_real() override
Definition: item_sum.cc:4983
Definition: item_sum.h:1948
Item_sum_and(const POS &pos, Item *item_par, PT_window *w)
Definition: item_sum.h:1950
const char * func_name() const override
Definition: item_sum.h:1954
Item_sum_and(THD *thd, Item_sum_and *item)
Definition: item_sum.h:1953
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:3385
Definition: item_sum.h:1357
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.cc:2331
void clear() override
Definition: item_sum.cc:2387
String * val_str(String *str) override
Definition: item_sum.cc:2498
const char * func_name() const override
Definition: item_sum.h:1385
void update_field() override
calc next value and merge it with field_value.
Definition: item_sum.cc:3661
Item_sum_sum super
Definition: item_sum.h:1361
Item * result_item(Field *) override
Definition: item_sum.h:1384
double val_real() override
Definition: item_sum.cc:2396
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.h:1388
Item_sum_avg(const POS &pos, Item *item_par, bool distinct, PT_window *w)
Definition: item_sum.h:1365
Field * create_tmp_field(bool group, TABLE *table) override
Definition: item_sum.cc:2365
my_decimal m_avg_dec
Definition: item_sum.h:1362
uint f_scale
Definition: item_sum.h:1360
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1372
double m_avg
Definition: item_sum.h:1363
longlong val_int() override
Definition: item_sum.h:1379
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:2358
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:2419
void reset_field() override
Definition: item_sum.cc:3556
uint prec_increment
Definition: item_sum.h:1359
uint dec_bin_size
Definition: item_sum.h:1360
bool add() override
Definition: item_sum.cc:2389
Item_sum_avg(THD *thd, Item_sum_avg *item)
Definition: item_sum.h:1368
uint f_precision
Definition: item_sum.h:1360
Base class used to implement BIT_AND, BIT_OR and BIT_XOR.
Definition: item_sum.h:1778
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:1690
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.h:1888
void remove_bits(const String *s1, ulonglong b1)
For windowing: perform inverse aggregation.
Definition: item_sum.cc:1612
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.cc:3267
const char initial_value_buff_storage[1]
Buffer used to avoid String allocation in the constructor.
Definition: item_sum.h:1789
static constexpr uint DIGIT_CNT_CARD
Definition: item_sum.h:1832
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1874
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.cc:1554
bool m_is_xor
true iff BIT_XOR
Definition: item_sum.h:1835
void clear() override
Definition: item_sum.cc:3357
Item * result_item(Field *) override
Definition: item_sum.h:1870
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.cc:3281
bool fix_fields(THD *thd, Item **ref) override
Definition: item_sum.cc:1529
longlong val_int() override
Definition: item_sum.cc:3333
Item_sum super
Definition: item_sum.h:1779
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:1824
Item_result hybrid_type
Stores the Item's result type. Can only be INT_RESULT or STRING_RESULT.
Definition: item_sum.h:1787
ulonglong reset_bits
Stores the neutral element for function.
Definition: item_sum.h:1781
Item_sum_bit(const POS &pos, Item *item_par, ulonglong reset_arg, PT_window *w)
Definition: item_sum.h:1838
bool is_and() const
Definition: item_sum.h:1901
void reset_field() override
Definition: item_sum.cc:3587
ulonglong m_count
Execution state (windowing): this is for counting rows entering and leaving the window frame,...
Definition: item_sum.h:1795
double val_real() override
Definition: item_sum.cc:3307
bool add() override
Common implementation of Item_sum_or::add, Item_sum_and:add and Item_sum_xor::add.
Definition: item_sum.cc:1786
my_decimal * val_decimal(my_decimal *decimal_value) override
Definition: item_sum.cc:3288
enum Item_result result_type() const override
Definition: item_sum.h:1875
uint m_digit_cnt_card
Definition: item_sum.h:1830
Item_sum_bit(THD *thd, Item_sum_bit *item)
Copy constructor, used for executing subqueries with temporary tables.
Definition: item_sum.h:1851
String * val_str(String *str) override
Definition: item_sum.cc:3236
void update_field() override
Definition: item_sum.cc:3597
ulonglong bits
Stores the result value for the INT_RESULT.
Definition: item_sum.h:1783
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:1803
String value_buff
Stores the result value for the STRING_RESULT.
Definition: item_sum.h:1785
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.cc:3274
Implements ST_Collect which aggregates geometries into Multipoints, Multilinestrings,...
Definition: item_sum.h:2874
bool add() override
Definition: item_sum.cc:6892
void clear() override
Definition: item_sum.cc:6886
void read_result_field()
Definition: item_sum.cc:6947
bool fix_fields(THD *thd, Item **ref) override
Definition: item_sum.cc:6855
std::optional< gis::srid_t > srid
Definition: item_sum.h:2876
Item_sum_collect(const POS &pos, Item *a, PT_window *w, bool distinct)
Definition: item_sum.h:2885
void update_field() override
Definition: item_sum.cc:7040
longlong val_int() override
Definition: item_sum.h:2892
bool val_time(Time_val *) override
Evaluate the item and return result as a time value.
Definition: item_sum.h:2895
std::unique_ptr< gis::Geometrycollection > m_geometrycollection
Definition: item_sum.h:2877
String * val_str(String *str) override
Definition: item_sum.cc:6993
bool val_datetime(Datetime_val *, my_time_flags_t) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.h:2896
void reset_field() override
Definition: item_sum.cc:7103
Item_sum_collect(THD *thd, Item_sum *item)
Definition: item_sum.h:2882
void store_result_field()
Definition: item_sum.cc:7046
my_decimal * val_decimal(my_decimal *decimal_buffer) override
Definition: item_sum.cc:7098
bool check_wf_semantics1(THD *thd, Query_block *, Window_evaluation_requirements *r) override
Only relevant for aggregates qua window functions.
Definition: item_sum.cc:6877
const char * func_name() const override
Definition: item_sum.h:2934
bool val_date(Date_val *, my_time_flags_t) override
Evaluate the item and return result as a date value.
Definition: item_sum.h:2894
void pop_front()
Definition: item_sum.cc:6986
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2897
Item_result result_type() const override
Definition: item_sum.h:2898
int set_aggregator(Aggregator::Aggregator_type) override
Definition: item_sum.h:2899
double val_real() override
Definition: item_sum.h:2893
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:6942
Definition: item_sum.h:1084
longlong count
Definition: item_sum.h:1085
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:1118
longlong val_int() override
Definition: item_sum.cc:2293
Item_sum_count(Item *item, bool distinct)
Definition: item_sum.h:1097
void update_field() override
Definition: item_sum.cc:3652
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:2274
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1115
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.cc:2325
void make_const(longlong count_arg)
Definition: item_sum.h:1125
void reset_field() override
Definition: item_sum.cc:3548
Item_sum_count(Item_int *number)
Definition: item_sum.h:1096
Item_sum_count(THD *thd, Item_sum_count *item)
Definition: item_sum.h:1113
Item_sum_count(const POS &pos, PT_item_list *list, PT_window *w)
Constructs an instance for COUNT(DISTINCT)
Definition: item_sum.h:1109
void clear() override
Definition: item_sum.cc:2282
const char * func_name() const override
Definition: item_sum.h:1132
Item_sum_count(const POS &pos, Item *item_par, PT_window *w)
Definition: item_sum.h:1094
void no_rows_in_result() override
Mark an aggregate as having no rows.
Definition: item_sum.h:1124
bool add() override
Definition: item_sum.cc:2284
Abstract base class for the MIN and MAX aggregate functions.
Definition: item_sum.h:1572
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:3189
void no_rows_in_result() override
Mark an aggregate as having no rows.
Definition: item_sum.cc:3184
bool setup_hybrid(Item *item, Item *value_arg)
MIN/MAX function setup.
Definition: item_sum.cc:1878
bool uses_only_one_row() const override
Only for framing window functions.
Definition: item_sum.h:1723
virtual Item_sum_hybrid * clone_hybrid(THD *thd) const =0
Create a clone of this object.
bool add() override
Definition: item_sum.cc:3219
const bool m_is_min
Tells if this is the MIN function (true) or the MAX function (false).
Definition: item_sum.h:1579
bool compute()
This function implements the optimized version of retrieving min/max value.
Definition: item_sum.cc:2923
bool has_values()
Definition: item_sum.h:1720
void min_max_update_int_field()
Definition: item_sum.cc:3835
longlong val_int() override
Definition: item_sum.cc:3056
bool m_has_values
Definition: item_sum.h:1591
void reset_field() override
Reset field before aggregation.
Definition: item_sum.cc:3415
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.cc:3098
bool 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:3155
void clear() override
Definition: item_sum.cc:2874
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:1619
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.cc:3118
Item_cache * arg_cache
Definition: item_sum.h:1588
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.cc:3170
void min_max_update_datetime_field()
Definition: item_sum.cc:3768
void min_max_update_json_field()
Definition: item_sum.cc:3788
void update_field() override
Definition: item_sum.cc:3698
longlong val_date_temporal() override
Return date value of item in packed longlong format.
Definition: item_sum.cc:3070
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:2884
bool keep_field_type() const override
Definition: item_sum.h:1712
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:3082
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:1613
void min_max_update_real_field()
Definition: item_sum.cc:3822
Item_sum_hybrid(THD *thd, const Item_sum_hybrid *item)
Definition: item_sum.h:1683
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.cc:3108
Item_result hybrid_type
Definition: item_sum.h:1590
bool m_optimize
Set to true when min/max can be optimized using window's ordering.
Definition: item_sum.h:1599
void min_max_update_time_field()
Definition: item_sum.cc:3731
Item_sum_hybrid(const POS &pos, Item *item_par, bool is_min, PT_window *w)
Definition: item_sum.h:1667
Item_sum_hybrid(Item *item_par, bool is_min)
Definition: item_sum.h:1651
Item_sum super
Definition: item_sum.h:1573
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:2889
bool fix_fields(THD *, Item **) override
Definition: item_sum.cc:1847
void min_max_update_date_field()
Definition: item_sum.cc:3750
String * val_str(String *) override
Definition: item_sum.cc:3128
Arg_comparator * cmp
Definition: item_sum.h:1589
void min_max_update_str_field()
Definition: item_sum.cc:3806
enum Item_result result_type() const override
Definition: item_sum.h:1713
void min_max_update_decimal_field()
Definition: item_sum.cc:3853
double val_real() override
Definition: item_sum.cc:3042
Field * create_tmp_field(bool group, TABLE *table) override
Definition: item_sum.cc:1895
bool m_want_first
For min() - Set to true when results are ordered in ascending and false when descending.
Definition: item_sum.h:1607
Item_cache * value
Definition: item_sum.h:1588
bool m_nulls_first
Set to true if the window is ordered ascending.
Definition: item_sum.h:1595
TYPELIB * get_typelib() const override
Get the typelib information for an item of type set or enum.
Definition: item_sum.h:1714
bool val_json(Json_wrapper *wr) override
Get a JSON value from an Item.
Definition: item_sum.cc:3141
Definition: item_sum.h:993
Item_sum_int(const POS &pos, Item *item_par, PT_window *w)
Definition: item_sum.h:995
Item_sum_int(THD *thd, Item_sum_int *item)
Definition: item_sum.h:1005
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.h:1023
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.h:1019
double val_real() override
Definition: item_sum.h:1013
Item_sum_int(Item *item_par)
Definition: item_sum.h:1009
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.h:1022
enum Item_result result_type() const override
Definition: item_sum.h:1026
String * val_str(String *str) override
Definition: item_sum.cc:1496
Item_sum_int(const POS &pos, PT_item_list *list, PT_window *w)
Definition: item_sum.h:1000
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:1498
Implements aggregation of values into an array.
Definition: item_sum.h:1297
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:6290
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1312
~Item_sum_json_array() override
bool add() override
Definition: item_sum.cc:6368
unique_ptr_destroy_only< Json_array > m_json_array
Accumulates the final value.
Definition: item_sum.h:1299
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:6417
const char * func_name() const override
Definition: item_sum.h:1311
void clear() override
Definition: item_sum.cc:6308
Implements aggregation of values into an object.
Definition: item_sum.h:1319
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:6317
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:6525
bool add() override
Definition: item_sum.cc:6430
unique_ptr_destroy_only< Json_object > m_json_object
Accumulates the final value.
Definition: item_sum.h:1321
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1349
~Item_sum_json_object() override
const char * func_name() const override
Definition: item_sum.h:1348
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:6344
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:1330
void clear() override
Definition: item_sum.cc:6334
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:1338
String m_tmp_key_value
Buffer used to get the value of the key.
Definition: item_sum.h:1323
Common abstraction for Item_sum_json_array and Item_sum_json_object.
Definition: item_sum.h:1238
void reset_field() override
Definition: item_sum.cc:6250
void update_field() override
Definition: item_sum.cc:6270
bool val_json(Json_wrapper *wr) override
Get a JSON value from an Item.
Definition: item_sum.cc:6121
Json_constructor_null_clause m_json_constructor_null_clause
JSON constructor null clause.
Definition: item_sum.h:1249
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.cc:6234
type_conversion_status save_in_field_inner(Field *field, bool no_conversions) override
Helper function which does all of the work for save_in_field(Field*, bool), except some error checkin...
Definition: item_sum.cc:6149
unique_ptr_destroy_only< Json_wrapper > m_wrapper
Wrapper around the container (object/array) which accumulates the value.
Definition: item_sum.h:1247
longlong val_int() override
Definition: item_sum.cc:6192
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.cc:6225
String m_value
String used when reading JSON binary values or JSON text values.
Definition: item_sum.h:1243
String m_conversion_buffer
String used for converting JSON text values to utf8mb4 charset.
Definition: item_sum.h:1245
Item_sum super
Definition: item_sum.h:1239
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_sum.cc:6065
~Item_sum_json() override
String * val_str(String *str) override
Definition: item_sum.cc:6102
my_decimal * val_decimal(my_decimal *decimal_buffer) override
Definition: item_sum.cc:6207
Item_result result_type() const override
Definition: item_sum.h:1272
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.cc:6243
bool fix_fields(THD *thd, Item **pItem) override
Definition: item_sum.cc:6039
bool check_wf_semantics1(THD *, Query_block *, Window_evaluation_requirements *) override
Only relevant for aggregates qua window functions.
Definition: item_sum.cc:6034
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_sum.cc:6081
Item_sum_json(unique_ptr_destroy_only< Json_wrapper > wrapper, Json_constructor_null_clause json_constructor_null_clause, Args &&...parent_args)
Construct an Item_sum_json instance.
Definition: item_sum.cc:6022
double val_real() override
Definition: item_sum.cc:6177
Definition: item_sum.h:1759
Item_sum_max(Item *item_par)
Definition: item_sum.h:1761
Item_sum_max(THD *thd, const Item_sum_max *item)
Definition: item_sum.h:1764
const char * func_name() const override
Definition: item_sum.h:1767
Item_sum_max * clone_hybrid(THD *thd) const override
Create a clone of this object.
Definition: item_sum.cc:3200
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1766
Item_sum_max(const POS &pos, Item *item_par, PT_window *w)
Definition: item_sum.h:1762
Definition: item_sum.h:1745
Item_sum_min(THD *thd, const Item_sum_min *item)
Definition: item_sum.h:1750
Item_sum_min(Item *item_par)
Definition: item_sum.h:1747
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1752
const char * func_name() const override
Definition: item_sum.h:1753
Item_sum_min(const POS &pos, Item *item_par, PT_window *w)
Definition: item_sum.h:1748
Item_sum_min * clone_hybrid(THD *thd) const override
Create a clone of this object.
Definition: item_sum.cc:3196
Definition: item_sum.h:947
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:1492
Item_sum_num(THD *thd, Item_sum_num *item)
Definition: item_sum.h:966
bool fix_fields(THD *, Item **) override
Definition: item_sum.cc:1502
longlong val_int() override
Definition: item_sum.h:975
enum_field_types default_data_type() const override
Get the default data (output) type for the specific item.
Definition: item_sum.h:968
String * val_str(String *str) override
Definition: item_sum.cc:1490
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.h:984
Item_sum super
Definition: item_sum.h:948
Item_sum_num(Item *item_par)
Definition: item_sum.h:972
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.h:987
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.h:981
bool is_evaluated
Definition: item_sum.h:957
Item_sum_num(const POS &pos, Item *item_par, PT_window *window)
Definition: item_sum.h:960
void reset_field() override
Definition: item_sum.cc:3396
Item_sum_num(const POS &pos, PT_item_list *list, PT_window *w)
Definition: item_sum.h:963
Definition: item_sum.h:1938
Item_sum_or(THD *thd, Item_sum_or *item)
Definition: item_sum.h:1943
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:3371
const char * func_name() const override
Definition: item_sum.h:1944
Item_sum_or(const POS &pos, Item *item_par, PT_window *w)
Definition: item_sum.h:1940
Definition: item_sum.h:1550
double val_real() override
Definition: item_sum.cc:2508
Item_sum_std(const POS &pos, Item *item_par, uint sample_arg, PT_window *w)
Definition: item_sum.h:1552
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:2517
Item_sum_std(THD *thd, Item_sum_std *item)
Definition: item_sum.h:1555
const char * func_name() const override
Definition: item_sum.h:1559
enum Item_result result_type() const override
Definition: item_sum.h:1563
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1556
Item * result_item(Field *) override
Definition: item_sum.h:1558
Definition: item_sum.h:1029
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:1040
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:2027
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:1959
enum Item_result result_type() const override
Definition: item_sum.h:1074
double sum
Definition: item_sum.h:1032
bool add() override
Definition: item_sum.cc:2049
Item_result hybrid_type
Definition: item_sum.h:1031
void no_rows_in_result() override
Mark an aggregate as having no rows.
Definition: item_sum.cc:1978
void reset_field() override
Definition: item_sum.cc:3527
String * val_str(String *str) override
Definition: item_sum.cc:2138
longlong val_int() override
Definition: item_sum.cc:2070
my_decimal dec_buffs[2]
Definition: item_sum.h:1033
void clear() override
Definition: item_sum.cc:1966
const char * func_name() const override
Definition: item_sum.h:1080
Item_sum_sum(const POS &pos, Item *item_par, bool distinct, PT_window *window)
Definition: item_sum.h:1050
void update_field() override
calc next value and merge it with field_value.
Definition: item_sum.cc:3621
Item_sum_sum(Item *item_par)
Definition: item_sum.h:1058
uint curr_dec_buff
Definition: item_sum.h:1034
ulonglong m_frame_null_count
Execution state: this is for counting NULLs of rows entering and leaving the window frame,...
Definition: item_sum.h:1047
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:2144
bool resolve_type(THD *thd) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.cc:1980
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1065
double val_real() override
Definition: item_sum.cc:2094
Definition: item_sum.h:2112
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.h:2127
longlong val_int() override
Definition: item_sum.cc:4152
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.h:2123
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:4154
Item_sum_udf_decimal(const POS &pos, udf_func *udf_arg, PT_item_list *opt_list)
Definition: item_sum.h:2114
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:4163
double val_real() override
Definition: item_sum.cc:4150
enum Item_result result_type() const override
Definition: item_sum.h:2130
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.h:2126
String * val_str(String *) override
Definition: item_sum.cc:4146
Item_sum_udf_decimal(THD *thd, Item_sum_udf_decimal *item)
Definition: item_sum.h:2117
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2131
Definition: item_sum.h:2017
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2037
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.h:2034
longlong val_int() override
Definition: item_sum.h:2023
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:4142
String * val_str(String *str) override
Definition: item_sum.cc:4138
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:4125
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.h:2030
double val_real() override
Definition: item_sum.cc:4130
Item_sum_udf_float(THD *thd, Item_sum_udf_float *item)
Definition: item_sum.h:2021
Item_sum_udf_float(const POS &pos, udf_func *udf_arg, PT_item_list *opt_list)
Definition: item_sum.h:2019
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.h:2033
Definition: item_sum.h:2045
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.h:2061
Item_sum_udf_int(THD *thd, Item_sum_udf_int *item)
Definition: item_sum.h:2049
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.h:2066
enum Item_result result_type() const override
Definition: item_sum.h:2065
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.h:2058
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:4167
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.h:2062
String * val_str(String *str) override
Definition: item_sum.cc:4179
Item_sum_udf_int(const POS &pos, udf_func *udf_arg, PT_item_list *opt_list)
Definition: item_sum.h:2047
longlong val_int() override
Definition: item_sum.cc:4171
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:4183
double val_real() override
Definition: item_sum.h:2052
Definition: item_sum.h:2073
bool resolve_type(THD *) override
Default max_length is max argument length.
Definition: item_sum.cc:4189
double val_real() override
Definition: item_sum.h:2080
String * val_str(String *) override
Definition: item_sum.cc:4205
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_sum.h:2103
enum Item_result result_type() const override
Definition: item_sum.h:2107
bool val_date(Date_val *date, my_time_flags_t flags) override
Evaluate the item and return result as a date value.
Definition: item_sum.h:2100
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:4197
my_decimal * val_decimal(my_decimal *dec) override
Definition: item_sum.cc:4201
Item_sum_udf_str(THD *thd, Item_sum_udf_str *item)
Definition: item_sum.h:2077
longlong val_int() override
Definition: item_sum.h:2089
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_sum.h:2104
Item_sum_udf_str(const POS &pos, udf_func *udf_arg, PT_item_list *opt_list)
Definition: item_sum.h:2075
Definition: item_sum.h:1474
ulonglong count
Definition: item_sum.h:1485
void update_field() override
Definition: item_sum.cc:2848
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.cc:2716
double val_real() override
Definition: item_sum.cc:2793
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.h:1521
void clear() override
Definition: item_sum.cc:2770
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:2736
Item * result_item(Field *) override
Definition: item_sum.h:1511
Item_sum_variance(const POS &pos, Item *item_par, uint sample_arg, PT_window *w)
Definition: item_sum.h:1495
enum Sumfunctype sum_func() const override
Definition: item_sum.h:1504
double recurrence_s
Definition: item_sum.h:1483
bool optimize
If set, uses a algorithm II mentioned in the class description to calculate the variance which helps ...
Definition: item_sum.h:1493
const char * func_name() const override
Definition: item_sum.h:1515
bool add() override
Definition: item_sum.cc:2772
void no_rows_in_result() override
Mark an aggregate as having no rows.
Definition: item_sum.h:1514
double recurrence_s2
Definition: item_sum.h:1484
Item_result hybrid_type
Definition: item_sum.h:1478
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:2700
double recurrence_m
Used in recurrence relation.
Definition: item_sum.h:1482
my_decimal * val_decimal(my_decimal *) override
Definition: item_sum.cc:2823
uint prec_increment
Definition: item_sum.h:1487
enum Item_result result_type() const override
Definition: item_sum.h:1520
void reset_field() override
Definition: item_sum.cc:2828
uint sample
Definition: item_sum.h:1486
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:2749
Definition: item_sum.h:1958
const char * func_name() const override
Definition: item_sum.h:1966
Item * copy_or_same(THD *thd) override
Definition: item_sum.cc:3378
Item_sum_xor(const POS &pos, Item *item_par, PT_window *w)
Definition: item_sum.h:1960
Item_sum_xor(THD *thd, Item_sum_xor *item)
Definition: item_sum.h:1965
Class Item_sum is the base class used for special expressions that SQL calls 'set functions'.
Definition: item_sum.h:399
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:671
bool collect_grouped_aggregates(uchar *) override
Definition: item_sum.cc:750
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:590
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:427
bool m_null_executed
true if the function is determined to be NULL at start of execution
Definition: item_sum.h:514
virtual bool check_wf_semantics2(Window_evaluation_requirements *reqs)
Like check_wf_semantics1.
Definition: item_sum.h:729
void aggregator_clear()
Called to cleanup the aggregator.
Definition: item_sum.h:683
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:789
bool resolve_type(THD *) override
Resolve type-related information for this item, such as result field type, maximum size,...
Definition: item_sum.cc:510
bool aggregate_check_distinct(uchar *arg) override
Definition: item_sum.cc:666
~Item_sum() override
Definition: item_sum.h:541
bool init_sum_func_check(THD *thd)
Prepare an aggregate function for checking of context.
Definition: item_sum.cc:167
virtual bool aggregator_setup(THD *thd)
Called to initialize the aggregator.
Definition: item_sum.h:677
bool wf_common_init()
Common initial actions for window functions.
Definition: item_sum.cc:983
Item_sum(const POS &pos, PT_window *w)
Definition: item_sum.h:522
bool force_copy_fields
Used in making ROLLUP.
Definition: item_sum.h:427
void no_rows_in_result() override
Mark an aggregate as having no rows.
Definition: item_sum.h:616
bool allow_group_via_temp_table
If incremental update of fields is supported.
Definition: item_sum.h:495
void add_json_info(Json_object *obj) override
Add all the node-specific json fields.
Definition: item_sum.h:804
int8 max_aggr_level
max level of unbound column references
Definition: item_sum.h:492
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_sum.cc:481
void make_const()
Definition: item_sum.h:597
Item * replace_aggregate(uchar *) override
Definition: item_sum.cc:781
Window * window()
Definition: item_sum.h:739
virtual void make_unique()
Definition: item_sum.h:621
bool eq_specific(const Item *item) const override
Provide a more specific equality check for a function.
Definition: item_sum.cc:658
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_sum.cc:106
bool fix_fields(THD *thd, Item **ref) override
Definition: item_sum.cc:936
bool reset_and_add()
Resets the aggregate value to its default and aggregates the current value of its attribute(s).
Definition: item_sum.h:554
bool 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:948
bool check_function_as_value_generator(uchar *) override
Check if this item is allowed for a virtual column or inside a default expression.
Definition: item_sum.cc:961
bool is_null() override
The method allows to determine nullness of a complex expression without fully evaluating it,...
Definition: item_sum.h:595
virtual Item * result_item(Field *field)
Definition: item_sum.h:577
bool forced_const
True means that this field has been evaluated during optimization.
Definition: item_sum.h:509
virtual void update_field()=0
bool eq(const Item *item) const override
Definition: item_sum.cc:635
bool check_sum_func(THD *thd, Item **ref)
Validate the semantic requirements of a set function.
Definition: item_sum.cc:252
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:554
void unsupported_as_wf()
Definition: item_sum.h:798
Aggregator * aggr
Aggregator class instance.
Definition: item_sum.h:408
const Window * window() const
Definition: item_sum.h:740
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:769
virtual bool is_rollup_sum_wrapper() const
Overridden by Item_rollup_sum_switcher.
Definition: item_sum.h:783
bool aggregate_check_group(uchar *arg) override
Definition: item_sum.cc:690
bool with_distinct
Indicates how the aggregate function was specified by the parser : true if it was written as AGGREGAT...
Definition: item_sum.h:434
virtual enum Sumfunctype real_sum_func() const
Definition: item_sum.h:548
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:501
bool collect_scalar_subqueries(uchar *) override
Definition: item_sum.cc:789
virtual void reset_field()=0
virtual bool framing() const
All aggregates are framing, i.e.
Definition: item_sum.h:753
bool has_with_distinct() const
Definition: item_sum.h:438
void update_used_tables() override
Updates used tables, not null tables information and accumulates properties up the item tree,...
Definition: item_sum.cc:809
Item * set_arg(THD *thd, uint i, Item *new_val) override
Definition: item_sum.cc:889
bool m_window_resolved
True if we have already resolved this window functions window reference.
Definition: item_sum.h:418
virtual Field * create_tmp_field(bool group, TABLE *table)
Definition: item_sum.cc:723
friend class Aggregator_simple
Definition: item_sum.h:401
void add_used_tables_for_aggr_func()
Add used_tables information for aggregate function, based on its aggregated query block.
Definition: item_sum.cc:877
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:481
bool m_null_resolved
true if the function is resolved to be always NULL
Definition: item_sum.h:512
Sumfunctype
Definition: item_sum.h:440
@ COUNT_FUNC
Definition: item_sum.h:441
@ STD_FUNC
Definition: item_sum.h:449
@ AVG_DISTINCT_FUNC
Definition: item_sum.h:446
@ DENSE_RANK_FUNC
Definition: item_sum.h:458
@ FIRST_LAST_VALUE_FUNC
Definition: item_sum.h:463
@ SUM_BIT_FUNC
Definition: item_sum.h:451
@ COUNT_DISTINCT_FUNC
Definition: item_sum.h:442
@ SUM_FUNC
Definition: item_sum.h:443
@ JSON_OBJECTAGG_FUNC
Definition: item_sum.h:454
@ CUME_DIST_FUNC
Definition: item_sum.h:459
@ SUM_DISTINCT_FUNC
Definition: item_sum.h:444
@ UDF_SUM_FUNC
Definition: item_sum.h:452
@ ROLLUP_SUM_SWITCHER_FUNC
Definition: item_sum.h:465
@ ROW_NUMBER_FUNC
Definition: item_sum.h:456
@ MAX_FUNC
Definition: item_sum.h:448
@ GEOMETRY_AGGREGATE_FUNC
Definition: item_sum.h:466
@ AVG_FUNC
Definition: item_sum.h:445
@ MIN_FUNC
Definition: item_sum.h:447
@ JSON_ARRAYAGG_FUNC
Definition: item_sum.h:455
@ NTILE_FUNC
Definition: item_sum.h:461
@ NTH_VALUE_FUNC
Definition: item_sum.h:464
@ GROUP_CONCAT_FUNC
Definition: item_sum.h:453
@ RANK_FUNC
Definition: item_sum.h:457
@ LEAD_LAG_FUNC
Definition: item_sum.h:462
@ PERCENT_RANK_FUNC
Definition: item_sum.h:460
@ VARIANCE_FUNC
Definition: item_sum.h:450
virtual int set_aggregator(Aggregator::Aggregator_type aggregator)
Definition: item_sum.cc:894
bool aggregator_add()
Called to add value to the aggregator.
Definition: item_sum.h:689
Item_sum(Item *a)
Definition: item_sum.h:525
void set_distinct(bool distinct)
Definition: item_sum.h:692
Item_sum * next_sum
next in the circular chain of registered objects
Definition: item_sum.h:483
Item_sum * in_sum_func
the containing set function if any
Definition: item_sum.h:484
virtual bool keep_field_type() const
Definition: item_sum.h:575
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:799
bool has_force_copy_fields() const
Definition: item_sum.h:437
Type type() const override
Definition: item_sum.h:544
void mark_as_sum_func()
Definition: item_sum.cc:471
Query_block * aggr_query_block
For a group aggregate, query block where function is aggregated.
Definition: item_sum.h:491
PT_window * m_window
If sum is a window function, this field contains the window.
Definition: item_sum.h:413
Item_sum(const POS &pos, Item *a, PT_window *w)
Definition: item_sum.h:530
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:139
bool reset_wf_state(uchar *arg) override
Reset execution state for such window function types as determined by arg.
Definition: item_sum.cc:970
table_map used_tables() const override
Definition: item_sum.h:587
virtual Item_sum * unwrap_sum()
Non-const version.
Definition: item_sum.h:791
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:830
virtual bool setup(THD *)
Definition: item_sum.h:707
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.cc:924
int8 max_sum_func_level
max level of aggregation for contained functions
Definition: item_sum.h:494
virtual bool uses_only_one_row() const
Only for framing window functions.
Definition: item_sum.h:759
Item ** get_arg_ptr(uint i)
Definition: item_sum.h:657
virtual enum Sumfunctype sum_func() const =0
Item_sum(const POS &pos, Item *a, Item *b, PT_window *w)
Definition: item_sum.h:533
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:715
Query_block * base_query_block
query block where function is placed
Definition: item_sum.h:485
uint64 hash() override
Generate hash unique to an item depending on its attributes.
Definition: item_sum.cc:499
Definition: item_sum.h:1974
uint64 hash() override
Generate hash unique to an item depending on its attributes.
Definition: item_sum.cc:4117
udf_handler udf
Definition: item_sum.h:1978
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_sum.cc:4076
void update_field() override
Definition: item_sum.h:2010
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_sum.cc:4097
void reset_field() override
Definition: item_sum.h:2009
bool add() override
Definition: item_sum.cc:4091
bool fix_fields(THD *thd, Item **ref) override
Definition: item_sum.h:1995
Item_udf_sum(const POS &pos, udf_func *udf_arg, PT_item_list *opt_list)
Definition: item_sum.h:1981
void clear() override
Definition: item_sum.cc:4085
~Item_udf_sum() override
Definition: item_sum.h:1989
void print(const THD *thd, String *str, enum_query_type query_type) const override
This method is used for to:
Definition: item_sum.cc:4106
Item_udf_sum(THD *thd, Item_udf_sum *item)
Definition: item_sum.h:1985
Item_sum super
Definition: item_sum.h:1975
const char * func_name() const override
Definition: item_sum.h:1994
enum Sumfunctype sum_func() const override
Definition: item_sum.h:2005
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:935
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:3680
void set_nullable(bool nullable)
Definition: item.h:3792
bool get_datetime_from_numeric(Datetime_val *dt, my_time_flags_t flags)
Convert a numeric type to datetime.
Definition: item.cc:1717
DTCollation collation
Character set and collation properties assigned for this Item.
Definition: item.h:3687
bool get_date_from_int(Date_val *date, my_time_flags_t flags)
Convert val_int() to date.
Definition: item.cc:1653
void set_data_type(enum_field_types data_type)
Set the data type of the current Item.
Definition: item.h:1519
my_decimal * val_decimal_from_string(my_decimal *decimal_value)
Definition: item.cc:390
bool is_nullable() const
Definition: item.h:3791
void set_data_type_geometry()
Set the data type of the Item to be GEOMETRY.
Definition: item.h:1761
bool get_time_from_decimal(Time_val *time)
Convert val_decimal() to time.
Definition: item.cc:1789
void set_data_type_double()
Set the data type of the Item to be double precision floating point.
Definition: item.h:1585
bool get_time_from_numeric(Time_val *time)
Convert a numeric type to time.
Definition: item.cc:1819
Item_name_string item_name
Name from query.
Definition: item.h:3688
bool fixed
True if item has been resolved.
Definition: item.h:3780
virtual Item_result result_type() const
Definition: item.h:1457
bool null_value
True if item is null.
Definition: item.h:3817
Type
Definition: item.h:970
@ SUM_FUNC_ITEM
A grouped aggregate function, or window function.
Definition: item.h:974
@ AGGR_FIELD_ITEM
A special field for certain aggregate operations.
Definition: item.h:975
bool get_datetime_from_string(Datetime_val *dt, my_time_flags_t flags)
Convert val_str() to datetime.
Definition: item.cc:1605
bool get_datetime_from_int(Datetime_val *dt, my_time_flags_t flags)
Convert val_int() to datetime.
Definition: item.cc:1647
bool get_datetime_from_real(Datetime_val *dt, my_time_flags_t flags)
Convert val_real() to datetime.
Definition: item.cc:1627
virtual TYPELIB * get_typelib() const
Get the typelib information for an item of type set or enum.
Definition: item.h:1828
my_decimal * val_decimal_from_real(my_decimal *decimal_value)
Definition: item.cc:371
bool get_date_from_real(Date_val *date, my_time_flags_t flags)
Convert val_real() to date.
Definition: item.cc:1621
bool get_time_from_int(Time_val *time)
Convert val_int() to time.
Definition: item.cc:1796
bool unsigned_flag
Definition: item.h:3818
bool get_date_from_string(Date_val *date, my_time_flags_t flags)
Convert val_str() to date.
Definition: item.cc:1613
longlong val_int_from_string()
Definition: item.cc:541
void set_grouping_func()
Set the property: this item is a call to GROUPING.
Definition: item.h:3597
bool get_time_from_real(Time_val *time)
Convert val_real() to time.
Definition: item.cc:1783
virtual bool mark_field_in_map(uchar *arg)
Mark underlying field in read or write map of a table.
Definition: item.h:2930
bool hidden
If the item is in a SELECT list (Query_block::fields) and hidden is true, the item wasn't actually in...
Definition: item.h:3828
void set_data_type_from_item(const Item *item)
Set data type properties of the item from the properties of another item.
Definition: item.h:1805
bool get_datetime_from_decimal(Datetime_val *dt, my_time_flags_t flags)
Convert val_decimal() to datetime.
Definition: item.cc:1640
bool get_date_from_numeric(Date_val *date, my_time_flags_t flags)
Convert a numeric type to date.
Definition: item.cc:1701
bool get_date_from_decimal(Date_val *date, my_time_flags_t flags)
Convert val_decimal() to date.
Definition: item.cc:1633
void set_data_type_longlong()
Set the data type of the Item to be longlong.
Definition: item.h:1561
double val_real_from_string()
Definition: item.cc:491
bool update_null_value()
Make sure the null_value member has a correct value.
Definition: item.cc:8058
bool get_time_from_string(Time_val *time)
Convert val_str() to time.
Definition: item.cc:1775
String * val_string_from_real(String *str)
Definition: item.cc:292
Represents a JSON array container, i.e.
Definition: json_dom.h:520
Represents a JSON container value of type "object" (ECMA), type J_OBJECT here.
Definition: json_dom.h:374
bool add_alias(std::string_view key, Json_dom *value)
Insert the value into the object.
Definition: json_dom.h:416
Abstraction for accessing JSON values irrespective of whether they are (started out as) binary JSON v...
Definition: json_dom.h:1268
Definition: sql_list.h:494
A typesafe replacement for DYNAMIC_ARRAY.
Definition: mem_root_array.h:432
Wrapper class for an Item list head, used to allocate Item lists in the parser in a context-independe...
Definition: parse_tree_helpers.h:109
Definition: parse_tree_nodes.h:234
Parse tree node for a window; just a shallow wrapper for class Window, q.v.
Definition: parse_tree_window.h:39
void error(Context *pc, const POS &pos) const
syntax_error() function replacement for deferred reporting of syntax errors
Definition: parse_tree_node_base.h:346
This class represents a query block, aka a query specification, which is a query consisting of a SELE...
Definition: sql_lex.h:1198
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:169
const CHARSET_INFO * charset() const
Definition: sql_string.h:242
const char * ptr() const
Definition: sql_string.h:251
size_t length() const
Definition: sql_string.h:243
void set(String &str, size_t offset, size_t arg_length)
Definition: sql_string.h:304
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
Object containing parameters used when creating and using temporary tables.
Definition: temp_table_param.h:97
Time_val is a temporal type that represents only time.
Definition: my_temporal.h:57
Unique – class for unique (removing of duplicates).
Definition: uniques.h:53
Represents the (explicit) window of a SQL 2003 section 7.11 <window clause>, or the implicit (inlined...
Definition: window.h:110
uint size() const
Definition: sql_list.h:326
A (partial) implementation of std::deque allocating its blocks on a MEM_ROOT.
Definition: mem_root_deque.h:172
my_decimal class limits 'decimal_t' type to what we need in MySQL.
Definition: my_decimal.h:97
const char * name() const
Definition: sql_udf.h:118
bool is_initialized() const
Definition: sql_udf.h:116
bool m_original
Definition: sql_udf.h:105
bool fix_fields(THD *thd, Item_result_field *item, uint arg_count, Item **args)
Definition: item_func.cc:4884
void free_handler()
Definition: item_func.cc:4865
enum_query_type
Query type constants (usable as bitmap flags).
Definition: enum_query_type.h:31
This file contains the field type.
enum_field_types
Column types for MySQL Note: Keep include/mysql/components/services/bits/stored_program_bits....
Definition: field_types.h:56
@ MYSQL_TYPE_LONGLONG
Definition: field_types.h:65
@ MYSQL_TYPE_NEWDECIMAL
Definition: field_types.h:82
@ MYSQL_TYPE_DOUBLE
Definition: field_types.h:62
static const std::string dec("DECRYPTION")
This file declares the coordinate system specific subclasses of the geometry class hierarchy.
void my_error(int nr, myf MyFlags,...)
Fill in and print a previously registered error message.
Definition: my_error.cc:217
static int flags[50]
Definition: hp_test1.cc:40
static uint16 key1[1001]
Definition: hp_test2.cc:50
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:4320
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:4241
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:4277
Json_constructor_null_clause
Definition: item_sum.h:1235
A better implementation of the UNIX ctype(3) library.
MYSQL_STRINGS_EXPORT CHARSET_INFO my_charset_bin
Definition: ctype-bin.cc:499
double my_strntod(const CHARSET_INFO *cs, const char *str, size_t length, const char **end, int *err)
Definition: m_ctype.h:759
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:480
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:56
unsigned char uchar
Definition: my_inttypes.h:52
int64_t int64
Definition: my_inttypes.h:68
long long int longlong
Definition: my_inttypes.h:55
int8_t int8
Definition: my_inttypes.h:62
#define MYF(v)
Definition: my_inttypes.h:97
uint64_t uint64
Definition: my_inttypes.h:69
uint32_t uint32
Definition: my_inttypes.h:67
MYSQL_STRINGS_EXPORT long long my_strtoll10(const char *nptr, const char **endptr, int *error)
Definition: my_strtoll10.cc:87
Common header for many mysys elements.
uint64_t nesting_map
Definition: my_table_map.h:31
uint64_t table_map
Definition: my_table_map.h:30
Interface for low level time utilities.
unsigned int my_time_flags_t
Flags to str_to_datetime and int_to_datetime.
Definition: my_time.h:87
uint32 element_count
Definition: my_tree.h:52
static int count
Definition: myisam_ftdump.cc:45
thread_local MEM_ROOT ** THR_MALLOC
Definition: mysqld.cc:1597
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1077
static PFS_engine_table_share_proxy table
Definition: pfs.cc:61
Definition: applier_version.h:27
PT & ref(PT *tp)
Definition: tablespace_impl.cc:359
ValueType value(const std::optional< ValueType > &v)
Definition: gtid.h:83
noexcept
The return type for any call_and_catch(f, args...) call where f(args...) returns Type.
Definition: call_and_catch.h:76
size_t size(const char *const c)
Definition: base64.h:46
mutable_buffer buffer(void *p, size_t n) noexcept
Definition: buffer.h:418
Cursor end()
A past-the-end Cursor.
Definition: rules_table_service.cc:192
std::list< T, ut::allocator< T > > list
Specialization of list which uses ut_allocator.
Definition: ut0new.h:2728
const mysql_service_registry_t * r
Definition: pfs_example_plugin_employee.cc:86
type_conversion_status
Status when storing a value in a field or converting from one datatype to another.
Definition: field.h:200
File containing constants that can be used throughout the server.
constexpr const size_t STRING_BUFFER_USUAL_SIZE
Definition: sql_const.h:126
Our own string classes, used pervasively throughout the executor.
Definition: m_ctype.h:421
Struct used to pass around arguments to/from check_function_as_value_generator.
Definition: item.h:487
int err_code
the error code found during check(if any)
Definition: item.h:494
int get_unnamed_function_error_code() const
Return the correct error code, based on whether or not if we are checking for disallowed functions in...
Definition: item.h:506
argument used by walk method collect_grouped_aggregates ("cga")
Definition: item_sum.h:625
Collect_grouped_aggregate_info(Query_block *select)
Definition: item_sum.h:638
Query_block * m_query_block
The query block we walk from.
Definition: item_sum.h:633
std::vector< Item_sum * > list
accumulated all aggregates found
Definition: item_sum.h:627
std::set< Item_sum * > aggregates_that_were_hidden
Definition: item_sum.h:628
bool m_break_off
true: break off transformation
Definition: item_sum.h:635
bool m_outside
true: an aggregate aggregates outside m_query_block
Definition: item_sum.h:637
Bison "location" class.
Definition: parse_location.h:43
Instances of Name_resolution_context store the information necessary for name resolution of Items and...
Definition: item.h:414
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:422
Collects evaluation requirements from a window function, used by Item_sum::check_wf_semantics and its...
Definition: window.h:1556
Item_result
Type of the user defined function return slot and arguments.
Definition: udf_registration_types.h:39
@ STRING_RESULT
not valid for UDFs
Definition: udf_registration_types.h:41
@ DECIMAL_RESULT
not valid for UDFs
Definition: udf_registration_types.h:45
@ REAL_RESULT
char *
Definition: udf_registration_types.h:42
@ INT_RESULT
double
Definition: udf_registration_types.h:43
@ INVALID_RESULT
Definition: udf_registration_types.h:40
enum_null_treatment
Cf.
Definition: window_lex.h:58
This file declares the interface of the WKB parser for geometries and the parser for the internal geo...