On Fri, Oct 17, 2014 at 7:45 PM, Merlin Moncure <mmonc...@gmail.com> wrote:
> On Wed, Oct 15, 2014 at 3:48 AM, Atri Sharma <atri.j...@gmail.com> wrote: > > > > > > On Wednesday, October 15, 2014, Marti Raudsepp <ma...@juffo.org> wrote: > >> > >> Hi > >> > >> On Wed, Oct 15, 2014 at 11:02 AM, Atri Sharma <atri.j...@gmail.com> > wrote: > >> > Please find attached a patch which implements support for UPDATE > table1 > >> > SET(*)=... > >> > >> I presume you haven't read Tom Lane's proposal and discussion about > >> multiple column assignment in UPDATE: > >> http://www.postgresql.org/message-id/1783.1399054...@sss.pgh.pa.us > >> (Assigning all columns was also discussed there) > >> > >> And there's a WIP patch: > >> http://www.postgresql.org/message-id/20930.1402931...@sss.pgh.pa.us > > > > Thanks for the links, but this patch only targets SET(*) case, which, if > I > > understand correctly, the patch you mentioned doesn't directly handle > (If I > > understand correctly, the target of the two patches is different). > > Yeah -- in fact, there was some discussion about this exact case. > This patch solves a very important problem: when doing record > operations to move data between databases with identical schema > there's currently no way to 'update' in a generic way without building > out the entire field list via complicated and nasty dynamic SQL. Thanks! > I'm > not sure about the proposed syntax though; it seems a little weird to > me. Any particular reason why you couldn't have just done: > > UPDATE table1 SET * = a,b,c, ... > > also, > > UPDATE table1 t SET t = (SELECT (a,b,c)::t FROM...); > I honestly have not spent a lot of time thinking about the exact syntax that may be acceptable. If we have arguments for or against a specific syntax, I will be glad to incorporate them. > >