diff options
author | unknown <sergefp@mysql.com> | 2006-04-06 21:23:33 +0400 |
---|---|---|
committer | unknown <sergefp@mysql.com> | 2006-04-06 21:23:33 +0400 |
commit | 4d1666f6b8f84053e5d1882e3d8893171ffe3956 (patch) | |
tree | bc2b49b52da1f1748cc430504820ba5c2dde4843 /sql/partition_info.h | |
parent | 3d34946e762c01157ebe7bae2482ed4bfd3b5e84 (diff) | |
download | mariadb-git-4d1666f6b8f84053e5d1882e3d8893171ffe3956.tar.gz |
BUG#18558 "Partition pruning results are incorrect for certain class of WHERE clauses" :
* Produce right results for conditions that were transformed to "(partitioning_range) AND
(list_of_subpartitioning_ranges)": make each partition id set iterator auto-reset itself
after it has returned all partition ids in the sequence
* Fix "Range mapping" and "Range mapping" partitioning interval analysis functions to
correctly deal with NULL values.
mysql-test/r/partition_pruning.result:
Testcase for BUG#18558
mysql-test/t/partition_pruning.test:
Testcase for BUG#18558
sql/opt_range.cc:
BUG#18558: Move partition set iterator initialization to sql_partition.cc, comment fixes
sql/partition_info.h:
BUG#18558: Make each partition set iterator auto-reset itself after it has returned all
partition ids in the set it enumerates.
sql/sql_partition.cc:
BUG#18558:
- Make each partition set iterator auto-reset itself after it has returned all
partition ids in the set it enumerates.
- Fix partition interval analysis to correctly handle intervals with one or both
NULL bounds.
sql/sql_partition.h:
BUG#18558:
- Make each partition set iterator auto-reset itself after it has returned all
partition ids in the set it enumerates.
- Rename PARTITION_ITERATOR::has_null_value to ret_null_part
Diffstat (limited to 'sql/partition_info.h')
-rw-r--r-- | sql/partition_info.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sql/partition_info.h b/sql/partition_info.h index 08669f8001e..664c8834b0b 100644 --- a/sql/partition_info.h +++ b/sql/partition_info.h @@ -267,7 +267,7 @@ uint32 get_next_partition_id_range(struct st_partition_iter* part_iter); static inline void init_single_partition_iterator(uint32 part_id, PARTITION_ITERATOR *part_iter) { - part_iter->part_nums.start= part_id; + part_iter->part_nums.start= part_iter->part_nums.cur= part_id; part_iter->part_nums.end= part_id+1; part_iter->get_next= get_next_partition_id_range; } @@ -277,7 +277,7 @@ static inline void init_all_partitions_iterator(partition_info *part_info, PARTITION_ITERATOR *part_iter) { - part_iter->part_nums.start= 0; + part_iter->part_nums.start= part_iter->part_nums.cur= 0; part_iter->part_nums.end= part_info->no_parts; part_iter->get_next= get_next_partition_id_range; } |