ALTER SCHEMA: renaming does not update string-literal function bodies

From: PG Doc comments form <noreply(at)postgresql(dot)org>
To: pgsql-docs(at)lists(dot)postgresql(dot)org
Cc: ben(at)mlabs(dot)city
Subject: ALTER SCHEMA: renaming does not update string-literal function bodies
Date: 2026-10-09 19:32:06
Message-ID: 179157432663.2048046.109109804107041431@wrigleys.postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-docs

The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/18/sql-alterschema.html
Description:

The ALTER SCHEMA page has no Notes section, and renaming a schema has one
consequence that is easy to miss.

Objects that store parsed references follow the rename: views, functions
with SQL-standard bodies (BEGIN ATOMIC), and privileges, including ALTER
DEFAULT PRIVILEGES entries. Function bodies written as string constants (AS
$$ ... $$, and every non-SQL language) are stored as text, so a
schema-qualified reference inside them keeps the old name and fails at the
next call. On 14.10, after ALTER SCHEMA old RENAME TO newsch, a LANGUAGE sql
function containing SELECT count(*) FROM old.t fails with ERROR: relation
"old.t" does not exist, while the BEGIN ATOMIC version returns the right
count.

Suggested note:

"Renaming a schema does not update references to it inside function and
procedure bodies written as string constants, since those are parsed only at
execution time (see CREATE FUNCTION). Views and SQL-standard function bodies
are updated automatically."

Responses

Browse pgsql-docs by date

  From Date Subject
Next Message David G. Johnston 2026-10-09 19:38:55 Re: Documentation improvement patch
Previous Message Matemática A3K 2026-10-09 17:43:36 Re: Documentation improvement patch