From 1758ca4bffdc9db6cd5ffc114ad668c15028a454 Mon Sep 17 00:00:00 2001 From: Sven Klemm Date: Fri, 26 Mar 2021 19:33:50 +0100 Subject: [PATCH v1] Allow CustomScan nodes to signal projection support Add a new flag CUSTOMPATH_SUPPORT_PROJECTION to allow CustomScan nodes to control whether they support projection. --- src/backend/optimizer/plan/createplan.c | 4 ++++ src/include/nodes/extensible.h | 1 + 2 files changed, 5 insertions(+) diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c index 906cab7053..32199bd6a3 100644 --- a/src/backend/optimizer/plan/createplan.c +++ b/src/backend/optimizer/plan/createplan.c @@ -7055,6 +7055,8 @@ is_projection_capable_path(Path *path) * get relaxed later. */ return false; + case T_CustomScan: + return castNode(CustomPath, path)->flags & CUSTOMPATH_SUPPORT_PROJECTION; default: break; } @@ -7092,6 +7094,8 @@ is_projection_capable_plan(Plan *plan) * get relaxed later. */ return false; + case T_CustomScan: + return castNode(CustomScan, plan)->flags & CUSTOMPATH_SUPPORT_PROJECTION; default: break; } diff --git a/src/include/nodes/extensible.h b/src/include/nodes/extensible.h index 9e425e5651..7d3dc7e828 100644 --- a/src/include/nodes/extensible.h +++ b/src/include/nodes/extensible.h @@ -80,6 +80,7 @@ extern const ExtensibleNodeMethods *GetExtensibleNodeMethods(const char *name, */ #define CUSTOMPATH_SUPPORT_BACKWARD_SCAN 0x0001 #define CUSTOMPATH_SUPPORT_MARK_RESTORE 0x0002 +#define CUSTOMPATH_SUPPORT_PROJECTION 0x0004 /* * Custom path methods. Mostly, we just need to know how to convert a -- 2.30.0