locationtech / locationtech/geomesa
Improve query planning for attribute functions
Nobody has claimed this yet.
- Dominant language
- Scala
- Stars
- 1.5k
- Forks
- 446
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 31
Description
Improve query planning for attribute functions
Currently functions fall back to full table scans. Some of them could be optimized. For example,
strToUpper(foo) = 'FOO'
could be expanded to something we can query plan correctly:
foo = 'FOO' OR foo = 'foo' OR foo = 'Foo' ... // etc
That might not be feasible for longer words of course...
List of functions here: http://docs.geoserver.org/latest/en/user/filter/function_reference.html
Original JIRA Issue: https://geomesa.atlassian.net/browse/GEOMESA-1990
Key: GEOMESA-1990
Type: Improvement
Priority: Major
Status: To Do
Resolution: Unresolved
Reporter: Emilio Lahr-Vivaz
Created: Tue, 22 Aug 2017 13:43:23 -0400
Updated: Wed, 16 May 2018 16:14:14 -0400
Comments:
557058:da7f6dfa-f0a1-468b-aec5-2cb61273feb5 (Wed, 16 May 2018 16:14:14 -0400):
The logic is all wired through already. The method that needs to be implemented is:
org.locationtech.geomesa.filter.FilterHelper#extractFunctionBounds
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with org.locationtech.geomesa.filter.FilterHelper#extractFunctionBounds, which the issue identifies as the unimplemented method, and consult the linked GeoServer filter function reference for the functions involved. Done means supported attribute functions produce query bounds instead of falling back to full table scans, while accounting for cases where expansion is impractical.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- scala
- Domain
- databases, distributed-systems
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 65/100