Обсуждение: 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:
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