From 4ed30a08241292112c73389ba2eb38ca43b0cc56 Mon Sep 17 00:00:00 2001 From: Sait Talha Nisanci Date: Wed, 20 May 2020 12:25:25 +0300 Subject: [PATCH] create Set_ptr_value Since PG13 changed the list, a listcell doesn't contain data anymore. Therefore Set_ptr_value macro is created, so that depending on the version it will either use cell->data.ptr_value or cell->ptr_value. Commit on Postgres side: 1cff1b95ab6ddae32faa3efe0d95a820dbfdc164 --- src/backend/distributed/planner/multi_physical_planner.c | 2 +- src/backend/distributed/planner/multi_router_planner.c | 3 +-- src/include/distributed/version_compat.h | 2 ++ 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/backend/distributed/planner/multi_physical_planner.c b/src/backend/distributed/planner/multi_physical_planner.c index afdb65c31..38fd3ed61 100644 --- a/src/backend/distributed/planner/multi_physical_planner.c +++ b/src/backend/distributed/planner/multi_physical_planner.c @@ -5141,7 +5141,7 @@ GreedyAssignTask(WorkerNode *workerNode, List *taskList, List *activeShardPlacem rotatePlacementListBy = replicaIndex; /* overwrite task list to signal that this task is assigned */ - taskCell->data.ptr_value = NULL; + Set_ptr_value(taskCell, NULL); break; } } diff --git a/src/backend/distributed/planner/multi_router_planner.c b/src/backend/distributed/planner/multi_router_planner.c index 6fd2b3159..75493e91a 100644 --- a/src/backend/distributed/planner/multi_router_planner.c +++ b/src/backend/distributed/planner/multi_router_planner.c @@ -2976,8 +2976,7 @@ NormalizeMultiRowInsertTargetList(Query *query) expandedValuesList = lappend(expandedValuesList, targetExpr); } - - valuesListCell->data.ptr_value = (void *) expandedValuesList; + Set_ptr_value(valuesListCell, (void *) expandedValuesList); } /* reset coltypes, coltypmods, colcollations and rebuild them below */ diff --git a/src/include/distributed/version_compat.h b/src/include/distributed/version_compat.h index 53acbf786..6eaeaabcd 100644 --- a/src/include/distributed/version_compat.h +++ b/src/include/distributed/version_compat.h @@ -39,6 +39,7 @@ #define ExplainOnePlanCompat(a,b,c,d,e,f,g,h) ExplainOnePlan(a,b,c,d,e,f,g,h) #define varoattno varattnosyn #define varnoold varnosyn +#define Set_ptr_value(a,b) a->ptr_value = b #else /* pre PG13 */ #define lnext_compat(l, r) lnext(r) #define list_delete_cell_compat(l,c,p) list_delete_cell(l,c,p) @@ -48,6 +49,7 @@ #define PortalDefineQuerySelectCompat(a,b,c,e,f) PortalDefineQuery(a,b,c,"SELECT",e,f) #define getOwnedSequencesCompat(a,b) getOwnedSequences(a,b) #define ExplainOnePlanCompat(a,b,c,d,e,f,g,h) ExplainOnePlan(a,b,c,d,e,f,g) +#define Set_ptr_value(a,b) a->data.ptr_value = b #endif #if PG_VERSION_NUM >= PG_VERSION_12