The SQL engine interface
| 15 | |
| 16 | /// The SQL engine interface |
| 17 | pub trait Engine: Clone { |
| 18 | /// The transaction type |
| 19 | type Transaction: Transaction; |
| 20 | |
| 21 | /// Begins a read-write transaction. |
| 22 | fn begin(&self) -> Result<Self::Transaction>; |
| 23 | |
| 24 | /// Begins a read-only transaction. |
| 25 | fn begin_read_only(&self) -> Result<Self::Transaction>; |
| 26 | |
| 27 | /// Begins a read-only transaction as of a historical version. |
| 28 | fn begin_as_of(&self, version: u64) -> Result<Self::Transaction>; |
| 29 | |
| 30 | /// Begins a session for executing individual statements |
| 31 | fn session(&self) -> Result<Session<Self>> { |
| 32 | Ok(Session { engine: self.clone(), txn: None }) |
| 33 | } |
| 34 | } |
| 35 | |
| 36 | /// An SQL transaction |
| 37 | pub trait Transaction: Catalog { |