Pavel Stehule <pavel.stehule@gmail.com> writes: > other variant, I hope better than previous. We can introduce new long > option "--strict". With this active option, every pattern specified by -t > option have to have identifies exactly only one table. It can be used for > any other "should to exists" patterns - schemas. Initial implementation in > attachment.
I think this design is seriously broken. If I have '-t foo*' the code should not prevent that from matching multiple tables. What would the use case for such a restriction be?
the behave is same - only one real identifier is allowed
What would make sense to me is one or both of these ideas:
* require a match for a wildcard-free -t switch
* require at least one (not "exactly one") match for a wildcarded -t switch.
Neither of those is what you wrote, though.
If we implemented the second one of these, it would have to be controlled by a new switch, because there are plausible use cases for wildcards that sometimes don't match anything (not to mention backwards compatibility). There might be a reasonable argument for the first one being the default behavior, though; I'm not sure if we could get away with that from a compatibility perspective.
both your variant has sense for me. We can implement these points separately. And I see a first point as much more important than second. Because there is a significant risk of hidden broken backup.
We can implement a some long option with same functionality like now - for somebody who need backup some explicitly specified tables optionally. Maybe "--table-if-exists" ??