diff options
Diffstat (limited to 'sql/mysql_priv.h')
-rw-r--r-- | sql/mysql_priv.h | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index b324a059aad..efc1a70b9fe 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -570,25 +570,31 @@ protected: #define OPTIMIZER_SWITCH_FIRSTMATCH 64 #define OPTIMIZER_SWITCH_LOOSE_SCAN 128 #define OPTIMIZER_SWITCH_MATERIALIZATION 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) -#define OPTIMIZER_SWITCH_MRR_SORT_KEYS (1<<13) -#define OPTIMIZER_SWITCH_OUTER_JOIN_WITH_CACHE (1<<14) -#define OPTIMIZER_SWITCH_SEMIJOIN_WITH_CACHE (1<<15) -#define OPTIMIZER_SWITCH_JOIN_CACHE_INCREMENTAL (1<<16) -#define OPTIMIZER_SWITCH_JOIN_CACHE_HASHED (1<<17) -#define OPTIMIZER_SWITCH_JOIN_CACHE_BKA (1<<18) +#define OPTIMIZER_SWITCH_IN_TO_EXISTS 512 +#define OPTIMIZER_SWITCH_SEMIJOIN 1024 +#define OPTIMIZER_SWITCH_PARTIAL_MATCH_ROWID_MERGE (1<<11) +#define OPTIMIZER_SWITCH_PARTIAL_MATCH_TABLE_SCAN (1<<12) +#define OPTIMIZER_SWITCH_SUBQUERY_CACHE (1<<13) +#define OPTIMIZER_SWITCH_MRR_SORT_KEYS (1<<14) +#define OPTIMIZER_SWITCH_OUTER_JOIN_WITH_CACHE (1<<15) +#define OPTIMIZER_SWITCH_SEMIJOIN_WITH_CACHE (1<<16) +#define OPTIMIZER_SWITCH_JOIN_CACHE_INCREMENTAL (1<<17) +#define OPTIMIZER_SWITCH_JOIN_CACHE_HASHED (1<<18) +#define OPTIMIZER_SWITCH_JOIN_CACHE_BKA (1<<19) #ifdef DBUG_OFF -# define OPTIMIZER_SWITCH_LAST (1<<19) -#else -# define OPTIMIZER_SWITCH_TABLE_ELIMINATION (1<<19) # define OPTIMIZER_SWITCH_LAST (1<<20) +#else +# define OPTIMIZER_SWITCH_TABLE_ELIMINATION (1<<20) +# define OPTIMIZER_SWITCH_LAST (1<<21) #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 | \ @@ -596,7 +602,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|\ @@ -615,7 +621,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|\ |