comparison Framework/Plugins/IndexBackend.cpp @ 555:44e6b65f1630 find-refactoring

fix for DICOMWeb + PG tests
author Alain Mazy <am@orthanc.team>
date Wed, 11 Sep 2024 16:32:11 +0200
parents 1a74fc1bea2d
children d8ee2f676a3c
comparison
equal deleted inserted replaced
554:1a74fc1bea2d 555:44e6b65f1630
561 std::string suffix; 561 std::string suffix;
562 if (manager.GetDialect() == Dialect_MSSQL) 562 if (manager.GetDialect() == Dialect_MSSQL)
563 { 563 {
564 suffix = "OFFSET ${since} ROWS FETCH FIRST ${limit} ROWS ONLY"; 564 suffix = "OFFSET ${since} ROWS FETCH FIRST ${limit} ROWS ONLY";
565 } 565 }
566 else 566 else if (limit > 0)
567 { 567 {
568 suffix = "LIMIT ${limit} OFFSET ${since}"; 568 suffix = "LIMIT ${limit} OFFSET ${since}";
569 } 569 }
570 570
571 DatabaseManager::CachedStatement statement( 571 std::string sql = "SELECT publicId FROM (SELECT publicId FROM Resources "
572 STATEMENT_FROM_HERE, manager, 572 "WHERE resourceType=${type}) AS tmp ORDER BY tmp.publicId " + suffix;
573 "SELECT publicId FROM (SELECT publicId FROM Resources " 573
574 "WHERE resourceType=${type}) AS tmp ORDER BY tmp.publicId " + suffix); 574 DatabaseManager::CachedStatement statement(STATEMENT_FROM_HERE_DYNAMIC(sql), manager, sql);
575 575
576 statement.SetReadOnly(true); 576 statement.SetReadOnly(true);
577
578 Dictionary args;
579
577 statement.SetParameterType("type", ValueType_Integer64); 580 statement.SetParameterType("type", ValueType_Integer64);
578 statement.SetParameterType("limit", ValueType_Integer64);
579 statement.SetParameterType("since", ValueType_Integer64);
580
581 Dictionary args;
582 args.SetIntegerValue("type", static_cast<int>(resourceType)); 581 args.SetIntegerValue("type", static_cast<int>(resourceType));
583 args.SetIntegerValue("limit", limit); 582
584 args.SetIntegerValue("since", since); 583 if (limit > 0)
584 {
585 statement.SetParameterType("limit", ValueType_Integer64);
586 statement.SetParameterType("since", ValueType_Integer64);
587 args.SetIntegerValue("limit", limit);
588 args.SetIntegerValue("since", since);
589 }
585 590
586 ReadListOfStrings(target, statement, args); 591 ReadListOfStrings(target, statement, args);
587 } 592 }
588 593
589 void IndexBackend::GetChanges(IDatabaseBackendOutput& output, 594 void IndexBackend::GetChanges(IDatabaseBackendOutput& output,