From 8b9523e03c82c5a095b7cb2d5f70a87b7bbc8608 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Tue, 7 Apr 2026 13:34:18 -0400 Subject: [PATCH] fix: delete raw_script_temp rows before workspace deletion to avoid FK violation (#8752) Co-authored-by: Claude Opus 4.6 (1M context) --- ...85186dac4ee099aefcd3ed51f10f3298a2c006da80.json | 14 ++++++++++++++ .../src/workspaces_extra.rs | 12 ++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 backend/.sqlx/query-1325d08f0d34a5e706543585186dac4ee099aefcd3ed51f10f3298a2c006da80.json diff --git a/backend/.sqlx/query-1325d08f0d34a5e706543585186dac4ee099aefcd3ed51f10f3298a2c006da80.json b/backend/.sqlx/query-1325d08f0d34a5e706543585186dac4ee099aefcd3ed51f10f3298a2c006da80.json new file mode 100644 index 0000000000..80bfa41872 --- /dev/null +++ b/backend/.sqlx/query-1325d08f0d34a5e706543585186dac4ee099aefcd3ed51f10f3298a2c006da80.json @@ -0,0 +1,14 @@ +{ + "db_name": "PostgreSQL", + "query": "DELETE FROM raw_script_temp WHERE workspace_id = $1", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "Text" + ] + }, + "nullable": [] + }, + "hash": "1325d08f0d34a5e706543585186dac4ee099aefcd3ed51f10f3298a2c006da80" +} diff --git a/backend/windmill-api-workspaces/src/workspaces_extra.rs b/backend/windmill-api-workspaces/src/workspaces_extra.rs index 12c4fec971..edd3e2fb37 100644 --- a/backend/windmill-api-workspaces/src/workspaces_extra.rs +++ b/backend/windmill-api-workspaces/src/workspaces_extra.rs @@ -537,6 +537,14 @@ pub(crate) async fn change_workspace_id( .execute(&mut *tx) .await?; + info!("Deleting raw_script_temp table"); + sqlx::query!( + "DELETE FROM raw_script_temp WHERE workspace_id = $1", + &old_id + ) + .execute(&mut *tx) + .await?; + info!("Updating resource table"); sqlx::query!( "UPDATE resource SET workspace_id = $1 WHERE workspace_id = $2", @@ -827,6 +835,10 @@ pub(crate) async fn delete_workspace( // NATS triggers have on delete cascade + sqlx::query!("DELETE FROM raw_script_temp WHERE workspace_id = $1", &w_id) + .execute(&mut *tx) + .await?; + sqlx::query!("DELETE FROM workspace WHERE id = $1", &w_id) .execute(&mut *tx) .await?;