Re: proposal: possibility to read dumped table's name from file - Mailing list pgsql-hackers
From | Tomas Vondra |
---|---|
Subject | Re: proposal: possibility to read dumped table's name from file |
Date | |
Msg-id | 005b4ddd-f603-a64d-b733-f239ba764c47@enterprisedb.com Whole thread Raw |
In response to | Re: proposal: possibility to read dumped table's name from file (Alvaro Herrera <alvherre@2ndquadrant.com>) |
List | pgsql-hackers |
On 9/21/21 3:28 PM, Alvaro Herrera wrote: > I definitely agree that we should have two files, one for config and > another one for filter, since their purposes are orthogonal and their > formats are likely different; trying to cram the filter specification in > the config file seems unfriendly because it'd force users to write the > filter in whatever alien grammar used for the config file. Also, this > would make it easier to use a single config file with a bunch of > different filter files. > +1, that is pretty much excatly what I argued for not too long ago. > On 2021-Sep-21, Daniel Gustafsson wrote: > >> I'm not convinced that we can/should change or remove a commandline parameter >> in a coming version when there might be scripts expecting it to work in a >> specific way. Having a --filter as well as a --config where the configfile can >> refer to the filterfile also passed via --filter sounds like problem waiting to >> happen, so I think we need to settle how we want to interact with this file >> before anything goes in. > > I think both the filter and the hypothetical config file are going to > interact (be redundant) with almost all already existing switches, and > there's no need to talk about removing anything (e.g., nobody would > argue for the removal of "-t" even though that's redundant with the > filter file). > > I see no problem with the config file specifying a filter file. > > AFAICS if the config file specifies a filter and the user also specifies > a filter in the command line, we have two easy options: raise an error > about the redundant option, or have the command line option supersede > the one in the config file. The latter strikes me as the more useful > behavior, and it's in line with what other tools do in similar cases, so > that's what I propose doing. > > (There might be less easy options too, such as somehow combining the two > filters, but offhand I don't see any reason why this is real-world > useful, so I don't propose doing that.) > Well, I think we already have to do decisions like that, because you can do e.g. this: pg_dump -T t -t t So we already do combine the switches, and we do this: When both -t and -T are given, the behavior is to dump just the tables that match at least one -t switch but no -T switches. If -T appears without -t, then tables matching -T are excluded from what is otherwise a normal dump. That seems fairly reasonable, and I don't see why not to use the same logic for combining patterns no matter where we got them (filter file, command-line option, etc.). Just combine everything, and then check if there's any "exclude" rule. If yes, we're done - exclude. If not, check if there's "include" rule. If not, still exclude. Otherwise include. Seems reasonable and consistent to me, and I don't see why not to allow multiple --filter parameters. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
pgsql-hackers by date: