given the following example:
postgres=# create table t2 as select generate_series(1, 100000) as a, generate_series(1, 100000) as b;
SELECT 100000
postgres=# create index t2_idx on t2(a);
CREATE INDEX
postgres=# set enable_seqscan = 0;
SET
postgres=# select * from t2 where a in (1, 100000);
a | b
--------+--------
1 | 1
100000 | 100000
(2 rows)
I can see the plan stores the "1 and 100000" information in IndexScan->indexqual, which is an SCALARARRAYOPEXPR expression.
suppose the executor should scan 1 first, If all the tuples for 1 has been scanned, then **it should be reset to 100000** and scan again. however I can't find out the code for that. looks index_rescan is not for this. am I miss something?
thanks