Received: from makus.postgresql.org (makus.postgresql.org [98.129.198.125]) by mail.postgresql.org (Postfix) with ESMTP id D3B5B1A13213 for ; Sat, 14 Jan 2012 15:09:55 -0400 (AST) Received: from delta01.pnet.xcon.it ([62.48.53.16]) by makus.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1Rm8z8-0005Fe-Sn for pgsql-hackers@postgresql.org; Sat, 14 Jan 2012 19:09:55 +0000 Received: from localhost (localhost [127.0.0.1]) by delta01.pnet.xcon.it (Postfix) with ESMTP id 7188A103463FF; Sat, 14 Jan 2012 20:09:34 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at delta01.pnet.xcon.it Received: from delta01.pnet.xcon.it ([127.0.0.1]) by localhost (delta01.pnet.xcon.it [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 12kaqnP0mmTR; Sat, 14 Jan 2012 20:09:34 +0100 (CET) Received: from [192.168.0.51] (unknown [83.149.163.202]) (Authenticated sender: marco.nenciarini@devise.it) by delta01.pnet.xcon.it (Postfix) with ESMTPSA id 0234510346310; Sat, 14 Jan 2012 20:09:34 +0100 (CET) Message-ID: <1326568173.2613.14.camel@greygoo.devise-it.lan> Subject: Re: [PATCH] Support for foreign keys with arrays From: Marco Nenciarini To: Noah Misch Cc: Gabriele Bartolini , PostgreSQL-development Date: Sat, 14 Jan 2012 20:09:33 +0100 In-Reply-To: <20111212004506.GB10399@tornado.leadboat.com> References: <4EB3DF02.4020604@2ndQuadrant.it> <20111117042841.GA20517@tornado.leadboat.com> <4EC8CA0F.8040405@2ndQuadrant.it> <20111120130526.GD12013@tornado.leadboat.com> <4EE31CB9.90005@2ndQuadrant.it> <20111212004506.GB10399@tornado.leadboat.com> Organization: Devise.IT S.r.l. Content-Type: multipart/mixed; boundary="=-jQ3IlXcVokFnrLuiO8Wx" X-Mailer: Evolution 3.2.2-1 Mime-Version: 1.0 X-Pg-Spam-Score: -2.6 (--) X-Archive-Number: 201201/797 X-Sequence-Number: 201387 --=-jQ3IlXcVokFnrLuiO8Wx Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Hello, Il giorno dom, 11/12/2011 alle 19.45 -0500, Noah Misch ha scritto: > On Sat, Dec 10, 2011 at 09:47:53AM +0100, Gabriele Bartolini wrote: > > So, here is a summary: > > > > --------------- --------- --------- > > | ON | ON | > > Action | DELETE | UPDATE | > > --------------- --------- --------- > > CASCADE | Row | Error | > > SET NULL | Row | Row | > > SET DEFAULT | Row | Row | > > ARRAY CASCADE | Element | Element | > > ARRAY SET NULL | Element | Element | > > NO ACTION | - | - | > > RESTRICT | - | - | > > --------------- --------- --------- > > > > If that's fine with you guys, Marco and I will refactor the development > > based on these assumptions. > > Looks fine. > This is our latest version of the patch. Gabriele, Gianni and I have discussed a lot and decided to send an initial patch which uses EACH REFERENCES instead of ARRAY REFERENCES. The reason behind this is that ARRAY REFERENCES generates an ambiguous grammar, and we all agreed that EACH REFERENCES makes sense (and the same time does not introduce any new keyword). This is however open for discussion. The patch now includes the following clauses on the delete/update actions - as per previous emails: --------------- --------- --------- | ON | ON | Action | DELETE | UPDATE | --------------- --------- --------- CASCADE | Row | Error | SET NULL | Row | Row | SET DEFAULT | Row | Row | ARRAY CASCADE | Element | Element | ARRAY SET NULL | Element | Element | NO ACTION | - | - | RESTRICT | - | - | --------------- --------- --------- We will resubmit the patch for the 2012-01 commit fest. Thank you, Marco -- Marco Nenciarini - System manager @ Devise.IT marco.nenciarini@devise.it | http://www.devise.it --=-jQ3IlXcVokFnrLuiO8Wx Content-Type: application/x-gzip; name="foreign-key-array-v2.patch.gz" Content-Disposition: attachment; filename="foreign-key-array-v2.patch.gz" Content-Transfer-Encoding: base64 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 PoZ4A+T5f+asdb3LWQIA --=-jQ3IlXcVokFnrLuiO8Wx--