Comments (4)
My gut feeling is that it's the same root cause as #31: rust-lang/rust#13246.
from rust-postgres.
Your gut feeling is correct. My code is equivalent to the following
extern crate postgres;
fn main() {
let pool = postgres::pool::PostgresConnectionPool::new("postgres://localhost/postgres", postgres::NoSsl, 1).unwrap();
let _ : Vec<i32> = {
let conn = pool.clone().get_connection();
let stmt = conn.prepare("SELECT 1 UNION SELECT 2").unwrap();
let rows = stmt.query([]).unwrap();
rows.map(|r| {
r[1]
}).collect()
};
}
which currently will drop the PostgresStatement
then the PooledPostgresConnection
and then incorrectly the PostgresRows
. This means that the access to the connection while dropping the rows will race with anyone using the released connection. Ouch.
from rust-postgres.
You can work around it by splitting the last statement to
let v = rows.map(|r| r[1]).collect();
v
I might redo the internals a bit to store an Rc
of the thing they have a borrowed pointer to to force the destructors to run in the correct order until the underlying issue is fixed.
from rust-postgres.
I believe this should be fixed by rust-lang/rust#21972.
from rust-postgres.
Related Issues (20)
- Question: is postgres extended wire protocol lazy or eager? HOT 3
- Using named arguments in queries using the `pg_named_args` crate HOT 1
- RDS IAM Auth not working HOT 5
- Support timeouts for COPY commands HOT 5
- impl ToSql for Iterators?
- A way to supply your own binary for copy HOT 1
- Looking for a way to mock tokio_postgres::Client ? HOT 2
- `TransactionBuilder::start` Future dropped before completion HOT 3
- pgrestore
- Bigdecimal insert/select example
- How to implemt FromSql trait for type like `Role` HOT 2
- Access to column type via Inner enum? HOT 2
- How to process payload from notify after collected notify?
- Should Prepare use query as Prepare Name? HOT 4
- Postgres REGCLASS is not convertible to rust native Strings HOT 2
- Vec<T> with custom postgres types just doesn't work HOT 2
- Helper for switching on sslmode and MakeTlsConnect<Socket> HOT 5
- Example using FromSql with tokio_postgres query_raw stream? HOT 15
- Idea: Add RowDescription to SimpleQueryMessage HOT 1
- Why pay the price of `std::str::from_utf8`? HOT 6
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 rust-postgres.