[
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,
We have merged in a change that allows ID filters to use the new records
table. As for the ECQL issue, we have submitted a fix as a pull request
to GeoTools for this.
Thanks!
Sincerely,
-- Chris
On Fri, 2014-08-08 at 08:19 -0400, Anthony Fox wrote:
> Beau, Jim,
>
> Wiring up the id queries is quite straight-forward and seems to be
> very high priority. I'm going to knock that out ASAP.
>
>
> Thanks,
> Anthony
>
>
>
> On Thu, Aug 7, 2014 at 5:33 PM, Jim Hughes <jnh5y@xxxxxxxx> wrote:
> Hi Beau,
>
> That's great question. There are two issues at hand:
>
> 1. There's a tiny GeoTools filter serialization issue which
> I'm going to try and sort out.
> 2. We haven't had a chance to wire up id queries to use our
> (new) records table.
>
> Once the GeoTools issue is sorted, we may have to switch over
> to GT version 12-SNAPSHOT to pull in the fixes. Anyhow, all
> of that may take a few days to sort out. The great news I'd
> mention is that you might not need to redeploy your Accumulo
> iterators.
>
> The one downside is that moving to GeoTools 12.x will likely
> require us to move to supporting GeoServer 2.6.x. (GeoTools
> and GeoServer release together.) Progress on this issue can
> be tracked at
> https://geomesa.atlassian.net/browse/GEOMESA-272.
>
> Thanks again,
>
> Jim
>
>
> On 08/07/2014 01:36 PM, 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
>
>
>
> _______________________________________________
> 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
>
>
> _______________________________________________
> 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