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,