Please make a note regarding the PL/pgSQL FOUND variable
The following documentation comment has been logged on the website:
Page: https://www.postgresql.org/docs/16/sql-createtableas.html
Description:
Since I was recently bitten by the fact that CREATE TABLE AS doesn't set the
PL/pgSQL variable FOUND, it would be nice if that were explicitly noted in
the documentation. Alternatively, if it COULD set the FOUND variable, that
would be great, although I realize the difficulty of that when coupled with
IF NOT EXISTS.
PG Doc comments form <noreply@postgresql.org> writes:
Since I was recently bitten by the fact that CREATE TABLE AS doesn't set the
PL/pgSQL variable FOUND, it would be nice if that were explicitly noted in
the documentation. Alternatively, if it COULD set the FOUND variable, that
would be great, although I realize the difficulty of that when coupled with
IF NOT EXISTS.
The documentation of FOUND is already quite explicit about which kinds
of statements set it:
https://www.postgresql.org/docs/current/plpgsql-statements.html#PLPGSQL-STATEMENTS-DIAGNOSTICS
I'm disinclined to put notes about PL/pgSQL features into command
reference pages that have nothing to do with PL/pgSQL.
regards, tom lane
Perhaps it could be explicitly stated on that page, then? Part of the
confusion arises from the semantic differences between SELECT INTO and
CREATE TABLE AS SELECT solely as used within PL/pgSQL, which is exacerbated
for people coming from a different SQL variant, such as T-SQL. I agree that
the documentation is explicit regarding which statements are supported for
FOUND, but this would be the explicit enumeration of a case where it is not
that has enough overlap with the supported cases as to potentially lead to
confusion. I do not think such could possibly detract from the
documentation in any way.
On Sat, Nov 4, 2023 at 10:16 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Show quoted text
PG Doc comments form <noreply@postgresql.org> writes:
Since I was recently bitten by the fact that CREATE TABLE AS doesn't set
the
PL/pgSQL variable FOUND, it would be nice if that were explicitly noted
in
the documentation. Alternatively, if it COULD set the FOUND variable,
that
would be great, although I realize the difficulty of that when coupled
with
IF NOT EXISTS.
The documentation of FOUND is already quite explicit about which kinds
of statements set it:https://www.postgresql.org/docs/current/plpgsql-statements.html#PLPGSQL-STATEMENTS-DIAGNOSTICS
I'm disinclined to put notes about PL/pgSQL features into command
reference pages that have nothing to do with PL/pgSQL.regards, tom lane