Fix publication syntax error message

There was some odd wording in corner-case gram.y error messages "some
error ... at or near", which appears to have been modeled after "syntax
error" messages.  However, they don't work that way, and they're just
wrong.  They're also uncovered by tests.  Remove the trailing words,
and also add tests.

They were introduced with 5a2832465fd8; backpatch to 15.

Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
This commit is contained in:
Alvaro Herrera 2023-05-10 18:26:10 +02:00
parent ccd21e1cfa
commit 8e1d68c8f8
No known key found for this signature in database
GPG Key ID: 1C20ACB9D5C564AE
3 changed files with 15 additions and 2 deletions

View File

@ -18447,7 +18447,7 @@ preprocess_pubobj_list(List *pubobjspec_list, core_yyscan_t yyscanner)
if (!pubobj->name && !pubobj->pubtable)
ereport(ERROR,
errcode(ERRCODE_SYNTAX_ERROR),
errmsg("invalid table name at or near"),
errmsg("invalid table name"),
parser_errposition(pubobj->location));
if (pubobj->name)
@ -18489,7 +18489,7 @@ preprocess_pubobj_list(List *pubobjspec_list, core_yyscan_t yyscanner)
else
ereport(ERROR,
errcode(ERRCODE_SYNTAX_ERROR),
errmsg("invalid schema name at or near"),
errmsg("invalid schema name"),
parser_errposition(pubobj->location));
}

View File

@ -132,6 +132,15 @@ Tables:
Tables from schemas:
"pub_test"
-- weird parser corner case
CREATE PUBLICATION testpub_parsertst FOR TABLE pub_test.testpub_nopk, CURRENT_SCHEMA;
ERROR: invalid table name
LINE 1: ...estpub_parsertst FOR TABLE pub_test.testpub_nopk, CURRENT_SC...
^
CREATE PUBLICATION testpub_parsertst FOR TABLES IN SCHEMA foo, test.foo;
ERROR: invalid schema name
LINE 1: ...CATION testpub_parsertst FOR TABLES IN SCHEMA foo, test.foo;
^
-- should be able to add a table of the same schema to the schema publication
ALTER PUBLICATION testpub_forschema ADD TABLE pub_test.testpub_nopk;
\dRp+ testpub_forschema

View File

@ -79,6 +79,10 @@ CREATE PUBLICATION testpub_for_tbl_schema FOR TABLES IN SCHEMA pub_test, TABLE p
RESET client_min_messages;
\dRp+ testpub_for_tbl_schema
-- weird parser corner case
CREATE PUBLICATION testpub_parsertst FOR TABLE pub_test.testpub_nopk, CURRENT_SCHEMA;
CREATE PUBLICATION testpub_parsertst FOR TABLES IN SCHEMA foo, test.foo;
-- should be able to add a table of the same schema to the schema publication
ALTER PUBLICATION testpub_forschema ADD TABLE pub_test.testpub_nopk;
\dRp+ testpub_forschema