pub struct Cluster { /* private fields */ }
Expand description
A cluster of several replicated PostgreSQL nodes.
Implementations
sourceimpl Cluster
impl Cluster
sourcepub fn connect(&self, dsn: String, mul: u8) -> Result<(), String>
pub fn connect(&self, dsn: String, mul: u8) -> Result<(), String>
Setup a database connection to a [replicated] node.
Replicated clusters have several nodes usually. This method should be used for each node.
Nodes can be added on the go. E.g. add a first node, fire some queries, add a second node.
dsn
- A keyword=value connection string.mul
- Pipelining support inlibpq
is currently limited to one batch of queries per connection, but parallelism can be increased by adding the same connection several times.
sourcepub fn execute<I: IntoQueryPieces>(&self, sql: I) -> PgFuture
pub fn execute<I: IntoQueryPieces>(&self, sql: I) -> PgFuture
Schedule an SQL command to be executed on one of the nodes.
SQL will be run inside a transaction.
When using multiple statements, the library user must specify the exact number of top-level statements that the PostgreSQL server is going to see. For example:
// Running two statements as a single op:
cluster.execute ((2, "SELECT 1; SELECT 2"));
// Running three statements:
cluster.execute ((3, "\
DELETE FROM foo; \
INSERT INTO foo VALUES (1); \
INSERT INTO foo VALUES (2)"));
To avoid SQL injection one might use the escapes provided by PgQueryPiece
:
use pg_async::PgQueryPiece::{Static as S, Plain as P, Literal as L, Bytea as B};
cluster.execute (vec! [S ("SELECT * FROM foo WHERE bar = "), L (bar)]);
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for Cluster
impl Send for Cluster
impl Sync for Cluster
impl Unpin for Cluster
impl !UnwindSafe for Cluster
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more