summaryrefslogtreecommitdiffstats
path: root/doc/src/sgml/man3/SPI_execute_plan_extended.3
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/sgml/man3/SPI_execute_plan_extended.3')
-rw-r--r--doc/src/sgml/man3/SPI_execute_plan_extended.3138
1 files changed, 138 insertions, 0 deletions
diff --git a/doc/src/sgml/man3/SPI_execute_plan_extended.3 b/doc/src/sgml/man3/SPI_execute_plan_extended.3
new file mode 100644
index 0000000..7eab384
--- /dev/null
+++ b/doc/src/sgml/man3/SPI_execute_plan_extended.3
@@ -0,0 +1,138 @@
+'\" t
+.\" Title: SPI_execute_plan_extended
+.\" Author: The PostgreSQL Global Development Group
+.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
+.\" Date: 2023
+.\" Manual: PostgreSQL 15.5 Documentation
+.\" Source: PostgreSQL 15.5
+.\" Language: English
+.\"
+.TH "SPI_EXECUTE_PLAN_EXTENDED" "3" "2023" "PostgreSQL 15.5" "PostgreSQL 15.5 Documentation"
+.\" -----------------------------------------------------------------
+.\" * Define some portability stuff
+.\" -----------------------------------------------------------------
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.\" http://bugs.debian.org/507673
+.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
+.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+SPI_execute_plan_extended \- execute a statement prepared by \fBSPI_prepare\fR
+.SH "SYNOPSIS"
+.sp
+.nf
+int SPI_execute_plan_extended(SPIPlanPtr \fIplan\fR,
+ const SPIExecuteOptions * \fIoptions\fR)
+.fi
+.SH "DESCRIPTION"
+.PP
+\fBSPI_execute_plan_extended\fR
+executes a statement prepared by
+\fBSPI_prepare\fR
+or one of its siblings\&. This function is equivalent to
+\fBSPI_execute_plan\fR, except that information about the parameter values to be passed to the query is presented differently, and additional execution\-controlling options can be passed\&.
+.PP
+Query parameter values are represented by a
+ParamListInfo
+struct, which is convenient for passing down values that are already available in that format\&. Dynamic parameter sets can also be used, via hook functions specified in
+ParamListInfo\&.
+.PP
+Also, instead of always accumulating the result tuples into a
+\fISPI_tuptable\fR
+structure, tuples can be passed to a caller\-supplied
+DestReceiver
+object as they are generated by the executor\&. This is particularly helpful for queries that might generate many tuples, since the data can be processed on\-the\-fly instead of being accumulated in memory\&.
+.SH "ARGUMENTS"
+.PP
+SPIPlanPtr \fIplan\fR
+.RS 4
+prepared statement (returned by
+\fBSPI_prepare\fR)
+.RE
+.PP
+const SPIExecuteOptions * \fIoptions\fR
+.RS 4
+struct containing optional arguments
+.RE
+.PP
+Callers should always zero out the entire
+\fIoptions\fR
+struct, then fill whichever fields they want to set\&. This ensures forward compatibility of code, since any fields that are added to the struct in future will be defined to behave backwards\-compatibly if they are zero\&. The currently available
+\fIoptions\fR
+fields are:
+.PP
+ParamListInfo \fIparams\fR
+.RS 4
+data structure containing query parameter types and values; NULL if none
+.RE
+.PP
+bool \fIread_only\fR
+.RS 4
+true
+for read\-only execution
+.RE
+.PP
+bool \fIallow_nonatomic\fR
+.RS 4
+true
+allows non\-atomic execution of CALL and DO statements
+.RE
+.PP
+bool \fImust_return_tuples\fR
+.RS 4
+if
+true, raise error if the query is not of a kind that returns tuples (this does not forbid the case where it happens to return zero tuples)
+.RE
+.PP
+uint64 \fItcount\fR
+.RS 4
+maximum number of rows to return, or
+0
+for no limit
+.RE
+.PP
+DestReceiver * \fIdest\fR
+.RS 4
+DestReceiver
+object that will receive any tuples emitted by the query; if NULL, result tuples are accumulated into a
+\fISPI_tuptable\fR
+structure, as in
+\fBSPI_execute_plan\fR
+.RE
+.PP
+ResourceOwner \fIowner\fR
+.RS 4
+The resource owner that will hold a reference count on the plan while it is executed\&. If NULL, CurrentResourceOwner is used\&. Ignored for non\-saved plans, as SPI does not acquire reference counts on those\&.
+.RE
+.SH "RETURN VALUE"
+.PP
+The return value is the same as for
+\fBSPI_execute_plan\fR\&.
+.PP
+When
+\fIoptions\->dest\fR
+is NULL,
+\fISPI_processed\fR
+and
+\fISPI_tuptable\fR
+are set as in
+\fBSPI_execute_plan\fR\&. When
+\fIoptions\->dest\fR
+is not NULL,
+\fISPI_processed\fR
+is set to zero and
+\fISPI_tuptable\fR
+is set to NULL\&. If a tuple count is required, the caller\*(Aqs
+DestReceiver
+object must calculate it\&.