This is an automated email from the ASF dual-hosted git repository. amanin pushed a commit to branch refactor/sql-store in repository https://gitbox.apache.org/repos/asf/sis.git
commit 7fdf1df6b46cf103c845f97c24e8077e29e2655d Author: Alexis Manin <[email protected]> AuthorDate: Tue Nov 12 17:29:14 2019 +0100 fix(SQLStore): throw proper exception on an unsupported filter. --- .../sis/internal/sql/feature/ANSIInterpreter.java | 8 ++++-- .../apache/sis/internal/sql/feature/Import.java | 33 ---------------------- .../internal/sql/feature/PostGISInterpreter.java | 2 ++ 3 files changed, 7 insertions(+), 36 deletions(-) diff --git a/storage/sis-sqlstore/src/main/java/org/apache/sis/internal/sql/feature/ANSIInterpreter.java b/storage/sis-sqlstore/src/main/java/org/apache/sis/internal/sql/feature/ANSIInterpreter.java index 76bfec0..aef825e 100644 --- a/storage/sis-sqlstore/src/main/java/org/apache/sis/internal/sql/feature/ANSIInterpreter.java +++ b/storage/sis-sqlstore/src/main/java/org/apache/sis/internal/sql/feature/ANSIInterpreter.java @@ -54,8 +54,8 @@ import static org.apache.sis.util.ArgumentChecks.ensureNonNull; * * No case insensitive support of binary comparison is done. * - * TODO: define a set of accepter property names, so any {@link PropertyName} filter refering to non pure SQL property - * (like relations) will cause a failure. + * TODO: define a set of accepter property names (even better: link to {@link FeatureAdapter}), so any {@link PropertyName} + * filter refering to non pure SQL property (like relations) will cause a failure. * * @author Alexis Manin (Geomatys) */ @@ -184,6 +184,8 @@ public class ANSIInterpreter implements FilterVisitor, ExpressionVisitor { public Object visit(BBOX filter, Object extraData) { // TODO: This is a wrong interpretation, but sqlmm has no equivalent of filter encoding bbox, so we'll // fallback on a standard intersection. However, PostGIS, H2, etc. have their own versions of such filters. + if (filter.getExpression1() == null || filter.getExpression2() == null) + throw new UnsupportedOperationException("Not supported yet : bbox over all geometric properties"); return function("ST_Intersects", filter, extraData); } @@ -212,7 +214,7 @@ public class ANSIInterpreter implements FilterVisitor, ExpressionVisitor { @Override public Object visit(DWithin filter, Object extraData) { - // TODO: as for beyond, unit determination is a bit complicated. + // TODO: as for beyond filter above, unit determination is a bit complicated. throw new UnsupportedOperationException("Not yet: unit management to handle properly"); } diff --git a/storage/sis-sqlstore/src/main/java/org/apache/sis/internal/sql/feature/Import.java b/storage/sis-sqlstore/src/main/java/org/apache/sis/internal/sql/feature/Import.java deleted file mode 100644 index f5614e1..0000000 --- a/storage/sis-sqlstore/src/main/java/org/apache/sis/internal/sql/feature/Import.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.apache.sis.internal.sql.feature; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -class Import { - - final String propertyName; - - final List<String> fkColumns; - - final TableReference target; - - public Import(String propertyName, Collection<String> fkColumns, TableReference target) { - this.propertyName = propertyName; - this.fkColumns = Collections.unmodifiableList(new ArrayList<>(fkColumns)); - this.target = target; - } - - public String getPropertyName() { - return propertyName; - } - - public List<String> getFkColumns() { - return fkColumns; - } - - public TableReference getTarget() { - return target; - } -} diff --git a/storage/sis-sqlstore/src/main/java/org/apache/sis/internal/sql/feature/PostGISInterpreter.java b/storage/sis-sqlstore/src/main/java/org/apache/sis/internal/sql/feature/PostGISInterpreter.java index 684c1d8..1c78254 100644 --- a/storage/sis-sqlstore/src/main/java/org/apache/sis/internal/sql/feature/PostGISInterpreter.java +++ b/storage/sis-sqlstore/src/main/java/org/apache/sis/internal/sql/feature/PostGISInterpreter.java @@ -14,6 +14,8 @@ public class PostGISInterpreter extends ANSIInterpreter { */ @Override public CharSequence visit(BBOX filter, Object extraData) { + if (filter.getExpression1() == null || filter.getExpression2() == null) + throw new UnsupportedOperationException("Not supported yet : bbox over all geometric properties"); return join(filter, "&&", extraData); } }
