-
Notifications
You must be signed in to change notification settings - Fork 235
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
qe: Introduce JS transaction objects (#4138)
* qe: Introduce JS transaction objects (engine only) Part of the fix for prisma/team-orm#269. Instead of tracking TX status as a flag on a driver instance (that does not allow to run 2 transactions in parallel, or transactional code in parallel with non-transactional), each time transaction is started we create new, independent `Transaction` object. Multiple `Transactions` can co-exist and execute quries independently from one another. This PR implements Rust part of the change only. Merging it without TS part will break all transactions instead of fixing race condition. Summary of the changes: - converts quaint's `Transaction` into a trait and makes `TransactionCapable` return `dyn Transaction`. - for native drivers, exactly same `Transaction` implementation is used. - for JS drivers, `JsTransaction` struct is implemented. It delegates all it's functionality (including commit and rollaback) to JS side. - `Proxy` struct is split into 3: `CommonProxy` for methods common between transaction and the driver, `DriverProxy` for driver-specific ones and `TransactionProxy` for transaction-specific ones. - Similary, `JsBaseQueryable` is a queryable over either transaction or driver while `JsQueryable` now means driver only. `JsBaseQueryable` is used by both `JsTransaction` and `JsQueryable` internally. * Clippy * use `dyn Transaction` in `server_reset_query` * Remove duplicate trait comments as per review * feat: exclude `version()` and `is_healthy` from `js-connectors`'s `Queryable` (#4139) * feat(js-connectors): [rust] remove implementations of "version()" and "is_healthy()" * feat(js-connectors): [typescript] remove implementations of "version()" and "is_healthy()" * chore: remove dead code * JS implementation for planetscale * Correct way of handling rollbacks * Add neon implementation * Add test & fix planetscale isolation levels * Post rebase fixes * Update query-engine/js-connectors/js/neon-js-connector/src/neon.ts Co-authored-by: Alberto Schiabel <jkomyno@users.noreply.github.com> * Update query-engine/js-connectors/js/neon-js-connector/src/neon.ts Co-authored-by: Alberto Schiabel <jkomyno@users.noreply.github.com> * Update query-engine/js-connectors/js/js-connector-utils/src/binder.ts Co-authored-by: Alberto Schiabel <jkomyno@users.noreply.github.com> * Update query-engine/js-connectors/js/js-connector-utils/src/binder.ts Co-authored-by: Alberto Schiabel <jkomyno@users.noreply.github.com> * Update query-engine/js-connectors/js/js-connector-utils/src/types.ts Co-authored-by: Alberto Schiabel <jkomyno@users.noreply.github.com> * Update query-engine/js-connectors/js/planetscale-js-connector/src/planetscale.ts Co-authored-by: Alberto Schiabel <jkomyno@users.noreply.github.com> * Update neon --------- Co-authored-by: Alberto Schiabel <jkomyno@users.noreply.github.com>
- Loading branch information
Showing
28 changed files
with
664 additions
and
554 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
//! A "prelude" for users of the `quaint` crate. | ||
pub use crate::ast::*; | ||
pub use crate::connector::{ | ||
ConnectionInfo, Queryable, ResultRow, ResultSet, SqlFamily, Transaction, TransactionCapable, | ||
ConnectionInfo, DefaultTransaction, Queryable, ResultRow, ResultSet, SqlFamily, TransactionCapable, | ||
}; | ||
pub use crate::{col, val, values}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.