Browse Source

Upgrading to jsqlparser 4.9

Closes #1799
pull/1805/head
Jens Schauder 2 years ago
parent
commit
abd0c85629
No known key found for this signature in database
GPG Key ID: 89F36EDF8C1BEA56
  1. 3
      spring-data-relational/pom.xml
  2. 12
      spring-data-relational/src/test/java/org/springframework/data/relational/core/sqlgeneration/AliasedPattern.java
  3. 13
      spring-data-relational/src/test/java/org/springframework/data/relational/core/sqlgeneration/AnalyticFunctionPattern.java
  4. 3
      spring-data-relational/src/test/java/org/springframework/data/relational/core/sqlgeneration/LiteralPattern.java
  5. 31
      spring-data-relational/src/test/java/org/springframework/data/relational/core/sqlgeneration/SqlAssert.java
  6. 10
      spring-data-relational/src/test/java/org/springframework/data/relational/core/sqlgeneration/TypedExpressionPattern.java

3
spring-data-relational/pom.xml

@ -20,6 +20,7 @@ @@ -20,6 +20,7 @@
<properties>
<java-module-name>spring.data.relational</java-module-name>
<project.root>${basedir}/..</project.root>
<jsqlparser>4.9</jsqlparser>
</properties>
<dependencies>
@ -100,7 +101,7 @@ @@ -100,7 +101,7 @@
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>4.6</version>
<version>${jsqlparser}</version>
<scope>test</scope>
</dependency>

12
spring-data-relational/src/test/java/org/springframework/data/relational/core/sqlgeneration/AliasedPattern.java

