mentat/db/src
Richard Newman 95b9c7f7f5
Atomic multi-tx (#489). r=emily,nalexander
* 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.
2017-12-05 07:58:24 -08:00
..
add_retract_alter_set.rs Schema alteration. Fixes #294 and #295. (#370) r=rnewman 2017-03-20 13:18:59 -07:00
bootstrap.rs Atomic multi-tx (#489). r=emily,nalexander 2017-12-05 07:58:24 -08:00
db.rs Atomic multi-tx (#489). r=emily,nalexander 2017-12-05 07:58:24 -08:00
debug.rs Use Rc for TypedValue, Variable, and query Ident keywords. (#395) r=nalexander 2017-04-02 21:38:36 -07:00
entids.rs UUIDs and instants. Fixes #44, #45, #426, #427. (#438) r=nalexander 2017-04-28 20:11:55 -07:00
errors.rs Don't allow callers to specify arbitrary new entity IDs. (#447) r=nalexander 2017-06-09 15:45:26 -07:00
internal_types.rs Pre: move Either to mentat_core::util. 2017-06-15 10:28:02 -07:00
lib.rs Atomic multi-tx (#489). r=emily,nalexander 2017-12-05 07:58:24 -08:00
metadata.rs UUIDs and instants. Fixes #44, #45, #426, #427. (#438) r=nalexander 2017-04-28 20:11:55 -07:00
schema.rs Allow instants to pass through schema validation. (#481) r=fluffyemily 2017-06-16 09:15:29 -07:00
tx.rs Atomic multi-tx (#489). r=emily,nalexander 2017-12-05 07:58:24 -08:00
types.rs Update some dependencies. (#492) r=etoop 2017-11-21 16:24:08 +00:00
upsert_resolution.rs Pre: move Either to mentat_core::util. 2017-06-15 10:28:02 -07:00