-- float8 check CREATE TABLE float8tmp (a float8); \copy float8tmp from 'data/float8.data' SET enable_seqscan=on; SELECT count(*) FROM float8tmp WHERE a < -1890.0; count ------- 237 (1 row) SELECT count(*) FROM float8tmp WHERE a <= -1890.0; count ------- 238 (1 row) SELECT count(*) FROM float8tmp WHERE a = -1890.0; count ------- 1 (1 row) SELECT count(*) FROM float8tmp WHERE a >= -1890.0; count ------- 307 (1 row) SELECT count(*) FROM float8tmp WHERE a > -1890.0; count ------- 306 (1 row) SELECT a, a <-> '-1890.0' FROM float8tmp ORDER BY a <-> '-1890.0' LIMIT 3; a | ?column? --------------+-------------------- -1890 | 0 -2003.634512 | 113.63451200000009 -1769.73634 | 120.26366000000007 (3 rows) CREATE INDEX float8idx ON float8tmp USING gist ( a ); SET enable_seqscan=off; SELECT count(*) FROM float8tmp WHERE a < -1890.0::float8; count ------- 237 (1 row) SELECT count(*) FROM float8tmp WHERE a <= -1890.0::float8; count ------- 238 (1 row) SELECT count(*) FROM float8tmp WHERE a = -1890.0::float8; count ------- 1 (1 row) SELECT count(*) FROM float8tmp WHERE a >= -1890.0::float8; count ------- 307 (1 row) SELECT count(*) FROM float8tmp WHERE a > -1890.0::float8; count ------- 306 (1 row) EXPLAIN (COSTS OFF) SELECT a, a <-> '-1890.0' FROM float8tmp ORDER BY a <-> '-1890.0' LIMIT 3; QUERY PLAN ----------------------------------------------------- Limit -> Index Only Scan using float8idx on float8tmp Order By: (a <-> '-1890'::double precision) (3 rows) SELECT a, a <-> '-1890.0' FROM float8tmp ORDER BY a <-> '-1890.0' LIMIT 3; a | ?column? --------------+-------------------- -1890 | 0 -2003.634512 | 113.63451200000009 -1769.73634 | 120.26366000000007 (3 rows)