mirror of
https://github.com/postgres/postgres.git
synced 2025-10-19 15:49:24 +03:00
Directly modify foreign tables.
postgres_fdw can now sent an UPDATE or DELETE statement directly to the foreign server in simple cases, rather than sending a SELECT FOR UPDATE statement and then updating or deleting rows one-by-one. Etsuro Fujita, reviewed by Rushabh Lathia, Shigeru Hanada, Kyotaro Horiguchi, Albe Laurenz, Thom Brown, and me.
This commit is contained in:
@@ -97,6 +97,18 @@ typedef void (*EndForeignModify_function) (EState *estate,
|
||||
|
||||
typedef int (*IsForeignRelUpdatable_function) (Relation rel);
|
||||
|
||||
typedef bool (*PlanDirectModify_function) (PlannerInfo *root,
|
||||
ModifyTable *plan,
|
||||
Index resultRelation,
|
||||
int subplan_index);
|
||||
|
||||
typedef void (*BeginDirectModify_function) (ForeignScanState *node,
|
||||
int eflags);
|
||||
|
||||
typedef TupleTableSlot *(*IterateDirectModify_function) (ForeignScanState *node);
|
||||
|
||||
typedef void (*EndDirectModify_function) (ForeignScanState *node);
|
||||
|
||||
typedef RowMarkType (*GetForeignRowMarkType_function) (RangeTblEntry *rte,
|
||||
LockClauseStrength strength);
|
||||
|
||||
@@ -114,6 +126,9 @@ typedef void (*ExplainForeignModify_function) (ModifyTableState *mtstate,
|
||||
int subplan_index,
|
||||
struct ExplainState *es);
|
||||
|
||||
typedef void (*ExplainDirectModify_function) (ForeignScanState *node,
|
||||
struct ExplainState *es);
|
||||
|
||||
typedef int (*AcquireSampleRowsFunc) (Relation relation, int elevel,
|
||||
HeapTuple *rows, int targrows,
|
||||
double *totalrows,
|
||||
@@ -181,6 +196,10 @@ typedef struct FdwRoutine
|
||||
ExecForeignDelete_function ExecForeignDelete;
|
||||
EndForeignModify_function EndForeignModify;
|
||||
IsForeignRelUpdatable_function IsForeignRelUpdatable;
|
||||
PlanDirectModify_function PlanDirectModify;
|
||||
BeginDirectModify_function BeginDirectModify;
|
||||
IterateDirectModify_function IterateDirectModify;
|
||||
EndDirectModify_function EndDirectModify;
|
||||
|
||||
/* Functions for SELECT FOR UPDATE/SHARE row locking */
|
||||
GetForeignRowMarkType_function GetForeignRowMarkType;
|
||||
@@ -190,6 +209,7 @@ typedef struct FdwRoutine
|
||||
/* Support functions for EXPLAIN */
|
||||
ExplainForeignScan_function ExplainForeignScan;
|
||||
ExplainForeignModify_function ExplainForeignModify;
|
||||
ExplainDirectModify_function ExplainDirectModify;
|
||||
|
||||
/* Support functions for ANALYZE */
|
||||
AnalyzeForeignTable_function AnalyzeForeignTable;
|
||||
|
Reference in New Issue
Block a user