From dbd534f6318258bd32fcf2759e9ecf4f67bdc319 Mon Sep 17 00:00:00 2001
From: Mats Kindahl <mats@timescale.com>
Date: Wed, 10 Jan 2024 19:39:52 +0100
Subject: [PATCH] Log extension state changes

To debug issues with extension state not being correct we log extension
state changes on `DEBUG1` level.

See #1682
---
 src/extension.c | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/extension.c b/src/extension.c
index 209928c9a25..06a73a88050 100644
--- a/src/extension.c
+++ b/src/extension.c
@@ -66,6 +66,13 @@ static enum ExtensionState extstate = EXTENSION_STATE_UNKNOWN;
  */
 static Oid ts_extension_oid = InvalidOid;
 
+static const char *extstate_str[] = {
+	[EXTENSION_STATE_UNKNOWN] = "unknown",
+	[EXTENSION_STATE_TRANSITIONING] = "transitioning",
+	[EXTENSION_STATE_CREATED] = "created",
+	[EXTENSION_STATE_NOT_INSTALLED] = "not installed",
+};
+
 static bool
 extension_loader_present()
 {
@@ -150,6 +157,10 @@ extension_set_state(enum ExtensionState newstate)
 			ts_catalog_reset();
 			break;
 	}
+	elog(DEBUG1,
+		 "extension state changed: %s to %s",
+		 extstate_str[extstate],
+		 extstate_str[newstate]);
 	extstate = newstate;
 	return true;
 }
@@ -261,6 +272,10 @@ ts_experimental_schema_name(void)
 void
 ts_extension_invalidate(void)
 {
+	elog(DEBUG1,
+		 "extension state invalidated: %s to %s",
+		 extstate_str[extstate],
+		 extstate_str[EXTENSION_STATE_UNKNOWN]);
 	extstate = EXTENSION_STATE_UNKNOWN;
 	extension_proxy_oid = InvalidOid;
 }
@@ -335,13 +350,6 @@ ts_extension_is_proxy_table_relid(Oid relid)
 }
 
 #ifdef TS_DEBUG
-static const char *extstate_str[] = {
-	[EXTENSION_STATE_UNKNOWN] = "unknown",
-	[EXTENSION_STATE_TRANSITIONING] = "transitioning",
-	[EXTENSION_STATE_CREATED] = "created",
-	[EXTENSION_STATE_NOT_INSTALLED] = "not installed",
-};
-
 TS_FUNCTION_INFO_V1(ts_extension_get_state);
 
 Datum