From eb53506d1afb2d4563295c65e2ca340af12473e7 Mon Sep 17 00:00:00 2001 From: ddpardo <2494889+ddpardo@users.noreply.github.com> Date: Thu, 22 Aug 2024 13:45:50 +0200 Subject: [PATCH 1/3] #6199 - ensure order by clause is included in the sql string. --- .../java/ca/uhn/fhir/jpa/search/builder/SearchBuilder.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/search/builder/SearchBuilder.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/search/builder/SearchBuilder.java index bb50e0dd613..193c5cee256 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/search/builder/SearchBuilder.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/search/builder/SearchBuilder.java @@ -115,6 +115,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.math.NumberUtils; import org.apache.commons.lang3.tuple.Pair; +import org.hibernate.dialect.SQLServerDialect; import org.hl7.fhir.instance.model.api.IAnyResource; import org.hl7.fhir.instance.model.api.IBaseResource; import org.slf4j.Logger; @@ -1584,6 +1585,10 @@ public class SearchBuilder implements ISearchBuilder { String sql = localReferenceQuery + " UNION " + canonicalQuery.getLeft(); + if(myDialectProvider.getDialect() instanceof SQLServerDialect) { + sql += " order by r." + findPidFieldSqlColumn; + } + List> partitions = partition(nextRoundMatches, getMaximumPageSize()); for (Collection nextPartition : partitions) { Query q = entityManager.createNativeQuery(sql, Tuple.class); From 61adfc3268c24ebcc2ce153148e053ccb89fa3e6 Mon Sep 17 00:00:00 2001 From: ddpardo <2494889+ddpardo@users.noreply.github.com> Date: Thu, 22 Aug 2024 13:56:04 +0200 Subject: [PATCH 2/3] #6199 - fix for spotless plugin. --- .../main/java/ca/uhn/fhir/jpa/search/builder/SearchBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/search/builder/SearchBuilder.java b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/search/builder/SearchBuilder.java index 193c5cee256..e9877da7393 100644 --- a/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/search/builder/SearchBuilder.java +++ b/hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/search/builder/SearchBuilder.java @@ -1585,7 +1585,7 @@ public class SearchBuilder implements ISearchBuilder { String sql = localReferenceQuery + " UNION " + canonicalQuery.getLeft(); - if(myDialectProvider.getDialect() instanceof SQLServerDialect) { + if (myDialectProvider.getDialect() instanceof SQLServerDialect) { sql += " order by r." + findPidFieldSqlColumn; } From 4a91238cc28801ab965dd1f68f66502850554b5d Mon Sep 17 00:00:00 2001 From: ddpardo <2494889+ddpardo@users.noreply.github.com> Date: Thu, 22 Aug 2024 14:07:03 +0200 Subject: [PATCH 3/3] #6199 - add changelog suggestion. --- ...-include-order-by-statement-for-included-searches-mssql.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_6_0/6199-include-order-by-statement-for-included-searches-mssql.yml diff --git a/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_6_0/6199-include-order-by-statement-for-included-searches-mssql.yml b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_6_0/6199-include-order-by-statement-for-included-searches-mssql.yml new file mode 100644 index 00000000000..35f9984b8d7 --- /dev/null +++ b/hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_6_0/6199-include-order-by-statement-for-included-searches-mssql.yml @@ -0,0 +1,3 @@ +type: fix +issue: 6199 +title: "Fix for an mssql runtime error when searching for resources with the _include clause."