From d9394319b1a6a3ba91ba3cc182c5ba7f350e49b4 Mon Sep 17 00:00:00 2001 From: Nils Borrmann Date: Thu, 5 Apr 2018 22:42:23 +0200 Subject: [PATCH] DATAJPA-1318 - Make query projection regex case insensitive. Original pull request: #266. --- .../springframework/data/jpa/repository/query/QueryUtils.java | 3 ++- .../data/jpa/repository/query/StringQueryUnitTests.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java b/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java index 0c60b82e0..78571f110 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java @@ -74,6 +74,7 @@ import org.springframework.util.StringUtils; * @author Mark Paluch * @author Sébastien Péralta * @author Jens Schauder + * @author Nils Borrmann */ public abstract class QueryUtils { @@ -96,7 +97,7 @@ public abstract class QueryUtils { private static final Pattern ALIAS_MATCH; private static final Pattern COUNT_MATCH; - private static final Pattern PROJECTION_CLAUSE = Pattern.compile("select\\s+(.+)\\s+from"); + private static final Pattern PROJECTION_CLAUSE = Pattern.compile("select\\s+(.+)\\s+from", Pattern.CASE_INSENSITIVE); private static final Pattern NO_DIGITS = Pattern.compile("\\D+"); diff --git a/src/test/java/org/springframework/data/jpa/repository/query/StringQueryUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/query/StringQueryUnitTests.java index b96f8e642..76c6d44c8 100644 --- a/src/test/java/org/springframework/data/jpa/repository/query/StringQueryUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/query/StringQueryUnitTests.java @@ -37,6 +37,7 @@ import org.springframework.data.repository.query.parser.Part.Type; * @author Oliver Gierke * @author Thomas Darimont * @author Jens Schauder + * @author Nils Borrmann */ public class StringQueryUnitTests { @@ -314,7 +315,7 @@ public class StringQueryUnitTests { @Test // DATAJPA-1235 public void getProjection() { - checkProjection("SELECT something FROM", "", "only lowercase is supported (!?)"); + checkProjection("SELECT something FROM", "something", "uppercase is supported"); checkProjection("select something from", "something", "single expression"); checkProjection("select x, y, z from", "x, y, z", "tuple"); checkProjection("sect x, y, z from", "", "missing select");