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:
On Fri, Jun 29, 2018 at 8:09 AM, Surafel Temesgen <surafel3000@gmail.com> wrote: > hey, > i am reviewing this patch > On Thu, May 31, 2018 at 4:49 AM, Carter Thaxton <carter.thaxton@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