Skip to content
Snippets Groups Projects
Commit e9fa365a authored by Marcin's avatar Marcin Committed by Dan Notestein
Browse files

only registered state_providers impact database hash

parent 6182c5be
No related branches found
No related tags found
6 merge requests!627merge in fix for get_current_block_age,!626Fix get_current_block_age function to avoid healthcheck fails,!622merge develop to master,!599merge ( with merge commit) develop to master,!597Merge develop to master for release,!582only registered state_providers impact database hash
Pipeline #112105 passed
......@@ -117,9 +117,9 @@ $BODY$
BEGIN
RETURN QUERY
SELECT
sp.* as provider
, hive.calculate_state_provider_hash(sp.*) as hash
FROM unnest(enum_range(NULL::hafd.state_providers)) as sp;
DISTINCT sp.state_provider as provider
, hive.calculate_state_provider_hash(sp.state_provider) as hash
FROM hafd.state_providers_registered sp;
END;
$BODY$;
......@@ -188,7 +188,10 @@ BEGIN
SELECT string_agg(provider || hash, ' | ') FROM hive.calculate_state_provider_hashes() INTO _provider_hashes;
_tmp = _tmp || _provider_hashes;
IF _provider_hashes IS NOT NULL THEN
_tmp = _tmp || _provider_hashes;
END IF;
INSERT INTO hafd.table_schema VALUES (schema_name, MD5(_tmp)::uuid);
ts.schema_name := schema_name;
......
......@@ -328,6 +328,7 @@ 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 )
......
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()
......
-- 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
......@@ -114,6 +114,11 @@ 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 )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment