diff --git a/contrib/pg_logicalinspect/pg_logicalinspect.c b/contrib/pg_logicalinspect/pg_logicalinspect.c index 100b82f..2419df1 100644 --- a/contrib/pg_logicalinspect/pg_logicalinspect.c +++ b/contrib/pg_logicalinspect/pg_logicalinspect.c @@ -24,19 +24,6 @@ PG_FUNCTION_INFO_V1(pg_get_logical_snapshot_meta); PG_FUNCTION_INFO_V1(pg_get_logical_snapshot_info); /* - * Lookup table for SnapBuildState. - */ - -#define SNAPBUILD_STATE_INCR 1 - -static const char *const SnapBuildStateDesc[] = { - [SNAPBUILD_START + SNAPBUILD_STATE_INCR] = "start", - [SNAPBUILD_BUILDING_SNAPSHOT + SNAPBUILD_STATE_INCR] = "building", - [SNAPBUILD_FULL_SNAPSHOT + SNAPBUILD_STATE_INCR] = "full", - [SNAPBUILD_CONSISTENT + SNAPBUILD_STATE_INCR] = "consistent", -}; - -/* * NOTE: For any code change or issue fix here, it is highly recommended to * give a thought about doing the same in SnapBuildRestore() as well. */ @@ -186,6 +173,16 @@ Datum pg_get_logical_snapshot_info(PG_FUNCTION_ARGS) { #define PG_GET_LOGICAL_SNAPSHOT_INFO_COLS 14 + /* + * Lookup table for SnapBuildState. The lookup index is offset by 1 + * because the consecutive SnapBuildState enum values start at -1. + */ + static const char *const SnapBuildStateDesc[] = { + [1 + SNAPBUILD_START] = "start", + [1 + SNAPBUILD_BUILDING_SNAPSHOT] = "building", + [1 + SNAPBUILD_FULL_SNAPSHOT] = "full", + [1 + SNAPBUILD_CONSISTENT] = "consistent", + }; SnapBuildOnDisk ondisk; XLogRecPtr lsn; HeapTuple tuple; @@ -209,8 +206,7 @@ pg_get_logical_snapshot_info(PG_FUNCTION_ARGS) memset(nulls, 0, sizeof(nulls)); - values[i++] = CStringGetTextDatum(SnapBuildStateDesc[ondisk.builder.state + - SNAPBUILD_STATE_INCR]); + values[i++] = CStringGetTextDatum(SnapBuildStateDesc[ondisk.builder.state + 1]); values[i++] = TransactionIdGetDatum(ondisk.builder.xmin); values[i++] = TransactionIdGetDatum(ondisk.builder.xmax); values[i++] = LSNGetDatum(ondisk.builder.start_decoding_at); diff --git a/src/include/replication/snapbuild.h b/src/include/replication/snapbuild.h index 78df2d1..e844a89 100644 --- a/src/include/replication/snapbuild.h +++ b/src/include/replication/snapbuild.h @@ -17,7 +17,7 @@ /* * Please keep SnapBuildStateDesc[] (located in the pg_logicalinspect module) - * updated should a change needs to be done in SnapBuildState. + * updated if a change needs to be made to SnapBuildState. */ typedef enum {