MySQL 9.1.0
Source Code Documentation
Query_term_union Class Reference

Node type for n-ary UNION. More...

#include <query_term.h>

Inheritance diagram for Query_term_union:
[legend]

Public Member Functions

 Query_term_union (MEM_ROOT *mem_root)
 Constructor. More...
 
Query_term_type term_type () const override
 Get the node tree type. More...
 
const char * operator_string () const override
 Get the node type description. More...
 
void debugPrint (int level, std::ostringstream &buf) const override
 Print the tree rooted at this node to buf. More...
 
- Public Member Functions inherited from Query_term_set_op
mem_root_deque< Item * > * types_array () override
 
Query_termchild (size_t idx) const
 Get child at given index. More...
 
int64_t last_distinct () const
 Getter for m_last_distinct, q.v. More...
 
int64_t first_distinct () const
 Getter for m_first_distinct, q.v. More...
 
bool is_materialized () const
 Getter for m_is_materialized, q.v. More...
 
void set_is_materialized (bool mat)
 Setter for m_is_materialized, q.v. More...
 
Query_blockquery_block () const override
 Getter for m_block, q.v. More...
 
bool set_block (Query_block *b)
 Setter for m_block, q.v. More...
 
void label_children () override
 Set the correct value of Query_term::m_sibling_idx recursively for set operations. More...
 
size_t child_count () const override
 Get the number of children this node has. More...
 
bool open_result_tables (THD *thd, int level) override
 Open tmp tables for the tree of set operation query results, by recursing. More...
 
void cleanup (bool full) override
 Reset resources used. More...
 
void destroy_tree () override
 Destroy the query term tree structure. More...
 
bool has_mixed_distinct_operators ()
 Check if this set operation has a mix of DISTINCT and ALL. More...
 
bool is_unary () const
 Check if this term is a unary set operation. More...
 
Mem_root_array< MaterializePathParameters::Operandsetup_materialize_set_op (THD *thd, TABLE *dst_table, bool union_distinct_only, bool calc_found_rows)
 Sets up each(*) query block in this query expression for materialization into the given table by making a materialization parameter for each block (*) modulo union_distinct_only. More...
 
bool prepare_query_term (THD *thd, Query_expression *qe, Change_current_query_block *save_query_block, mem_root_deque< Item * > *insert_field_list, Query_result *common_result, ulonglong added_options, ulonglong removed_options, ulonglong create_option) override
 a) Prepare query blocks, both leaf blocks and blocks reresenting order by/limit in query primaries with parentesized query expression body with order by clause and/or limit/offset clause (unary query terms). More...
 
bool optimize_query_term (THD *thd, Query_expression *qe) override
 Optimize the non-leaf query blocks. More...
 
AccessPathmake_set_op_access_path (THD *thd, Query_term_set_op *parent, Mem_root_array< AppendPathParameters > *union_all_subpaths, bool calc_found_rows) override
 Recursively constructs the access path of the set operation, possibly materializing in a tmp table if needed, cf. More...
 
VisibleFieldsIterator types_iterator () override
 Abstract over visible column types: if query block, we offer an iterator over visible fields, for binary set operators we offer an iterator over m_types, for unary we just call the child's. More...
 
size_t visible_column_count () const override
 Return the number of visible columns of the query term. More...
 
bool in_right_side_in_except_or_intersect (Query_term *qt)
 
- Public Member Functions inherited from Query_term
Query_termpushdown_limit_order_by (Query_term_set_op *parent=nullptr)
 Called after contextualization to simplify query, c.f. More...
 
bool validate_structure (const Query_term *parent, int depth=0) const
 Return true if structure is too deep, i.e. More...
 
std::pair< bool, bool > redundant_order_by (Query_block *block, int level)
 Determine if we have a redundant ORDER BY in block. More...
 
virtual ~Query_term ()=default
 Node destructor. More...
 
bool create_tmp_table (THD *thd, ulonglong create_options)
 Create a temporary table for a set operation. More...
 
Query_term_set_opparent () const
 Getter for m_parent, q.v. More...
 
