MySQL 8.0.40
Source Code Documentation
Query_result_union Class Reference

#include <sql_union.h>

Inheritance diagram for Query_result_union:
[legend]

Public Member Functions

 Query_result_union ()
 
bool prepare (THD *thd, const mem_root_deque< Item * > &list, Query_expression *u) override
 Perform preparation specific to the query expression or DML statement. More...
 
virtual bool postponed_prepare (THD *thd, const mem_root_deque< Item * > &types)
 Do prepare() if preparation has been postponed until column type information is computed (used by Query_result_union_direct). More...
 
bool send_data (THD *thd, const mem_root_deque< Item * > &items) override
 
bool send_eof (THD *thd) override
 
virtual bool flush ()
 
void cleanup () override
 Cleanup after this execution. More...
 
bool reset () override
 Reset and empty the temporary table that stores the materialized query result. More...
 
bool create_result_table (THD *thd, const mem_root_deque< Item * > &column_types, bool is_distinct, ulonglong options, const char *alias, bool bit_fields_as_long, bool create_table, Query_term_set_op *op=nullptr)
 Create a temporary table to store the result of a query expression (used, among others, when materializing a UNION DISTINCT). More...
 
uint get_hidden_field_count () const
 
bool skip_create_table () const
 
void set_limit (ha_rows limit_rows) override
 Set an effective LIMIT for the number of rows coming out of a materialized temporary table used for implementing INTERSECT or EXCEPT: informs TableScanIterator::TableScanIterator how many rows to read from the materialized table. More...
 
- Public Member Functions inherited from Query_result_interceptor
 Query_result_interceptor ()
 
uint field_count (const mem_root_deque< Item * > &) const override
 
bool send_result_set_metadata (THD *, const mem_root_deque< Item * > &, uint) override
 
bool is_interceptor () const final
 Checks if this Query_result intercepts and transforms the result set. More...
 
- Public Member Functions inherited from Query_result
 Query_result ()
 
virtual ~Query_result ()=default
 
virtual bool needs_file_privilege () const
 
virtual bool change_query_result (THD *, Query_result *)
 Change wrapped Query_result. More...
 
virtual bool need_explain_interceptor () const
 
virtual bool start_execution (THD *)
 Prepare for execution of the query expression or DML statement. More...
 
virtual bool create_table_for_query_block (THD *)
 Create table, only needed to support CREATE TABLE ... SELECT. More...
 
virtual bool check_supports_cursor () const
 Check if this query result set supports cursors. More...
 
virtual void abort_result_set (THD *)
 
virtual Server_side_cursorcursor () const
 

Public Attributes

TABLEtable
 
- Public Attributes inherited from Query_result
ha_rows estimated_rowcount
 Number of records estimated in this result. More...
 
double estimated_cost
 Cost to execute the subquery which produces this result. More...
 

Protected Attributes

Temp_table_param tmp_table_param
 
- Protected Attributes inherited from Query_result
Query_expressionunit
 

Friends

bool Table_ref::create_materialized_table (THD *thd)
 
bool Table_ref::optimize_derived (THD *thd)
 

Constructor & Destructor Documentation

◆ Query_result_union()

Query_result_union::Query_result_union ( )
inline

Member Function Documentation

◆ cleanup()

void Query_result_union::cleanup ( void  )
inlineoverridevirtual

Cleanup after this execution.

Completes the execution and resets object before next execution of a prepared statement/stored procedure.

Reimplemented from Query_result.

◆ create_result_table()

bool Query_result_union::create_result_table ( THD thd_arg,
const mem_root_deque< Item * > &  column_types,
bool  is_union_distinct,
ulonglong  options,
const char *  table_alias,
bool  bit_fields_as_long,
bool  create_table,
Query_term_set_op op = nullptr 
)

Create a temporary table to store the result of a query expression (used, among others, when materializing a UNION DISTINCT).

Parameters
thd_argthread handle
column_typesa list of items used to define columns of the temporary table
is_union_distinctif set, the temporary table will eliminate duplicates on insert
optionscreate options
table_aliasname of the temporary table
bit_fields_as_longconvert bit fields to ulonglong
create_tableIf false, a table handler will not be created when creating the result table.
opIf we are creating a result table for a set operation, op should contain the relevant set operation's query term. In other cases, op should be nullptr.

Create a temporary table that is used to store the result of a UNION, derived table, or a materialized cursor.

Returns
false if table created, true if error

◆ flush()

bool Query_result_union::flush ( )
virtual

Reimplemented in Query_result_union_direct.

◆ get_hidden_field_count()

uint Query_result_union::get_hidden_field_count ( ) const
inline

◆ postponed_prepare()

virtual bool Query_result_union::postponed_prepare ( THD thd,
const mem_root_deque< Item * > &  types 
)
inlinevirtual

Do prepare() if preparation has been postponed until column type information is computed (used by Query_result_union_direct).

Parameters
thdThread handle
typesColumn types
Returns
false on success, true on failure

Reimplemented in Query_result_union_direct.

◆ prepare()

bool Query_result_union::prepare ( THD ,
const mem_root_deque< Item * > &  ,
Query_expression u 
)
overridevirtual

Perform preparation specific to the query expression or DML statement.

Returns
false if success, true if error

Reimplemented from Query_result.

◆ reset()

bool Query_result_union::reset ( void  )
overridevirtual

Reset and empty the temporary table that stores the materialized query result.

Note
The cleanup performed here is exactly the same as for the two temp tables of JOIN - exec_tmp_table_[1 | 2].

Reimplemented from Query_result.

◆ send_data()

bool Query_result_union::send_data ( THD thd,
const mem_root_deque< Item * > &  items 
)
overridevirtual

Implements Query_result.

◆ send_eof()

bool Query_result_union::send_eof ( THD thd)
overridevirtual

Implements Query_result.

◆ set_limit()

void Query_result_union::set_limit ( ha_rows  limit_rows)
overridevirtual

Set an effective LIMIT for the number of rows coming out of a materialized temporary table used for implementing INTERSECT or EXCEPT: informs TableScanIterator::TableScanIterator how many rows to read from the materialized table.

For UNION and simple tables the limitation is enforced earlier, at materialize time, but this is not possible for INTERSECT and EXCEPT due to the use of cardinality counters.

Parameters
limit_rowsthe effective limit, or HA_POS_ERROR if none.

Reimplemented from Query_result.

◆ skip_create_table()

bool Query_result_union::skip_create_table ( ) const
inline

Friends And Related Function Documentation

◆ Table_ref::create_materialized_table

bool Table_ref::create_materialized_table ( THD thd)
friend

◆ Table_ref::optimize_derived

bool Table_ref::optimize_derived ( THD thd)
friend

Member Data Documentation

◆ table

TABLE* Query_result_union::table

◆ tmp_table_param

Temp_table_param Query_result_union::tmp_table_param
protected

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