Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API)
От | Robert Haas |
---|---|
Тема | Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) |
Дата | |
Msg-id | CA+TgmoYpz=5ZzFBPiLARr-sp2=JvgUXzCiV2=Uwc3XjV4uky0A@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) (Kouhei Kaigai <kaigai@ak.jp.nec.com>) |
Список | pgsql-hackers |
On Wed, Apr 22, 2015 at 10:48 PM, Kouhei Kaigai <kaigai@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
В списке pgsql-hackers по дате отправления: