mirror of
https://github.com/MariaDB/server.git
synced 2026-04-22 08:15:31 +02:00
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
This commit is contained in:
parent
5c70f813f3
commit
3631146442
8 changed files with 123 additions and 63 deletions
|
|
@ -2995,12 +2995,15 @@ UNIV_INTERN
|
|||
ulong
|
||||
ha_innobase::index_flags(
|
||||
/*=====================*/
|
||||
uint,
|
||||
uint index,
|
||||
uint,
|
||||
bool)
|
||||
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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue