mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Adding option to tell that cmp_ref handler call is expensive
- In Spider, calling cmp_ref() can be very expensive. In ha_partition.cc we don't anymore sort rows according to position for the Spider engine. - Removed Spider specific call info(HA_EXTRA_STARTING_ORDERED_INDEX_SCAN) from handle_ordered_index_scan(). It's caused performance issues and does not change results for queries with ORDER BY. - The visible effect of this patch is that for some storage engines, rows may be returned in a different order if there is no ORDER BY clause. - Based in Spiral Patch 052: 052_mariadb-10.2.0.add_partition_skip_pk_sort_for_non_clustered_index MDEV-7748 - The major difference from original patch is that there is no variable to get the old behaviour. Other things: - Optimized ha_partition::cmp_ref() and cmp_part_ids() to make them simpler and faster. - Changed arguments to cmp_key_part_id() to be same as cmp_key_rowid_part_id to simplify code. Original author: Kentoku SHIBA First reviewer: Jacob Mathew Second reviewer: Michael Widenius
This commit is contained in:
@ -161,6 +161,7 @@ enum enum_alter_inplace_result {
|
||||
*/
|
||||
#define HA_BINLOG_ROW_CAPABLE (1ULL << 34)
|
||||
#define HA_BINLOG_STMT_CAPABLE (1ULL << 35)
|
||||
|
||||
/*
|
||||
When a multiple key conflict happens in a REPLACE command mysql
|
||||
expects the conflicts to be reported in the ascending order of
|
||||
@ -289,6 +290,9 @@ enum enum_alter_inplace_result {
|
||||
/* The following is for partition handler */
|
||||
#define HA_CAN_MULTISTEP_MERGE (1LL << 53)
|
||||
|
||||
/* calling cmp_ref() on the engine is expensive */
|
||||
#define HA_CMP_REF_IS_EXPENSIVE (1ULL << 54)
|
||||
|
||||
/* bits in index_flags(index_number) for what you can do with index */
|
||||
#define HA_READ_NEXT 1 /* TODO really use this flag */
|
||||
#define HA_READ_PREV 2 /* supports ::index_prev */
|
||||
|
Reference in New Issue
Block a user