mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-10-15 00:02:56 +00:00
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
23 lines
1.2 KiB
SQL
23 lines
1.2 KiB
SQL
-- Roles on the external cluster are live logins there; dropping the column would forget them.
|
|
LOCK TABLE datatable_role;
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (SELECT 1 FROM datatable_role WHERE cluster <> 'instance') THEN
|
|
RAISE EXCEPTION 'datatable_role holds roles on the external instance cluster. Delete them in instance settings first.';
|
|
END IF;
|
|
-- Before this, only data tables on Windmill's own cluster could be under roles, and a role
|
|
-- block left with just `admin` survives deleting every external role.
|
|
IF EXISTS (
|
|
SELECT 1 FROM workspace_settings ws,
|
|
jsonb_each(CASE WHEN jsonb_typeof(ws.datatable->'datatables') = 'object'
|
|
THEN ws.datatable->'datatables' ELSE '{}'::jsonb END) dt
|
|
WHERE dt.value->'database'->>'resource_type' = 'external_instance'
|
|
AND dt.value ? 'permissions'
|
|
) THEN
|
|
RAISE EXCEPTION 'external instance data tables are still under roles. Turn their roles off first.';
|
|
END IF;
|
|
END $$;
|
|
ALTER TABLE datatable_role DROP CONSTRAINT datatable_role_cluster_name_key;
|
|
ALTER TABLE datatable_role ADD CONSTRAINT datatable_role_name_key UNIQUE (name);
|
|
ALTER TABLE datatable_role DROP COLUMN cluster;
|