Hm, shouldn't this query notice that random() is volatile and not make the subquery an initplan?
postgres=# select i, (select (random()*1000)::integer ) from x limit 5; i | ?column? ---+---------- 1 | 677 2 | 677 3 | 677 4 | 677 5 | 677 (5 rows) postgres=# explain select i, (select (random()*1000)::integer ) from x limit 5; QUERY PLAN ----------------------------------------------------------- Limit (cost=0.02..0.11 rows=5 width=4) InitPlan -> Result (cost=0.00..0.02 rows=1 width=0) -> Seq Scan on x (cost=0.00..64.80 rows=3480 width=4) (4 rows) -- Gregory Stark EnterpriseDB http://www.enterprisedb.com Ask me about EnterpriseDB's RemoteDBA services! -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers