|
| | 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...
|
| |
| mem_root_deque< Item * > * | types_array () override |
| |
| Query_term * | child (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_block * | query_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::Operand > | setup_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 | prepare_type_holders (THD *thd, Query_expression *qe, size_t contributing_children, size_t visible_columns, Mem_root_array< bool > &columns_nullable) |
| | Prepare "type holder" items for a query term. More...
|
| |
| bool | optimize_query_term (THD *thd, Query_expression *qe) override |
| | Optimize the non-leaf query blocks. More...
|
| |
| AccessPath * | make_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) |
| |
| Query_term * | pushdown_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_op * | parent () 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_result * | setop_query_result () |
| | Getter for m_setop_query_result, q.v. More...
|
| |
| Query_result_union * | setop_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_ref & | result_table () |
| | Getter for m_result_table, q.v. More...
|
| |
| void | set_fields (mem_root_deque< Item * > *fields) |
| |
| mem_root_deque< Item * > * | fields () |
| |
|
| 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...
|
| |
| | 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...
|
| |
| 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...
|
| |
| Query_term_set_op * | m_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_result * | m_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_ref * | m_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...
|
| |
Node type for n-ary UNION.