Re: psql: Fix CREATE SCHEMA scanning of nested routine bodies

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Chao Li <li.evan.chao@gmail.com>
Cc: Postgres hackers <pgsql-hackers@lists.postgresql.org>, Kirill Reshke <reshkekirill@gmail.com>, jian he <jian.universality@gmail.com>
Date: 2026-06-23T18:16:52Z
Lists: pgsql-hackers
Chao Li <li.evan.chao@gmail.com> writes:
> Following your suggestion, I moved the "{identifier}" logic into a new helper psqlscan_track_identifier(), and added “create_schema_identifiers" to PsqlScanStateData to track identifiers from the current top-level CREATE element within CREATE SCHEMA in the same way as the top level “identifiers". I also added a few more test cases.

> Please see the attached v2 for details.

Pushed with some mostly-cosmetic changes.  Notably, I renamed the
existing "identifiers" field to help distinguish it from the new one.

I didn't use your test cases because it seemed unduly expensive to do
it that way.  We can perfectly well exercise this as part of plain-SQL
regression testing, so I just added a booby-trap case in
create_schema.sql.  Without this fix, psql marches on and tries to run
the various \d commands after the CREATE SCHEMA before it's sent the
CREATE SCHEMA command.  So even though no error is reported, the
output is quite different.

			regards, tom lane



Commits

  1. psql: Tighten heuristics for BEGIN/END within CREATE SCHEMA.

  2. Execute foreign key constraints in CREATE SCHEMA at the end.