mirror of
https://github.com/postgres/postgres.git
synced 2025-10-19 15:49:24 +03:00
Allow parallel custom and foreign scans.
This patch doesn't put the new infrastructure to use anywhere, and indeed it's not clear how it could ever be used for something like postgres_fdw which has to send an SQL query and wait for a reply, but there might be FDWs or custom scan providers that are CPU-bound, so let's give them a way to join club parallel. KaiGai Kohei, reviewed by me.
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
#ifndef FDWAPI_H
|
||||
#define FDWAPI_H
|
||||
|
||||
#include "access/parallel.h"
|
||||
#include "nodes/execnodes.h"
|
||||
#include "nodes/relation.h"
|
||||
|
||||
@@ -122,6 +123,14 @@ typedef bool (*AnalyzeForeignTable_function) (Relation relation,
|
||||
typedef List *(*ImportForeignSchema_function) (ImportForeignSchemaStmt *stmt,
|
||||
Oid serverOid);
|
||||
|
||||
typedef Size (*EstimateDSMForeignScan_function) (ForeignScanState *node,
|
||||
ParallelContext *pcxt);
|
||||
typedef void (*InitializeDSMForeignScan_function) (ForeignScanState *node,
|
||||
ParallelContext *pcxt,
|
||||
void *coordinate);
|
||||
typedef void (*InitializeWorkerForeignScan_function) (ForeignScanState *node,
|
||||
shm_toc *toc,
|
||||
void *coordinate);
|
||||
/*
|
||||
* FdwRoutine is the struct returned by a foreign-data wrapper's handler
|
||||
* function. It provides pointers to the callback functions needed by the
|
||||
@@ -177,6 +186,11 @@ typedef struct FdwRoutine
|
||||
|
||||
/* Support functions for IMPORT FOREIGN SCHEMA */
|
||||
ImportForeignSchema_function ImportForeignSchema;
|
||||
|
||||
/* Support functions for parallelism under Gather node */
|
||||
EstimateDSMForeignScan_function EstimateDSMForeignScan;
|
||||
InitializeDSMForeignScan_function InitializeDSMForeignScan;
|
||||
InitializeWorkerForeignScan_function InitializeWorkerForeignScan;
|
||||
} FdwRoutine;
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user