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-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

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Takhir Fakhrutdinov
Дата:
Сообщение: Re: [BUGS] BUG #14819: postgres_fwd could not load library
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [BUGS] BUG #14819: postgres_fwd could not load library