mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-24 18:55:04 +08:00
d92b1cdbab
This reverts commit 9f984ba6d2
.
It was making the buildfarm unhappy, apparently setting client_min_messages
in a regression test produces different output if log_statement='all'.
Another issue is that I now suspect the bit sortsupport function was in
fact not correct to call byteacmp(). Revert to investigate both of those
issues.
110 lines
3.4 KiB
Plaintext
110 lines
3.4 KiB
Plaintext
-- interval check
|
|
CREATE TABLE intervaltmp (a interval);
|
|
\copy intervaltmp from 'data/interval.data'
|
|
SET enable_seqscan=on;
|
|
SELECT count(*) FROM intervaltmp WHERE a < '199 days 21:21:23';
|
|
count
|
|
-------
|
|
329
|
|
(1 row)
|
|
|
|
SELECT count(*) FROM intervaltmp WHERE a <= '199 days 21:21:23';
|
|
count
|
|
-------
|
|
330
|
|
(1 row)
|
|
|
|
SELECT count(*) FROM intervaltmp WHERE a = '199 days 21:21:23';
|
|
count
|
|
-------
|
|
1
|
|
(1 row)
|
|
|
|
SELECT count(*) FROM intervaltmp WHERE a >= '199 days 21:21:23';
|
|
count
|
|
-------
|
|
271
|
|
(1 row)
|
|
|
|
SELECT count(*) FROM intervaltmp WHERE a > '199 days 21:21:23';
|
|
count
|
|
-------
|
|
270
|
|
(1 row)
|
|
|
|
SELECT a, a <-> '199 days 21:21:23' FROM intervaltmp ORDER BY a <-> '199 days 21:21:23' LIMIT 3;
|
|
a | ?column?
|
|
-------------------------------------+--------------------------------------
|
|
@ 199 days 21 hours 21 mins 23 secs | @ 0
|
|
@ 183 days 6 hours 52 mins 48 secs | @ 16 days 14 hours 28 mins 35 secs
|
|
@ 220 days 19 hours 5 mins 42 secs | @ 21 days -2 hours -15 mins -41 secs
|
|
(3 rows)
|
|
|
|
CREATE INDEX intervalidx ON intervaltmp USING gist ( a );
|
|
SET enable_seqscan=off;
|
|
SELECT count(*) FROM intervaltmp WHERE a < '199 days 21:21:23'::interval;
|
|
count
|
|
-------
|
|
329
|
|
(1 row)
|
|
|
|
SELECT count(*) FROM intervaltmp WHERE a <= '199 days 21:21:23'::interval;
|
|
count
|
|
-------
|
|
330
|
|
(1 row)
|
|
|
|
SELECT count(*) FROM intervaltmp WHERE a = '199 days 21:21:23'::interval;
|
|
count
|
|
-------
|
|
1
|
|
(1 row)
|
|
|
|
SELECT count(*) FROM intervaltmp WHERE a >= '199 days 21:21:23'::interval;
|
|
count
|
|
-------
|
|
271
|
|
(1 row)
|
|
|
|
SELECT count(*) FROM intervaltmp WHERE a > '199 days 21:21:23'::interval;
|
|
count
|
|
-------
|
|
270
|
|
(1 row)
|
|
|
|
EXPLAIN (COSTS OFF)
|
|
SELECT a, a <-> '199 days 21:21:23' FROM intervaltmp ORDER BY a <-> '199 days 21:21:23' LIMIT 3;
|
|
QUERY PLAN
|
|
---------------------------------------------------------------------------
|
|
Limit
|
|
-> Index Only Scan using intervalidx on intervaltmp
|
|
Order By: (a <-> '@ 199 days 21 hours 21 mins 23 secs'::interval)
|
|
(3 rows)
|
|
|
|
SELECT a, a <-> '199 days 21:21:23' FROM intervaltmp ORDER BY a <-> '199 days 21:21:23' LIMIT 3;
|
|
a | ?column?
|
|
-------------------------------------+--------------------------------------
|
|
@ 199 days 21 hours 21 mins 23 secs | @ 0
|
|
@ 183 days 6 hours 52 mins 48 secs | @ 16 days 14 hours 28 mins 35 secs
|
|
@ 220 days 19 hours 5 mins 42 secs | @ 21 days -2 hours -15 mins -41 secs
|
|
(3 rows)
|
|
|
|
SET enable_indexonlyscan=off;
|
|
EXPLAIN (COSTS OFF)
|
|
SELECT a, a <-> '199 days 21:21:23' FROM intervaltmp ORDER BY a <-> '199 days 21:21:23' LIMIT 3;
|
|
QUERY PLAN
|
|
---------------------------------------------------------------------------
|
|
Limit
|
|
-> Index Scan using intervalidx on intervaltmp
|
|
Order By: (a <-> '@ 199 days 21 hours 21 mins 23 secs'::interval)
|
|
(3 rows)
|
|
|
|
SELECT a, a <-> '199 days 21:21:23' FROM intervaltmp ORDER BY a <-> '199 days 21:21:23' LIMIT 3;
|
|
a | ?column?
|
|
-------------------------------------+--------------------------------------
|
|
@ 199 days 21 hours 21 mins 23 secs | @ 0
|
|
@ 183 days 6 hours 52 mins 48 secs | @ 16 days 14 hours 28 mins 35 secs
|
|
@ 220 days 19 hours 5 mins 42 secs | @ 21 days -2 hours -15 mins -41 secs
|
|
(3 rows)
|
|
|