| 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."
| 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 |