Thread: pgsql: Teach tid-scan code to make use of "ctid = ANY (array)" clauses,
pgsql: Teach tid-scan code to make use of "ctid = ANY (array)" clauses,
From
tgl@svr1.postgresql.org (Tom Lane)
Date:
Log Message: ----------- Teach tid-scan code to make use of "ctid = ANY (array)" clauses, so that "ctid IN (list)" will still work after we convert IN to ScalarArrayOpExpr. Make some minor efficiency improvements while at it, such as ensuring that multiple TIDs are fetched in physical heap order. And fix EXPLAIN so that it shows what's really going on for a TID scan. Modified Files: -------------- pgsql/src/backend/commands: explain.c (r1.140 -> r1.141) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/explain.c.diff?r1=1.140&r2=1.141) pgsql/src/backend/executor: nodeTidscan.c (r1.44 -> r1.45) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/executor/nodeTidscan.c.diff?r1=1.44&r2=1.45) pgsql/src/backend/nodes: copyfuncs.c (r1.321 -> r1.322) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/copyfuncs.c.diff?r1=1.321&r2=1.322) outfuncs.c (r1.262 -> r1.263) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/outfuncs.c.diff?r1=1.262&r2=1.263) pgsql/src/backend/optimizer/path: costsize.c (r1.150 -> r1.151) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/costsize.c.diff?r1=1.150&r2=1.151) tidpath.c (r1.25 -> r1.26) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/tidpath.c.diff?r1=1.25&r2=1.26) pgsql/src/backend/optimizer/plan: createplan.c (r1.204 -> r1.205) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/createplan.c.diff?r1=1.204&r2=1.205) setrefs.c (r1.118 -> r1.119) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/setrefs.c.diff?r1=1.118&r2=1.119) subselect.c (r1.101 -> r1.102) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/subselect.c.diff?r1=1.101&r2=1.102) pgsql/src/backend/optimizer/util: pathnode.c (r1.125 -> r1.126) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/util/pathnode.c.diff?r1=1.125&r2=1.126) pgsql/src/include/nodes: execnodes.h (r1.143 -> r1.144) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/execnodes.h.diff?r1=1.143&r2=1.144) plannodes.h (r1.81 -> r1.82) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/plannodes.h.diff?r1=1.81&r2=1.82) relation.h (r1.120 -> r1.121) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/relation.h.diff?r1=1.120&r2=1.121) pgsql/src/include/optimizer: cost.h (r1.71 -> r1.72) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/cost.h.diff?r1=1.71&r2=1.72) pathnode.h (r1.62 -> r1.63) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/pathnode.h.diff?r1=1.62&r2=1.63)