Re: range test for hash index?
От | Paul A Jungwirth |
---|---|
Тема | Re: range test for hash index? |
Дата | |
Msg-id | CA+renyXpWqV7uPE+14F8L6-sRuqiLaXjzHvk=uNghJjQM6AUcw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: range test for hash index? (Amit Kapila <amit.kapila16@gmail.com>) |
Ответы |
Re: range test for hash index?
(Amit Kapila <amit.kapila16@gmail.com>)
|
Список | pgsql-hackers |
On Sat, Sep 14, 2019 at 5:13 AM Amit Kapila <amit.kapila16@gmail.com> wrote: > In general, the hash_range is covered by some of the existing test, > but I don't which test. See the code coverage report here: > https://coverage.postgresql.org/src/backend/utils/adt/rangetypes.c.gcov.html Thanks! I did some experimenting, and the current test code *only* calls `hash_range_internal` when we force it like this: set enable_nestloop=f; set enable_hashjoin=t; set enable_mergejoin=f; select * from numrange_test natural join numrange_test2 order by nr; But if I create that index as a hash index instead, we also call it for these inserts and selects (except for the empty ranges): create table numrange_test2(nr numrange); create index numrange_test2_hash_idx on numrange_test2 (nr); INSERT INTO numrange_test2 VALUES('[, 5)'); INSERT INTO numrange_test2 VALUES(numrange(1.1, 2.2)); INSERT INTO numrange_test2 VALUES(numrange(1.1, 2.2)); INSERT INTO numrange_test2 VALUES(numrange(1.1, 2.2,'()')); INSERT INTO numrange_test2 VALUES('empty'); select * from numrange_test2 where nr = 'empty'::numrange; select * from numrange_test2 where nr = numrange(1.1, 2.2); select * from numrange_test2 where nr = numrange(1.1, 2.3); (None of that is surprising, right? :-) So that seems like more confirmation that it was always intended to be a hash index. Would you like a commit for that? Is it a small enough change for a committer to just do it? The entire change is simply (also attached as a file): diff --git a/src/test/regress/expected/rangetypes.out b/src/test/regress/expected/rangetypes.out index 60d875e898..6fd16bddd1 100644 --- a/src/test/regress/expected/rangetypes.out +++ b/src/test/regress/expected/rangetypes.out @@ -519,7 +519,7 @@ select numrange(1.0, 2.0) * numrange(2.5, 3.0); (1 row) create table numrange_test2(nr numrange); -create index numrange_test2_hash_idx on numrange_test2 (nr); +create index numrange_test2_hash_idx on numrange_test2 using hash (nr); INSERT INTO numrange_test2 VALUES('[, 5)'); INSERT INTO numrange_test2 VALUES(numrange(1.1, 2.2)); INSERT INTO numrange_test2 VALUES(numrange(1.1, 2.2)); diff --git a/src/test/regress/sql/rangetypes.sql b/src/test/regress/sql/rangetypes.sql index 9fdb1953df..8960add976 100644 --- a/src/test/regress/sql/rangetypes.sql +++ b/src/test/regress/sql/rangetypes.sql @@ -119,7 +119,7 @@ select numrange(1.0, 2.0) * numrange(1.5, 3.0); select numrange(1.0, 2.0) * numrange(2.5, 3.0); create table numrange_test2(nr numrange); -create index numrange_test2_hash_idx on numrange_test2 (nr); +create index numrange_test2_hash_idx on numrange_test2 using hash (nr); INSERT INTO numrange_test2 VALUES('[, 5)'); INSERT INTO numrange_test2 VALUES(numrange(1.1, 2.2)); Yours, Paul
Вложения
В списке pgsql-hackers по дате отправления: