On Wed, Apr 22, 2015 at 10:48 PM, Kouhei Kaigai <kai...@ak.jp.nec.com> wrote: >> + else if (scan->scanrelid == 0 && >> + (IsA(scan, ForeignScan) || IsA(scan, CustomScan))) >> + varno = INDEX_VAR; >> >> Suppose scan->scanrelid == 0 but the scan type is something else? Is >> that legal? Is varno == 0 the correct outcome in that case? >> > Right now, no other scan type has capability to return a tuples > with flexible type/attributes more than static definition. > I think it is a valid restriction that only foreign/custom-scan > can have scanrelid == 0.
But the code as you've written it doesn't enforce any such restriction. It just spends CPU cycles testing for a condition which, to the best of your knowledge, will never happen. If it's really a can't happen condition, how about checking it via an Assert()? else if (scan->scanrelid == 0) { Assert(IsA(scan, ForeignScan) || IsA(scan, CustomScan)); varno = INDEX_VAR; } -- 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