[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [geomesa-users] Bug found querying based on feature ID
|
Beau,
Once again, an excellent question!
We have a few ideas about what is going on, and are running those down
now. Expect a response as soon as we have more information.
Thanks!
Sincerely,
-- Chris
On Thu, 2014-08-07 at 17:36 +0000, Beau Lalonde wrote:
> Hi,
>
>
>
> I am using a version of GeoMesa from the beginning of last week and I
> am mostly pleased with its performance. I have, however, found a
> problem when I try to query based upon feature ID.
>
>
>
> I am able to successfully generate Filter objects based upon feature
> IDs and use those filter objects to modify and/or remove features
> within GeoMesa. I cannot, however, use such feature ID filters to
> query GeoMesa without getting a CQLException.
>
>
>
> Here is some abbreviated example Java code that illustrates the bug:
>
> String id1 = "ID1";
>
> FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();
>
> Filter filter = ff.id(Collections.singleton(ff.featureId(id1)));
>
> FeatureSource<SimpleFeatureType, SimpleFeature> featureSource =
> dataStore.getFeatureSource(featureName);
>
> Query query = new Query(featureName, filter);
>
> FeatureCollection<SimpleFeatureType, SimpleFeature>
> featureCollection = featureSource.getFeatures(query);
>
> FeatureIterator<SimpleFeature> featureIterator =
> featureCollection.features(); // throws CQLException
>
>
>
> Here’s the exception that’s thrown:
>
> org.geotools.filter.text.cql2.CQLException: Encountered "IN ( ID1" at
> line 1, column 2.
>
> Was expecting one of:
>
> "not" ...
>
> "include" ...
>
> "exclude" ...
>
> "(" ...
>
> "[" ...
>
> "id" ...
>
> "in" ...
>
> <IDENTIFIER> ...
>
> <DATE> ...
>
> <DATE_TIME> ...
>
> "-" ...
>
> <INTEGER_LITERAL> ...
>
> <FLOATING_LITERAL> ...
>
> <STRING_LITERAL> ...
>
> "true" ...
>
> "false" ...
>
> "point" ...
>
> "linestring" ...
>
> "polygon" ...
>
> "multipoint" ...
>
> "multilinestring" ...
>
> "multipolygon" ...
>
> "geometrycollection" ...
>
> "envelope" ...
>
> "in" "(" <STRING_LITERAL> ...
>
> "in" "(" <INTEGER_LITERAL> ...
>
> Parsing : (IN (ID1)).
>
> at
> org.geotools.filter.text.ecql.ECQLCompiler.compileFilter(ECQLCompiler.java:102)
>
> at
> org.geotools.filter.text.commons.CompilerUtil.parseFilter(CompilerUtil.java:196)
>
> at
> org.geotools.filter.text.ecql.ECQL.toFilter(ECQL.java:120)
>
> at
> org.geotools.filter.text.ecql.ECQL.toFilter(ECQL.java:99)
>
> at geomesa.core.iterators.IteratorTrigger
> $.getFilterAttributes(IteratorTrigger.scala:114)
>
> at geomesa.core.iterators.IteratorTrigger
> $.passThroughFilter(IteratorTrigger.scala:109)
>
> at geomesa.core.iterators.IteratorTrigger$$anonfun
> $8.apply(IteratorTrigger.scala:70)
>
> at geomesa.core.iterators.IteratorTrigger$$anonfun
> $8.apply(IteratorTrigger.scala:70)
>
> at scala.Option.map(Option.scala:145)
>
> at geomesa.core.iterators.IteratorTrigger
> $.useIndexOnlyIterator(IteratorTrigger.scala:70)
>
> at geomesa.core.iterators.IteratorTrigger
> $.chooseIterator(IteratorTrigger.scala:52)
>
> at
> geomesa.core.index.IndexQueryPlanner.stIdxQuery(IndexQueryPlanner.scala:373)
>
> at
> geomesa.core.index.IndexQueryPlanner.runAttrIdxQuery(IndexQueryPlanner.scala:164)
>
> at geomesa.core.index.IndexQueryPlanner.geomesa$core
> $index$IndexQueryPlanner$$runQuery(IndexQueryPlanner.scala:135)
>
> at geomesa.core.index.IndexQueryPlanner$$anonfun
> $getIterator$1.apply(IndexQueryPlanner.scala:94)
>
> at geomesa.core.index.IndexQueryPlanner$$anonfun
> $getIterator$1.apply(IndexQueryPlanner.scala:94)
>
> at scala.collection.Iterator$$anon
> $13.hasNext(Iterator.scala:371)
>
> at geomesa.core.util.CloseableIterator$$anon
> $3.hasNext(CloseableIterator.scala:20)
>
> at
> geomesa.core.iterators.DeDuplicatingIterator.findTop(DeDuplicatingIterator.scala:51)
>
> at
> geomesa.core.iterators.DeDuplicatingIterator.<init>(DeDuplicatingIterator.scala:58)
>
> at
> geomesa.core.index.IndexSchema.adaptIterator(IndexSchema.scala:117)
>
> at
> geomesa.core.index.IndexSchema.query(IndexSchema.scala:102)
>
> at
> geomesa.core.data.AccumuloFeatureReader.<init>(AccumuloFeatureReader.scala:32)
>
> at
> geomesa.core.data.AccumuloDataStore.getFeatureReader(AccumuloDataStore.scala:751)
>
> at
> geomesa.core.data.AccumuloDataStore.getFeatureReader(AccumuloDataStore.scala:60)
>
> at
> org.geotools.data.AbstractDataStore.getFeatureReader(AbstractDataStore.java:369)
>
> at
> org.geotools.data.DefaultFeatureResults.reader(DefaultFeatureResults.java:215)
>
> at
> org.geotools.data.store.DataFeatureCollection.openIterator(DataFeatureCollection.java:231)
>
> at
> org.geotools.data.store.DataFeatureCollection.iterator(DataFeatureCollection.java:199)
>
> at
> org.geotools.data.store.DataFeatureCollection.features(DataFeatureCollection.java:188)
>
> at
> org.geotools.data.store.DataFeatureCollection.features(DataFeatureCollection.java:79)
>
>
>
> Is there a safe way to query based on feature ID? Has this bug
> already been fixed?
>
>
>
> Thanks,
>
> Beau
>
>
>
>
> _______________________________________________
> geomesa-users mailing list
> geomesa-users@xxxxxxxxxxxxxxxx
> To change your delivery options, retrieve your password, or unsubscribe from this list, visit
> http://www.locationtech.org/mailman/listinfo/geomesa-users