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 | ||
tests | ||
Cargo.toml | ||
README.md |
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.