summaryrefslogtreecommitdiff
path: root/mysql-test/r
diff options
context:
space:
mode:
authorMartin Hansson <mhansson@mysql.com>2009-06-10 11:56:00 +0200
committerMartin Hansson <mhansson@mysql.com>2009-06-10 11:56:00 +0200
commitf2448c93d6fc159d8e450539e120066396c44596 (patch)
treeda04e36fba4c9a574d6898e7249666ef0ea50208 /mysql-test/r
parented7f0f3023041cc1749077ad45cd5a8bb8fa784e (diff)
downloadmariadb-git-f2448c93d6fc159d8e450539e120066396c44596.tar.gz
Bug#44821: select distinct on partitioned table returns wrong results
Range analysis did not request sorted output from the storage engine, which cause partitioned handlers to process one partition at a time while reading key prefixes in ascending order, causing values to be missed. Fixed by always requesting sorted order during range analysis. This fix is introduced in 6.0 by the fix for bug no 41136. mysql-test/r/group_min_max.result: Bug#44821: Test result. mysql-test/t/group_min_max.test: Bug#44821: Test case sql/opt_range.cc: Bug#44821: Fix.
Diffstat (limited to 'mysql-test/r')
-rw-r--r--mysql-test/r/group_min_max.result58
1 files changed, 58 insertions, 0 deletions
diff --git a/mysql-test/r/group_min_max.result b/mysql-test/r/group_min_max.result
index b17884c4f7a..37b84bf8cd8 100644
--- a/mysql-test/r/group_min_max.result
+++ b/mysql-test/r/group_min_max.result
@@ -2463,3 +2463,61 @@ c
2
DROP TABLE t1;
End of 5.0 tests
+CREATE TABLE t1 ( a INT, b INT, c INT, KEY bc(b, c) )
+PARTITION BY KEY (a, b) PARTITIONS 3
+;
+INSERT INTO t1 VALUES
+(17, 1, -8),
+(3, 1, -7),
+(23, 1, -6),
+(22, 1, -5),
+(11, 1, -4),
+(21, 1, -3),
+(19, 1, -2),
+(30, 1, -1),
+(20, 1, 1),
+(16, 1, 2),
+(18, 1, 3),
+(9, 1, 4),
+(15, 1, 5),
+(28, 1, 6),
+(29, 1, 7),
+(25, 1, 8),
+(10, 1, 9),
+(13, 1, 10),
+(27, 1, 11),
+(24, 1, 12),
+(12, 1, 13),
+(26, 1, 14),
+(14, 1, 15)
+;
+SELECT b, c FROM t1 WHERE b = 1 GROUP BY b, c;
+b c
+1 -8
+1 -7
+1 -6
+1 -5
+1 -4
+1 -3
+1 -2
+1 -1
+1 1
+1 2
+1 3
+1 4
+1 5
+1 6
+1 7
+1 8
+1 9
+1 10
+1 11
+1 12
+1 13
+1 14
+1 15
+EXPLAIN
+SELECT b, c FROM t1 WHERE b = 1 GROUP BY b, c;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range bc bc 10 NULL 7 Using where; Using index for group-by
+DROP TABLE t1;