-- -- Initial data -- CREATE TABLE ctest ( id int8, name varchar ); INSERT INTO ctest (id, name) SELECT id, 'Test' || id FROM generate_series(1, 1000) AS id; CREATE INDEX ctest_id_idx ON ctest(id); -- -- Return absolute cursor records using sequential scan & index -- BEGIN; SET enable_seqscan = 't'; DECLARE CUR SCROLL CURSOR FOR SELECT * FROM ctest WHERE id >= 990; FETCH ABSOLUTE -1 IN CUR; FETCH ABSOLUTE 3 IN CUR; CLOSE CUR; SET enable_seqscan = 'f'; DECLARE CUR SCROLL CURSOR FOR SELECT * FROM ctest WHERE id >= 990; FETCH ABSOLUTE -1 IN CUR; FETCH ABSOLUTE 3 IN CUR; CLOSE CUR; COMMIT; -- -- Rebuild with btree_gist -- DROP INDEX ctest_id_idx; CREATE INDEX ctest_id_gist_idx ON ctest USING gist(id gist_int8_ops); -- -- Now try again... but this time no results are returned using GiST index scan? -- BEGIN; SET enable_seqscan = 't'; DECLARE CUR SCROLL CURSOR FOR SELECT * FROM ctest WHERE id >= 990::bigint; FETCH ABSOLUTE -1 IN CUR; FETCH ABSOLUTE 3 IN CUR; CLOSE CUR; SET enable_seqscan = 'f'; DECLARE CUR SCROLL CURSOR FOR SELECT * FROM ctest WHERE id >= 990::bigint; FETCH ABSOLUTE -1 IN CUR; FETCH ABSOLUTE 3 IN CUR; CLOSE CUR; COMMIT;