diff --git a/database/schema/upgrade_scripts/164-migrate-owner-id-to-system-platform.sql b/database/schema/upgrade_scripts/164-migrate-owner-id-to-system-platform.sql new file mode 100644 index 000000000..f5aa718d0 --- /dev/null +++ b/database/schema/upgrade_scripts/164-migrate-owner-id-to-system-platform.sql @@ -0,0 +1,32 @@ +DO $$ +DECLARE + rec RECORD; +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.views + WHERE table_schema = 'inventory' AND table_name = 'hosts' + ) THEN + RAISE NOTICE 'inventory.hosts view does not exist, skipping migration'; + RETURN; + END IF; + + FOR rec IN + SELECT + sp.id AS sp_id, + sp.inventory_id, + ih.system_profile->>'owner_id' AS ih_owner_id + FROM system_platform sp + JOIN inventory.hosts ih ON sp.inventory_id = ih.id + WHERE sp.owner_id IS NULL + AND ih.system_profile->>'owner_id' IS NOT NULL + ORDER BY sp.id + LOOP + BEGIN + UPDATE system_platform SET + owner_id = (rec.ih_owner_id)::UUID + WHERE id = rec.sp_id; + EXCEPTION WHEN OTHERS THEN + RAISE WARNING 'Migration failed for inventory_id=%, owner_id=%: %', rec.inventory_id, rec.ih_owner_id, SQLERRM; + END; + END LOOP; +END $$; diff --git a/database/schema/ve_db_postgresql.sql b/database/schema/ve_db_postgresql.sql index 6a3e058c6..207c426eb 100644 --- a/database/schema/ve_db_postgresql.sql +++ b/database/schema/ve_db_postgresql.sql @@ -17,7 +17,7 @@ CREATE TABLE IF NOT EXISTS db_version ( ) TABLESPACE pg_default; -- set the schema version directly in the insert statement here!! -INSERT INTO db_version (name, version) VALUES ('schema_version', 163); +INSERT INTO db_version (name, version) VALUES ('schema_version', 164); -- INSERT INTO db_version (name, version) VALUES ('schema_version', :schema_version);