void set_sibling_idx (uint idx)
 Setter for m_sibling_idx, q.v. More...
 
uint sibling_idx ()
 Getter for m_sibling_idx, q.v. More...
 
void printPointers (std::ostringstream &buf) const
 Print the pointer of this node and its parent to buf. More...
 
void set_setop_query_result (Query_result *rs)
 Setter for m_setop_query_result, q.v. More...
 
Query_resultsetop_query_result ()
 Getter for m_setop_query_result, q.v. More...
 
Query_result_unionsetop_query_result_union ()
 Getter for m_setop_query_result, q.v. Use only if we can down cast. More...
 
void cleanup_query_result (bool full)
 Cleanup m_setop_query_result, q.v. More...
 
void set_owning_operand ()
 Setter for m_owning_operand, q.v. More...
 
bool owning_operand ()
 Getter for m_owning_operand, q.v. More...
 
void set_result_table (Table_ref *tl)
 Setter for m_result_table, q.v. More...
 
Table_refresult_table ()
 Getter for m_result_table, q.v. More...
 
void set_fields (mem_root_deque< Item * > *fields)
 
mem_root_deque< Item * > * fields ()
 

Additional Inherited Members

- Static Public Member Functions inherited from Query_term
static void indent (int level, std::ostringstream &buf)
 Print blank space indentation (unit: two) to buf according to level. More...
 
static void print_order (const THD *thd, String *str, ORDER *ord, enum_query_type query_type)
 Print into str the order indicated in ord, using standard print_for_order Used by traditional explain. More...
 
- Protected Member Functions inherited from Query_term_set_op
 Query_term_set_op (MEM_ROOT *mem_root)
 
void print (int level, std::ostringstream &buf, const char *type) const
 Common printing minion for set operations. More...
 
bool check_joined_types ()
 On top level, check that it was possible to aggregate all collations together for set operation. More...
 
- Protected Attributes inherited from Query_term_set_op
mem_root_deque< Query_term * > m_children
 Tree structure. More...
 
bool m_is_materialized {true}
 true if the result of this set operation is materialized. More...
 
int64_t m_last_distinct {0}
 Index of last query expression which has <set-op> DISTINCT on its left. More...
 
int64_t m_first_distinct {0}
 Presently only needed by EXCEPT set operator: the index of the first DISTINCT set operand: minimum legal value is 1. More...
 
- Protected Attributes inherited from Query_term
Query_term_set_opm_parent {nullptr}
 Back pointer to the node whose child we are, or nullptr (root term). More...
 
uint m_sibling_idx {0}
 If parent is non-null, this holds the index of the current sibling. More...
 
Query_resultm_setop_query_result {nullptr}
 The query result for this term. More...
 
bool m_owning_operand {false}
 The operand of a n-ary set operation (that owns the common query result) has this set to true. More...
 
Table_refm_result_table {nullptr}
 Result temporary table for the set operation, if applicable. More...
 
mem_root_deque< Item * > * m_fields {nullptr}
 Used only when streaming, i.e. More...
 

Detailed Description

Node type for n-ary UNION.

Constructor & Destructor Documentation

◆ Query_term_union()

Query_term_union::Query_term_union ( MEM_ROOT mem_root)
inline

Constructor.

Parameters
mem_rootthe mem_root to use for allocation

Member Function Documentation

◆ debugPrint()

void Query_term_union::debugPrint ( int  level,
std::ostringstream &  buf 
) const
overridevirtual

Print the tree rooted at this node to buf.

Call on top level with level==0

Parameters
levellevel we are at in tree.
bufthe buffer to format output into

Implements Query_term.

◆ operator_string()

const char * Query_term_union::operator_string ( ) const
inlineoverridevirtual

Get the node type description.

Returns
descriptive string for each node type.

Implements Query_term.

◆ term_type()

Query_term_type Query_term_union::term_type ( ) const
inlineoverridevirtual

Get the node tree type.

Returns
the tree node type

Implements Query_term.


The documentation for this class was generated from the following files: