From dfd8356284cc3e6724c9d4a309477358ab6a330a Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 7 Aug 2025 15:48:47 +0000 Subject: [PATCH] optimize further app endpoints --- ...751ea1521c524b9b7f51a48ee26280825ac9a.json | 36 ++++++++++++++++ ...8389c2d0adbef1fb6d73ad23e4153cff44f9e.json | 42 +++++++++++++++++++ ...884b755504a6cefa4af34fa4659fb95a7ee9a.json | 42 ------------------- ...69395717433eb56fdd994140598a818ec3273.json | 36 ---------------- backend/windmill-api/src/jobs.rs | 26 ++++++++---- 5 files changed, 97 insertions(+), 85 deletions(-) create mode 100644 backend/.sqlx/query-506f90984a8b672aeff50b6d9e4751ea1521c524b9b7f51a48ee26280825ac9a.json create mode 100644 backend/.sqlx/query-c61f9bad73beb0bc317594f6ca68389c2d0adbef1fb6d73ad23e4153cff44f9e.json delete mode 100644 backend/.sqlx/query-ec0f8fa36328507e51c1974dbef884b755504a6cefa4af34fa4659fb95a7ee9a.json delete mode 100644 backend/.sqlx/query-f12edc63b7491e7d647cf45e68b69395717433eb56fdd994140598a818ec3273.json diff --git a/backend/.sqlx/query-506f90984a8b672aeff50b6d9e4751ea1521c524b9b7f51a48ee26280825ac9a.json b/backend/.sqlx/query-506f90984a8b672aeff50b6d9e4751ea1521c524b9b7f51a48ee26280825ac9a.json new file mode 100644 index 0000000000..fca7ee186e --- /dev/null +++ b/backend/.sqlx/query-506f90984a8b672aeff50b6d9e4751ea1521c524b9b7f51a48ee26280825ac9a.json @@ -0,0 +1,36 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT \n COALESCE(jc.result, NULL) as \"result: sqlx::types::Json>\", \n SUBSTR(rs.stream, $3) AS \"result_stream: Option\", \n CHAR_LENGTH(rs.stream) + 1 AS stream_offset\n FROM (\n SELECT $2::uuid as job_id, $1::text as workspace_id\n ) base\n LEFT JOIN v2_job_completed jc ON jc.id = base.job_id AND jc.workspace_id = base.workspace_id\n LEFT JOIN job_result_stream rs ON rs.job_id = base.job_id\n WHERE base.job_id = $2", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "result: sqlx::types::Json>", + "type_info": "Jsonb" + }, + { + "ordinal": 1, + "name": "result_stream: Option", + "type_info": "Text" + }, + { + "ordinal": 2, + "name": "stream_offset", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Text", + "Uuid", + "Int4" + ] + }, + "nullable": [ + null, + null, + null + ] + }, + "hash": "506f90984a8b672aeff50b6d9e4751ea1521c524b9b7f51a48ee26280825ac9a" +} diff --git a/backend/.sqlx/query-c61f9bad73beb0bc317594f6ca68389c2d0adbef1fb6d73ad23e4153cff44f9e.json b/backend/.sqlx/query-c61f9bad73beb0bc317594f6ca68389c2d0adbef1fb6d73ad23e4153cff44f9e.json new file mode 100644 index 0000000000..22ba8df0fe --- /dev/null +++ b/backend/.sqlx/query-c61f9bad73beb0bc317594f6ca68389c2d0adbef1fb6d73ad23e4153cff44f9e.json @@ -0,0 +1,42 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT \n COALESCE(jc.result, jc.result) as \"result: sqlx::types::Json>\",\n jq.running as \"running: Option\",\n SUBSTR(rs.stream, $3) AS \"result_stream: Option\",\n CHAR_LENGTH(rs.stream) + 1 AS stream_offset\n FROM (\n SELECT $1::uuid as job_id, $2::text as workspace_id\n ) base\n LEFT JOIN v2_job_completed jc ON jc.id = base.job_id AND jc.workspace_id = base.workspace_id\n LEFT JOIN v2_job_queue jq ON jq.id = base.job_id AND jq.workspace_id = base.workspace_id\n LEFT JOIN job_result_stream rs ON rs.job_id = base.job_id\n WHERE base.job_id = $1", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "result: sqlx::types::Json>", + "type_info": "Jsonb" + }, + { + "ordinal": 1, + "name": "running: Option", + "type_info": "Bool" + }, + { + "ordinal": 2, + "name": "result_stream: Option", + "type_info": "Text" + }, + { + "ordinal": 3, + "name": "stream_offset", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Uuid", + "Text", + "Int4" + ] + }, + "nullable": [ + null, + false, + null, + null + ] + }, + "hash": "c61f9bad73beb0bc317594f6ca68389c2d0adbef1fb6d73ad23e4153cff44f9e" +} diff --git a/backend/.sqlx/query-ec0f8fa36328507e51c1974dbef884b755504a6cefa4af34fa4659fb95a7ee9a.json b/backend/.sqlx/query-ec0f8fa36328507e51c1974dbef884b755504a6cefa4af34fa4659fb95a7ee9a.json deleted file mode 100644 index 431160d7be..0000000000 --- a/backend/.sqlx/query-ec0f8fa36328507e51c1974dbef884b755504a6cefa4af34fa4659fb95a7ee9a.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "SELECT \n result as \"result: sqlx::types::Json>\",\n v2_job_queue.running as \"running: Option\",\n SUBSTR(rs.stream, $3) AS \"result_stream: Option\",\n CHAR_LENGTH(rs.stream) + 1 AS stream_offset\n FROM v2_job_completed FULL OUTER JOIN v2_job_queue USING (id) \n LEFT JOIN job_result_stream rs ON rs.job_id = $1\n WHERE (v2_job_queue.id = $1 AND v2_job_queue.workspace_id = $2) OR (v2_job_completed.id = $1 AND v2_job_completed.workspace_id = $2)", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "result: sqlx::types::Json>", - "type_info": "Jsonb" - }, - { - "ordinal": 1, - "name": "running: Option", - "type_info": "Bool" - }, - { - "ordinal": 2, - "name": "result_stream: Option", - "type_info": "Text" - }, - { - "ordinal": 3, - "name": "stream_offset", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Uuid", - "Text", - "Int4" - ] - }, - "nullable": [ - true, - false, - null, - null - ] - }, - "hash": "ec0f8fa36328507e51c1974dbef884b755504a6cefa4af34fa4659fb95a7ee9a" -} diff --git a/backend/.sqlx/query-f12edc63b7491e7d647cf45e68b69395717433eb56fdd994140598a818ec3273.json b/backend/.sqlx/query-f12edc63b7491e7d647cf45e68b69395717433eb56fdd994140598a818ec3273.json deleted file mode 100644 index f08bc4d100..0000000000 --- a/backend/.sqlx/query-f12edc63b7491e7d647cf45e68b69395717433eb56fdd994140598a818ec3273.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "SELECT result as \"result: sqlx::types::Json>\", SUBSTR(rs.stream, $3) AS \"result_stream: Option\", CHAR_LENGTH(rs.stream) + 1 AS stream_offset\n FROM v2_job_completed FULL OUTER JOIN job_result_stream rs ON rs.job_id = v2_job_completed.id WHERE ((v2_job_completed.id = $2 AND v2_job_completed.workspace_id = $1) OR (rs.workspace_id = $1 AND rs.job_id = $2))", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "result: sqlx::types::Json>", - "type_info": "Jsonb" - }, - { - "ordinal": 1, - "name": "result_stream: Option", - "type_info": "Text" - }, - { - "ordinal": 2, - "name": "stream_offset", - "type_info": "Int4" - } - ], - "parameters": { - "Left": [ - "Text", - "Uuid", - "Int4" - ] - }, - "nullable": [ - true, - null, - null - ] - }, - "hash": "f12edc63b7491e7d647cf45e68b69395717433eb56fdd994140598a818ec3273" -} diff --git a/backend/windmill-api/src/jobs.rs b/backend/windmill-api/src/jobs.rs index 4ec56389e9..e042bcdc3d 100644 --- a/backend/windmill-api/src/jobs.rs +++ b/backend/windmill-api/src/jobs.rs @@ -6396,13 +6396,17 @@ async fn get_job_update_data( if running.is_some_and(|x| !x) { let r = sqlx::query!( "SELECT - result as \"result: sqlx::types::Json>\", - v2_job_queue.running as \"running: Option\", + COALESCE(jc.result, jc.result) as \"result: sqlx::types::Json>\", + jq.running as \"running: Option\", SUBSTR(rs.stream, $3) AS \"result_stream: Option\", CHAR_LENGTH(rs.stream) + 1 AS stream_offset - FROM v2_job_completed FULL OUTER JOIN v2_job_queue USING (id) - LEFT JOIN job_result_stream rs ON rs.job_id = $1 - WHERE (v2_job_queue.id = $1 AND v2_job_queue.workspace_id = $2) OR (v2_job_completed.id = $1 AND v2_job_completed.workspace_id = $2)", + FROM ( + SELECT $1::uuid as job_id, $2::text as workspace_id + ) base + LEFT JOIN v2_job_completed jc ON jc.id = base.job_id AND jc.workspace_id = base.workspace_id + LEFT JOIN v2_job_queue jq ON jq.id = base.job_id AND jq.workspace_id = base.workspace_id + LEFT JOIN job_result_stream rs ON rs.job_id = base.job_id + WHERE base.job_id = $1", job_id, w_id, stream_offset.unwrap_or(0), @@ -6415,8 +6419,16 @@ async fn get_job_update_data( } } else { let q = sqlx::query!( - "SELECT result as \"result: sqlx::types::Json>\", SUBSTR(rs.stream, $3) AS \"result_stream: Option\", CHAR_LENGTH(rs.stream) + 1 AS stream_offset - FROM v2_job_completed FULL OUTER JOIN job_result_stream rs ON rs.job_id = v2_job_completed.id WHERE ((v2_job_completed.id = $2 AND v2_job_completed.workspace_id = $1) OR (rs.workspace_id = $1 AND rs.job_id = $2))", + "SELECT + COALESCE(jc.result, NULL) as \"result: sqlx::types::Json>\", + SUBSTR(rs.stream, $3) AS \"result_stream: Option\", + CHAR_LENGTH(rs.stream) + 1 AS stream_offset + FROM ( + SELECT $2::uuid as job_id, $1::text as workspace_id + ) base + LEFT JOIN v2_job_completed jc ON jc.id = base.job_id AND jc.workspace_id = base.workspace_id + LEFT JOIN job_result_stream rs ON rs.job_id = base.job_id + WHERE base.job_id = $2", w_id, job_id, stream_offset.unwrap_or(0),