From 5c17cb0aa7f06bb3ac15d4ca72a37f59a10fa59e Mon Sep 17 00:00:00 2001
From: Sven Klemm <sven@timescale.com>
Date: Thu, 24 Sep 2020 15:21:04 +0200
Subject: [PATCH] Adjust code to PG13 tuple conversion changes

PG13 changes the way attribute mappings are done and uses AttrMap
instead of AttrNumber[] in the new function signatures. This patch
changes ChunkInsertState to use TupleConversionMap which abstracts
this change.

https://github.com/postgres/postgres/commit/e1551f96e6

Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru>
Fetch from: https://github.com/timescale/timescaledb/commit/2cb7c41276c8f8112bd225a020fef709a8e776ff.patch
---
 src/chunk_insert_state.c  | 92 +++++++++++++++++++++------------------
 src/compat.h              | 15 +++++++
 tsl/src/fdw/modify_exec.c |  4 ++
 3 files changed, 69 insertions(+), 42 deletions(-)

diff --git a/src/chunk_insert_state.c b/src/chunk_insert_state.c
index 5dc294df..f8200dd8 100644
--- a/src/chunk_insert_state.c
+++ b/src/chunk_insert_state.c
@@ -120,7 +120,7 @@ create_chunk_result_relation_info(ChunkDispatch *dispatch, Relation rel)
 
 static ProjectionInfo *
 get_adjusted_projection_info_returning(ProjectionInfo *orig, List *returning_clauses,
-									   AttrNumber *map, int map_size, Index varno, Oid rowtype,
+									   TupleConversionMap *map, Index varno, Oid rowtype,
 									   TupleDesc chunk_desc)
 {
 	bool found_whole_row;
@@ -128,14 +128,15 @@ get_adjusted_projection_info_returning(ProjectionInfo *orig, List *returning_cla
 	Assert(returning_clauses != NIL);
 
 	/* map hypertable attnos -> chunk attnos */
-	returning_clauses = castNode(List,
-								 map_variable_attnos((Node *) returning_clauses,
-													 varno,
-													 0,
-													 map,
-													 map_size,
-													 rowtype,
-													 &found_whole_row));
+	if (map != NULL)
+		returning_clauses = castNode(List,
+									 map_variable_attnos_compat((Node *) returning_clauses,
+																varno,
+																0,
+																map->attrMap,
+																map->outdesc->natts,
+																rowtype,
+																&found_whole_row));
 
 	return ExecBuildProjectionInfo(returning_clauses,
 								   orig->pi_exprContext,
@@ -145,7 +146,7 @@ get_adjusted_projection_info_returning(ProjectionInfo *orig, List *returning_cla
 }
 
 static List *
-translate_clause(List *inclause, AttrNumber *chunk_attnos, Index varno, Relation hyper_rel,
+translate_clause(List *inclause, TupleConversionMap *chunk_map, Index varno, Relation hyper_rel,
 				 Relation chunk_rel)
 {
 	List *clause = copyObject(inclause);
@@ -153,23 +154,23 @@ translate_clause(List *inclause, AttrNumber *chunk_attnos, Index varno, Relation
 
 	/* map hypertable attnos -> chunk attnos for the "excluded" table */
 	clause = castNode(List,
-					  map_variable_attnos((Node *) clause,
-										  INNER_VAR,
-										  0,
-										  chunk_attnos,
-										  RelationGetDescr(hyper_rel)->natts,
-										  RelationGetForm(chunk_rel)->reltype,
-										  &found_whole_row));
+					  map_variable_attnos_compat((Node *) clause,
+												 INNER_VAR,
+												 0,
+												 chunk_map->attrMap,
+												 RelationGetDescr(hyper_rel)->natts,
+												 RelationGetForm(chunk_rel)->reltype,
+												 &found_whole_row));
 
 	/* map hypertable attnos -> chunk attnos for the hypertable */
 	clause = castNode(List,
-					  map_variable_attnos((Node *) clause,
-										  varno,
-										  0,
-										  chunk_attnos,
-										  RelationGetDescr(hyper_rel)->natts,
-										  RelationGetForm(chunk_rel)->reltype,
-										  &found_whole_row));
+					  map_variable_attnos_compat((Node *) clause,
+												 varno,
+												 0,
+												 chunk_map->attrMap,
+												 RelationGetDescr(hyper_rel)->natts,
+												 RelationGetForm(chunk_rel)->reltype,
+												 &found_whole_row));
 
 	return clause;
 }
@@ -193,7 +194,11 @@ adjust_hypertable_tlist(List *tlist, TupleConversionMap *map)
 {
 	List *new_tlist = NIL;
 	TupleDesc chunk_tupdesc = map->outdesc;
+#if PG13_GE
+	AttrNumber *attrMap = map->attrMap->attnums;
+#else
 	AttrNumber *attrMap = map->attrMap;
+#endif
 	AttrNumber chunk_attrno;
 
 	for (chunk_attrno = 1; chunk_attrno <= chunk_tupdesc->natts; chunk_attrno++)
@@ -351,7 +356,8 @@ get_default_existing_slot(ChunkInsertState *state, ChunkDispatch *dispatch)
  * columns, etc.
  */
 static void
-setup_on_conflict_state(ChunkInsertState *state, ChunkDispatch *dispatch, AttrNumber *chunk_attnos)
+setup_on_conflict_state(ChunkInsertState *state, ChunkDispatch *dispatch,
+						TupleConversionMap *chunk_map)
 {
 	TupleConversionMap *map = state->hyper_to_chunk_map;
 	ResultRelInfo *chunk_rri = get_chunk_rri(state);
@@ -377,16 +383,17 @@ setup_on_conflict_state(ChunkInsertState *state, ChunkDispatch *dispatch, AttrNu
 
 		Assert(map->outdesc == RelationGetDescr(chunk_rel));
 
-		if (NULL == chunk_attnos)
-			chunk_attnos = convert_tuples_by_name_map(RelationGetDescr(chunk_rel),
-													  RelationGetDescr(first_rel)
+		if (NULL == chunk_map)
+			chunk_map = convert_tuples_by_name(RelationGetDescr(chunk_rel),
+											   RelationGetDescr(first_rel)
 #if PG13_LT
-                            , gettext_noop("could not convert row type")
+												   ,
+											   gettext_noop("could not convert row type")
 #endif
-                            );
+			);
 
 		onconflset = translate_clause(ts_chunk_dispatch_get_on_conflict_set(dispatch),
-									  chunk_attnos,
+									  chunk_map,
 									  hyper_rri->ri_RangeTableIndex,
 									  hyper_rel,
 									  chunk_rel);
@@ -412,7 +419,7 @@ setup_on_conflict_state(ChunkInsertState *state, ChunkDispatch *dispatch, AttrNu
 		if (NULL != onconflict_where)
 		{
 			List *clause = translate_clause(castNode(List, onconflict_where),
-											chunk_attnos,
+											chunk_map,
 											hyper_rri->ri_RangeTableIndex,
 											hyper_rel,
 											chunk_rel);
@@ -476,7 +483,7 @@ adjust_projections(ChunkInsertState *cis, ChunkDispatch *dispatch, Oid rowtype)
 	ResultRelInfo *chunk_rri = cis->result_relation_info;
 	Relation hyper_rel = dispatch->hypertable_result_rel_info->ri_RelationDesc;
 	Relation chunk_rel = cis->rel;
-	AttrNumber *chunk_attnos = NULL;
+	TupleConversionMap *chunk_map = NULL;
 	OnConflictAction onconflict_action = ts_chunk_dispatch_get_on_conflict_action(dispatch);
 
 	if (ts_chunk_dispatch_has_returning(dispatch))
@@ -486,19 +493,19 @@ adjust_projections(ChunkInsertState *cis, ChunkDispatch *dispatch, Oid rowtype)
 		 * to have the hypertable_desc in the out spot for map_variable_attnos
 		 * to work correctly in mapping hypertable attnos->chunk attnos.
 		 */
-		chunk_attnos = convert_tuples_by_name_map(RelationGetDescr(chunk_rel),
-												  RelationGetDescr(hyper_rel)
+		chunk_map = convert_tuples_by_name(RelationGetDescr(chunk_rel),
+										   RelationGetDescr(hyper_rel)
 #if PG13_LT
-												  ,gettext_noop("could not convert row type")
+											   ,
+										   gettext_noop("could not convert row type")
 #endif
-                          );
+		);
 
 		chunk_rri->ri_projectReturning =
 			get_adjusted_projection_info_returning(chunk_rri->ri_projectReturning,
 												   ts_chunk_dispatch_get_returning_clauses(
 													   dispatch),
-												   chunk_attnos,
-												   RelationGetDescr(hyper_rel)->natts,
+												   chunk_map,
 												   dispatch->hypertable_result_rel_info
 													   ->ri_RangeTableIndex,
 												   rowtype,
@@ -511,7 +518,7 @@ adjust_projections(ChunkInsertState *cis, ChunkDispatch *dispatch, Oid rowtype)
 		set_arbiter_indexes(cis, dispatch);
 
 		if (onconflict_action == ONCONFLICT_UPDATE)
-			setup_on_conflict_state(cis, dispatch, chunk_attnos);
+			setup_on_conflict_state(cis, dispatch, chunk_map);
 	}
 }
 
@@ -598,9 +605,10 @@ ts_chunk_insert_state_create(Chunk *chunk, ChunkDispatch *dispatch)
 			convert_tuples_by_name(RelationGetDescr(parent_rel),
 								   RelationGetDescr(rel)
 #if PG13_LT
-								   ,gettext_noop("could not convert row type")
+									   ,
+								   gettext_noop("could not convert row type")
 #endif
-                   );
+			);
 
 	adjust_projections(state, dispatch, RelationGetForm(rel)->reltype);
 
diff --git a/src/compat.h b/src/compat.h
index 51c1c181..1b2ed8e5 100644
--- a/src/compat.h
+++ b/src/compat.h
@@ -374,4 +374,19 @@ get_vacuum_options(const VacuumStmt *stmt)
 #define for_each_cell_compat(cell, list, initcell) for_each_cell ((cell), (list), (initcell))
 #endif
 
+/* PG13 removes the natts parameter from map_variable_attnos */
+#if PG13_LT
+#define map_variable_attnos_compat(node, varno, sublevels_up, map, natts, rowtype, found_wholerow) \
+	map_variable_attnos((node),                                                                    \
+						(varno),                                                                   \
+						(sublevels_up),                                                            \
+						(map),                                                                     \
+						(natts),                                                                   \
+						(rowtype),                                                                 \
+						(found_wholerow))
+#else
+#define map_variable_attnos_compat(node, varno, sublevels_up, map, natts, rowtype, found_wholerow) \
+	map_variable_attnos((node), (varno), (sublevels_up), (map), (rowtype), (found_wholerow))
+#endif
+
 #endif /* TIMESCALEDB_COMPAT_H */
diff --git a/tsl/src/fdw/modify_exec.c b/tsl/src/fdw/modify_exec.c
index 38d0e0c6..5307079d 100644
--- a/tsl/src/fdw/modify_exec.c
+++ b/tsl/src/fdw/modify_exec.c
@@ -202,7 +202,11 @@ convert_attrs(TupleConversionMap *map, List *attrs)
 
 		for (i = 0; i < map->outdesc->natts; i++)
 		{
+#if PG13_GE
+			if (map->attrMap->attnums[i] == attnum)
+#else
 			if (map->attrMap[i] == attnum)
+#endif
 			{
 				new_attrs = lappend_int(new_attrs, AttrOffsetGetAttrNumber(i));
 				break;
-- 
2.29.2

