Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API)
От | Kouhei Kaigai |
---|---|
Тема | Re: Custom/Foreign-Join-APIs (Re: [v9.5] Custom Plan API) |
Дата | |
Msg-id | 9A28C8860F777E439AA12E8AEA7694F8010D5C01@BPXM15GP.gisp.nec.co.jp обсуждение исходный текст |
Ответ на | 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; > } > Thanks for your suggestion. I'd like to use this idea on the next patch. -- NEC Business Creation Division / PG-Strom Project KaiGai Kohei <kaigai@ak.jp.nec.com>
В списке pgsql-hackers по дате отправления: