Thread: [BUGS] BUG #14819: postgres_fwd could not load library

[BUGS] BUG #14819: postgres_fwd could not load library

From
fte@nct.ru
Date:
The following bug has been logged on the website:

Bug reference:      14819
Logged by:          Fakhroutdinov Takhir
Email address:      fte@nct.ru
PostgreSQL version: 10beta4
Operating system:   Mac OS X
Description:

ERROR:  could not load library "/usr/local/pgsql/lib/postgres_fdw.so":
dlopen(/usr/local/pgsql/lib/postgres_fdw.so, 10): Symbol not found:
_ExecProcNode Referenced from: /usr/local/pgsql/lib/postgres_fdw.so Expected in: /usr/local/pgsql/bin/postgresin
/usr/local/pgsql/lib/postgres_fdw.so

ExecProcNode defined in excutor.h as static inlide function, so it not found
in /usr/local/bin/postgres



--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Re: [BUGS] BUG #14819: postgres_fwd could not load library

From
Tom Lane
Date:
fte@nct.ru writes:
> ERROR:  could not load library "/usr/local/pgsql/lib/postgres_fdw.so":
> dlopen(/usr/local/pgsql/lib/postgres_fdw.so, 10): Symbol not found:
> _ExecProcNode
>   Referenced from: /usr/local/pgsql/lib/postgres_fdw.so
>   Expected in: /usr/local/pgsql/bin/postgres
>  in /usr/local/pgsql/lib/postgres_fdw.so

Apparently you're using an old version of postgres_fdw with a v10
core server.
        regards, tom lane


-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Re: [BUGS] BUG #14819: postgres_fwd could not load library

From
Takhir Fakhrutdinov
Date:

19 сент. 2017 г., в 18:35, Tom Lane <tgl@sss.pgh.pa.us> написал(а):

fte@nct.ru writes:
ERROR:  could not load library "/usr/local/pgsql/lib/postgres_fdw.so":
dlopen(/usr/local/pgsql/lib/postgres_fdw.so, 10): Symbol not found:
_ExecProcNode
 Referenced from: /usr/local/pgsql/lib/postgres_fdw.so
 Expected in: /usr/local/pgsql/bin/postgres
in /usr/local/pgsql/lib/postgres_fdw.so

Apparently you're using an old version of postgres_fdw with a v10
core server.

regards, tom lane

I am download  source code from here https://www.postgresql.org/ftp/source/v10beta4/

--
With best regards, Takhir Fakhrutdinov

Re: [BUGS] BUG #14819: postgres_fwd could not load library

From
Takhir Fakhrutdinov
Date:

19 сент. 2017 г., в 18:35, Tom Lane <tgl@sss.pgh.pa.us> написал(а):

fte@nct.ru writes:
ERROR:  could not load library "/usr/local/pgsql/lib/postgres_fdw.so":
dlopen(/usr/local/pgsql/lib/postgres_fdw.so, 10): Symbol not found:
_ExecProcNode
 Referenced from: /usr/local/pgsql/lib/postgres_fdw.so
 Expected in: /usr/local/pgsql/bin/postgres
in /usr/local/pgsql/lib/postgres_fdw.so

Apparently you're using an old version of postgres_fdw with a v10
core server.

regards, tom lane

Dear, Tom

Changes was made in commit 
2017-07-30Andres FreundMove ExecProcNode from dispatch to function pointer...

-/* ----------------------------------------------------------------
- *     ExecProcNode
- *
- *     Execute the given node to return a(nother) tuple.
- * ----------------------------------------------------------------
+/*
+ * ExecProcNode wrapper that performs some one-time checks, before calling
+ * the relevant node method (possibly via an instrumentation wrapper).
  */
-TupleTableSlot *
-ExecProcNode(PlanState *node)
+static TupleTableSlot *
+ExecProcNodeFirst(PlanState *node)
…..

 
 /*
- * prototypes from functions in execProcnode.c
+ * functions in execProcnode.c
  */
 extern PlanState *ExecInitNode(Plan *node, EState *estate, int eflags);
-extern TupleTableSlot *ExecProcNode(PlanState *node);
 extern Node *MultiExecProcNode(PlanState *node);
 extern void ExecEndNode(PlanState *node);
 extern bool ExecShutdownNode(PlanState *node);
 
+
+/* ----------------------------------------------------------------
+ *     ExecProcNode
+ *
+ *     Execute the given node to return a(nother) tuple.
+ * ----------------------------------------------------------------
+ */
+#ifndef FRONTEND
+static inline TupleTableSlot *
+ExecProcNode(PlanState *node)
+{
+   if (node->chgParam != NULL) /* something changed? */
+       ExecReScan(node);       /* let ReScan handle this */
+
+   return node->ExecProcNode(node);
+}
+#endif
+

So postgresql core now has no entry _ExecProcNode


But postgres_fdw.c still call _ExecProcNode

/** postgresRecheckForeignScan*		Execute a local join execution plan for a foreign join*/
static bool
postgresRecheckForeignScan(ForeignScanState *node, TupleTableSlot *slot)
{Index		scanrelid = ((Scan *) node->ss.ps.plan)->scanrelid;PlanState  *outerPlan = outerPlanState(node);TupleTableSlot *result;
/* For base foreign relations, it suffices to set fdw_recheck_quals */if (scanrelid > 0)	return true;
Assert(outerPlan != NULL);
/* Execute a local join execution plan */result = ExecProcNode(outerPlan);if (TupIsNull(result))	return false;
/* Store result in the given slot */ExecCopySlot(slot, result);
return true;
}


--
With best regards, Takhir Fakhrutdinov

Re: [BUGS] BUG #14819: postgres_fwd could not load library

From
Tom Lane
Date:
Takhir Fakhrutdinov <fte@nct.ru> writes:
>> 19 сент. 2017 г., в 18:35, Tom Lane <tgl@sss.pgh.pa.us> написал(а):
>> Apparently you're using an old version of postgres_fdw with a v10
>> core server.

> So postgresql core now has no entry _ExecProcNode

Yup.  And the problem is you're trying to run a version of postgres_fdw.so
that still thinks there should be such an entry.  If it's not actually
old, then most likely the problem is that the compiler looked at an old
version of executor.h while compiling it.
        regards, tom lane


--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Re: [BUGS] BUG #14819: postgres_fwd could not load library

From
Takhir Fakhrutdinov
Date:

19 сент. 2017 г., в 22:43, Tom Lane <tgl@sss.pgh.pa.us> написал(а):

Takhir Fakhrutdinov <fte@nct.ru> writes:
19 сент. 2017 г., в 18:35, Tom Lane <tgl@sss.pgh.pa.us> написал(а):
Apparently you're using an old version of postgres_fdw with a v10
core server.

So postgresql core now has no entry _ExecProcNode

Yup.  And the problem is you're trying to run a version of postgres_fdw.so
that still thinks there should be such an entry.  If it's not actually
old, then most likely the problem is that the compiler looked at an old
version of executor.h while compiling it.

regards, tom lane

Thank you, you are right, I really used the old version of postgres_fdw.so

--
With best regards, Takhir Fakhrutdinov