95b9c7f7f5
* Pre: rename begin_transaction to begin_tx_application. * Take an EXCLUSIVE transaction when bootstrapping, and an IMMEDIATE transaction when writing. This avoids the remote possibility of another write sneaking in the door while we're preparing to write, avoids us needing to upgrade locks, etc. After a BEGIN IMMEDIATE, no other database connection will be able to write to the database or do a BEGIN IMMEDIATE or BEGIN EXCLUSIVE. Other processes can continue to read from the database, however. An exclusive transaction causes EXCLUSIVE locks to be acquired on all databases. After a BEGIN EXCLUSIVE, no other database connection except for read_uncommitted connections will be able to read the database and no other connection without exception will be able to write the database until the transaction is complete. * Hacky implementation of atomic multi-tx. * Hold the last report, returning the InProgress from each operation. * Rewrite transact in terms of InProgress. * Test rollback. * Remove unused imports. * Don't use Rc for transaction reports. * Pre: break out USER0 as a part boundary constant. * Export TX0 and USER0 from mentat_db. This is for testing. * Review comments: commenting. * Test tempid allocation and rollback. |
||
---|---|---|
.. | ||
src | ||
Cargo.toml | ||
README.md |
This module handles the derivation from an algebrized query of two things:
- A SQL projection: a mapping from columns mentioned in the body of the query to columns in the output.
- A Datalog projection: a function that consumes rows of the appropriate shape (as defined by the SQL projection) to yield one of the four kinds of Datalog query result.
These two must naturally coordinate, and so they are both produced here.