summaryrefslogtreecommitdiff
path: root/sql/ha_partition.h
diff options
context:
space:
mode:
authorunknown <mikael/pappa@dator5.(none)>2006-07-15 03:38:34 -0400
committerunknown <mikael/pappa@dator5.(none)>2006-07-15 03:38:34 -0400
commitdd7290571674e26cdd5f1be5304d15291517d6fa (patch)
treeede5cd0e0f036a508ee80dc255e3d3b8c7518a0c /sql/ha_partition.h
parent16c54768ba01d9138043ffa8b426b5d3bd14931b (diff)
downloadmariadb-git-dd7290571674e26cdd5f1be5304d15291517d6fa.tar.gz
BUG#20389: Crash when using index scan in reverse order
mysql-test/r/partition_order.result: Changed a test case to handle ordered index scan reverse order as well mysql-test/t/partition_order.test: Changed a test case to handle ordered index scan reverse order as well sql/ha_myisam.cc: More debug info sql/ha_partition.cc: Introduced partition_index_read_last to ensure we use index_read_last in those cases towards underlying handler. Ensured that index_read with HA_READ_PREFIX_LAST, HA_READ_PREFIX_LAST_OR_PREV and HA_READ_BEFORE_KEY uses ordered index scan in reverse order. sql/ha_partition.h: Introduced partition_index_read_last to ensure we use index_read_last in those cases towards underlying handler. Ensured that index_read with HA_READ_PREFIX_LAST, HA_READ_PREFIX_LAST_OR_PREV and HA_READ_BEFORE_KEY uses ordered index scan in reverse order.
Diffstat (limited to 'sql/ha_partition.h')
-rw-r--r--sql/ha_partition.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/sql/ha_partition.h b/sql/ha_partition.h
index 4c627cd50f8..b838bc599f0 100644
--- a/sql/ha_partition.h
+++ b/sql/ha_partition.h
@@ -46,7 +46,8 @@ private:
partition_index_read= 0,
partition_index_first= 1,
partition_index_last= 2,
- partition_no_index_scan= 3
+ partition_index_read_last= 3,
+ partition_no_index_scan= 4
};
/* Data for the partition handler */
int m_mode; // Open mode
@@ -429,7 +430,7 @@ private:
return (queue_buf(part_id) +
PARTITION_BYTES_IN_POS);
}
- int handle_ordered_index_scan(byte * buf);
+ int handle_ordered_index_scan(byte * buf, bool reverse_order);
int handle_ordered_next(byte * buf, bool next_same);
int handle_ordered_prev(byte * buf);
void return_top_record(byte * buf);