On Mon, Sep 21, 2015 at 9:54 AM, Kouhei Kaigai <kai...@ak.jp.nec.com> wrote: > The planstate_tree_walker() oversight custom_ps of CustomScanState; > that should be a list of underlying PlanState object if any. > > ExplainPreScanNode() treated ForeignScan and CustomScan in special > way (it is sufficient for ExplainPreScanNode() purpose), thus, it > didn't implement its recursive portion originally. > > The job of ExplainPreScanNode() is know all the relids involved > in a particular subquery execution. On the other hands, fs_relids > of ForeignScan and custom_relids of CustomScan informs a set of > relids to be scanned by this Scan node without recursive, so it > did not have recursive walks on the underlying sub-plans. > > However, planstate_tree_walker() will have different expectation. > It is general walker routine, thus, it is natural users to expect > the callback is also kicked towards the underlying planstate of > CustomScan (and ForeignScan; once EPQ recheck gets solved). > > The attached patch adds support of CustomScan on the walker.
Do you need to add something to ExplainPreScanNode for this as well, like if (scanrelid != 0) *rels_used = bms_add_member(*rels_used, scanrelid)? -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers