zero_postgres/pipeline.rs
1//! Shared pipeline types.
2
3use crate::state::extended::PreparedStatement;
4
5/// A ticket for a queued pipeline operation.
6///
7/// Created by [`Pipeline::exec`].
8/// Claim with [`Pipeline::claim_collect`], [`Pipeline::claim_one`], or [`Pipeline::claim_drop`].
9#[derive(Debug, Clone, Copy)]
10#[must_use]
11pub struct Ticket<'a> {
12 pub(crate) seq: usize,
13 /// Reference to prepared statement (for cached RowDescription), None for raw SQL.
14 pub(crate) stmt: Option<&'a PreparedStatement>,
15}
16
17/// What response sequence to expect for a queued operation.
18#[derive(Debug, Clone, Copy, PartialEq, Eq)]
19pub(crate) enum Expectation {
20 /// Parse + Bind + Execute: ParseComplete + BindComplete + RowDescription/NoData + DataRow* + terminal
21 ParseBindExecute,
22 /// Bind + Execute with cached RowDescription: BindComplete + DataRow* + terminal
23 BindExecute,
24 /// Sync: ReadyForQuery
25 Sync,
26}