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 >