Comments (7)
Hi there, welcome again )
No, it's just not being thoroughly investigated yet.
from sea-orm.
@nappa85 Could you briefly explain what row locking is? I haven't heard of this before. Is this something similar to a read/write mutex but for a row in the database?
from sea-orm.
@nappa85 Could you briefly explain what row locking is? I haven't heard of this before. Is this something similar to a read/write mutex but for a row in the database?
Yeah, sure.
Row locking works only inside a transaction (or at least MySQL is designed like that), you can lock a row in 2 ways:
shared: like a RwLock::read(), done appending "FOR SHARE" at the end of the query;
exclusive: like a RwLock::write(), done appending "FOR UPDATE" at the end of the query;
You can read official docs here: https://dev.mysql.com/doc/refman/8.0/en/innodb-locking.html#innodb-shared-exclusive-locks
From a quick search, I see PostgreSQL has many more lock types: https://www.postgresql.org/docs/9.1/explicit-locking.html
I'm still not familiar with your APIs, but being only an append to a select query I see it as a set of methods of sea_orm::query::Select, aside of the existing one
, all
and paginate
, something like
fn one_lock(self, db: &DatabaseConnection, lock_tipe: LockType) -> Result<Option<E::Model>, DbErr>;
fn all_lock(self, db: &DatabaseConnection, lock_tipe: LockType) -> Result<Vec<E::Model>, DbErr>;
fn paginate_lock(self, db: &DatabaseConnection, page_size: usize, lock_tipe: LockType) -> Paginator<'_, SelectModel<E::Model>>;
from sea-orm.
Oh wow okay thats awesome thank you! I can't believe I've never come across MySQL/Postgres row locks before! Seems like a nice feature to have.
Btw I am just a strong user of SeaORM haha not a dev on it for now 😀.
from sea-orm.
I think we can close this issue, since my PR has been merged, right?
from sea-orm.
Well only the SeaQuery PR has been merged and since SeaORM has bumped the dependency, you can use it now.
It depends on whether you want additional convenience by introducing new API in SeaORM.
from sea-orm.
Well only the SeaQuery PR has been merged and since SeaORM has bumped the dependency, you can use it now.
It depends on whether you want additional convenience by introducing new API in SeaORM.
Oh, you're right, it's the sea-query PR that has been merged, not the sea-orm one
from sea-orm.
Related Issues (20)
- SQLite: Format of DateTimeUtc is wrong HOT 14
- mismatched types, sqlx_postgres::types::oid::Oid>` (as SQL type `OID`) is not compatible with SQL type `INT4` in PostgreSQL
- Vulnerability in the `rsa` (a recursive dependency of SeaORM) HOT 1
- Issue when using `on_conflict` with sqlite HOT 1
- Syntax error when trying to drop multiple tables in migrations with SQLite HOT 1
- does postgres int8 work? HOT 2
- [Testing] Error: `A null value was encountered while decoding "num_items"` when testing pagination and counting HOT 1
- support sqlx v0.8 HOT 1
- sea-orm-cli 1.0 doesn't support mysql type: `bit` HOT 2
- VarBinary(16) column breaks DeriveEntityModel derive
- sea-orm-cli 1.0 generate entity from mysql generates String for MediumBlob fields
- Timezone offset information lost when reading a ChronoDateTimeWithTimeZone HOT 1
- Cannot run sea-orm-cli with feature codegen without sqlite as a dependency HOT 1
- `schema::custom()` requires `col` and `name` to be of same type
- Vec<RoleEnum> in SeaORM Entity Model Causes Compilation Error HOT 1
- No reference to features list or alternate DB connectors in docs.
- Support for `HashMap`
- `sea-orm-migration` is missing the `sqlx-all` feature
- Incorrect type in entity generation
- `ColumnDef` builder functions in `sea-orm-migration` may push additional statements instead of changing them HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sea-orm.