mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 11:27:39 +02:00
MWL#89: Cost-based choice between Materialization and IN->EXISTS transformation
Merge 5.3-mwl89 into 5.3 main. There is one remaining test failure in this merge: innodb_mysql_lock2. All other tests have been checked to deliver the same results/explains as 5.3-mwl89, including the few remaining wrong results.
This commit is contained in:
commit
bc7369b74b
26 changed files with 5804 additions and 791 deletions
|
|
@ -562,24 +562,29 @@ protected:
|
|||
#define OPTIMIZER_SWITCH_INDEX_MERGE_SORT_UNION 4
|
||||
#define OPTIMIZER_SWITCH_INDEX_MERGE_INTERSECT 8
|
||||
#define OPTIMIZER_SWITCH_INDEX_COND_PUSHDOWN 16
|
||||
|
||||
#define OPTIMIZER_SWITCH_FIRSTMATCH 32
|
||||
#define OPTIMIZER_SWITCH_LOOSE_SCAN 64
|
||||
#define OPTIMIZER_SWITCH_MATERIALIZATION 128
|
||||
#define OPTIMIZER_SWITCH_SEMIJOIN 256
|
||||
#define OPTIMIZER_SWITCH_PARTIAL_MATCH_ROWID_MERGE 512
|
||||
#define OPTIMIZER_SWITCH_PARTIAL_MATCH_TABLE_SCAN 1024
|
||||
#define OPTIMIZER_SWITCH_SUBQUERY_CACHE (1<<11)
|
||||
#define OPTIMIZER_SWITCH_IN_TO_EXISTS 256
|
||||
#define OPTIMIZER_SWITCH_SEMIJOIN 512
|
||||
#define OPTIMIZER_SWITCH_PARTIAL_MATCH_ROWID_MERGE 1024
|
||||
#define OPTIMIZER_SWITCH_PARTIAL_MATCH_TABLE_SCAN (1<<11)
|
||||
#define OPTIMIZER_SWITCH_SUBQUERY_CACHE (1<<12)
|
||||
|
||||
#ifdef DBUG_OFF
|
||||
# define OPTIMIZER_SWITCH_LAST (1<<12)
|
||||
#else
|
||||
# define OPTIMIZER_SWITCH_TABLE_ELIMINATION (1<<12)
|
||||
# define OPTIMIZER_SWITCH_LAST (1<<13)
|
||||
#else
|
||||
# define OPTIMIZER_SWITCH_TABLE_ELIMINATION (1<<13)
|
||||
# define OPTIMIZER_SWITCH_LAST (1<<14)
|
||||
#endif
|
||||
|
||||
#ifdef DBUG_OFF
|
||||
/* The following must be kept in sync with optimizer_switch_str in mysqld.cc */
|
||||
/*
|
||||
TODO: Materialization is off by default to mimic 5.1/5.2 behavior.
|
||||
Once cost based choice between materialization and in-to-exists should be
|
||||
enabled by default, add OPTIMIZER_SWITCH_MATERIALIZATION
|
||||
*/
|
||||
# define OPTIMIZER_SWITCH_DEFAULT (OPTIMIZER_SWITCH_INDEX_MERGE | \
|
||||
OPTIMIZER_SWITCH_INDEX_MERGE_UNION | \
|
||||
OPTIMIZER_SWITCH_INDEX_MERGE_SORT_UNION | \
|
||||
|
|
@ -587,7 +592,7 @@ protected:
|
|||
OPTIMIZER_SWITCH_INDEX_COND_PUSHDOWN | \
|
||||
OPTIMIZER_SWITCH_FIRSTMATCH | \
|
||||
OPTIMIZER_SWITCH_LOOSE_SCAN | \
|
||||
OPTIMIZER_SWITCH_MATERIALIZATION | \
|
||||
OPTIMIZER_SWITCH_IN_TO_EXISTS | \
|
||||
OPTIMIZER_SWITCH_SEMIJOIN | \
|
||||
OPTIMIZER_SWITCH_PARTIAL_MATCH_ROWID_MERGE|\
|
||||
OPTIMIZER_SWITCH_PARTIAL_MATCH_TABLE_SCAN|\
|
||||
|
|
@ -601,7 +606,7 @@ protected:
|
|||
OPTIMIZER_SWITCH_TABLE_ELIMINATION | \
|
||||
OPTIMIZER_SWITCH_FIRSTMATCH | \
|
||||
OPTIMIZER_SWITCH_LOOSE_SCAN | \
|
||||
OPTIMIZER_SWITCH_MATERIALIZATION | \
|
||||
OPTIMIZER_SWITCH_IN_TO_EXISTS | \
|
||||
OPTIMIZER_SWITCH_SEMIJOIN | \
|
||||
OPTIMIZER_SWITCH_PARTIAL_MATCH_ROWID_MERGE|\
|
||||
OPTIMIZER_SWITCH_PARTIAL_MATCH_TABLE_SCAN|\
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue