mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-26 14:07:19 +02:00
Formerly, the value computed by leftmostvalue_interval() was a long way short of the minimum possible interval value. As a result, an index scan on a GIN index on an interval column with < or <= operators would miss large negative interval values. Fix by setting all fields of the leftmost interval to their minimum values, ensuring that the result is less than any other possible interval. Since this only affects index searches, no index rebuild is necessary. Back-patch to all supported branches. Dean Rasheed, reviewed by Heikki Linnakangas. Discussion: https://postgr.es/m/CAEZATCV80%2BgOfF8ehNUUfaKBZgZMDfCfL-g1HhWGb6kC3rpDfw%40mail.gmail.com
25 lines
662 B
SQL
25 lines
662 B
SQL
set enable_seqscan=off;
|
|
|
|
CREATE TABLE test_interval (
|
|
i interval
|
|
);
|
|
|
|
INSERT INTO test_interval VALUES
|
|
( '-178000000 years' ),
|
|
( '03:55:08' ),
|
|
( '04:55:08' ),
|
|
( '05:55:08' ),
|
|
( '08:55:08' ),
|
|
( '09:55:08' ),
|
|
( '10:55:08' ),
|
|
( '178000000 years' )
|
|
;
|
|
|
|
CREATE INDEX idx_interval ON test_interval USING gin (i);
|
|
|
|
SELECT * FROM test_interval WHERE i<'08:55:08'::interval ORDER BY i;
|
|
SELECT * FROM test_interval WHERE i<='08:55:08'::interval ORDER BY i;
|
|
SELECT * FROM test_interval WHERE i='08:55:08'::interval ORDER BY i;
|
|
SELECT * FROM test_interval WHERE i>='08:55:08'::interval ORDER BY i;
|
|
SELECT * FROM test_interval WHERE i>'08:55:08'::interval ORDER BY i;
|