The whole reason for the colon in the --where option is to indicate which
table the WHERE clause should refer to, so that one can dump less than all
of the rows.
The --table option is totally different.  It specifies which tables to dump
at all.

If I provide a --where option, and no --table option, I want the WHERE
clause to apply to the given table, and otherwise dump all tables.
If one supplies a --table option, it won't dump all tables - it will only
dump the one specified.  I don't want to have to specify all the tables
with --table, just to use the --where option.

Also, there may be some misunderstanding about "foo:bar" above.  That's an
example of using a namespaced table, where "bar" is a table in the
namespace "foo".  Normally, assuming your table is named "bar" in the
default namespace, you would just say something like:

  pg_dump --where "bar:created_at >= 2018-05-01'"


On Mon, Jul 2, 2018 at 11:27 AM, Robert Haas <robertmh...@gmail.com> wrote:

> On Fri, Jun 29, 2018 at 8:09 AM, Surafel Temesgen <surafel3...@gmail.com>
> wrote:
> > hey,
> > i am reviewing this patch
> > On Thu, May 31, 2018 at 4:49 AM, Carter Thaxton <
> carter.thax...@gmail.com>
> > wrote:
> >>
> >>
> >>   pg_dump --where '"foo:bar":created_at >= '2018-05-01'" dbname
> >
> > it would be more sqlish if it specified like:
> > --table=foo --where ="bar created_at >= 2018-05-01"
> > and i don't like the idea of duplicating the existing --table behavior it
> > may confuse user
> > i rather recommend extending it. And when i test it with --table option
> the
> > content of dump
> > file depend on the option specified first.
>
> But you can specify multiple tables.  You wouldn't want the same WHERE
> clause to apply to all of them.
>
> --
> Robert Haas
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>

Reply via email to