Remove square brackets with index/key expressions from generated SQL
See gh-27925
This commit is contained in:
parent
affccba8f1
commit
aaa22ad07d
|
@ -147,8 +147,10 @@ public abstract class NamedParameterUtils {
|
|||
}
|
||||
if (j - i > 1) {
|
||||
parameter = sql.substring(i + 1, j);
|
||||
if (parameter.contains("[")) {
|
||||
parameter += "]"; // preserve end bracket for index/key
|
||||
if (j < statement.length && statement[j] == ']' && parameter.contains("[")) {
|
||||
// preserve end bracket for index/key
|
||||
j++;
|
||||
parameter = sql.substring(i + 1, j);
|
||||
}
|
||||
namedParameterCount = addNewNamedParameter(
|
||||
namedParameters, namedParameterCount, parameter);
|
||||
|
|
|
@ -325,6 +325,9 @@ public class NamedParameterUtilsTests {
|
|||
ParsedSql psql = NamedParameterUtils.parseSqlStatement(sql);
|
||||
assertThat(psql.getNamedParameterCount()).isEqualTo(1);
|
||||
assertThat(psql.getParameterNames()).containsExactly("ext");
|
||||
|
||||
String sqlToUse = NamedParameterUtils.substituteNamedParameters(psql, null);
|
||||
assertThat(sqlToUse).isEqualTo("SELECT ARRAY[?]");
|
||||
}
|
||||
|
||||
@Test // gh-27925
|
||||
|
@ -345,11 +348,14 @@ public class NamedParameterUtilsTests {
|
|||
}
|
||||
|
||||
Foo foo = new Foo();
|
||||
Object[] params = NamedParameterUtils.buildValueArray(psql,
|
||||
new BeanPropertySqlParameterSource(foo), null);
|
||||
SqlParameterSource paramSource = new BeanPropertySqlParameterSource(foo);
|
||||
Object[] params = NamedParameterUtils.buildValueArray(psql, paramSource, null);
|
||||
|
||||
assertThat(params[0]).isInstanceOf(SqlParameterValue.class);
|
||||
assertThat(((SqlParameterValue) params[0]).getValue()).isEqualTo(foo.getHeaders().get("id"));
|
||||
|
||||
String sqlToUse = NamedParameterUtils.substituteNamedParameters(psql, paramSource);
|
||||
assertThat(sqlToUse).isEqualTo("insert into foos (id) values (?)");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -160,8 +160,10 @@ abstract class NamedParameterUtils {
|
|||
}
|
||||
if (j - i > 1) {
|
||||
parameter = sql.substring(i + 1, j);
|
||||
if (parameter.contains("[")) {
|
||||
parameter += "]"; // preserve end bracket for index/key
|
||||
if (j < statement.length && statement[j] == ']' && parameter.contains("[")) {
|
||||
// preserve end bracket for index/key
|
||||
j++;
|
||||
parameter = sql.substring(i + 1, j);
|
||||
}
|
||||
namedParameterCount = addNewNamedParameter(
|
||||
namedParameters, namedParameterCount, parameter);
|
||||
|
|
Loading…
Reference in New Issue