Dear hackers:
Two months ago, we enhanced the group by key value elimination function. This is a very useful function. When I was learning, I found a regression test case that was not suitable, as follows: -- When there are multiple supporting unique indexes and the GROUP BY contains -- columns to cover all of those, ensure we pick the index with the least -- number of columns so that we can remove more columns from the GROUP BY. explain (costs off) select a,b,c from t3 group by a,b,c; QUERY PLAN ---------------------- HashAggregate Group Key: c -> Seq Scan on t3 (3 rows) -- As above but try ordering the columns differently to ensure we get the -- same result. explain (costs off) select a,b,c from t3 group by c,a,b; QUERY PLAN ---------------------- HashAggregate Group Key: c -> Seq Scan on t3 (3 rows) Because the table structure of t3 is defined as follows(Its PK is deferrable): postgres=# \d+ t3 Table "pg_temp_1.t3" Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description --------+---------+-----------+----------+---------+---------+-------------+--------------+------------- a | integer | | not null | | plain | | | b | integer | | not null | | plain | | | c | integer | | not null | | plain | | | Indexes: "t3_pkey" PRIMARY KEY, btree (a, b) DEFERRABLE "t3_c_uidx" UNIQUE, btree (c) Not-null constraints: "t3_a_not_null" NOT NULL "a" "t3_b_not_null" NOT NULL "b" "t3_c_not_null" NOT NULL "c" Access method: heap postgres=# I think this test case does not fully reflect the original meaning. So I made a small change to this and look forward to your feedback. Thanks!
v1_0001-Modify-an-incorrect-regression-test-case-in-the-grou.patch
Description: Binary data