mirror of
https://github.com/postgres/postgres.git
synced 2025-09-03 15:22:11 +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:
@@ -188,6 +188,7 @@ _copyModifyTable(const ModifyTable *from)
|
||||
COPY_NODE_FIELD(withCheckOptionLists);
|
||||
COPY_NODE_FIELD(returningLists);
|
||||
COPY_NODE_FIELD(fdwPrivLists);
|
||||
COPY_BITMAPSET_FIELD(fdwDirectModifyPlans);
|
||||
COPY_NODE_FIELD(rowMarks);
|
||||
COPY_SCALAR_FIELD(epqParam);
|
||||
COPY_SCALAR_FIELD(onConflictAction);
|
||||
@@ -648,6 +649,7 @@ _copyForeignScan(const ForeignScan *from)
|
||||
/*
|
||||
* copy remainder of node
|
||||
*/
|
||||
COPY_SCALAR_FIELD(operation);
|
||||
COPY_SCALAR_FIELD(fs_server);
|
||||
COPY_NODE_FIELD(fdw_exprs);
|
||||
COPY_NODE_FIELD(fdw_private);
|
||||
|
@@ -356,6 +356,7 @@ _outModifyTable(StringInfo str, const ModifyTable *node)
|
||||
WRITE_NODE_FIELD(withCheckOptionLists);
|
||||
WRITE_NODE_FIELD(returningLists);
|
||||
WRITE_NODE_FIELD(fdwPrivLists);
|
||||
WRITE_BITMAPSET_FIELD(fdwDirectModifyPlans);
|
||||
WRITE_NODE_FIELD(rowMarks);
|
||||
WRITE_INT_FIELD(epqParam);
|
||||
WRITE_ENUM_FIELD(onConflictAction, OnConflictAction);
|
||||
@@ -608,6 +609,7 @@ _outForeignScan(StringInfo str, const ForeignScan *node)
|
||||
|
||||
_outScanInfo(str, (const Scan *) node);
|
||||
|
||||
WRITE_ENUM_FIELD(operation, CmdType);
|
||||
WRITE_OID_FIELD(fs_server);
|
||||
WRITE_NODE_FIELD(fdw_exprs);
|
||||
WRITE_NODE_FIELD(fdw_private);
|
||||
|
@@ -1481,6 +1481,7 @@ _readModifyTable(void)
|
||||
READ_NODE_FIELD(withCheckOptionLists);
|
||||
READ_NODE_FIELD(returningLists);
|
||||
READ_NODE_FIELD(fdwPrivLists);
|
||||
READ_BITMAPSET_FIELD(fdwDirectModifyPlans);
|
||||
READ_NODE_FIELD(rowMarks);
|
||||
READ_INT_FIELD(epqParam);
|
||||
READ_ENUM_FIELD(onConflictAction, OnConflictAction);
|
||||
|
Reference in New Issue
Block a user