Commit Graph

6 Commits

Author SHA1 Message Date
2566cac17f Use iterators instead of materialized values 2021-03-01 08:40:02 +01:00
69fbc9fdd8 Set the volume in the parser for Filters
When no volume is provided, create by default a volume containing the
whole space.

This simplifies handling later on, as there is no checks and on-the-fly
generation of that value necessary. This also remove life time issues as
the volume is always present with the same life time as the rest of the
Filter.
2020-07-25 08:49:36 +02:00
e2ea5c9ba4 Introduce Label for search within id
This allows to define a volume using an indexed object.
2020-03-16 13:48:01 +01:00
661abbc9f4 Add a new symbol, ViewPort
This is used to wrap the filters within an implicit bounding box,
which corresponds to the view port optionally provided by the users.

The intersection is automatically computed between the query results
and the ViewPort, whenever it is specified.
2019-10-18 12:27:30 +02:00
2b4eb67b9e Refactor & Connect to mercator_db
* Refactor the code, Update to the Service API REST JSON objects on disk.
 * Connect to the DB data model and engine to execute queries.
 * Remove the syntactic sugar around implicit `inside` operation on
   shapes, as it introduces issues.
2019-09-12 10:27:35 +02:00
6ed76e485e Parser implementation
* Adaptation of the grammar to make more regular w.r.t reference space
   names placement.

 * Implemented Type check

 * Implemented prediction of the result set cardinality. This assumes:
    + A space is not infinite, this is required to compute complementary
      sets as we can compute the whole space volume.
    + Density is mostly uniform, this allows us to assume the number of
      results is related with a constant factor to the volume in space
      of the selection.
    + The prediction is approximated by using the most pessimistic
      resulting cardinality for each operator, in order to keep the
      operation simple, and fast, at the expense of the precision.

 * Implemented execution, which calls into a DB abstraction layer. That
   layer is currently mostly empty. Execution is also implemented in a
   naive way, and should most likely be optimised.
2019-09-10 14:38:31 +02:00