Skip to main content

PgTransaction

Struct PgTransaction 

Source
pub struct PgTransaction { /* private fields */ }
Expand description

An explicit transaction on a single connection checked out of the pool. deadpool-postgres’s default recycling method (Fast) does not run any reset query when a connection is returned to the pool — unlike pool release, which always issues ROLLBACK itself if the released connection still has an open transaction. That safety net has to be reproduced here explicitly, or a connection released mid- or aborted-transaction would silently corrupt the next borrower’s session. Hence commit rolls back on its own failure before returning the error, and both commit/rollback consume self so the connection is only ever returned to the pool (via Drop) once it is guaranteed to be back in a clean, non-transactional state.

Implementations§

Source§

impl PgTransaction

Source

pub fn types(&self) -> &ExtensionOids

The type OIDs discovered when the owning pool connected.

Source

pub async fn query_typed_with_globals( &self, sql: &str, params: &[DecodedValue], ext: &ExtensionOids, globals: &str, ) -> Result<Vec<DecodedValue>>

query_typed, with pylon.globals set for the rest of this transaction — see PgPool::query_typed_with_globals.

Source

pub async fn execute_typed_with_globals( &self, sql: &str, params: &[DecodedValue], globals: &str, ) -> Result<u64>

execute_typed, with pylon.globals set — see query_typed_with_globals.

Source

pub async fn query_typed( &self, sql: &str, params: &[DecodedValue], ext: &ExtensionOids, ) -> Result<Vec<DecodedValue>>

Source

pub async fn execute_typed( &self, sql: &str, params: &[DecodedValue], ) -> Result<u64>

Source

pub async fn batch_execute(&self, sql: &str) -> Result<()>

Runs sql via the simple query protocol — see PgPool::batch_execute for why migration DDL steps need this instead of execute_typed.

Source

pub async fn savepoint(&self, name: &str) -> Result<()>

Establishes a named savepoint inside this transaction. Used by migration execution’s dev-mode rebase: a step runs inside a savepoint so an “already exists” error (from watch having applied the same DDL earlier) can be rolled back to just that step instead of aborting the whole outer transaction.

Source

pub async fn release_savepoint(&self, name: &str) -> Result<()>

Source

pub async fn rollback_to_savepoint(&self, name: &str) -> Result<()>

Source

pub async fn commit(self) -> Result<()>

Commits the transaction. On failure (e.g. a serialization failure or deadlock detected at COMMIT time), best-effort rolls back first so the connection isn’t returned to the pool still aborted — the original commit error is what’s returned either way.

Source

pub async fn rollback(self) -> Result<()>

Trait Implementations§

Source§

impl Debug for PgTransaction

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more