Mercurial > hg > orthanc-databases
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, |