mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge bb-10.1-explain-analyze into 10.1
This commit is contained in:
@ -150,6 +150,69 @@ public:
|
||||
void call_in_target_thread();
|
||||
};
|
||||
|
||||
/**
|
||||
Condition pushdown used for INFORMATION_SCHEMA / SHOW queries.
|
||||
This structure is to implement an optimization when
|
||||
accessing data dictionary data in the INFORMATION_SCHEMA
|
||||
or SHOW commands.
|
||||
When the query contain a TABLE_SCHEMA or TABLE_NAME clause,
|
||||
narrow the search for data based on the constraints given.
|
||||
*/
|
||||
typedef struct st_lookup_field_values
|
||||
{
|
||||
/**
|
||||
Value of a TABLE_SCHEMA clause.
|
||||
Note that this value length may exceed @c NAME_LEN.
|
||||
@sa wild_db_value
|
||||
*/
|
||||
LEX_STRING db_value;
|
||||
/**
|
||||
Value of a TABLE_NAME clause.
|
||||
Note that this value length may exceed @c NAME_LEN.
|
||||
@sa wild_table_value
|
||||
*/
|
||||
LEX_STRING table_value;
|
||||
/**
|
||||
True when @c db_value is a LIKE clause,
|
||||
false when @c db_value is an '=' clause.
|
||||
*/
|
||||
bool wild_db_value;
|
||||
/**
|
||||
True when @c table_value is a LIKE clause,
|
||||
false when @c table_value is an '=' clause.
|
||||
*/
|
||||
bool wild_table_value;
|
||||
} LOOKUP_FIELD_VALUES;
|
||||
|
||||
|
||||
/*
|
||||
INFORMATION_SCHEMA: Execution plan for get_all_tables() call
|
||||
*/
|
||||
|
||||
class IS_table_read_plan : public Sql_alloc
|
||||
{
|
||||
public:
|
||||
IS_table_read_plan() : no_rows(false) {}
|
||||
|
||||
bool no_rows;
|
||||
|
||||
LOOKUP_FIELD_VALUES lookup_field_vals;
|
||||
Item *partial_cond;
|
||||
|
||||
bool has_db_lookup_value()
|
||||
{
|
||||
return (lookup_field_vals.db_value.length &&
|
||||
!lookup_field_vals.wild_db_value);
|
||||
}
|
||||
bool has_table_lookup_value()
|
||||
{
|
||||
return (lookup_field_vals.table_value.length &&
|
||||
!lookup_field_vals.wild_table_value);
|
||||
}
|
||||
};
|
||||
|
||||
bool optimize_schema_tables_reads(JOIN *join);
|
||||
|
||||
/* Handle the ignored database directories list for SHOW/I_S. */
|
||||
bool ignore_db_dirs_init();
|
||||
void ignore_db_dirs_free();
|
||||
|
Reference in New Issue
Block a user