> On Dec 11, 2015, at 1:46 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: > > Alvaro Herrera <alvhe...@2ndquadrant.com> writes: >> Crazy idea: we could just have a CSV file which can be loaded into a >> table for mass changes using regular DDL commands, then dumped back from >> there into the file. We already know how to do these things, using >> \copy etc. Since CSV uses one line per entry, there would be no merge >> problems either (or rather: all merge problems would become conflicts, >> which is what we want.) > > That's an interesting proposal. It would mean that the catalog files > stay at more or less their current semantic level (direct representations > of bootstrap catalog contents), but it does sound like a more attractive > way to perform complex edits than writing Emacs macros ;-).
I would be happy to work on this, if there is much chance of the community accepting a patch. Do you think replacing the numeric Oids for functions, operators, opclasses and such in the source files with their names would be ok, with the SQL converting those to Oids in the output? My eyes have gotten tired more than once trying to read head files in src/include/catalog looking for mistakes in what largely amounts to a big table of numbers. For example, in pg_amop.h: /* default operators int2 */ DATA(insert ( 1976 21 21 1 s 95 403 0 )); DATA(insert ( 1976 21 21 2 s 522 403 0 )); DATA(insert ( 1976 21 21 3 s 94 403 0 )); DATA(insert ( 1976 21 21 4 s 524 403 0 )); DATA(insert ( 1976 21 21 5 s 520 403 0 )); Would become something like: amopfamily amoplefttype amoprighttype amopstrategy amoppurpose amopopr amopmethod amopsortfamily integer_ops int2 int2 1 search "<" btree 0 integer_ops int2 int2 2 search "<=" btree 0 integer_ops int2 int2 3 search "=" btree 0 integer_ops int2 int2 4 search ">=" btree 0 integer_ops int2 int2 5 search ">" btree 0 Note that I prefer to use tabs and a headerline, as the tabstop can be set to line them up nicely, and the headerline allows you to see which column is which, and what it is for. Csv is always harder for me to use that way, though maybe that is just a matter of which editor i use. (vim) And yes, I'd need to allow the HEADER option for copying tab delimited files, since it is currently only allowed for csv, I believe. mark -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers