From ce31605e75a4a47add73ce5f20f875c1689bc4af Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Thu, 21 Dec 2023 18:22:55 +0200 Subject: [PATCH v1 1/5] Add test for Min/Max optimization with kNN index scan. We didn't coverage for that combination. It works the same as other cases, but I think it's an interesting combination to show off. --- src/test/regress/expected/aggregates.out | 22 ++++++++++++++++++++++ src/test/regress/sql/aggregates.sql | 8 ++++++++ 2 files changed, 30 insertions(+) diff --git a/src/test/regress/expected/aggregates.out b/src/test/regress/expected/aggregates.out index d8271da4d1f..e7814b7527b 100644 --- a/src/test/regress/expected/aggregates.out +++ b/src/test/regress/expected/aggregates.out @@ -1063,6 +1063,28 @@ select f1, (select min(unique1) from tenk1 where unique1 > f1) AS gt -2147483647 | 0 (5 rows) +-- check kNN search +begin; +set local enable_seqscan = off; +explain (costs off) + SELECT min(f1 <-> '(0,0)'::point) FROM polygon_tbl; + QUERY PLAN +--------------------------------------------------------------- + Result + InitPlan 1 (returns $0) + -> Limit + -> Index Scan using gpolygonind on polygon_tbl + Order By: (f1 <-> '(0,0)'::point) + Filter: ((f1 <-> '(0,0)'::point) IS NOT NULL) +(6 rows) + +SELECT min(f1 <-> '(0,0)'::point) FROM polygon_tbl; + min +----- + 0 +(1 row) + +rollback; -- check some cases that were handled incorrectly in 8.3.0 explain (costs off) select distinct max(unique2) from tenk1; diff --git a/src/test/regress/sql/aggregates.sql b/src/test/regress/sql/aggregates.sql index 75c78be640b..50b55c91fc4 100644 --- a/src/test/regress/sql/aggregates.sql +++ b/src/test/regress/sql/aggregates.sql @@ -388,6 +388,14 @@ explain (costs off) select f1, (select min(unique1) from tenk1 where unique1 > f1) AS gt from int4_tbl; +-- check kNN search +begin; +set local enable_seqscan = off; +explain (costs off) + SELECT min(f1 <-> '(0,0)'::point) FROM polygon_tbl; +SELECT min(f1 <-> '(0,0)'::point) FROM polygon_tbl; +rollback; + -- check some cases that were handled incorrectly in 8.3.0 explain (costs off) select distinct max(unique2) from tenk1; -- 2.39.2