pub struct Cluster { /* private fields */ }
Expand description
A cluster of several replicated PostgreSQL nodes.
Implementations§
Source§impl 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 !Freeze for Cluster
impl !RefUnwindSafe for Cluster
impl Send for Cluster
impl Sync for Cluster
impl Unpin for Cluster
impl !UnwindSafe for Cluster
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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