mirror of
https://github.com/postgres/postgres.git
synced 2025-10-19 15:49:24 +03:00
Add new FDW API to test for parallel-safety.
This is basically a bug fix; the old code assumes that a ForeignScan is always parallel-safe, but for postgres_fdw, for example, this is definitely false. It should be true for file_fdw, though, since a worker can read a file from the filesystem just as well as any other backend process. Original patch by Thomas Munro. Documentation, and changes to the comments, by me.
This commit is contained in:
@@ -131,6 +131,10 @@ typedef void (*InitializeDSMForeignScan_function) (ForeignScanState *node,
|
||||
typedef void (*InitializeWorkerForeignScan_function) (ForeignScanState *node,
|
||||
shm_toc *toc,
|
||||
void *coordinate);
|
||||
typedef bool (*IsForeignScanParallelSafe_function) (PlannerInfo *root,
|
||||
RelOptInfo *rel,
|
||||
RangeTblEntry *rte);
|
||||
|
||||
/*
|
||||
* FdwRoutine is the struct returned by a foreign-data wrapper's handler
|
||||
* function. It provides pointers to the callback functions needed by the
|
||||
@@ -188,6 +192,7 @@ typedef struct FdwRoutine
|
||||
ImportForeignSchema_function ImportForeignSchema;
|
||||
|
||||
/* Support functions for parallelism under Gather node */
|
||||
IsForeignScanParallelSafe_function IsForeignScanParallelSafe;
|
||||
EstimateDSMForeignScan_function EstimateDSMForeignScan;
|
||||
InitializeDSMForeignScan_function InitializeDSMForeignScan;
|
||||
InitializeWorkerForeignScan_function InitializeWorkerForeignScan;
|
||||
|
Reference in New Issue
Block a user