pub struct PgConnection { /* private fields */ }
postgres
only.Expand description
A connection to a PostgreSQL database.
Implementationsยง
Sourceยงimpl PgConnection
impl PgConnection
Sourcepub fn server_version_num(&self) -> Option<u32>
pub fn server_version_num(&self) -> Option<u32>
the version number of the server in libpq
format
Sourceยงimpl PgConnection
impl PgConnection
Sourcepub async fn copy_in_raw(
&mut self,
statement: &str,
) -> Result<PgCopyIn<&mut PgConnection>, Error>
pub async fn copy_in_raw( &mut self, statement: &str, ) -> Result<PgCopyIn<&mut PgConnection>, Error>
Issue a COPY FROM STDIN
statement and transition the connection to streaming data
to Postgres. This is a more efficient way to import data into Postgres as compared to
INSERT
but requires one of a few specific data formats (text/CSV/binary).
If statement
is anything other than a COPY ... FROM STDIN ...
command, an error is
returned.
Command examples and accepted formats for COPY
data are shown here:
https://www.postgresql.org/docs/current/sql-copy.html
ยงNote
PgCopyIn::finish or PgCopyIn::abort must be called when finished or the connection will return an error the next time it is used.
Sourcepub async fn copy_out_raw<'c>(
&'c mut self,
statement: &str,
) -> Result<Pin<Box<dyn Stream<Item = Result<Bytes, Error>> + Send + 'c>>, Error>
pub async fn copy_out_raw<'c>( &'c mut self, statement: &str, ) -> Result<Pin<Box<dyn Stream<Item = Result<Bytes, Error>> + Send + 'c>>, Error>
Issue a COPY TO STDOUT
statement and transition the connection to streaming data
from Postgres. This is a more efficient way to export data from Postgres but
arrives in chunks of one of a few data formats (text/CSV/binary).
If statement
is anything other than a COPY ... TO STDOUT ...
command,
an error is returned.
Note that once this process has begun, unless you read the stream to completion, it can only be canceled in two ways:
- by closing the connection, or:
- by using another connection to kill the server process that is sending the data as shown in this StackOverflow answer.
If you donโt read the stream to completion, the next time the connection is used it will need to read and discard all the remaining queued data, which could take some time.
Command examples and accepted formats for COPY
data are shown here:
https://www.postgresql.org/docs/current/sql-copy.html
Trait Implementationsยง
Sourceยงimpl<'c> Acquire<'c> for &'c mut PgConnection
impl<'c> Acquire<'c> for &'c mut PgConnection
type Database = Postgres
type Connection = &'c mut <Postgres as Database>::Connection
fn acquire( self, ) -> Pin<Box<dyn Future<Output = Result<<&'c mut PgConnection as Acquire<'c>>::Connection, Error>> + Send + 'c>>
fn begin( self, ) -> Pin<Box<dyn Future<Output = Result<Transaction<'c, Postgres>, Error>> + Send + 'c>>
Sourceยงimpl AnyConnectionBackend for PgConnection
impl AnyConnectionBackend for PgConnection
Sourceยงfn close(
self: Box<PgConnection>,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send>>
fn close( self: Box<PgConnection>, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send>>
Sourceยงfn ping(
&mut self,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>
fn ping( &mut self, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>
Sourceยงfn begin(
&mut self,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>
fn begin( &mut self, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>
fn commit( &mut self, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>
fn rollback( &mut self, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>
fn start_rollback(&mut self)
Sourceยงfn shrink_buffers(&mut self)
fn shrink_buffers(&mut self)
Connection::shrink_buffers()
.fn as_migrate(&mut self) -> Result<&mut (dyn Migrate + Send + 'static), Error>
fn fetch_many<'q>( &'q mut self, query: &'q str, arguments: Option<AnyArguments<'q>>, ) -> Pin<Box<dyn Stream<Item = Result<Either<AnyQueryResult, AnyRow>, Error>> + Send + 'q>>
fn fetch_optional<'q>( &'q mut self, query: &'q str, arguments: Option<AnyArguments<'q>>, ) -> Pin<Box<dyn Future<Output = Result<Option<AnyRow>, Error>> + Send + 'q>>
fn prepare_with<'c, 'q>(
&'c mut self,
sql: &'q str,
_parameters: &[AnyTypeInfo],
) -> Pin<Box<dyn Future<Output = Result<AnyStatement<'q>, Error>> + Send + 'c>>where
'q: 'c,
fn describe<'q>( &'q mut self, sql: &'q str, ) -> Pin<Box<dyn Future<Output = Result<Describe<Any>, Error>> + Send + 'q>>
Sourceยงfn cached_statements_size(&self) -> usize
fn cached_statements_size(&self) -> usize
Sourceยงimpl<'lock, C> AsMut<PgConnection> for PgAdvisoryLockGuard<'lock, C>where
C: AsMut<PgConnection>,
Mutable access to the underlying connection is provided so it can still be used like normal,
even allowing locks to be taken recursively.
impl<'lock, C> AsMut<PgConnection> for PgAdvisoryLockGuard<'lock, C>where
C: AsMut<PgConnection>,
Mutable access to the underlying connection is provided so it can still be used like normal, even allowing locks to be taken recursively.
However, replacing the connection with a different one using, e.g. std::mem::replace()
is a logic error and will cause a warning to be logged by the PostgreSQL server when this
guard attempts to release the lock.
Sourceยงfn as_mut(&mut self) -> &mut PgConnection
fn as_mut(&mut self) -> &mut PgConnection
Sourceยงimpl AsMut<PgConnection> for PgConnection
impl AsMut<PgConnection> for PgConnection
Sourceยงfn as_mut(&mut self) -> &mut PgConnection
fn as_mut(&mut self) -> &mut PgConnection
Sourceยงimpl<'lock, C> AsRef<PgConnection> for PgAdvisoryLockGuard<'lock, C>
impl<'lock, C> AsRef<PgConnection> for PgAdvisoryLockGuard<'lock, C>
Sourceยงfn as_ref(&self) -> &PgConnection
fn as_ref(&self) -> &PgConnection
Sourceยงimpl Connection for PgConnection
impl Connection for PgConnection
type Database = Postgres
type Options = PgConnectOptions
Sourceยงfn close(self) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send>>
fn close(self) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send>>
Sourceยงfn ping(
&mut self,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>
fn ping( &mut self, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>
Sourceยงfn begin(
&mut self,
) -> Pin<Box<dyn Future<Output = Result<Transaction<'_, <PgConnection as Connection>::Database>, Error>> + Send + '_>>where
PgConnection: Sized,
fn begin(
&mut self,
) -> Pin<Box<dyn Future<Output = Result<Transaction<'_, <PgConnection as Connection>::Database>, Error>> + Send + '_>>where
PgConnection: Sized,
Sourceยงfn cached_statements_size(&self) -> usize
fn cached_statements_size(&self) -> usize
Sourceยงfn clear_cached_statements(
&mut self,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>
fn clear_cached_statements( &mut self, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>
Sourceยงfn shrink_buffers(&mut self)
fn shrink_buffers(&mut self)
Sourceยงfn transaction<'a, F, R, E>(
&'a mut self,
callback: F,
) -> Pin<Box<dyn Future<Output = Result<R, E>> + Send + 'a>>
fn transaction<'a, F, R, E>( &'a mut self, callback: F, ) -> Pin<Box<dyn Future<Output = Result<R, E>> + Send + 'a>>
Sourceยงimpl Debug for PgConnection
impl Debug for PgConnection
Sourceยงimpl<'c> Executor<'c> for &'c mut PgConnection
impl<'c> Executor<'c> for &'c mut PgConnection
type Database = Postgres
Sourceยงfn fetch_many<'e, 'q, E>(
self,
query: E,
) -> Pin<Box<dyn Stream<Item = Result<Either<PgQueryResult, PgRow>, Error>> + Send + 'e>>
fn fetch_many<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Stream<Item = Result<Either<PgQueryResult, PgRow>, Error>> + Send + 'e>>
Sourceยงfn fetch_optional<'e, 'q, E>(
self,
query: E,
) -> Pin<Box<dyn Future<Output = Result<Option<PgRow>, Error>> + Send + 'e>>
fn fetch_optional<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Future<Output = Result<Option<PgRow>, Error>> + Send + 'e>>
Sourceยงfn prepare_with<'e, 'q>(
self,
sql: &'q str,
parameters: &'e [PgTypeInfo],
) -> Pin<Box<dyn Future<Output = Result<PgStatement<'q>, Error>> + Send + 'e>>where
'q: 'e,
'c: 'e,
fn prepare_with<'e, 'q>(
self,
sql: &'q str,
parameters: &'e [PgTypeInfo],
) -> Pin<Box<dyn Future<Output = Result<PgStatement<'q>, Error>> + Send + 'e>>where
'q: 'e,
'c: 'e,
Sourceยงfn execute<'e, 'q, E>(
self,
query: E,
) -> Pin<Box<dyn Future<Output = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e>>
fn execute<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Future<Output = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e>>
Sourceยงfn execute_many<'e, 'q, E>(
self,
query: E,
) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e>>
fn execute_many<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e>>
Sourceยงfn fetch<'e, 'q, E>(
self,
query: E,
) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::Row, Error>> + Send + 'e>>
fn fetch<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::Row, Error>> + Send + 'e>>
Sourceยงfn fetch_all<'e, 'q, E>(
self,
query: E,
) -> Pin<Box<dyn Future<Output = Result<Vec<<Self::Database as Database>::Row>, Error>> + Send + 'e>>
fn fetch_all<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Future<Output = Result<Vec<<Self::Database as Database>::Row>, Error>> + Send + 'e>>
Vec
.Sourceยงimpl Migrate for PgConnection
impl Migrate for PgConnection
fn ensure_migrations_table( &mut self, ) -> Pin<Box<dyn Future<Output = Result<(), MigrateError>> + Send + '_>>
fn dirty_version( &mut self, ) -> Pin<Box<dyn Future<Output = Result<Option<i64>, MigrateError>> + Send + '_>>
fn list_applied_migrations( &mut self, ) -> Pin<Box<dyn Future<Output = Result<Vec<AppliedMigration>, MigrateError>> + Send + '_>>
fn lock( &mut self, ) -> Pin<Box<dyn Future<Output = Result<(), MigrateError>> + Send + '_>>
fn unlock( &mut self, ) -> Pin<Box<dyn Future<Output = Result<(), MigrateError>> + Send + '_>>
fn apply<'e, 'm>(
&'e mut self,
migration: &'m Migration,
) -> Pin<Box<dyn Future<Output = Result<Duration, MigrateError>> + Send + 'm>>where
'e: 'm,
fn revert<'e, 'm>(
&'e mut self,
migration: &'m Migration,
) -> Pin<Box<dyn Future<Output = Result<Duration, MigrateError>> + Send + 'm>>where
'e: 'm,
Auto Trait Implementationsยง
impl Freeze for PgConnection
impl !RefUnwindSafe for PgConnection
impl Send for PgConnection
impl Sync for PgConnection
impl Unpin for PgConnection
impl !UnwindSafe for PgConnection
Blanket Implementationsยง
Sourceยงimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Sourceยงfn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Sourceยงimpl<T> Instrument for T
impl<T> Instrument for T
Sourceยงfn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Sourceยงfn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Sourceยงimpl<T> IntoEither for T
impl<T> IntoEither for T
Sourceยงfn into_either(self, into_left: bool) -> Either<Self, Self> โ
fn into_either(self, into_left: bool) -> Either<Self, Self> โ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSourceยงfn into_either_with<F>(self, into_left: F) -> Either<Self, Self> โ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> โ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more