mentat/query-translator
Nick Alexander 79fa0994b3 Part 3: Handle ground. (#469) r=nalexander,rnewman
This version removes nalexander's lovely matrix code. It turned out
that scalar and tuple bindings are sufficiently different from coll
and rel -- they can directly apply as values in the query -- that
there was no point in jumping through hoops to turn those single
values into a matrix.

Furthermore, I've standardized us on a Vec<TypedValue>
representation for rectangular matrices, which should be much
more efficient, but would have required rewriting that code.

Finally, coll and rel are sufficiently different from each other
-- coll doesn't require processing nested collections -- that
my attempts to share code between them fell somewhat flat. I had
lots of nice ideas about zipping together cycles and such, but
ultimately I ended up with relatively straightforward, if a bit
repetitive, code.

The next commit will demonstrate the value of this work -- tests
that exercised scalar and tuple grounding now collapse down to
the simplest possible SQL.
2017-06-09 20:18:31 -07:00
..
src Part 3: Handle ground. (#469) r=nalexander,rnewman 2017-06-09 20:18:31 -07:00
tests Part 3: Handle ground. (#469) r=nalexander,rnewman 2017-06-09 20:18:31 -07:00
Cargo.toml Implement projection and querying. (#353) r=nalexander 2017-03-06 14:40:10 -08:00
README.md Begin serializing queries to SQL. r=nalexander 2017-02-17 17:54:07 -08:00

This crate turns an algebrized Datalog query into a domain-specific representation of a SQL query, and then uses mentat_sql to turn that into a SQL string to be executed.

This subsumes both planning and query construction, because in Mentat the SQL query is effectively a query plan.