> On Mar 22, 2022, at 11:04 AM, Robert Haas <robertmh...@gmail.com> wrote: > > This patch adds three new arguments to processSQLNamePattern() and > documents one of them. It adds three new parameters to > patternToSQLRegex() as well, and documents none of them.
This next patch adds the missing comments. > I think that > the text of the comment might need some updating too, in particular > the sentence "Additional dots in the name portion are not treated as > special." Changed. > There are no comments explaining the left_is_literal stuff. It appears > that your intention here is that if the pattern string supplied by the > user contains any of *?|+()[]{}.^\ not surrounded by double-quotes, we > signal the caller. Some callers then use this to issue a complaint > that the database name must be a literal. To me, this behavior doesn't > really make sense. If something is a literal, that means we're not > going to interpret the special characters that it contains. Here, we > are interpreting the special characters just so we can complain that > they exist. It seems to me that a simpler solution would be to not > interpret them at all. I attach a patch showing what I mean by that. > It just rips out the dbname_is_literal stuff in favor of doing nothing > at all. To put the whole thing another way, if the user types "\d > }.public.ft", your code wants to complain about the fact that the user > is trying to use regular expression characters in a place where they > are not allowed to do that. I argue that we should instead just be > comparing "}" against the database name and see whether it happens to > match. I think your change is fine, so I've rolled it into this next patch.
v7-0001-Reject-patterns-with-too-many-parts-or-wrong-db.patch
Description: Binary data
— Mark Dilger EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company