Hi po 11. 3. 2024 v 14:48 odesílatel Michał Kłeczek <mic...@kleczek.org> napsal:
> > > On 11 Mar 2024, at 14:08, Artur Zakirov <zaar...@gmail.com> wrote: > > On Mon, 11 Mar 2024 at 13:26, Michał Kłeczek <mic...@kleczek.org> wrote: > > > > On 11 Mar 2024, at 11:41, Michał Kłeczek <mic...@kleczek.org> wrote: > > Hi, > > I am trying to create an extension that delegates some calls to btree_gist > functions: > > DirectFunctionCall5Coll( > gbt_text_consistent, …other arguments); > > Basic PGXS Makefile does not work - I get linker error: > > Undefined symbols for architecture arm64: > "_gbt_text_consistent", referenced from: > > > Anyone could provide me with some hints? > > > I’ve added: > PG_LDFLAGS += -L$(shell $(PG_CONFIG) --pkglibdir) -lbtree_gist > > > You can try FunctionCall5Coll() or OidFunctionCall5Coll() functions. > > OidFunctionCall5Coll() calls fmgr_info() and FunctionCall5Coll(). What > you only need is Oid of the target function. > > > What I am trying to do is wrapping and decoration of gbt_text_consistent > function. > The reason I want to use DirectFunctionCall5Col is that other variants > require catalog lookup > as I don’t have old of the wrapped function. > The lookup itself is problematic as the only piece of information I have > is the strategy number. > What’s more - the result of the lookup should be cached in fn_extra and > that makes things even more complex. > > Is there any way to simply link against another extension library? > The advantage of OidFunctionCall is fact, it is working on MacOS. My extension plpgsql_check has a lot of dependencies on plpgsql. The linking on MacOS required special section in Makefile ifeq ($(PORTNAME), darwin) override CFLAGS += -undefined dynamic_lookup endif And there was another problem with loading dependencies. So now, I use only indirect methods. DirectFunctionCall is ok just for buildin functions. Regards Pavel > > — > Thanks > >