My review comments for v8-0001
======
contrib/pg_logicalinspect/pg_logicalinspect.c
1.
+/*
+ * 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",
+};
+
+/*
nit - the SNAPBUILD_STATE_INCR made this code appear more complicated
than it is. Please take a look at the attachment for an alternative
implementation which includes an explanatory comment. YMMV. Feel free
to ignore it.
======
src/include/replication/snapbuild.h
2.
+ * Please keep SnapBuildStateDesc[] (located in the pg_logicalinspect module)
+ * updated should a change needs to be done in SnapBuildState.
nit - "...should a change needs to be done" -- the word "needs" is
incorrect here.
How about:
"...if a change needs to be made to SnapBuildState."
"...if a change is made to SnapBuildState."
"...if SnapBuildState is changed."
======
Kind Regards,
Peter Smith.
Fujitsu Australia
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
{