Mercurial > hg > orthanc-databases
comparison Framework/Plugins/IndexBackend.cpp @ 433:5964ce6385a5 pg-transactions
use temporary tables for DeletedFiles, RemainingAncestor and DeletedResources
author | Alain Mazy <am@osimis.io> |
---|---|
date | Wed, 13 Dec 2023 15:48:56 +0100 |
parents | 8b7c1c423367 |
children | f16faa1fdc46 |
comparison
equal
deleted
inserted
replaced
432:8b7c1c423367 | 433:5964ce6385a5 |
---|---|
174 | 174 |
175 done = (count < limit || | 175 done = (count < limit || |
176 statement.IsDone()); | 176 statement.IsDone()); |
177 } | 177 } |
178 | 178 |
179 void IndexBackend::ClearRemainingAncestor(DatabaseManager& manager) | |
180 { | |
181 DatabaseManager::CachedStatement statement( | |
182 STATEMENT_FROM_HERE, manager, | |
183 "DELETE FROM RemainingAncestor"); | |
184 | |
185 statement.Execute(); | |
186 } | |
187 | |
188 | |
179 | 189 |
180 void IndexBackend::ClearDeletedFiles(DatabaseManager& manager) | 190 void IndexBackend::ClearDeletedFiles(DatabaseManager& manager) |
181 { | 191 { |
182 DatabaseManager::CachedStatement statement( | 192 DatabaseManager::CachedStatement statement( |
183 STATEMENT_FROM_HERE, manager, | 193 STATEMENT_FROM_HERE, manager, |
431 DatabaseManager& manager, | 441 DatabaseManager& manager, |
432 int64_t id) | 442 int64_t id) |
433 { | 443 { |
434 ClearDeletedFiles(manager); | 444 ClearDeletedFiles(manager); |
435 ClearDeletedResources(manager); | 445 ClearDeletedResources(manager); |
436 | 446 ClearRemainingAncestor(manager); |
437 { | |
438 DatabaseManager::CachedStatement statement( | |
439 STATEMENT_FROM_HERE, manager, | |
440 "DELETE FROM RemainingAncestor"); | |
441 | |
442 statement.Execute(); | |
443 } | |
444 | 447 |
445 { | 448 { |
446 DatabaseManager::CachedStatement statement( | 449 DatabaseManager::CachedStatement statement( |
447 STATEMENT_FROM_HERE, manager, | 450 STATEMENT_FROM_HERE, manager, |
448 "DELETE FROM Resources WHERE internalId=${id}"); | 451 "DELETE FROM Resources WHERE internalId=${id}"); |
458 | 461 |
459 { | 462 { |
460 DatabaseManager::CachedStatement statement( | 463 DatabaseManager::CachedStatement statement( |
461 STATEMENT_FROM_HERE, manager, | 464 STATEMENT_FROM_HERE, manager, |
462 "SELECT * FROM RemainingAncestor"); | 465 "SELECT * FROM RemainingAncestor"); |
463 | |
464 statement.Execute(); | 466 statement.Execute(); |
465 | 467 |
466 if (!statement.IsDone()) | 468 if (!statement.IsDone()) |
467 { | 469 { |
468 output.SignalRemainingAncestor( | 470 output.SignalRemainingAncestor( |
469 statement.ReadString(1), | 471 statement.ReadString(1), |
470 static_cast<OrthancPluginResourceType>(statement.ReadInteger32(0))); | 472 static_cast<OrthancPluginResourceType>(statement.ReadInteger32(0))); |
471 | 473 |
472 // There is at most 1 remaining ancestor | 474 // There is at most 1 remaining ancestor |
473 //assert((statement.Next(), statement.IsDone())); | 475 assert((statement.Next(), statement.IsDone())); |
474 } | 476 } |
475 } | 477 } |
476 | 478 |
477 SignalDeletedFiles(output, manager); | 479 SignalDeletedFiles(output, manager); |
478 SignalDeletedResources(output, manager); | 480 SignalDeletedResources(output, manager); |
481 | |
479 } | 482 } |
480 | 483 |
481 | 484 |
482 void IndexBackend::GetAllInternalIds(std::list<int64_t>& target, | 485 void IndexBackend::GetAllInternalIds(std::list<int64_t>& target, |
483 DatabaseManager& manager, | 486 DatabaseManager& manager, |