Skip to content

Commit

Permalink
Optimisation when an array parameter contains 0 or 1 element
Browse files Browse the repository at this point in the history
  • Loading branch information
amanteaux committed Dec 1, 2015
1 parent e61a1da commit 8920c9d
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 23 deletions.
7 changes: 4 additions & 3 deletions core/src/main/java/org/sql2o/ArrayParameters.java
Expand Up @@ -66,7 +66,7 @@ static Map<String, List<Integer>> updateParameterNamesToIndexes(Map<String, List
static int computeNewIndex(int index, List<ArrayParameter> arrayParametersSortedAsc) {
int newIndex = index;
for(ArrayParameter arrayParameter : arrayParametersSortedAsc) {
if(index > arrayParameter.parameterIndex && arrayParameter.parameterCount > 1) {
if(index > arrayParameter.parameterIndex) {
newIndex = newIndex + arrayParameter.parameterCount - 1;
} else {
return newIndex;
Expand All @@ -76,14 +76,15 @@ static int computeNewIndex(int index, List<ArrayParameter> arrayParametersSorted
}

/**
* List all the array parameters
* List all the array parameters that contains more that 1 parameters.
* Indeed, array parameter below 1 parameter will not change the text query nor the parameter indexes.
*/
private static List<ArrayParameter> arrayParametersSortedAsc(Map<String, List<Integer>> parameterNamesToIndexes,
Map<String, Query.ParameterSetter> parameters,
boolean allowArrayParameters) {
List<ArrayParameters.ArrayParameter> arrayParameters = new ArrayList<>();
for(Map.Entry<String, Query.ParameterSetter> parameter : parameters.entrySet()) {
if (parameter.getValue().parameterCount != 1) {
if (parameter.getValue().parameterCount > 1) {
if (!allowArrayParameters) {
throw new Sql2oException("Array parameters are not allowed in batch mode");
}
Expand Down
20 changes: 0 additions & 20 deletions core/src/test/java/org/sql2o/ArrayParametersTest.java
Expand Up @@ -67,26 +67,6 @@ public void testComputeNewIndex() {
)
);

assertEquals(
4,
ArrayParameters.computeNewIndex(
4,
ImmutableList.of(
new ArrayParameters.ArrayParameter(3, 0)
)
)
);

assertEquals(
4,
ArrayParameters.computeNewIndex(
4,
ImmutableList.of(
new ArrayParameters.ArrayParameter(3, 1)
)
)
);

assertEquals(
9,
ArrayParameters.computeNewIndex(
Expand Down

0 comments on commit 8920c9d

Please sign in to comment.