Thread

  1. Re: Include schema-qualified names in publication error messages.

    vignesh C <vignesh21@gmail.com> — 2026-05-11T11:04:39Z

    On Mon, 11 May 2026 at 13:18, Peter Smith <smithpb2250@gmail.com> wrote:
    >
    > I was looking at the code that got pushed [1] for this thread, and I
    > think there is some quirky quote behaviour:
    >
    > * The code ends up calling 'quote_qualified_identifier'. That function
    > does "quoting each component if necessary" (the function name is a
    > hint!).
    >
    > * Meanwhile, the error message where the result is substituted already
    > has hardwired quotes:
    > errormsg = gettext_noop("cannot specify relation \"%s\" in the
    > publication EXCEPT clause");
    >
    > So, nested quoting might occur in the error message.
    >
    > e.g.
    > ------
    > test_pub=# CREATE UNLOGGED TABLE "my table"(c int);
    > CREATE TABLE
    > test_pub=# CREATE PUBLICATION pub1 FOR ALL TABLES EXCEPT (TABLE "my table");
    > ERROR:  cannot specify relation "public."my table"" in the publication
    > EXCEPT clause
    > DETAIL:  This operation is not supported for unlogged tables.
    > ------
    >
    > Is that quote nesting OK?
    
    I think this is acceptable, since we already emit similar quoting in
    other error messages involving schema qualified identifiers.
    For example:
    CREATE MATERIALIZED VIEW  "my matv1" as select sum(c1) from t1;
    
    REFRESH MATERIALIZED VIEW concurrently "my matv1";
    produces:
    ERROR:  cannot refresh materialized view "public."my matv1"" concurrently
    HINT:  Create a unique index with no WHERE clause on one or more
    columns of the materialized view.
    
    So the current behavior appears to be consistent with existing
    PostgreSQL error reporting.
    
    Regards,
    Vignesh