sqlx_postgres/
lib.rs

1//! **PostgreSQL** database driver.
2
3#[macro_use]
4extern crate sqlx_core;
5
6use crate::executor::Executor;
7
8mod advisory_lock;
9mod arguments;
10mod column;
11mod connection;
12mod copy;
13mod database;
14mod error;
15mod io;
16mod listener;
17mod message;
18mod options;
19mod query_result;
20mod row;
21mod statement;
22mod transaction;
23mod type_checking;
24mod type_info;
25pub mod types;
26mod value;
27
28#[cfg(feature = "any")]
29// We are hiding the any module with its AnyConnectionBackend trait
30// so that IDEs don't show it in the autocompletion list
31// and end users don't accidentally use it. This can result in
32// nested transactions not behaving as expected.
33// For more information, see https://github.com/launchbadge/sqlx/pull/3254#issuecomment-2144043823
34#[doc(hidden)]
35pub mod any;
36
37#[doc(hidden)]
38pub use copy::PG_COPY_MAX_DATA_LEN;
39
40#[cfg(feature = "migrate")]
41mod migrate;
42
43#[cfg(feature = "migrate")]
44mod testing;
45
46pub(crate) use sqlx_core::driver_prelude::*;
47
48pub use advisory_lock::{PgAdvisoryLock, PgAdvisoryLockGuard, PgAdvisoryLockKey};
49pub use arguments::{PgArgumentBuffer, PgArguments};
50pub use column::PgColumn;
51pub use connection::PgConnection;
52pub use copy::{PgCopyIn, PgPoolCopyExt};
53pub use database::Postgres;
54pub use error::{PgDatabaseError, PgErrorPosition};
55pub use listener::{PgListener, PgNotification};
56pub use message::PgSeverity;
57pub use options::{PgConnectOptions, PgSslMode};
58pub use query_result::PgQueryResult;
59pub use row::PgRow;
60pub use statement::PgStatement;
61pub use transaction::PgTransactionManager;
62pub use type_info::{PgTypeInfo, PgTypeKind};
63pub use types::PgHasArrayType;
64pub use value::{PgValue, PgValueFormat, PgValueRef};
65
66/// An alias for [`Pool`][crate::pool::Pool], specialized for Postgres.
67pub type PgPool = crate::pool::Pool<Postgres>;
68
69/// An alias for [`PoolOptions`][crate::pool::PoolOptions], specialized for Postgres.
70pub type PgPoolOptions = crate::pool::PoolOptions<Postgres>;
71
72/// An alias for [`Executor<'_, Database = Postgres>`][Executor].
73pub trait PgExecutor<'c>: Executor<'c, Database = Postgres> {}
74impl<'c, T: Executor<'c, Database = Postgres>> PgExecutor<'c> for T {}
75
76/// An alias for [`Transaction`][crate::transaction::Transaction], specialized for Postgres.
77pub type PgTransaction<'c> = crate::transaction::Transaction<'c, Postgres>;
78
79impl_into_arguments_for_arguments!(PgArguments);
80impl_acquire!(Postgres, PgConnection);
81impl_column_index_for_row!(PgRow);
82impl_column_index_for_statement!(PgStatement);
83impl_encode_for_option!(Postgres);