Inspecting the multicorn source was helpful. For the purposes of anyone searching the mailing lists, I needed to access the quals natively. The code that helped me figure out how to do this was in the native odbc fdw here: https://github.com/ZhengYang/odbc_fdw/blob/master/odbc_fdw.c
particularly the odbcBeginForeignScan() and odbcIterateForeignScan(), and odbcGetQual() functions. Thanks On Fri, Nov 13, 2015 at 1:24 PM, Corey Huinker <corey.huin...@gmail.com> wrote: > On Fri, Nov 13, 2015 at 1:46 PM, Big Mike <newocu...@gmail.com> wrote: > >> Writing a Foreign Data Wrapper and interested in isolating the WHERE >> clause to speed up the access of an indexed file on my filesystem. I'm >> attempting to understand the inner workings of how the data is retrieved so >> I'm writing code to just handle one case at the moment: WHERE clause on a >> single column in the foreign 'table'. >> >> SELECT * FROM t WHERE testval = 1 >> >> I have this code so far, an implementation of the IterateForeignScan >> interface. >> >> static TupleTableSlot * >> bIterateForeignScan(ForeignScanState *node) { >> ... >> RestrictInfo *rinfo = (RestrictInfo *)node->ss.ps.qual; >> ... >> } >> >> yet am not familiar with what I need to do to pick apart RestrictInfo in >> order to gather 'testvar', '=', and '1' separately so I can interpret and >> pass those through to my file parser. >> >> Am I going about this the correct way or is there another path I should >> follow? >> > > > I would look at http://multicorn.org/ which gives you a working python > framework. You subclass their ForeignDataWrapper class, override the > __init__() and execute() functions, and that's about it. The execute() > function has a list called quals that would set you up for the filtering > you want to do. > > I would get the foreign data wrapper fully debugged this way before > attempting to refactor in C. And when you do finally re-code, you can see > what multicorn itself did to implement your filters. > > > > > > > >