On Sat, Oct 07, 2006 at 06:22:19PM -0700, David Fetter wrote:
> On Fri, Oct 06, 2006 at 10:28:21PM -0400, Gregory Stark wrote:
> > Tom Lane <[EMAIL PROTECTED]> writes:
> > 
> > > The existing patch's behavior is that "the rightmost switch wins",
> > > ie, if an object's name matches more than one pattern then it is
> > > included or excluded according to the rightmost switch it matches.
> > > This is, erm, poorly documented, but it seems like useful behavior
> > > so I don't have an objection myself.
> > 
> > I don't know, it sounds like it's the source of the confusion you
> > identify later.
> > 
> > My first thought is that the rule should be to apply all the
> > inclusion switches (implicitly including everything if there are
> > none), then apply all the exclusion switches.
> 
> +1 :)
> 
> Order-dependent switches are a giant foot gun.

They're also very powerful, as anyone who's ever used them in a
non-trivial rsync (or rdiff-backup) scenareo can tell you. What if you
want to exclude all of a schema except for a few objects (granted, right
now we're limited to just tables...)?

Here's a real example, from my rdiff-backup exclude files list:

+ /opt/local/var/db/dports
+ /opt/local/var/log
+ /opt/local/etc
/opt

Note that rdiffbackup applies the first option that matches a
file/directory, not the last. So this says to exclude all of /opt,
except for /opt/local/var/db/dports, etc. If this was done as 'last
operator takes priority', you'd just reverse the order of the list:

pg_dump --exclude-schema /opt --include-table opt.local_var_db_dports
--include-table opt.local_var_log --include-table opt.local_etc

If we processed all includes first, you lose this ability. For simple
cases, it might not matter, but think about wanting to back up an entire
database, except for schema opt, but you do want a few objects from
within opt. Without following some kind of ordering on includes and
excludes, that's next to impossible.
-- 
Jim Nasby                                            [EMAIL PROTECTED]
EnterpriseDB      http://enterprisedb.com      512.569.9461 (cell)

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
       choose an index scan if your joining column's datatypes do not
       match

Reply via email to