[−][src]Struct rbatis_core::postgres::PgConnection
An asynchronous connection to a Postgres database.
The connection string expected by Connect::connect should be a PostgreSQL connection string, as documented at https://www.postgresql.org/docs/12/libpq-connect.html#LIBPQ-CONNSTRING
TLS Support (requires tls feature)
This connection type supports the same sslmode query parameter that libpq does in
connection strings: https://www.postgresql.org/docs/12/libpq-ssl.html
postgresql://<user>[:<password>]@<host>[:<port>]/<database>[?sslmode=<ssl-mode>[&sslcrootcert=<path>]]
where
ssl-mode = disable | allow | prefer | require | verify-ca | verify-full
path = percent (URL) encoded path on the local machine
If the tls feature is not enabled, disable, allow and prefer are no-ops and require,
verify-ca and verify-full are forbidden (attempting to connect with these will return
an error).
If the tls feature is enabled, an upgrade to TLS is attempted on every connection by default
(equivalent to sslmode=prefer). If the server does not support TLS (because it was not
started with a valid certificate and key, see https://www.postgresql.org/docs/12/ssl-tcp.html)
then it falls back to an unsecured connection and logs a warning.
Add sslmode=require to your connection string to emit an error if the TLS upgrade fails.
If you're running Postgres locally, your connection string might look like this:
postgresql://root:password@localhost/my_database?sslmode=require
However, like with libpq the server certificate is not checked for validity by default.
Specifying sslmode=verify-ca will cause the TLS upgrade to verify the server's SSL
certificate against a local CA root certificate; this is not the system root certificate
but is instead expected to be specified in one of a few ways:
-
The path to the certificate can be specified by adding the
sslrootcertquery parameter to the connection string. (Remember to percent-encode it!) -
The path may also be specified via the
PGSSLROOTCERTenvironment variable (which should not be percent-encoded.) -
Otherwise, the library will look for the Postgres global root CA certificate in the default location:
$HOME/.postgresql/root.crton POSIX systems%APPDATA%\postgresql\root.crton Windows
These locations are documented here: https://www.postgresql.org/docs/12/libpq-ssl.html#LIBQ-SSL-CERTIFICATES If the root certificate cannot be found by any of these means then the TLS upgrade will fail.
If sslmode=verify-full is specified, in addition to checking the certificate as with
sslmode=verify-ca, the hostname in the connection string will be verified
against the hostname in the server certificate, so they must be the same for the TLS
upgrade to succeed.
Trait Implementations
impl Connect for PgConnection[src]
fn connect<T>(url: T) -> BoxFuture<'static, Result<PgConnection>> where
T: TryInto<Url, Error = ParseError>,
Self: Sized, [src]
T: TryInto<Url, Error = ParseError>,
Self: Sized,
impl Connection for PgConnection[src]
fn close(self) -> BoxFuture<'static, Result<()>>[src]
fn ping(&mut self) -> BoxFuture<'_, Result<()>>[src]
fn begin(self) -> BoxFuture<'static, Result<Transaction<Self>>> where
Self: Sized, [src]
Self: Sized,
impl Executor for PgConnection[src]
type Database = Postgres
The specific database that this type is implemented for.
fn execute<'e, 'q: 'e, 'c: 'e, E: 'e>(
&'c mut self,
query: E
) -> BoxFuture<'e, Result<u64>> where
E: Execute<'q, Self::Database>, [src]
&'c mut self,
query: E
) -> BoxFuture<'e, Result<u64>> where
E: Execute<'q, Self::Database>,
fn cursor<'q, E>(&mut self, query: E) -> PgCursor<'_, 'q> where
E: Execute<'q, Self::Database>, [src]
E: Execute<'q, Self::Database>,
impl<'c> RefExecutor<'c> for &'c mut PgConnection[src]
Auto Trait Implementations
impl !RefUnwindSafe for PgConnection
impl Send for PgConnection
impl Sync for PgConnection
impl Unpin for PgConnection
impl !UnwindSafe for PgConnection
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,