Mercurial > hg > orthanc-databases
changeset 787:3d44e13cf9c5 pg-next-1099 tip
DeleteResource: remove warning when multiple clients are trying to delete the same resoure at the same time
| author | Alain Mazy <am@orthanc.team> |
|---|---|
| date | Mon, 08 Dec 2025 10:36:59 +0100 |
| parents | 7d3780b24210 |
| children | |
| files | PostgreSQL/NEWS PostgreSQL/Plugins/SQL/PrepareIndex.sql |
| diffstat | 2 files changed, 20 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/PostgreSQL/NEWS Tue Dec 02 17:15:20 2025 +0100 +++ b/PostgreSQL/NEWS Mon Dec 08 10:36:59 2025 +0100 @@ -1,3 +1,18 @@ +Pending changes in the mainline +=============================== + +Changes: +* Small update of the "DeleteResource" function to avoid a warning when multiple + clients are trying to delete the same resource at the same time. + TODO: handle migration. + Warning: + test_concurrent_uploads_same_study (Concurrency.test_concurrency.TestConcurrency.test_concurrent_uploads_same_study) ... 2025-12-05 08:04:24.133 UTC [73] ERROR: null value in column "resourcetype" of relation "deletedresources" violates not-null constraint + 2025-12-05 08:04:24.133 UTC [73] DETAIL: Failing row contains (null, null). + 2025-12-05 08:04:24.133 UTC [73] CONTEXT: SQL statement "INSERT INTO DeletedResources VALUES (deleted_resource_row.resourceType, deleted_resource_row.publicId)" + PL/pgSQL function deleteresource(bigint) line 85 at SQL statement + 2025-12-05 08:04:24.133 UTC [73] STATEMENT: SELECT * FROM DeleteResource($1) + + Release 10.0 (2025-12-02) =========================
--- a/PostgreSQL/Plugins/SQL/PrepareIndex.sql Tue Dec 02 17:15:20 2025 +0100 +++ b/PostgreSQL/Plugins/SQL/PrepareIndex.sql Mon Dec 08 10:36:59 2025 +0100 @@ -260,9 +260,11 @@ -- delete the resource itself DELETE FROM Resources WHERE internalId=id RETURNING * INTO deleted_resource_row; - -- keep track of the deleted resources for C++ code - INSERT INTO DeletedResources VALUES (deleted_resource_row.resourceType, deleted_resource_row.publicId); - + IF FOUND THEN + -- keep track of the deleted resources for C++ code + INSERT INTO DeletedResources VALUES (deleted_resource_row.resourceType, deleted_resource_row.publicId); + END IF; + -- If this resource still has siblings, keep track of the remaining parent -- (a parent that must not be deleted but whose LastUpdate must be updated) SELECT resourceType, publicId INTO remaining_ancestor_resource_type, remaining_anncestor_public_id
