pgsql: Allow db.schema.table patterns, but complain about random garbag
Robert Haas <rhaas@postgresql.org>
From: Robert Haas <rhaas@postgresql.org>
To: pgsql-committers@lists.postgresql.org
Date: 2022-04-20T15:52:12Z
Lists: pgsql-hackers
Allow db.schema.table patterns, but complain about random garbage. psql, pg_dump, and pg_amcheck share code to process object name patterns like 'foo*.bar*' to match all tables with names starting in 'bar' that are in schemas starting with 'foo'. Before v14, any number of extra name parts were silently ignored, so a command line '\d foo.bar.baz.bletch.quux' was interpreted as '\d bletch.quux'. In v14, as a result of commit 2c8726c4b0a496608919d1f78a5abc8c9b6e0868, we instead treated this as a request for table quux in a schema named 'foo.bar.baz.bletch'. That caused problems for people like Justin Pryzby who were accustomed to copying strings of the form db.schema.table from messages generated by PostgreSQL itself and using them as arguments to \d. Accordingly, revise things so that if an object name pattern contains more parts than we're expecting, we throw an error, unless there's exactly one extra part and it matches the current database name. That way, thisdb.myschema.mytable is accepted as meaning just myschema.mytable, but otherdb.myschema.mytable is an error, and so is some.random.garbage.myschema.mytable. Mark Dilger, per report from Justin Pryzby and discussion among various people. Discussion: https://www.postgresql.org/message-id/20211013165426.GD27491%40telsasoft.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/d2d35479796c3510e249d6fc72adbd5df918efbf Modified Files -------------- doc/src/sgml/ref/psql-ref.sgml | 17 +- src/bin/pg_amcheck/pg_amcheck.c | 27 +- src/bin/pg_amcheck/t/002_nonesuch.pl | 99 ++++- src/bin/pg_dump/pg_dump.c | 65 ++- src/bin/pg_dump/pg_dumpall.c | 13 +- src/bin/pg_dump/t/002_pg_dump.pl | 107 +++++ src/bin/psql/describe.c | 504 ++++++++++++++-------- src/fe_utils/string_utils.c | 129 ++++-- src/include/fe_utils/string_utils.h | 6 +- src/test/regress/expected/psql.out | 804 +++++++++++++++++++++++++++++++++++ src/test/regress/sql/psql.sql | 242 +++++++++++ 11 files changed, 1796 insertions(+), 217 deletions(-)
Commits
-
Inhibit mingw CRT's auto-globbing of command line arguments
- 58887d58c6ad 10.21 landed
- b90ce0dd7499 11.16 landed
- 01f2bc5af4ff 12.11 landed
- d9cede2c3bfd 13.7 landed
- 71f394667c82 14.3 landed
- b787c554c264 15.0 landed
-
Remove some recently-added pg_dump test cases.
- 75a006beef6c 14.3 landed
- a66e722cc118 15.0 landed
-
Allow db.schema.table patterns, but complain about random garbage.
- d2d35479796c 15.0 cited
-
In PostgresNode.pm, don't pass SQL to psql on the command line
- 11e9caff82bc 14.0 cited
-
Factor pattern-construction logic out of processSQLNamePattern.
- 2c8726c4b0a4 14.0 cited