diff options
author | Michael Widenius <monty@askmonty.org> | 2011-05-18 19:26:30 +0300 |
---|---|---|
committer | Michael Widenius <monty@askmonty.org> | 2011-05-18 19:26:30 +0300 |
commit | 3631146442bc09e5129334774b4bcdf2470a4b27 (patch) | |
tree | c812cd2520a8af89c95abf5e6fbec47998908c58 /storage/xtradb | |
parent | 5c70f813f3d12974bf67d6ff98c0ff4b9ca71d7d (diff) | |
download | mariadb-git-3631146442bc09e5129334774b4bcdf2470a4b27.tar.gz |
Original idea from Zardosht Kasheff to add HA_CLUSTERED_INDEX
- Added a lot of code comments
- Updated get_best_ror_intersec() to prefer index scan on not clustered keys before clustered keys.
- Use HA_CLUSTERED_INDEX to define if one should use HA_MRR_INDEX_ONLY
- For test of using index or filesort to resolve ORDER BY, use HA_CLUSTERED_INDEX flag instead of primary_key_is_clustered()
- Use HA_TABLE_SCAN_ON_INDEX instead of primary_key_is_clustered() to decide if ALTER TABLE ... ORDER BY will have any effect.
sql/ha_partition.h:
Added comment with warning for code unsafe to use with multiple storage engines at the same time
sql/handler.h:
Added HA_CLUSTERED_INDEX.
Documented primary_key_is_clustered()
sql/opt_range.cc:
Added code comments
Updated get_best_ror_intersec() to ignore clustered keys.
Optimized away cpk_scan_used and one instance of current_thd (Simpler code)
Use HA_CLUSTERED_INDEX to define if one should use HA_MRR_INDEX_ONLY
sql/sql_select.cc:
Changed comment to #ifdef
For test of using index or filesort to resolve ORDER BY, use HA_CLUSTERED_INDEX flag instead of primary_key_is_clustered()
(Change is smaller than what it looks beause of indentation change)
sql/sql_table.cc:
Use HA_TABLE_SCAN_ON_INDEX instead of primary_key_is_clustered() to decide if ALTER TABLE ... ORDER BY will have any effect.
storage/innobase/handler/ha_innodb.h:
Added support for HA_CLUSTERED_INDEX
storage/innodb_plugin/handler/ha_innodb.cc:
Added support for HA_CLUSTERED_INDEX
storage/xtradb/handler/ha_innodb.cc:
Added support for HA_CLUSTERED_INDEX
Diffstat (limited to 'storage/xtradb')
-rw-r--r-- | storage/xtradb/handler/ha_innodb.cc | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/storage/xtradb/handler/ha_innodb.cc b/storage/xtradb/handler/ha_innodb.cc index a6526bd1092..80ceef55ef3 100644 --- a/storage/xtradb/handler/ha_innodb.cc +++ b/storage/xtradb/handler/ha_innodb.cc @@ -3408,12 +3408,15 @@ UNIV_INTERN ulong ha_innobase::index_flags( /*=====================*/ - uint, - uint, - bool) + uint index, + uint part, + bool all_parts) const { - return(HA_READ_NEXT | HA_READ_PREV | HA_READ_ORDER + ulong extra_flag= 0; + if (table && index == table->s->primary_key) + extra_flag= HA_CLUSTERED_INDEX; + return(HA_READ_NEXT | HA_READ_PREV | HA_READ_ORDER | extra_flag | HA_READ_RANGE | HA_KEYREAD_ONLY | HA_DO_INDEX_COND_PUSHDOWN); } |