1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00
This commit is contained in:
Igor Babaev
2010-12-29 13:45:38 -08:00
63 changed files with 9358 additions and 764 deletions

View File

@ -351,7 +351,10 @@ protected:
Number of comparisons of table rowids equivalent to reading one row from a
table.
*/
#define TIME_FOR_COMPARE_ROWID (TIME_FOR_COMPARE*2)
#define TIME_FOR_COMPARE_ROWID (TIME_FOR_COMPARE*100)
/* cost1 is better that cost2 only if cost1 + COST_EPS < cost2 */
#define COST_EPS 0.001
/*
For sequential disk seeks the cost formula is:
@ -561,27 +564,27 @@ protected:
#define OPTIMIZER_SWITCH_INDEX_MERGE_UNION 2
#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_MRR_SORT_KEYS (1<<12)
#define OPTIMIZER_SWITCH_OUTER_JOIN_WITH_CACHE (1<<13)
#define OPTIMIZER_SWITCH_SEMIJOIN_WITH_CACHE (1<<14)
#define OPTIMIZER_SWITCH_JOIN_CACHE_INCREMENTAL (1<<15)
#define OPTIMIZER_SWITCH_JOIN_CACHE_HASHED (1<<16)
#define OPTIMIZER_SWITCH_JOIN_CACHE_BKA (1<<17)
#define OPTIMIZER_SWITCH_INDEX_MERGE_SORT_INTERSECT 16
#define OPTIMIZER_SWITCH_INDEX_COND_PUSHDOWN 32
#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)
#ifdef DBUG_OFF
# define OPTIMIZER_SWITCH_LAST (1<<18)
#else
# define OPTIMIZER_SWITCH_TABLE_ELIMINATION (1<<18)
# define OPTIMIZER_SWITCH_LAST (1<<19)
#else
# define OPTIMIZER_SWITCH_TABLE_ELIMINATION (1<<19)
# define OPTIMIZER_SWITCH_LAST (1<<20)
#endif
#ifdef DBUG_OFF
@ -2331,6 +2334,8 @@ ha_rows filesort(THD *thd, TABLE *form,struct st_sort_field *sortorder,
ha_rows max_rows, bool sort_positions,
ha_rows *examined_rows);
void filesort_free_buffers(TABLE *table, bool full);
double get_merge_many_buffs_cost(uint *buffer, uint last_n_elems,
int elem_size);
void change_double_for_sort(double nr,uchar *to);
double my_double_round(double value, longlong dec, bool dec_unsigned,
bool truncate);