summaryrefslogtreecommitdiff
path: root/sql/ha_partition.h
diff options
context:
space:
mode:
authorMattias Jonsson <mattias.jonsson@sun.com>2008-09-18 22:49:34 +0300
committerMattias Jonsson <mattias.jonsson@sun.com>2008-09-18 22:49:34 +0300
commit0494d58527a75db1a7823b935a264ef418cab6d0 (patch)
tree434dea964599ae751d307d22db4eab045a8e5900 /sql/ha_partition.h
parentcb8a39e78c0ad08c23a7f1c3148ce74f506bcaf0 (diff)
downloadmariadb-git-0494d58527a75db1a7823b935a264ef418cab6d0.tar.gz
Bug#30573: Ordered range scan over partitioned tables returns some rows twice
and Bug#33555: Group By Query does not correctly aggregate partitions Backport of bug-33257 which is the same bug. read_range_*() calls was not passed to the partition handlers, but was translated to index_read/next family calls. Resulting in duplicates rows and wrong aggregations.
Diffstat (limited to 'sql/ha_partition.h')
-rw-r--r--sql/ha_partition.h9
1 files changed, 3 insertions, 6 deletions
diff --git a/sql/ha_partition.h b/sql/ha_partition.h
index 97f5624608f..459b566b6d8 100644
--- a/sql/ha_partition.h
+++ b/sql/ha_partition.h
@@ -49,7 +49,8 @@ private:
partition_index_first_unordered= 2,
partition_index_last= 3,
partition_index_read_last= 4,
- partition_no_index_scan= 5
+ partition_read_range = 5,
+ partition_no_index_scan= 6
};
/* Data for the partition handler */
int m_mode; // Open mode
@@ -63,8 +64,6 @@ private:
handler **m_reorged_file; // Reorganised partitions
handler **m_added_file; // Added parts kept for errors
partition_info *m_part_info; // local reference to partition
- uchar *m_start_key_ref; // Reference of start key in current
- // index scan info
Field **m_part_field_array; // Part field array locally to save acc
uchar *m_ordered_rec_buffer; // Row and key buffer for ord. idx scan
KEY *m_curr_key_info; // Current index
@@ -429,9 +428,7 @@ public:
virtual int read_range_next();
private:
- int common_index_read(uchar * buf, const uchar * key,
- key_part_map keypart_map,
- enum ha_rkey_function find_flag);
+ int common_index_read(uchar * buf, bool have_start_key);
int common_first_last(uchar * buf);
int partition_scan_set_up(uchar * buf, bool idx_read_flag);
int handle_unordered_next(uchar * buf, bool next_same);