From f0abad06e6917d65ada7c3f1c807a12a1506c7f7 Mon Sep 17 00:00:00 2001
From: Marcin Ickiewicz <mickiewicz@syncad.com>
Date: Wed, 8 Jan 2025 11:05:05 +0100
Subject: [PATCH] eliminate hafd.table_schema from usage

---
 ...hive_fork_manager_update_script_generator.sh.in |  4 ++--
 src/hive_fork_manager/update.sql                   | 14 +++-----------
 .../hive_fork_manager/state_providers/hash.sql     |  4 ++--
 3 files changed, 7 insertions(+), 15 deletions(-)

diff --git a/src/hive_fork_manager/hive_fork_manager_update_script_generator.sh.in b/src/hive_fork_manager/hive_fork_manager_update_script_generator.sh.in
index a68016827..8e1d112c8 100755
--- a/src/hive_fork_manager/hive_fork_manager_update_script_generator.sh.in
+++ b/src/hive_fork_manager/hive_fork_manager_update_script_generator.sh.in
@@ -98,8 +98,8 @@ verify_table_schema() {
   psql_do -a -d "$DB_NAME_AFTER_UPDATE" -c 'CREATE EXTENSION hive_fork_manager CASCADE;'
   psql_do -d "$DB_NAME_AFTER_UPDATE" -q -t -A -f "$SCRIPTPATH/update.sql"
 
-  BEFORE_UPDATE=$(psql_do -d "$DB_NAME" -t -A -c "SELECT schema_hash FROM hive_update.create_database_hash()")
-  AFTER_UPDATE=$(psql_do -d "$DB_NAME_AFTER_UPDATE" -t -A -c "SELECT schema_hash FROM hive_update.create_database_hash()")
+  BEFORE_UPDATE=$(psql_do -d "$DB_NAME" -t -A -c "SELECT hive_update.create_database_hash()")
+  AFTER_UPDATE=$(psql_do -d "$DB_NAME_AFTER_UPDATE" -t -A -c "SELECT hive_update.create_database_hash()")
   if [ "$BEFORE_UPDATE" = "$AFTER_UPDATE" ]; then
     echo "The table schema is correct, verification completed."
     echo "Dropping temporary database"
diff --git a/src/hive_fork_manager/update.sql b/src/hive_fork_manager/update.sql
index 4e3d5ba70..cda3d05c7 100644
--- a/src/hive_fork_manager/update.sql
+++ b/src/hive_fork_manager/update.sql
@@ -336,28 +336,20 @@ $BODY$
 
 DROP FUNCTION IF EXISTS hive_update.create_database_hash;
 CREATE FUNCTION hive_update.create_database_hash()
-    RETURNS SETOF hafd.table_schema
+    RETURNS UUID
     LANGUAGE plpgsql
-    VOLATILE
+    STABLE
 AS
 $BODY$
 DECLARE
-    ts hafd.table_schema%ROWTYPE;
     _tmp TEXT;
     _provider_hashes TEXT;
 BEGIN
-    TRUNCATE hafd.table_schema;
-
     SELECT string_agg(table_schema, ' | ') FROM hive_update.calculate_schema_hash() INTO _tmp;
-
     SELECT string_agg(provider || hash, ' | ') FROM hive_update.calculate_state_provider_hashes() INTO _provider_hashes;
 
     _tmp = _tmp || _provider_hashes;
-    INSERT INTO hafd.table_schema VALUES ('hafd', MD5(_tmp)::uuid);
-
-    ts.schema_name := 'hafd';
-    ts.schema_hash := MD5(_tmp)::uuid;
-RETURN NEXT ts;
+    RETURN MD5(_tmp)::uuid;
 END;
 $BODY$
 ;
diff --git a/tests/integration/functional/hive_fork_manager/state_providers/hash.sql b/tests/integration/functional/hive_fork_manager/state_providers/hash.sql
index 52032d01f..9da0e479e 100644
--- a/tests/integration/functional/hive_fork_manager/state_providers/hash.sql
+++ b/tests/integration/functional/hive_fork_manager/state_providers/hash.sql
@@ -27,7 +27,7 @@ BEGIN
     SELECT STRING_AGG( hash, '|') FROM hive_update.calculate_state_provider_hashes() INTO __all_before_hashes;
     SELECT * FROM hive_update.calculate_state_provider_hash( 'KEYAUTH'::hafd.state_providers ) INTO __keyauth_before_hash;
 
-    SELECT schema_hash FROM hive_update.create_database_hash()  INTO __database_hash_before;
+    SELECT hive_update.create_database_hash()  INTO __database_hash_before;
 
     EXECUTE format( 'CREATE OR REPLACE FUNCTION hive.start_provider_keyauth( _context hafd.context_name )
     RETURNS TEXT[]
@@ -43,7 +43,7 @@ BEGIN
 
     SELECT STRING_AGG( hash, '|') FROM hive_update.calculate_state_provider_hashes() INTO __all_after_hashes;
     SELECT * FROM hive_update.calculate_state_provider_hash( 'KEYAUTH'::hafd.state_providers ) INTO __keyauth_after_hash;
-    SELECT schema_hash FROM hive_update.create_database_hash()  INTO __database_hash_after;
+    SELECT hive_update.create_database_hash()  INTO __database_hash_after;
 
     ASSERT __all_after_hashes != __all_before_hashes, 'Hashes not changed after modification';
     ASSERT __keyauth_after_hash != __keyauth_before_hash, 'Hash not changed after modification';
-- 
GitLab