Thread: [BUGS] BUG #14819: postgres_fwd could not load library
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
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
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
--
With best regards, Takhir Fakhrutdinov
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-30 | Andres Freund | Move ExecProcNode from dispatch to function pointer... |
including the file src/backend/executor/execProcnode.c
-/* ----------------------------------------------------------------
- * 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)
…..
and file src/include/executor/executor.h
/*
- * 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
+
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
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
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
--
With best regards, Takhir Fakhrutdinov