mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
Doc: update libpq's documentation for PQfn().
Mention specifically that you can't call aggregates, window functions, or procedures this way (the inability to call SRFs was already mentioned). Also, the claim that PQfn doesn't support NULL arguments or results has been a lie since we invented protocol 3.0. Not sure why this text was never updated for that, but do it now. Discussion: https://postgr.es/m/2039442.1615317309@sss.pgh.pa.us
This commit is contained in:
parent
4d225ba0e6
commit
7c810bd028
@ -5155,15 +5155,35 @@ typedef struct
|
|||||||
|
|
||||||
<para>
|
<para>
|
||||||
<function>PQfn</function> always returns a valid
|
<function>PQfn</function> always returns a valid
|
||||||
<structname>PGresult</structname> pointer. The result status should be
|
<structname>PGresult</structname> pointer, with
|
||||||
|
status <literal>PGRES_COMMAND_OK</literal> for success
|
||||||
|
or <literal>PGRES_FATAL_ERROR</literal> if some problem was encountered.
|
||||||
|
The result status should be
|
||||||
checked before the result is used. The caller is responsible for
|
checked before the result is used. The caller is responsible for
|
||||||
freeing the <structname>PGresult</structname> with
|
freeing the <structname>PGresult</structname> with
|
||||||
<xref linkend="libpq-PQclear"/> when it is no longer needed.
|
<xref linkend="libpq-PQclear"/> when it is no longer needed.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Note that it is not possible to handle null arguments, null results,
|
To pass a NULL argument to the function, set
|
||||||
nor set-valued results when using this interface.
|
the <parameter>len</parameter> field of that parameter structure
|
||||||
|
to <literal>-1</literal>; the <parameter>isint</parameter>
|
||||||
|
and <parameter>u</parameter> fields are then irrelevant.
|
||||||
|
(But this works only in protocol 3.0 and later connections.)
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
If the function returns NULL, <parameter>*result_len</parameter> is set
|
||||||
|
to <literal>-1</literal>, and <parameter>*result_buf</parameter> is not
|
||||||
|
modified. (This works only in protocol 3.0 and later connections; in
|
||||||
|
protocol 2.0, neither <parameter>*result_len</parameter>
|
||||||
|
nor <parameter>*result_buf</parameter> are modified.)
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Note that it is not possible to handle set-valued results when using
|
||||||
|
this interface. Also, the function must be a plain function, not an
|
||||||
|
aggregate, window function, or procedure.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
</sect1>
|
</sect1>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user