From e9a5efc0083ee0d46f25960cbc158e7633120880 Mon Sep 17 00:00:00 2001
From: Dan Notestein <dan@syncad.com>
Date: Sun, 22 Dec 2024 22:10:43 +0000
Subject: [PATCH] Revert "only registered state_providers impact database hash"

This reverts commit e9fa365ae81546182d32a07212c37a57879d71ae
---
 .../table_schema_verification.sql             | 11 ++---
 .../hive_fork_manager/CMakeLists.txt          |  1 -
 .../state_providers/hash.sql                  | 16 -------
 .../state_providers/no_hash.sql               | 42 -------------------
 .../hive_fork_manager/test_table_schema.sh    |  5 ---
 5 files changed, 4 insertions(+), 71 deletions(-)
 delete mode 100644 tests/integration/functional/hive_fork_manager/state_providers/no_hash.sql

diff --git a/src/hive_fork_manager/table_schema_verification.sql b/src/hive_fork_manager/table_schema_verification.sql
index 8e4fd80ba..49a44c8fe 100644
--- a/src/hive_fork_manager/table_schema_verification.sql
+++ b/src/hive_fork_manager/table_schema_verification.sql
@@ -117,9 +117,9 @@ $BODY$
 BEGIN
     RETURN QUERY
         SELECT
-              DISTINCT sp.state_provider as provider
-            , hive.calculate_state_provider_hash(sp.state_provider) as hash
-        FROM hafd.state_providers_registered sp;
+              sp.* as provider
+            , hive.calculate_state_provider_hash(sp.*) as hash
+        FROM unnest(enum_range(NULL::hafd.state_providers)) as sp;
 END;
 $BODY$;
 
@@ -188,10 +188,7 @@ BEGIN
 
     SELECT string_agg(provider || hash, ' | ') FROM hive.calculate_state_provider_hashes() INTO _provider_hashes;
 
-    IF _provider_hashes IS NOT NULL THEN
-        _tmp = _tmp || _provider_hashes;
-    END IF;
-
+    _tmp = _tmp || _provider_hashes;
     INSERT INTO hafd.table_schema VALUES (schema_name, MD5(_tmp)::uuid);
 
     ts.schema_name := schema_name;
