Struct sqlx_core::postgres::PgConnection
source · pub struct PgConnection { /* private fields */ }
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 Self>>
pub async fn copy_in_raw( &mut self, statement: &str ) -> Result<PgCopyIn<&mut Self>>
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<BoxStream<'c, Result<Bytes>>>
pub async fn copy_out_raw<'c>( &'c mut self, statement: &str ) -> Result<BoxStream<'c, Result<Bytes>>>
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
source§impl<'lock, C: AsMut<PgConnection>> AsMut<PgConnection> for PgAdvisoryLockGuard<'lock, C>
impl<'lock, C: AsMut<PgConnection>> AsMut<PgConnection> for PgAdvisoryLockGuard<'lock, C>
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<'lock, C: AsMut<PgConnection> + AsRef<PgConnection>> AsRef<PgConnection> for PgAdvisoryLockGuard<'lock, C>
impl<'lock, C: AsMut<PgConnection> + AsRef<PgConnection>> 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) -> BoxFuture<'static, Result<(), Error>>
fn close(self) -> BoxFuture<'static, Result<(), Error>>
source§fn ping(&mut self) -> BoxFuture<'_, Result<(), Error>>
fn ping(&mut self) -> BoxFuture<'_, Result<(), Error>>
source§fn begin(
&mut self
) -> BoxFuture<'_, Result<Transaction<'_, Self::Database>, Error>>where
Self: Sized,
fn begin( &mut self ) -> BoxFuture<'_, Result<Transaction<'_, Self::Database>, Error>>where Self: Sized,
source§fn cached_statements_size(&self) -> usize
fn cached_statements_size(&self) -> usize
source§fn clear_cached_statements(&mut self) -> BoxFuture<'_, Result<(), Error>>
fn clear_cached_statements(&mut self) -> BoxFuture<'_, Result<(), Error>>
source§fn transaction<'a, F, R, E>(
&'a mut self,
callback: F
) -> BoxFuture<'a, Result<R, E>>where
for<'c> F: FnOnce(&'c mut Transaction<'_, Self::Database>) -> BoxFuture<'c, Result<R, E>> + 'a + Send + Sync,
Self: Sized,
R: Send,
E: From<Error> + Send,
fn transaction<'a, F, R, E>( &'a mut self, callback: F ) -> BoxFuture<'a, Result<R, E>>where for<'c> F: FnOnce(&'c mut Transaction<'_, Self::Database>) -> BoxFuture<'c, Result<R, E>> + 'a + Send + Sync, Self: Sized, R: Send, E: From<Error> + Send,
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, E>(
self,
query: E
) -> BoxStream<'e, Result<Either<PgQueryResult, PgRow>, Error>>where
E: Execute<'q, Self::Database> + 'q,
'c: 'e,
fn fetch_many<'e, 'q: 'e, E>( self, query: E ) -> BoxStream<'e, Result<Either<PgQueryResult, PgRow>, Error>>where E: Execute<'q, Self::Database> + 'q, 'c: 'e,
source§fn fetch_optional<'e, 'q: 'e, E>(
self,
query: E
) -> BoxFuture<'e, Result<Option<PgRow>, Error>>where
E: Execute<'q, Self::Database> + 'q,
'c: 'e,
fn fetch_optional<'e, 'q: 'e, E>( self, query: E ) -> BoxFuture<'e, Result<Option<PgRow>, Error>>where E: Execute<'q, Self::Database> + 'q, 'c: 'e,
source§fn prepare_with<'e, 'q: 'e>(
self,
sql: &'q str,
parameters: &'e [PgTypeInfo]
) -> BoxFuture<'e, Result<PgStatement<'q>, Error>>where
'c: 'e,
fn prepare_with<'e, 'q: 'e>( self, sql: &'q str, parameters: &'e [PgTypeInfo] ) -> BoxFuture<'e, Result<PgStatement<'q>, Error>>where 'c: 'e,
source§fn execute<'e, 'q: 'e, E>(
self,
query: E
) -> BoxFuture<'e, Result<<Self::Database as Database>::QueryResult, Error>>where
E: Execute<'q, Self::Database> + 'q,
'c: 'e,
fn execute<'e, 'q: 'e, E>( self, query: E ) -> BoxFuture<'e, Result<<Self::Database as Database>::QueryResult, Error>>where E: Execute<'q, Self::Database> + 'q, 'c: 'e,
source§fn execute_many<'e, 'q: 'e, E>(
self,
query: E
) -> BoxStream<'e, Result<<Self::Database as Database>::QueryResult, Error>>where
E: Execute<'q, Self::Database> + 'q,
'c: 'e,
fn execute_many<'e, 'q: 'e, E>( self, query: E ) -> BoxStream<'e, Result<<Self::Database as Database>::QueryResult, Error>>where E: Execute<'q, Self::Database> + 'q, 'c: 'e,
source§fn fetch<'e, 'q: 'e, E>(
self,
query: E
) -> BoxStream<'e, Result<<Self::Database as Database>::Row, Error>>where
E: Execute<'q, Self::Database> + 'q,
'c: 'e,
fn fetch<'e, 'q: 'e, E>( self, query: E ) -> BoxStream<'e, Result<<Self::Database as Database>::Row, Error>>where E: Execute<'q, Self::Database> + 'q, 'c: 'e,
source§fn fetch_all<'e, 'q: 'e, E>(
self,
query: E
) -> BoxFuture<'e, Result<Vec<<Self::Database as Database>::Row>, Error>>where
E: Execute<'q, Self::Database> + 'q,
'c: 'e,
fn fetch_all<'e, 'q: 'e, E>( self, query: E ) -> BoxFuture<'e, Result<Vec<<Self::Database as Database>::Row>, Error>>where E: Execute<'q, Self::Database> + 'q, 'c: 'e,
Vec
.