Preserve square brackets for index/key expressions

Closes gh-27925
This commit is contained in:
Juergen Hoeller
2022-10-18 22:39:53 +02:00
parent 327eec09ae
commit d4fac82d68
4 changed files with 58 additions and 15 deletions

View File

@@ -68,7 +68,7 @@ abstract class NamedParameterUtils {
* Set of characters that qualify as parameter separators,
* indicating that a parameter name in an SQL String has ended.
*/
private static final String PARAMETER_SEPARATORS = "\"':&,;()|=+-*%/\\<>^[]";
private static final String PARAMETER_SEPARATORS = "\"':&,;()|=+-*%/\\<>^]";
/**
* An index with separator flags per character code.
@@ -160,6 +160,9 @@ abstract class NamedParameterUtils {
}
if (j - i > 1) {
parameter = sql.substring(i + 1, j);
if (parameter.contains("[")) {
parameter += "]"; // preserve end bracket for index/key
}
namedParameterCount = addNewNamedParameter(
namedParameters, namedParameterCount, parameter);
totalParameterCount = addNamedParameter(
@@ -295,7 +298,6 @@ abstract class NamedParameterUtils {
if (paramSource.hasValue(paramName)) {
Parameter parameter = paramSource.getValue(paramName);
if (parameter.getValue() instanceof Collection<?> c) {
Iterator<?> entryIter = c.iterator();
int k = 0;
int counter = 0;