@ -16,7 +16,6 @@ @@ -16,7 +16,6 @@
package org.springframework.data.relational.core.sqlgeneration;
import net.sf.jsqlparser.statement.select.SelectExpressionItem;
import net.sf.jsqlparser.statement.select.SelectItem;
/**
@ -24,19 +23,14 @@ import net.sf.jsqlparser.statement.select.SelectItem; @@ -24,19 +23,14 @@ import net.sf.jsqlparser.statement.select.SelectItem;
*
* @param pattern for the expression to match
* @param alias to match
*
* @author Jens Schauder
*/
record AliasedPattern (SelectItemPattern pattern, String alias) implements SelectItemPattern {
record AliasedPattern(SelectItemPattern pattern, String alias) implements SelectItemPattern {
@Override
public boolean matches(SelectItem selectItem) {
if (selectItem instanceof SelectExpressionItem sei) {
return pattern.matches(sei) && sei.getAlias() != null && sei.getAlias().getName().equals(alias);
}
return false;
return pattern.matches(selectItem) && selectItem.getAlias() != null
&& selectItem.getAlias().getName().equals(alias);
}
@Override

13
spring-data-relational/src/test/java/org/springframework/data/relational/core/sqlgeneration/AnalyticFunctionPattern.java

@ -18,7 +18,6 @@ package org.springframework.data.relational.core.sqlgeneration; @@ -18,7 +18,6 @@ package org.springframework.data.relational.core.sqlgeneration;
import net.sf.jsqlparser.expression.AnalyticExpression;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.statement.select.SelectExpressionItem;
import net.sf.jsqlparser.statement.select.SelectItem;
import java.util.List;
@ -44,19 +43,17 @@ public class AnalyticFunctionPattern extends TypedExpressionPattern<AnalyticExpr @@ -44,19 +43,17 @@ public class AnalyticFunctionPattern extends TypedExpressionPattern<AnalyticExpr
@Override
public boolean matches(SelectItem selectItem) {
if (selectItem instanceof SelectExpressionItem sei) {
Expression expression = sei.getExpression();
if (expression instanceof AnalyticExpression analyticExpression) {
return matches(analyticExpression);
}
Expression expression = selectItem.getExpression();
if (expression instanceof AnalyticExpression analyticExpression) {
return matches(analyticExpression);
}
return false;
}
@Override
boolean matches(AnalyticExpression analyticExpression) {
return analyticExpression.getName().toLowerCase().equals(functionName)
&& partitionByMatches(analyticExpression);
return analyticExpression.getName().toLowerCase().equals(functionName) && partitionByMatches(analyticExpression);
}
private boolean partitionByMatches(AnalyticExpression analyticExpression) {

3
spring-data-relational/src/test/java/org/springframework/data/relational/core/sqlgeneration/LiteralPattern.java

@ -17,7 +17,6 @@ @@ -17,7 +17,6 @@
package org.springframework.data.relational.core.sqlgeneration;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.statement.select.SelectExpressionItem;
import net.sf.jsqlparser.statement.select.SelectItem;
/**
@ -30,7 +29,7 @@ record LiteralPattern(Object value) implements SelectItemPattern, ExpressionPatt @@ -30,7 +29,7 @@ record LiteralPattern(Object value) implements SelectItemPattern, ExpressionPatt
@Override
public boolean matches(SelectItem selectItem) {
return selectItem instanceof SelectExpressionItem sei && matches(sei.getExpression());
return matches(selectItem.getExpression());
}
@Override

31
spring-data-relational/src/test/java/org/springframework/data/relational/core/sqlgeneration/SqlAssert.java

@ -27,8 +27,6 @@ import net.sf.jsqlparser.statement.select.OrderByElement; @@ -27,8 +27,6 @@ import net.sf.jsqlparser.statement.select.OrderByElement;
import net.sf.jsqlparser.statement.select.PlainSelect;
import net.sf.jsqlparser.statement.select.Select;
import net.sf.jsqlparser.statement.select.SelectItem;
import net.sf.jsqlparser.statement.select.SpecialSubSelect;
import net.sf.jsqlparser.statement.select.SubSelect;
import java.util.ArrayList;
import java.util.Arrays;
@ -84,10 +82,11 @@ class SqlAssert extends AbstractAssert<SqlAssert, PlainSelect> { @@ -84,10 +82,11 @@ class SqlAssert extends AbstractAssert<SqlAssert, PlainSelect> {
return new AnalyticFunctionPattern("count", partitionBy);
}
static FunctionPattern func(String name, ExpressionPattern ... params) {
static FunctionPattern func(String name, ExpressionPattern... params) {
return new FunctionPattern(name, params);
}
static FunctionPattern func(String name, String ... params) {
static FunctionPattern func(String name, String... params) {
return new FunctionPattern(name, Arrays.stream(params).map(p -> col(p)).collect(Collectors.toList()));
}
@ -104,7 +103,7 @@ class SqlAssert extends AbstractAssert<SqlAssert, PlainSelect> { @@ -104,7 +103,7 @@ class SqlAssert extends AbstractAssert<SqlAssert, PlainSelect> {
SqlAssert hasExactlyColumns(SelectItemPattern... columns) {
List<SelectItem> actualSelectItems = actual.getSelectItems();
List<SelectItem<?>> actualSelectItems = actual.getSelectItems();
List<SelectItemPattern> unmatchedPatterns = new ArrayList<>(Arrays.asList(columns));
List<SelectItem> unmatchedSelectItems = new ArrayList<>();
@ -169,15 +168,18 @@ class SqlAssert extends AbstractAssert<SqlAssert, PlainSelect> { @@ -169,15 +168,18 @@ class SqlAssert extends AbstractAssert<SqlAssert, PlainSelect> {
Expression where = actual.getWhere();
return new StringAssert(where == null ? "" : where.toString());
}
public JoinAssert hasJoin() {
List<Join> joins = actual.getJoins();
if (joins == null || joins.size() < 1) {
throw failureWithActualExpected(actual, "select with a join", "Expected %s to contain a join but it doesn't.", actual);
throw failureWithActualExpected(actual, "select with a join", "Expected %s to contain a join but it doesn't.",
actual);
}
return new JoinAssert(joins.get(0));
}
private String prepare(SelectItemPattern[] columns) {
return Arrays.toString(columns);
}
@ -185,7 +187,7 @@ class SqlAssert extends AbstractAssert<SqlAssert, PlainSelect> { @@ -185,7 +187,7 @@ class SqlAssert extends AbstractAssert<SqlAssert, PlainSelect> {
SqlAssert hasInlineViewSelectingFrom(String tableName) {
Optional<PlainSelect> matchingSelect = getSubSelects(actual)
.filter(ps -> (ps.getFromItem()instanceof Table t) && t.getName().equals(tableName)).findFirst();
.filter(ps -> (ps.getFromItem() instanceof Table t) && t.getName().equals(tableName)).findFirst();
if (matchingSelect.isEmpty()) {
throw failureWithActualExpected(actual, "Subselect from " + tableName,
@ -195,13 +197,11 @@ class SqlAssert extends AbstractAssert<SqlAssert, PlainSelect> { @@ -195,13 +197,11 @@ class SqlAssert extends AbstractAssert<SqlAssert, PlainSelect> {
return new SqlAssert(matchingSelect.get());
}
public SqlAssert hasInlineView() {
Optional<PlainSelect> matchingSelect = getSubSelects(actual).findFirst();
if (matchingSelect.isEmpty()) {
throw failureWithActualExpected(actual, "Subselect",
"%s is expected to contain a subselect", actual);
throw failureWithActualExpected(actual, "Subselect", "%s is expected to contain a subselect", actual);
}
return new SqlAssert(matchingSelect.get());
@ -227,15 +227,8 @@ class SqlAssert extends AbstractAssert<SqlAssert, PlainSelect> { @@ -227,15 +227,8 @@ class SqlAssert extends AbstractAssert<SqlAssert, PlainSelect> {
}
private static Stream<PlainSelect> subSelects(FromItem fromItem) {
Stream<PlainSelect> fromStream;
if (fromItem instanceof SubSelect ss) {
fromStream = Stream.of((PlainSelect) ss.getSelectBody());
} else if (fromItem instanceof SpecialSubSelect ss) {
fromStream = Stream.of((PlainSelect) ss.getSubSelect().getSelectBody());
} else {
fromStream = Stream.empty();
}
return fromStream;
return fromItem instanceof Select ss ? Stream.of(ss.getPlainSelect()) : Stream.empty();
}
public StringAssert extractOrderBy() {

10
spring-data-relational/src/test/java/org/springframework/data/relational/core/sqlgeneration/TypedExpressionPattern.java

@ -17,7 +17,6 @@ @@ -17,7 +17,6 @@
package org.springframework.data.relational.core.sqlgeneration;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.statement.select.SelectExpressionItem;
import net.sf.jsqlparser.statement.select.SelectItem;
/**
@ -33,15 +32,12 @@ abstract class TypedExpressionPattern<T> implements SelectItemPattern, Expressio @@ -33,15 +32,12 @@ abstract class TypedExpressionPattern<T> implements SelectItemPattern, Expressio
this.type = type;
}
@Override
public boolean matches(SelectItem selectItem) {
if (selectItem instanceof SelectExpressionItem sei) {
Expression expression = sei.getExpression();
return matches(expression);
}
return false;
Expression expression = selectItem.getExpression();
return matches(expression);
}
@Override

Loading…
Cancel
Save