diff --git a/tests/integration/functional/hive_fork_manager/CMakeLists.txt b/tests/integration/functional/hive_fork_manager/CMakeLists.txt
index 3a0ad82b8..61172366d 100644
--- a/tests/integration/functional/hive_fork_manager/CMakeLists.txt
+++ b/tests/integration/functional/hive_fork_manager/CMakeLists.txt
@@ -328,7 +328,6 @@ ADD_TEST( NAME test_update_script
  ADD_SQL_FUNCTIONAL_TEST( state_providers/import_state_provider_negative_non_context_owner_create_table.sql )
  ADD_SQL_FUNCTIONAL_TEST( state_providers/switch_state_provider_to_forkable.sql )
  ADD_SQL_FUNCTIONAL_TEST( state_providers/hash.sql )
- ADD_SQL_FUNCTIONAL_TEST( state_providers/no_hash.sql )
 
  ADD_SQL_FUNCTIONAL_TEST( authorization/alice_access_to_bob_negative.sql )
  ADD_SQL_FUNCTIONAL_TEST( authorization/alice_access_events_infrustructure.sql )
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 778a7017d..f1622a7e2 100644
--- a/tests/integration/functional/hive_fork_manager/state_providers/hash.sql
+++ b/tests/integration/functional/hive_fork_manager/state_providers/hash.sql
@@ -1,19 +1,3 @@
-CREATE OR REPLACE PROCEDURE haf_admin_test_given()
-    LANGUAGE 'plpgsql'
-AS
-$BODY$
-BEGIN
-    CREATE SCHEMA A;
-    PERFORM hive.app_create_context( _name => 'context', _schema => 'a' );
-    PERFORM hive.app_create_context( _name => 'context2', _schema => 'a' );
-
-    PERFORM hive.app_state_provider_import( 'ACCOUNTS', 'context' );
-    PERFORM hive.app_state_provider_import( 'KEYAUTH', 'context' );
-    PERFORM hive.app_state_provider_import( 'METADATA', 'context' );
-    PERFORM hive.app_state_provider_import( 'ACCOUNTS','context2' );
-END;
-$BODY$;
-
 
 
 CREATE OR REPLACE PROCEDURE haf_admin_test_then()
diff --git a/tests/integration/functional/hive_fork_manager/state_providers/no_hash.sql b/tests/integration/functional/hive_fork_manager/state_providers/no_hash.sql
deleted file mode 100644
index 7e7855bf9..000000000
--- a/tests/integration/functional/hive_fork_manager/state_providers/no_hash.sql
+++ /dev/null
@@ -1,42 +0,0 @@
--- check if there is no registered state_provider, then hash is not computed
-
-
-CREATE OR REPLACE PROCEDURE haf_admin_test_then()
-    LANGUAGE 'plpgsql'
-AS
-$BODY$
-DECLARE
-    __database_hash_before TEXT;
-    __database_hash_after TEXT;
-BEGIN
-    ASSERT ( SELECT 1 FROM hive.calculate_state_provider_hashes() WHERE provider = 'ACCOUNTS' ) IS NULL
-        , 'ACCOUNTS hashed';
-
-    ASSERT ( SELECT 1 FROM hive.calculate_state_provider_hashes() WHERE provider = 'KEYAUTH' ) IS NULL
-        , 'KEYAUTH hashed';
-
-    ASSERT ( SELECT 1 FROM hive.calculate_state_provider_hashes() WHERE provider = 'METADATA' ) IS NULL
-        , 'METADATA hashed';
-
-    ASSERT ( SELECT COUNT(*) FROM hive.calculate_state_provider_hashes() ) = 0
-        , 'More   than 0 known providers are hashed';
-
-    SELECT schema_hash FROM hive.create_database_hash('hafd')  INTO __database_hash_before;
-
-    EXECUTE format( 'CREATE OR REPLACE FUNCTION hive.start_provider_keyauth( _context hafd.context_name )
-    RETURNS TEXT[]
-    LANGUAGE plpgsql
-    VOLATILE
-    AS
-    $$
-    BEGIN
-        RETURN '''';
-    END;
-    $$
-    ;');
-
-    SELECT schema_hash FROM hive.create_database_hash('hafd')  INTO __database_hash_after;
-
-    ASSERT __database_hash_after = __database_hash_before, 'Unused state provider has impact on database hash';
-END;
-$BODY$;
\ No newline at end of file
diff --git a/tests/integration/functional/hive_fork_manager/test_table_schema.sh b/tests/integration/functional/hive_fork_manager/test_table_schema.sh
index 9b3cec17a..25ded4a2a 100755
--- a/tests/integration/functional/hive_fork_manager/test_table_schema.sh
+++ b/tests/integration/functional/hive_fork_manager/test_table_schema.sh
@@ -114,11 +114,6 @@ test_extension_update_when_state_provider_changed() {
     echo
     echo "Making a change in keyauth state provider by change definition of hive.start_provider_keyauth"
 
-    sudo -Enu "$DB_ADMIN" psql -w $POSTGRES_ACCESS -d "$DB_NAME" -v ON_ERROR_STOP=on -U "$DB_ADMIN" \
-    -c  "CREATE SCHEMA A;
-        SELECT hive.app_create_context( _name => 'context', _schema => 'a' );
-        SELECT hive.app_state_provider_import( 'KEYAUTH', 'context' );"
-
     # change definition of a state provider
     sudo -Enu "$DB_ADMIN" psql -w $POSTGRES_ACCESS -d "$DB_NAME" -v ON_ERROR_STOP=on -U "$DB_ADMIN" \
       -c "CREATE OR REPLACE FUNCTION hive.start_provider_keyauth( _context hafd.context_name )
-- 
GitLab