My Project
|
Public Member Functions | |
explain_send (select_result_interceptor *interceptor_arg) | |
Protected Member Functions | |
virtual int | prepare (List< Item > &list, SELECT_LEX_UNIT *u) |
virtual int | prepare2 (void) |
virtual bool | initialize_tables (JOIN *join) |
virtual void | cleanup () |
Protected Attributes | |
bool | prepared |
prepare() is done | |
bool | prepared2 |
prepare2() is done | |
bool | initialized |
initialize_tables() is done | |
select_result_interceptor * | interceptor |
EXPLAIN functionality for insert_select, multi_update and multi_delete
This class objects substitute insert_select, multi_update and multi_delete data interceptor objects to implement EXPLAIN for INSERT, REPLACE and multi-table UPDATE and DELETE queries. explain_send class object initializes tables like insert_select, multi_update or multi_delete data interceptor do, but it suppress table data modification by the underlying interceptor object. Thus, we can use explain_send object in the context of EXPLAIN INSERT/ REPLACE/UPDATE/DELETE query like we use select_send in the context of EXPLAIN SELECT command: 1) in presence of lex->describe flag we pass explain_send object to the mysql_select() function, 2) it call prepare(), prepare2() and initialize_tables() functions to mark modified tables etc.
select_result_interceptor* explain_send::interceptor [protected] |
Pointer to underlying insert_select, multi_update or multi_delete object