"""Use a portable closed scan digest projection.""" from alembic import op revision = "20260818_535" down_revision = "20260818_534" branch_labels = None depends_on = None def upgrade() -> None: op.get_bind().exec_driver_sql("""DO $$ DECLARE definition text; BEGIN SELECT pg_get_functiondef('public.bi_ai_catalog_runtime_write(text,jsonb)'::regprocedure) INTO definition; definition:=replace(definition, 'encode(public.digest(convert_to(v_scan||v_all::text,''UTF8''),''sha256''),''hex'')', 'md5(v_scan||v_all::text)||md5(''x''||v_scan||v_all::text)'); EXECUTE definition; END $$;""") def downgrade() -> None: raise RuntimeError("downgrade refused: scan digest correction is append-only")