#[non_exhaustive]pub struct Portal<S> {
pub name: String,
pub statement: Arc<StoredStatement<S>>,
pub parameter_format: Format,
pub parameters: Vec<Option<Bytes>>,
pub result_column_format: Format,
pub state: Arc<Mutex<PortalExecutionState>>,
}Expand description
Represent a prepared sql statement and its parameters bound by a Bind
request.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.name: String§statement: Arc<StoredStatement<S>>§parameter_format: Format§parameters: Vec<Option<Bytes>>§result_column_format: Format§state: Arc<Mutex<PortalExecutionState>>Implementations§
Source§impl<S: Clone> Portal<S>
impl<S: Clone> Portal<S>
Sourcepub fn try_new(
bind: &Bind,
statement: Arc<StoredStatement<S>>,
) -> PgWireResult<Self>
pub fn try_new( bind: &Bind, statement: Arc<StoredStatement<S>>, ) -> PgWireResult<Self>
Try to create portal from bind command and current client state
Sourcepub fn new_cursor(name: String, statement: Arc<StoredStatement<S>>) -> Self
pub fn new_cursor(name: String, statement: Arc<StoredStatement<S>>) -> Self
Sourcepub fn parameter_len(&self) -> usize
pub fn parameter_len(&self) -> usize
Get number of parameters
Sourcepub fn parameter<'a, T>(
&'a self,
idx: usize,
pg_type: &Type,
) -> PgWireResult<Option<T>>where
T: FromSqlOwned + FromSqlText<'a>,
pub fn parameter<'a, T>(
&'a self,
idx: usize,
pg_type: &Type,
) -> PgWireResult<Option<T>>where
T: FromSqlOwned + FromSqlText<'a>,
Attempt to get parameter at given index as type T.
Sourcepub fn state(&self) -> Arc<Mutex<PortalExecutionState>>
pub fn state(&self) -> Arc<Mutex<PortalExecutionState>>
Get a handle to the portal’s execution state.
Sourcepub async fn start(&self, response: QueryResponse)
pub async fn start(&self, response: QueryResponse)
Transition the portal from Initial to Suspended with the given
query response.
This is called by the query handler after executing the portal’s
statement, before calling fetch() to retrieve rows.
Sourcepub async fn fetch(&self, max_rows: usize) -> PgWireResult<FetchResult>
pub async fn fetch(&self, max_rows: usize) -> PgWireResult<FetchResult>
Fetch up to max_rows from a portal’s suspended state.
Returns a FetchResult containing the rows, the row schema, and
whether the portal is still suspended (has more rows). When the
underlying stream is exhausted, the portal transitions to Finished.
When max_rows is 0, all remaining rows are fetched.
Returns an error if the portal is in Initial state (call
start() first) or if the stream yields an error.