From 7e553fe7dbf7c09a3fc69cf2f288b4a84a0ed9b6 Mon Sep 17 00:00:00 2001 From: Mehmet Yilmaz Date: Fri, 9 May 2025 12:31:19 +0000 Subject: [PATCH] 5983a4c - Introduce CompactAttribute array in TupleDesc --- src/backend/columnar/columnar_metadata.c | 8 ++++---- src/include/columnar/columnar_version_compat.h | 17 +++++++++++++++-- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/backend/columnar/columnar_metadata.c b/src/backend/columnar/columnar_metadata.c index a11138d0d..1afd6af55 100644 --- a/src/backend/columnar/columnar_metadata.c +++ b/src/backend/columnar/columnar_metadata.c @@ -645,10 +645,10 @@ SaveStripeSkipList(RelFileLocator relfilelocator, uint64 stripe, { values[Anum_columnar_chunk_minimum_value - 1] = PointerGetDatum(DatumToBytea(chunk->minimumValue, - &tupleDescriptor->attrs[columnIndex])); + Attr(tupleDescriptor, columnIndex))); values[Anum_columnar_chunk_maximum_value - 1] = PointerGetDatum(DatumToBytea(chunk->maximumValue, - &tupleDescriptor->attrs[columnIndex])); + Attr(tupleDescriptor, columnIndex))); } else { @@ -803,9 +803,9 @@ ReadStripeSkipList(RelFileLocator relfilelocator, uint64 stripe, datumArray[Anum_columnar_chunk_maximum_value - 1]); chunk->minimumValue = - ByteaToDatum(minValue, &tupleDescriptor->attrs[columnIndex]); + ByteaToDatum(minValue, Attr(tupleDescriptor, columnIndex)); chunk->maximumValue = - ByteaToDatum(maxValue, &tupleDescriptor->attrs[columnIndex]); + ByteaToDatum(maxValue, Attr(tupleDescriptor, columnIndex)); chunk->hasMinMax = true; } diff --git a/src/include/columnar/columnar_version_compat.h b/src/include/columnar/columnar_version_compat.h index d6908aced..640170297 100644 --- a/src/include/columnar/columnar_version_compat.h +++ b/src/include/columnar/columnar_version_compat.h @@ -9,14 +9,27 @@ *------------------------------------------------------------------------- */ -#ifndef COLUMNAR_COMPAT_H -#define COLUMNAR_COMPAT_H + #ifndef COLUMNAR_VERSION_COMPAT_H + #define COLUMNAR_VERSION_COMPAT_H #include "pg_version_constants.h" +/* for PG_VERSION_NUM and TupleDescAttr() */ +#include "postgres.h" +#include "access/htup_details.h" + + #define ACLCHECK_OBJECT_TABLE OBJECT_TABLE #define ExplainPropertyLong(qlabel, value, es) \ ExplainPropertyInteger(qlabel, NULL, value, es) + +/* tuple-descriptor attributes moved in PostgreSQL 18: */ +#if PG_VERSION_NUM >= 180000 +# define Attr(tupdesc, colno) TupleDescAttr((tupdesc), (colno)) +#else +# define Attr(tupdesc, colno) ((tupdesc)->attrs[(colno)]) +#endif + #endif /* COLUMNAR_COMPAT_H */