Re: [BUGS] BUG #14819: postgres_fwd could not load library
От | Takhir Fakhrutdinov |
---|---|
Тема | Re: [BUGS] BUG #14819: postgres_fwd could not load library |
Дата | |
Msg-id | 203E5B6F-E488-4B0C-8C0D-CE93B8596D62@nct.ru обсуждение исходный текст |
Ответ на | Re: [BUGS] BUG #14819: postgres_fwd could not load library (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | 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
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
В списке pgsql-bugs по дате отправления: