diff --git a/doc/TODO.detail/trigger b/doc/TODO.detail/trigger deleted file mode 100644 index e1999d2b141e14573d66bee6ac8e6f111205bd58..0000000000000000000000000000000000000000 --- a/doc/TODO.detail/trigger +++ /dev/null @@ -1,992 +0,0 @@ -From pgsql-patches-owner+M4639@postgresql.org Wed Aug 7 12:11:04 2002 -Return-path: <pgsql-patches-owner+M4639@postgresql.org> -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g77GB3Y20812 - for <pgman@candle.pha.pa.us>; Wed, 7 Aug 2002 12:11:03 -0400 (EDT) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP - id 8C371475A2C; Wed, 7 Aug 2002 12:10:56 -0400 (EDT) -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with SMTP - id E46514759AD; Wed, 7 Aug 2002 12:10:54 -0400 (EDT) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP id B54944759AD - for <pgsql-patches@postgresql.org>; Wed, 7 Aug 2002 12:10:46 -0400 (EDT) -Received: from klamath.dyndns.org (CPE002078144ae0.cpe.net.cable.rogers.com [24.102.202.35]) - by postgresql.org (Postfix) with ESMTP id 37F70475813 - for <pgsql-patches@postgresql.org>; Wed, 7 Aug 2002 12:10:46 -0400 (EDT) -Received: from boston.klamath.dyndns.org (unknown [192.168.40.12]) - by klamath.dyndns.org (Postfix) with ESMTP - id C76C17010; Wed, 7 Aug 2002 12:10:50 -0400 (EDT) -To: Bruce Momjian <pgman@candle.pha.pa.us> -cc: Tom Lane <tgl@sss.pgh.pa.us>, Elliot Lee <sopwith@redhat.com>, - pgsql-patches@postgresql.org -Subject: Re: [PATCHES] Fix disabled triggers with deferred constraints -References: <200206140507.g5E57om04338@candle.pha.pa.us> -From: Neil Conway <nconway@klamath.dyndns.org> -In-Reply-To: <200206140507.g5E57om04338@candle.pha.pa.us> -Date: 07 Aug 2002 12:10:10 -0400 -Message-ID: <87it2mfy59.fsf@klamath.dyndns.org> -Lines: 24 -User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 -MIME-Version: 1.0 -Content-Type: text/plain; charset=us-ascii -X-Virus-Scanned: by AMaViS new-20020517 -Precedence: bulk -Sender: pgsql-patches-owner@postgresql.org -X-Virus-Scanned: by AMaViS new-20020517 -Status: OR - -Bruce Momjian <pgman@candle.pha.pa.us> writes: -> Tom Lane wrote: -> > Elliot Lee <sopwith@redhat.com> writes: -> > > About as obscure a bug as you can get - without the patch, disabled -> > > triggers for deferred constraints get run anyways. The patch is simple and -> > > works, but the "right" (and more complicated) fix may involve not adding -> > > the trigger to event->dte_item to begin with. -> > -> > I remember looking at this issue and not doing anything because I -> > couldn't decide whether the test for enabled status should occur when -> > the trigger is queued or when it is executed --- or, perhaps, both? -> > Is there anything in the standard about it? -> -> Was there any agreement on this? - -Any update on this? - -Cheers, - -Neil - --- -Neil Conway <neilconway@rogers.com> -PGP Key ID: DB3C29FC - - ----------------------------(end of broadcast)--------------------------- -TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org - -From pgsql-patches-owner+M4641@postgresql.org Wed Aug 7 12:46:40 2002 -Return-path: <pgsql-patches-owner+M4641@postgresql.org> -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g77GkeY23704 - for <pgman@candle.pha.pa.us>; Wed, 7 Aug 2002 12:46:40 -0400 (EDT) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP - id 2162C475C7A; Wed, 7 Aug 2002 12:46:35 -0400 (EDT) -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with SMTP - id E9A4B475C29; Wed, 7 Aug 2002 12:46:32 -0400 (EDT) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP id 9CACC475C29 - for <pgsql-patches@postgresql.org>; Wed, 7 Aug 2002 12:46:22 -0400 (EDT) -Received: from sss.pgh.pa.us (unknown [192.204.191.242]) - by postgresql.org (Postfix) with ESMTP id 09669475BB7 - for <pgsql-patches@postgresql.org>; Wed, 7 Aug 2002 12:46:22 -0400 (EDT) -Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) - by sss.pgh.pa.us (8.12.5/8.12.5) with ESMTP id g77GkNVk016878; - Wed, 7 Aug 2002 12:46:23 -0400 (EDT) -To: Neil Conway <nconway@klamath.dyndns.org> -cc: Bruce Momjian <pgman@candle.pha.pa.us>, Elliot Lee <sopwith@redhat.com>, - pgsql-patches@postgresql.org -Subject: Re: [PATCHES] Fix disabled triggers with deferred constraints -In-Reply-To: <87it2mfy59.fsf@klamath.dyndns.org> -References: <200206140507.g5E57om04338@candle.pha.pa.us> <87it2mfy59.fsf@klamath.dyndns.org> -Comments: In-reply-to Neil Conway <nconway@klamath.dyndns.org> - message dated "07 Aug 2002 12:10:10 -0400" -Date: Wed, 07 Aug 2002 12:46:23 -0400 -Message-ID: <16877.1028738783@sss.pgh.pa.us> -From: Tom Lane <tgl@sss.pgh.pa.us> -X-Virus-Scanned: by AMaViS new-20020517 -Precedence: bulk -Sender: pgsql-patches-owner@postgresql.org -X-Virus-Scanned: by AMaViS new-20020517 -Status: OR - -Neil Conway <nconway@klamath.dyndns.org> writes: -> Elliot Lee <sopwith@redhat.com> writes: -> About as obscure a bug as you can get - without the patch, disabled -> triggers for deferred constraints get run anyways. The patch is simple and -> works, but the "right" (and more complicated) fix may involve not adding -> the trigger to event->dte_item to begin with. -> -> I remember looking at this issue and not doing anything because I -> couldn't decide whether the test for enabled status should occur when -> the trigger is queued or when it is executed --- or, perhaps, both? -> Is there anything in the standard about it? ->> ->> Was there any agreement on this? - -> Any update on this? - -I think we're still waiting for someone to figure out what the behavior -should be per spec. - - regards, tom lane - ----------------------------(end of broadcast)--------------------------- -TIP 6: Have you searched our list archives? - -http://archives.postgresql.org - -From nconway@klamath.dyndns.org Wed Aug 7 14:10:27 2002 -Return-path: <nconway@klamath.dyndns.org> -Received: from klamath.dyndns.org (identsucks@CPE002078144ae0.cpe.net.cable.rogers.com [24.102.202.35]) - by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g77IAQY29959 - for <pgman@candle.pha.pa.us>; Wed, 7 Aug 2002 14:10:26 -0400 (EDT) -Received: from boston.klamath.dyndns.org (unknown [192.168.40.12]) - by klamath.dyndns.org (Postfix) with ESMTP - id 284B87010; Wed, 7 Aug 2002 14:10:21 -0400 (EDT) -To: Tom Lane <tgl@sss.pgh.pa.us> -cc: Bruce Momjian <pgman@candle.pha.pa.us>, Elliot Lee <sopwith@redhat.com>, - pgsql-patches@postgresql.org -Subject: Re: [PATCHES] Fix disabled triggers with deferred constraints -References: <200206140507.g5E57om04338@candle.pha.pa.us> - <87it2mfy59.fsf@klamath.dyndns.org> <16877.1028738783@sss.pgh.pa.us> -From: Neil Conway <nconway@klamath.dyndns.org> -In-Reply-To: <16877.1028738783@sss.pgh.pa.us> -Date: 07 Aug 2002 14:09:40 -0400 -Message-ID: <874re6fsm3.fsf@klamath.dyndns.org> -Lines: 39 -User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 -MIME-Version: 1.0 -Content-Type: text/plain; charset=us-ascii -Status: OR - -Tom Lane <tgl@sss.pgh.pa.us> writes: -> Neil Conway <nconway@klamath.dyndns.org> writes: -> > Elliot Lee <sopwith@redhat.com> writes: -> > I remember looking at this issue and not doing anything because I -> > couldn't decide whether the test for enabled status should occur when -> > the trigger is queued or when it is executed --- or, perhaps, both? -> > Is there anything in the standard about it? - -[...] - -> I think we're still waiting for someone to figure out what the behavior -> should be per spec. - -I took a brief look at SQL99, but I couldn't find anything regarding -this issue (AFAICS it doesn't mention "disabled triggers" at all). But -given my prior track record for divining information from the -standards, perhaps someone should double-check :-) - -I did notice some behavior which we don't implement AFAIK: - - If the constraint mode is /deferred/, then the constraint is - effectively checked when the constraint mode is changed to - /immediate/ either explicitely by execution of a <set - constraints mode statement>, or implicitely at the end of the - current SQL-transaction. - -(SQL99, Section 4.17.1, paragraph 3) - -We don't recheck any outstanding deferred constraints when the -constraint mode is explicitly switched back to IMMEDIATE, as the -standard says we should. - -Cheers, - -Neil - --- -Neil Conway <neilconway@rogers.com> -PGP Key ID: DB3C29FC - - -From pgsql-patches-owner+M4751@postgresql.org Tue Aug 13 00:10:31 2002 -Return-path: <pgsql-patches-owner+M4751@postgresql.org> -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g7D4AVk26779 - for <pgman@candle.pha.pa.us>; Tue, 13 Aug 2002 00:10:31 -0400 (EDT) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP - id 321AE475A20; Tue, 13 Aug 2002 00:10:26 -0400 (EDT) -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with SMTP - id 7BB7E475F42; Tue, 13 Aug 2002 00:10:20 -0400 (EDT) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP id A0519476087 - for <pgsql-patches@postgresql.org>; Tue, 13 Aug 2002 00:10:10 -0400 (EDT) -Received: from linuxworld.com.au (www.linuxworld.com.au [203.34.46.50]) - by postgresql.org (Postfix) with ESMTP id 70806475806 - for <pgsql-patches@postgresql.org>; Tue, 13 Aug 2002 00:09:57 -0400 (EDT) -Received: from localhost (swm@localhost) - by linuxworld.com.au (8.11.4/8.11.4) with ESMTP id g7D4CGI23801; - Tue, 13 Aug 2002 14:12:16 +1000 -Date: Tue, 13 Aug 2002 14:12:15 +1000 (EST) -From: Gavin Sherry <swm@linuxworld.com.au> -To: Neil Conway <nconway@klamath.dyndns.org> -cc: pgsql-patches@postgresql.org -Subject: Re: [PATCHES] Fix disabled triggers with deferred constraints -In-Reply-To: <874re6fsm3.fsf@klamath.dyndns.org> -Message-ID: <Pine.LNX.4.21.0208131342460.22771-100000@linuxworld.com.au> -MIME-Version: 1.0 -Content-Type: TEXT/PLAIN; charset=US-ASCII -X-Virus-Scanned: by AMaViS new-20020517 -Precedence: bulk -Sender: pgsql-patches-owner@postgresql.org -X-Virus-Scanned: by AMaViS new-20020517 -Status: OR - -On 7 Aug 2002, Neil Conway wrote: - -> Tom Lane <tgl@sss.pgh.pa.us> writes: -> > Neil Conway <nconway@klamath.dyndns.org> writes: -> > > Elliot Lee <sopwith@redhat.com> writes: -> > > I remember looking at this issue and not doing anything because I -> > > couldn't decide whether the test for enabled status should occur when -> > > the trigger is queued or when it is executed --- or, perhaps, both? -> > > Is there anything in the standard about it? -> -> [...] -> -> > I think we're still waiting for someone to figure out what the behavior -> > should be per spec. -> -> I took a brief look at SQL99, but I couldn't find anything regarding -> this issue (AFAICS it doesn't mention "disabled triggers" at all). But -> given my prior track record for divining information from the -> standards, perhaps someone should double-check :-) - -I had a pretty hard look around SQL99. It does not appear to say anything -explicit about disabling triggers. This should be clear from page 90: 4.35 -Triggers. This specifies the trigger descriptor. Those familiar with SQL99 -know that it just about mandates that all state information about any -object in the system is recorded in its descriptor. The fact that -enabled/disabled state information is not recorded in the trigger -descriptor suggests that it is only ever enabled. - -More over there is no case when a trigger is not executed, according to -10.12 'Execution of triggers'. - -I dug deeper, wondering if it may be implicitly disabled given the -disabling of its 'dependencies', shall we call them. Namely: the base -table or the procedure used in the trigger action. Tables cannot be -disabled or made in active. As for the procedure, <SQL procedure -statement>, this expands to SQL which, itself, cannot be 'disabled'. - -The spec is a large one and I didn't look at all references to triggers -- -since there are hundreds -- but I don't believe that there is any -precedent for an implementation of DISABLE TRIGGER. - -FWIW, i think that in the case of deferred triggers they should all be -added to the queue and whether they are executed or not should be -evaluated inside DeferredTriggerExecute() with: - - if(LocTriggerData.tg_trigger->tgenabled == false) - return; - -Gavin - - - - ----------------------------(end of broadcast)--------------------------- -TIP 2: you can get off all lists at once with the unregister command - (send "unregister YourEmailAddressHere" to majordomo@postgresql.org) - -From pgsql-patches-owner+M4752@postgresql.org Tue Aug 13 00:28:42 2002 -Return-path: <pgsql-patches-owner+M4752@postgresql.org> -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g7D4Sgk27162 - for <pgman@candle.pha.pa.us>; Tue, 13 Aug 2002 00:28:42 -0400 (EDT) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP - id 94BDB475EFD; Tue, 13 Aug 2002 00:28:37 -0400 (EDT) -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with SMTP - id C912A475EDF; Tue, 13 Aug 2002 00:28:36 -0400 (EDT) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP id 0026B475924 - for <pgsql-patches@postgresql.org>; Tue, 13 Aug 2002 00:28:30 -0400 (EDT) -Received: from sss.pgh.pa.us (unknown [192.204.191.242]) - by postgresql.org (Postfix) with ESMTP id 5263B47582B - for <pgsql-patches@postgresql.org>; Tue, 13 Aug 2002 00:28:30 -0400 (EDT) -Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1]) - by sss.pgh.pa.us (8.12.5/8.12.5) with ESMTP id g7D4SJVk022192; - Tue, 13 Aug 2002 00:28:19 -0400 (EDT) -To: Gavin Sherry <swm@linuxworld.com.au> -cc: Neil Conway <nconway@klamath.dyndns.org>, pgsql-patches@postgresql.org -Subject: Re: [PATCHES] Fix disabled triggers with deferred constraints -In-Reply-To: <Pine.LNX.4.21.0208131342460.22771-100000@linuxworld.com.au> -References: <Pine.LNX.4.21.0208131342460.22771-100000@linuxworld.com.au> -Comments: In-reply-to Gavin Sherry <swm@linuxworld.com.au> - message dated "Tue, 13 Aug 2002 14:12:15 +1000" -Date: Tue, 13 Aug 2002 00:28:19 -0400 -Message-ID: <22191.1029212899@sss.pgh.pa.us> -From: Tom Lane <tgl@sss.pgh.pa.us> -X-Virus-Scanned: by AMaViS new-20020517 -Precedence: bulk -Sender: pgsql-patches-owner@postgresql.org -X-Virus-Scanned: by AMaViS new-20020517 -Status: OR - -Gavin Sherry <swm@linuxworld.com.au> writes: -> ...The spec is a large one and I didn't look at all references to triggers -- -> since there are hundreds -- but I don't believe that there is any -> precedent for an implementation of DISABLE TRIGGER. - -Thanks for the dig. I was hoping we could get some guidance from the -spec, but it looks like not. How about other implementations --- does -Oracle support disabled triggers? DB2? etc? - -> FWIW, i think that in the case of deferred triggers they should all be -> added to the queue and whether they are executed or not should be -> evaluated inside DeferredTriggerExecute() with: -> if(LocTriggerData.tg_trigger->tgenabled == false) -> return; - -So check the state at execution, not when the triggering event occurs. -I don't have any strong reason to object to that, but I have a gut -feeling that it still needs to be thought about... - -Let's see, I guess there are several possible changes of state for a -deferred trigger between the triggering event and the end of -transaction: - -* Trigger deleted. Surely the trigger shouldn't be executed, but should -we raise an error or just silently ignore it? (I suspect right now we -crash :-() - -* Trigger created. In some ideal world we might think that such a -trigger should be fired, but in reality that ain't gonna happen; we're -not going to record every possible event on the speculation that some -trigger for it might be created later in the transaction. - -* Trigger disabled. Your proposal is to not fire it. Okay, comports -with the deleted case, if we make that behavior be silently-ignore. - -* Trigger enabled. Your proposal is to fire it. Seems not to comport -with the creation case --- does that bother anyone? - -* Trigger changed from not-deferred to deferred. If we already fired it -for the event, we surely shouldn't fire it again. I believe the code -gets this case right. - -* Trigger changed from deferred to not-deferred. As Neil was pointing -out recently, this really should cause the trigger to be fired for the -pending event immediately, but we don't get that right at the moment. -(I suppose a stricter interpretation would be to raise an error because -we can't do anything that really comports with the intended behavior -of either case.) - -How do these various cases relate? Can we come up with a unified -rationale? - - regards, tom lane - ----------------------------(end of broadcast)--------------------------- -TIP 6: Have you searched our list archives? - -http://archives.postgresql.org - -From pgsql-patches-owner+M4753@postgresql.org Tue Aug 13 00:56:55 2002 -Return-path: <pgsql-patches-owner+M4753@postgresql.org> -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g7D4usk27855 - for <pgman@candle.pha.pa.us>; Tue, 13 Aug 2002 00:56:54 -0400 (EDT) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP - id F09AE475EFD; Tue, 13 Aug 2002 00:56:49 -0400 (EDT) -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with SMTP - id 94E4B475DC0; Tue, 13 Aug 2002 00:56:47 -0400 (EDT) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP id 4EB5D475751 - for <pgsql-patches@postgresql.org>; Tue, 13 Aug 2002 00:56:42 -0400 (EDT) -Received: from joeconway.com (unknown [63.210.180.150]) - by postgresql.org (Postfix) with ESMTP id A5F35475531 - for <pgsql-patches@postgresql.org>; Tue, 13 Aug 2002 00:56:41 -0400 (EDT) -Received: from [192.168.5.2] (account jconway HELO joeconway.com) - by joeconway.com (CommuniGate Pro SMTP 3.5.9) - with ESMTP-TLS id 1246425; Mon, 12 Aug 2002 21:46:29 -0700 -Message-ID: <3D589161.8020903@joeconway.com> -Date: Mon, 12 Aug 2002 21:56:01 -0700 -From: Joe Conway <mail@joeconway.com> -User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0.0) Gecko/20020530 -X-Accept-Language: en-us, en -MIME-Version: 1.0 -To: Tom Lane <tgl@sss.pgh.pa.us> -cc: Gavin Sherry <swm@linuxworld.com.au>, - Neil Conway <nconway@klamath.dyndns.org>, pgsql-patches@postgresql.org -Subject: Re: [PATCHES] Fix disabled triggers with deferred constraints -References: <Pine.LNX.4.21.0208131342460.22771-100000@linuxworld.com.au> <22191.1029212899@sss.pgh.pa.us> -Content-Type: text/plain; charset=us-ascii; format=flowed -Content-Transfer-Encoding: 7bit -X-Virus-Scanned: by AMaViS new-20020517 -Precedence: bulk -Sender: pgsql-patches-owner@postgresql.org -X-Virus-Scanned: by AMaViS new-20020517 -Status: OR - -Tom Lane wrote: -> Gavin Sherry <swm@linuxworld.com.au> writes: ->>...The spec is a large one and I didn't look at all references to triggers -- ->>since there are hundreds -- but I don't believe that there is any ->>precedent for an implementation of DISABLE TRIGGER. -> -> Thanks for the dig. I was hoping we could get some guidance from the -> spec, but it looks like not. How about other implementations --- does -> Oracle support disabled triggers? DB2? etc? - -Oracle does for sure. With a complex app (i.e. Oracle Applications) -being able to disable triggers from time-to-time is *indispensable*. Not -sure about DB2. My knowledge of MSSQL is getting dated, but as of MSSQL7 -I don't *think* you can disable a trigger. - -Joe - - ----------------------------(end of broadcast)--------------------------- -TIP 6: Have you searched our list archives? - -http://archives.postgresql.org - -From pgsql-patches-owner+M4755@postgresql.org Tue Aug 13 01:36:42 2002 -Return-path: <pgsql-patches-owner+M4755@postgresql.org> -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g7D5afk29468 - for <pgman@candle.pha.pa.us>; Tue, 13 Aug 2002 01:36:41 -0400 (EDT) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP - id C40B3476088; Tue, 13 Aug 2002 01:36:42 -0400 (EDT) -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with SMTP - id AAB02476037; Tue, 13 Aug 2002 01:36:41 -0400 (EDT) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP id 15911475751 - for <pgsql-patches@postgresql.org>; Tue, 13 Aug 2002 01:36:37 -0400 (EDT) -Received: from linuxworld.com.au (www.linuxworld.com.au [203.34.46.50]) - by postgresql.org (Postfix) with ESMTP id BC813475531 - for <pgsql-patches@postgresql.org>; Tue, 13 Aug 2002 01:36:35 -0400 (EDT) -Received: from localhost (swm@localhost) - by linuxworld.com.au (8.11.4/8.11.4) with ESMTP id g7D5coN26796; - Tue, 13 Aug 2002 15:38:50 +1000 -Date: Tue, 13 Aug 2002 15:38:50 +1000 (EST) -From: Gavin Sherry <swm@linuxworld.com.au> -To: Tom Lane <tgl@sss.pgh.pa.us> -cc: Neil Conway <nconway@klamath.dyndns.org>, pgsql-patches@postgresql.org -Subject: Re: [PATCHES] Fix disabled triggers with deferred constraints -In-Reply-To: <22191.1029212899@sss.pgh.pa.us> -Message-ID: <Pine.LNX.4.21.0208131530160.25873-100000@linuxworld.com.au> -MIME-Version: 1.0 -Content-Type: TEXT/PLAIN; charset=US-ASCII -X-Virus-Scanned: by AMaViS new-20020517 -Precedence: bulk -Sender: pgsql-patches-owner@postgresql.org -X-Virus-Scanned: by AMaViS new-20020517 -Status: ORr - -On Tue, 13 Aug 2002, Tom Lane wrote: - -> Gavin Sherry <swm@linuxworld.com.au> writes: -> > ...The spec is a large one and I didn't look at all references to triggers -- -> > since there are hundreds -- but I don't believe that there is any -> > precedent for an implementation of DISABLE TRIGGER. -> -> Thanks for the dig. I was hoping we could get some guidance from the -> spec, but it looks like not. How about other implementations --- does -> Oracle support disabled triggers? DB2? etc? - -Oracle 8 (and I presume 9) allows you to disable/enable triggers through -alter table and alter trigger. My 8.1.7 documentation is silent on the -cases you mention below and I do not have an oracle installation handy to -test. Anyone? - -> -> > FWIW, i think that in the case of deferred triggers they should all be -> > added to the queue and whether they are executed or not should be -> > evaluated inside DeferredTriggerExecute() with: -> > if(LocTriggerData.tg_trigger->tgenabled == false) -> > return; -> -> So check the state at execution, not when the triggering event occurs. -> I don't have any strong reason to object to that, but I have a gut -> feeling that it still needs to be thought about... -> -> Let's see, I guess there are several possible changes of state for a -> deferred trigger between the triggering event and the end of -> transaction: -> -> * Trigger deleted. Surely the trigger shouldn't be executed, but should -> we raise an error or just silently ignore it? (I suspect right now we -> crash :-() -> -> * Trigger created. In some ideal world we might think that such a -> trigger should be fired, but in reality that ain't gonna happen; we're -> not going to record every possible event on the speculation that some -> trigger for it might be created later in the transaction. - -It doesn't need to be an ideal world. We're only talking about deferred -triggers after all. Why couldn't CreateTrgger() just have a look through -deftrig_events, check for its relid and if its in there, call -deferredTriggerAddEvent(). - -> * Trigger disabled. Your proposal is to not fire it. Okay, comports -> with the deleted case, if we make that behavior be silently-ignore. -> -> * Trigger enabled. Your proposal is to fire it. Seems not to comport -> with the creation case --- does that bother anyone? -> -> * Trigger changed from not-deferred to deferred. If we already fired it -> for the event, we surely shouldn't fire it again. I believe the code -> gets this case right. - -Agreed. - -> * Trigger changed from deferred to not-deferred. As Neil was pointing -> out recently, this really should cause the trigger to be fired for the -> pending event immediately, but we don't get that right at the moment. -> (I suppose a stricter interpretation would be to raise an error because -> we can't do anything that really comports with the intended behavior -> of either case.) - -I think this should generate an error as it doesn't sit well with the -spec IMHO. - -Gavin - - ----------------------------(end of broadcast)--------------------------- -TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org - -From pgsql-general-owner+M33538@postgresql.org Tue Nov 26 03:46:45 2002 -Return-path: <pgsql-general-owner+M33538@postgresql.org> -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id gAQ8kio01351 - for <pgman@candle.pha.pa.us>; Tue, 26 Nov 2002 03:46:44 -0500 (EST) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP - id 8EB404760F9; Tue, 26 Nov 2002 03:46:13 -0500 (EST) -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with SMTP - id B1942475FCE; Tue, 26 Nov 2002 03:46:06 -0500 (EST) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP id 950CD474E53 - for <pgsql-general@postgresql.org>; Tue, 26 Nov 2002 03:45:30 -0500 (EST) -Received: from hera.hs-niederrhein.de (hera.hs-niederrhein.de [194.94.120.3]) - by postgresql.org (Postfix) with ESMTP id 4E172474E44 - for <pgsql-general@postgresql.org>; Tue, 26 Nov 2002 03:45:29 -0500 (EST) -Received: (from root@localhost) - by hera.hs-niederrhein.de (8.11.6+Sun/8.11.6) id gAQ8jTK27063 - for pgsql-general@postgresql.org; Tue, 26 Nov 2002 09:45:29 +0100 (CET) -Received: from terra (31-094.hs-niederrhein.de [193.175.48.94]) - by hera.hs-niederrhein.de (8.11.6+Sun/8.11.6) with SMTP id gAQ8jPP27051 - for <pgsql-general@postgresql.org>; Tue, 26 Nov 2002 09:45:25 +0100 (CET) -Date: Tue, 26 Nov 2002 09:43:32 +0100 -From: Christoph Dalitz <christoph.dalitz@hs-niederrhein.de> -To: pgsql-general@postgresql.org -Subject: [GENERAL] ALTER TRIGGER DISABLE/ENABLE -Message-ID: <20021126094332.58250aef.christoph.dalitz@hs-niederrhein.de> -X-Mailer: Sylpheed version 0.6.6 (GTK+ 1.2.8; i586-pc-linux-gnu) -MIME-Version: 1.0 -Content-Type: text/plain; charset=US-ASCII -Content-Transfer-Encoding: 7bit -X-Virus-Scanned: by AMaViS perl-11 -X-Virus-Scanned: by AMaViS new-20020517 -Precedence: bulk -Sender: pgsql-general-owner@postgresql.org -X-Virus-Scanned: by AMaViS new-20020517 -Status: ORr - -Hello, - -while there have been suggested some hacks on the system catalog -for disabling/enabling triggers, these have two serious disadvantages: - - - they cannot be done by the owner of the trigger - (only the DBA has write access to the system catalog) - - messing in the system catalog for simple DB schema changes makes - most users feel uneasy - -Oracle has an SQL command "ALTER TRIGGER triggername DISABLE|ENABLE". -Were it possible to put this command on the TODO list for a future PG release? - -Thanks, - -Christoph Dalitz - ----------------------------(end of broadcast)--------------------------- -TIP 6: Have you searched our list archives? - -http://archives.postgresql.org - -From jllachan@nsd.ca Tue Nov 26 14:42:05 2002 -Return-path: <jllachan@nsd.ca> -Received: from beamish.nsd.ca (IDENT:root@[205.150.156.194]) - by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id gAQJg2P06491 - for <pgman@candle.pha.pa.us>; Tue, 26 Nov 2002 14:42:04 -0500 (EST) -Received: (from smap@localhost) - by beamish.nsd.ca (8.9.3/8.9.3) id OAA28217; - Tue, 26 Nov 2002 14:41:56 -0500 -X-Authentication-Warning: beamish.nsd.ca: smap set sender to <jllachan@nsd.ca> using -f -Received: from reddog.nsd.ca(192.168.101.30) by beamish.nsd.ca via smap (V2.1/2.1+anti-relay+anti-spam) - id xma028213; Tue, 26 Nov 02 14:41:31 -0500 -Received: from nsd.ca (jllachan-linux.nsd.ca [192.168.101.148]) - by reddog.nsd.ca (8.8.7/8.8.7) with ESMTP id OAA22894; - Tue, 26 Nov 2002 14:40:22 -0500 -Sender: jllachan@reddog.nsd.ca -Message-ID: <3DE3CE7B.614EE99E@nsd.ca> -Date: Tue, 26 Nov 2002 14:41:47 -0500 -From: Jean-Luc Lachance <jllachan@nsd.ca> -X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.4.9-31 i686) -X-Accept-Language: en -MIME-Version: 1.0 -To: Bruce Momjian <pgman@candle.pha.pa.us> -cc: Christoph Dalitz <christoph.dalitz@hs-niederrhein.de>, - pgsql-general@postgresql.org -Subject: Re: [GENERAL] ALTER TRIGGER DISABLE/ENABLE -References: <200211261853.gAQIrdE00304@candle.pha.pa.us> -Content-Type: text/plain; charset=us-ascii -Content-Transfer-Encoding: 7bit -Status: OR - -I think thte sintax should be: - -ALTER TABLE DISABLE|ENABLE TRIGGER {trigger name}|ALL - - - -Bruce Momjian wrote: -> -> Christoph Dalitz wrote: -> > Hello, -> > -> > while there have been suggested some hacks on the system catalog -> > for disabling/enabling triggers, these have two serious disadvantages: -> > -> > - they cannot be done by the owner of the trigger -> > (only the DBA has write access to the system catalog) -> > - messing in the system catalog for simple DB schema changes makes -> > most users feel uneasy -> > -> > Oracle has an SQL command "ALTER TRIGGER triggername DISABLE|ENABLE". -> > Were it possible to put this command on the TODO list for a future PG release? -> -> Already on TODO list: -> -> * Allow triggers to be disabled [trigger] -> -> I will add your email to the TODO.detail thread. -> -> -- -> Bruce Momjian | http://candle.pha.pa.us -> pgman@candle.pha.pa.us | (610) 359-1001 -> + If your life is a hard drive, | 13 Roberts Road -> + Christ can be your backup. | Newtown Square, Pennsylvania 19073 -> -> ---------------------------(end of broadcast)--------------------------- -> TIP 6: Have you searched our list archives? -> -> http://archives.postgresql.org - -From christoph.dalitz@hs-niederrhein.de Thu Nov 28 03:35:25 2002 -Return-path: <christoph.dalitz@hs-niederrhein.de> -Received: from hera.hs-niederrhein.de (hera.hs-niederrhein.de [194.94.120.3]) - by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id gAS8ZLP06871 - for <pgman@candle.pha.pa.us>; Thu, 28 Nov 2002 03:35:23 -0500 (EST) -Received: (from root@localhost) - by hera.hs-niederrhein.de (8.11.6+Sun/8.11.6) id gAS8ZGZ16207; - Thu, 28 Nov 2002 09:35:16 +0100 (CET) -Received: from pc03230 (pc03230.kr.hs-niederrhein.de [194.94.121.230]) - by hera.hs-niederrhein.de (8.11.6+Sun/8.11.6) with SMTP id gAS8ZDP16199; - Thu, 28 Nov 2002 09:35:13 +0100 (CET) -Date: Thu, 28 Nov 2002 09:33:57 +0100 -From: Christoph Dalitz <christoph.dalitz@hs-niederrhein.de> -To: Jean-Luc Lachance <jllachan@nsd.ca> -cc: Bruce Momjian <pgman@candle.pha.pa.us>, - Tino Wildenhain <tino@wildenhain.de>, pgsql-general@postgresql.org -Subject: Re: ALTER TRIGGER DISABLE/ENABLE -Message-ID: <20021128093357.48c9d644.christoph.dalitz@hs-niederrhein.de> -In-Reply-To: <3DE3CE7B.614EE99E@nsd.ca> -References: <200211261853.gAQIrdE00304@candle.pha.pa.us> - <3DE3CE7B.614EE99E@nsd.ca> -Organization: FH Niederrhein -X-Mailer: Sylpheed version 0.7.4 (GTK+ 1.2.10; i386-debian-linux-gnu) -MIME-Version: 1.0 -Content-Type: text/plain; charset=US-ASCII -Content-Transfer-Encoding: 7bit -X-Virus-Scanned: by AMaViS perl-11 -Status: OR - -On Tue, 26 Nov 2002 14:41:47 -0500 -Jean-Luc Lachance <jllachan@nsd.ca> wrote: -> -> I think thte sintax should be: -> -> ALTER TABLE DISABLE|ENABLE TRIGGER {trigger name}|ALL -> -This would make no sense: - -It could be the syntax if the statement for creating a trigger -where "ALTER TABLE ADD TRIGGER". - -The statement for creating a trigger is however "CREATE TRIGEER". - -Consequently the statement for changing a trigger must be "ALTER TRIGGER" -and not "ALTER TABLE". - -Switching off all triggers for an individual table at once would be -convenient of course and can be easily achieved with "ALTER TRIGGER" as well: -just write a little PL/SQL procedure "disable_triggers()" that takes a -tablename as input and disables all triggers on it. - -Christoph Dalitz - -From pgsql-general-owner+M33790@postgresql.org Thu Nov 28 11:04:17 2002 -Return-path: <pgsql-general-owner+M33790@postgresql.org> -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id gASG4EP11817 - for <pgman@candle.pha.pa.us>; Thu, 28 Nov 2002 11:04:15 -0500 (EST) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP - id 0E622476313; Thu, 28 Nov 2002 11:03:52 -0500 (EST) -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with SMTP - id 153FF476713; Thu, 28 Nov 2002 11:03:36 -0500 (EST) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP id 4A4AA475E41 - for <pgsql-general@postgresql.org>; Thu, 28 Nov 2002 11:03:19 -0500 (EST) -Received: from beamish.nsd.ca (unknown [205.150.156.194]) - by postgresql.org (Postfix) with ESMTP id 30F56475AFF - for <pgsql-general@postgresql.org>; Thu, 28 Nov 2002 11:03:18 -0500 (EST) -Received: (from smap@localhost) - by beamish.nsd.ca (8.9.3/8.9.3) id LAA12283; - Thu, 28 Nov 2002 11:02:54 -0500 -X-Authentication-Warning: beamish.nsd.ca: smap set sender to <jllachan@nsd.ca> using -f -Received: from reddog.nsd.ca(192.168.101.30) by beamish.nsd.ca via smap (V2.1/2.1+anti-relay+anti-spam) - id xma012273; Thu, 28 Nov 02 11:02:35 -0500 -Received: from nsd.ca (jllachan-linux.nsd.ca [192.168.101.148]) - by reddog.nsd.ca (8.8.7/8.8.7) with ESMTP id LAA00966; - Thu, 28 Nov 2002 11:01:23 -0500 -Message-ID: <3DE63E3D.5BC92720@nsd.ca> -Date: Thu, 28 Nov 2002 11:03:09 -0500 -From: Jean-Luc Lachance <jllachan@nsd.ca> -X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.4.9-31 i686) -X-Accept-Language: en -MIME-Version: 1.0 -To: Christoph Dalitz <christoph.dalitz@hs-niederrhein.de> -cc: Bruce Momjian <pgman@candle.pha.pa.us>, - Tino Wildenhain <tino@wildenhain.de>, pgsql-general@postgresql.org -Subject: Re: [GENERAL] ALTER TRIGGER DISABLE/ENABLE -References: <200211261853.gAQIrdE00304@candle.pha.pa.us> - <3DE3CE7B.614EE99E@nsd.ca> <20021128093357.48c9d644.christoph.dalitz@hs-niederrhein.de> -Content-Type: text/plain; charset=us-ascii -Content-Transfer-Encoding: 7bit -X-Virus-Scanned: by AMaViS new-20020517 -Precedence: bulk -Sender: pgsql-general-owner@postgresql.org -X-Virus-Scanned: by AMaViS new-20020517 -Status: OR - -Sementics. - -The trigger belongs to the table. -The trigger is not modified. -The ability of the table being modified to call it is modified. -Plus, if you want all the triggers on a table to be disabled the ALTER -TRIGGER is not enough. - -JLL - - -Christoph Dalitz wrote: -> -> On Tue, 26 Nov 2002 14:41:47 -0500 -> Jean-Luc Lachance <jllachan@nsd.ca> wrote: -> > -> > I think thte sintax should be: -> > -> > ALTER TABLE DISABLE|ENABLE TRIGGER {trigger name}|ALL -> > -> This would make no sense: -> -> It could be the syntax if the statement for creating a trigger -> where "ALTER TABLE ADD TRIGGER". -> -> The statement for creating a trigger is however "CREATE TRIGEER". -> -> Consequently the statement for changing a trigger must be "ALTER TRIGGER" -> and not "ALTER TABLE". -> -> Switching off all triggers for an individual table at once would be -> convenient of course and can be easily achieved with "ALTER TRIGGER" as well: -> just write a little PL/SQL procedure "disable_triggers()" that takes a -> tablename as input and disables all triggers on it. -> -> Christoph Dalitz - ----------------------------(end of broadcast)--------------------------- -TIP 5: Have you checked our extensive FAQ? - -http://www.postgresql.org/users-lounge/docs/faq.html - -From pgsql-hackers-owner+M28358@postgresql.org Fri Sep 6 01:19:36 2002 -Return-path: <pgsql-hackers-owner+M28358@postgresql.org> -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g865JY225103 - for <pgman@candle.pha.pa.us>; Fri, 6 Sep 2002 01:19:35 -0400 (EDT) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP - id 15A1C475B47; Fri, 6 Sep 2002 01:19:37 -0400 (EDT) -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with SMTP - id 5D8C9475FC5; Fri, 6 Sep 2002 01:19:33 -0400 (EDT) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP id 50F2C475E88 - for <pgsql-hackers@postgresql.org>; Fri, 6 Sep 2002 01:19:29 -0400 (EDT) -Received: from houston.familyhealth.com.au (unknown [203.59.48.253]) - by postgresql.org (Postfix) with ESMTP id 633FA4759E8 - for <pgsql-hackers@postgresql.org>; Fri, 6 Sep 2002 01:19:27 -0400 (EDT) -Received: (from root@localhost) - by houston.familyhealth.com.au (8.11.6/8.11.6) id g865JQh24183 - for pgsql-hackers@postgresql.org; Fri, 6 Sep 2002 13:19:26 +0800 (WST) - (envelope-from chriskl@familyhealth.com.au) -Received: from mariner (mariner.internal [192.168.0.101]) - by houston.familyhealth.com.au (8.11.6/8.9.3) with SMTP id g865JPk24139 - for <pgsql-hackers@postgresql.org>; Fri, 6 Sep 2002 13:19:25 +0800 (WST) -From: "Christopher Kings-Lynne" <chriskl@familyhealth.com.au> -To: "Hackers" <pgsql-hackers@postgresql.org> -Subject: [HACKERS] Foreign keys in pg_dump -Date: Fri, 6 Sep 2002 13:19:44 +0800 -Message-ID: <GNELIHDDFBOCMGBFGEFOKEBMCEAA.chriskl@familyhealth.com.au> -MIME-Version: 1.0 -Content-Type: text/plain; - charset="iso-8859-1" -Content-Transfer-Encoding: 7bit -X-Priority: 3 (Normal) -X-MSMail-Priority: Normal -X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0) -X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 -Importance: Normal -X-scanner: scanned by Inflex 0.1.5c - (http://www.inflex.co.za/) -X-Virus-Scanned: by AMaViS new-20020517 -Precedence: bulk -Sender: pgsql-hackers-owner@postgresql.org -X-Virus-Scanned: by AMaViS new-20020517 -Status: OR - -OK, - -The argument about using ALTER TABLE/ADD FOREIGN KEY in dumps was that it -caused an actual check of the data in the table, right? This was going to -be much slower than using CREATE CONSTRAINT TRIGGER. - -So, why can't we do this in the SQL that pg_dump creates (TODO): - -CREATE TABLE ... -ALTER TABLE/ADD FOREIGN KEY ... -update catalogs and disable triggers that the ADD FOREIGN KEY just created -... -COPY .. FROM ... -\. -update catalogs and enable triggers - -Doesn't this give us the best of both worlds? ie. Keeps dependencies but -does fast COPYing? - -Also, I think a new super-user (or owner) only SQL command would be nice -(TODO): - -ALTER TABLE foo {DISABLE|ENABLE} TRIGGER { ALL | trigger_name [ ,... ] }; - -This is like MSSQL syntax (IIRC): - -http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_ -aa-az_3ied.asp -Specifies that trigger_name is enabled or disabled. When a trigger is -disabled it is still defined for the table; however, when INSERT, UPDATE, or -DELETE statements are executed against the table, the actions in the trigger -are not performed until the trigger is re-enabled. - - -It would certainly tidy up the dumps a bit... - -Chris - - ----------------------------(end of broadcast)--------------------------- -TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org - -From pgsql-hackers-owner+M28381@postgresql.org Fri Sep 6 09:34:27 2002 -Return-path: <pgsql-hackers-owner+M28381@postgresql.org> -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g86DYQ201524 - for <pgman@candle.pha.pa.us>; Fri, 6 Sep 2002 09:34:26 -0400 (EDT) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP - id C0CA0476E5C; Fri, 6 Sep 2002 09:34:19 -0400 (EDT) -Received: from postgresql.org (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with SMTP - id C788C476A92; Fri, 6 Sep 2002 09:34:16 -0400 (EDT) -Received: from localhost (postgresql.org [64.49.215.8]) - by postgresql.org (Postfix) with ESMTP id 5CD18475EF0 - for <pgsql-hackers@postgresql.org>; Fri, 6 Sep 2002 09:34:12 -0400 (EDT) -Received: from squire.barchord.com (squire.barchord.com [216.194.67.18]) - by postgresql.org (Postfix) with ESMTP id 2A0AB476EAE - for <pgsql-hackers@postgresql.org>; Fri, 6 Sep 2002 09:34:11 -0400 (EDT) -Received: from [10.0.2.49] (nat.inquent.com [216.6.14.45]) - by squire.barchord.com (Postfix) with ESMTP - id D4B60415; Fri, 6 Sep 2002 09:34:14 -0400 (EDT) -Subject: Re: [HACKERS] Foreign keys in pg_dump -From: Rod Taylor <rbt@zort.ca> -To: Christopher Kings-Lynne <chriskl@familyhealth.com.au> -cc: Hackers <pgsql-hackers@postgresql.org> -In-Reply-To: <GNELIHDDFBOCMGBFGEFOKEBMCEAA.chriskl@familyhealth.com.au> -References: <GNELIHDDFBOCMGBFGEFOKEBMCEAA.chriskl@familyhealth.com.au> -Content-Type: text/plain -Content-Transfer-Encoding: 7bit -X-Mailer: Ximian Evolution 1.0.8 -Date: 06 Sep 2002 09:34:21 -0400 -Message-ID: <1031319261.3555.9.camel@jester> -MIME-Version: 1.0 -X-Virus-Scanned: by AMaViS new-20020517 -Precedence: bulk -Sender: pgsql-hackers-owner@postgresql.org -X-Virus-Scanned: by AMaViS new-20020517 -Status: ORr - -On Fri, 2002-09-06 at 01:19, Christopher Kings-Lynne wrote: -> OK, -> -> The argument about using ALTER TABLE/ADD FOREIGN KEY in dumps was that it -> caused an actual check of the data in the table, right? This was going to -> be much slower than using CREATE CONSTRAINT TRIGGER. -> -> So, why can't we do this in the SQL that pg_dump creates (TODO): -> -> CREATE TABLE ... -> ALTER TABLE/ADD FOREIGN KEY ... -> update catalogs and disable triggers that the ADD FOREIGN KEY just created -> ... -> COPY .. FROM ... -> \. -> update catalogs and enable triggers - -The problem with this is you may enable a trigger that was disabled by -the user. It cannot be done to all triggers. We could figure out which -triggers were created for the foreign key via pg_depend, then re-enable -only those. - -If we did most of this in a single transaction it should be fairly safe. - -> Doesn't this give us the best of both worlds? ie. Keeps dependencies but -> does fast COPYing? -> -> Also, I think a new super-user (or owner) only SQL command would be nice -> (TODO): -> -> ALTER TABLE foo {DISABLE|ENABLE} TRIGGER { ALL | trigger_name [ ,... ] }; - -pg_dump shouldn't need to know that a trigger is involved for foreign -keys. A SET CONSTRAINTS DISABLED would be more appropriate in a binary -mode dump -- but I firmly believe that text mode dumps should run full -checks on the data to ensure the user didn't muck with it. - - - - ----------------------------(end of broadcast)--------------------------- -TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org -