Re: CustomScan support on readfuncs.c
От | Kouhei Kaigai |
---|---|
Тема | Re: CustomScan support on readfuncs.c |
Дата | |
Msg-id | 9A28C8860F777E439AA12E8AEA7694F80114CA1D@BPXM15GP.gisp.nec.co.jp обсуждение исходный текст |
Ответ на | Re: CustomScan support on readfuncs.c (Robert Haas <robertmhaas@gmail.com>) |
Ответы |
Re: CustomScan support on readfuncs.c
|
Список | pgsql-hackers |
> On Mon, Sep 28, 2015 at 8:31 PM, Kouhei Kaigai <kaigai@ak.jp.nec.com> wrote: > >> Instead of doing this: > >> > >> + /* Dump library and symbol name instead of raw pointer */ > >> appendStringInfoString(str, " :methods "); > >> - _outToken(str, node->methods->CustomName); > >> + _outToken(str, node->methods->methods_library_name); > >> + appendStringInfoChar(str, ' '); > >> + _outToken(str, node->methods->methods_symbol_name); > >> > >> Suppose we just make library_name and symbol_name fields in the node > >> itself, that are dumped and loaded like any others. > >> > >> Would that be better? > >> > > I have no preference here. > > > > Even if we dump library_name/symbol_name as if field in CustomScan, > > not CustomScanMethods, in a similar way, we cannot use WRITE_STRING_FIELD > > here, because its 'fldname' assumes these members are direct field of > > CustomScan. > > > > /* Write a character-string (possibly NULL) field */ > > #define WRITE_STRING_FIELD(fldname) \ > > (appendStringInfo(str, " :" CppAsString(fldname) " "), \ > > _outToken(str, node->fldname)) > > Well that's exactly what I was suggesting: making them a direct field > of CustomScan. > Let me confirm. Are you suggesting to have library_name/symbol_name in CustomScan, not CustomScanMethods? I prefer these fields are in CustomScanMethods because we don't need to setup them again once PG_init set up these symbols. CustomScan has to be created every time when it is chosen by planner. > > One other question I have. Do we have a portable way to lookup > > a pair of library and symbol by address? > > Glibc has dladdr() functions that returns these information, > > however, manpage warned it is not defined by POSIX. > > If we would be able to have any portable way, it may make the > > interface simpler. > > Yes: load_external_function. > It looks up an address by a pair of library and symbol name.... What I'm looking for is a portable function that looks up a pair of library and symbol name by an address, like dladdr() of glibc. I don't know whether other *nix or windows have these infrastructure. Thanks, -- NEC Business Creation Division / PG-Strom Project KaiGai Kohei <kaigai@ak.jp.nec.com>
В списке pgsql-hackers по дате отправления: