Re: [PATCHES] Constraint trigger doc patch

2006-10-17 Thread Michael Paesold

Bruce Momjian schrieb:

Manual page changed applied.  Thanks.


Ok, here is small patch fixing the remaining items I found when 
reviewing the built page. Two items are just SGML bugs, the other item 
is to finish an incomplete change from the previous events to the new 
event [ OR ... ] notation.


Best Regards,
Michael Paesold

For quick reference:
http://momjian.us/main/writings/pgsql/sgml/sql-createconstraint.html
Index: create_constraint.sgml
===
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/create_constraint.sgml,v
retrieving revision 1.16
diff -c -r1.16 create_constraint.sgml
*** doc/src/sgml/ref/create_constraint.sgml 16 Oct 2006 19:33:12 -  
1.16
--- doc/src/sgml/ref/create_constraint.sgml 17 Oct 2006 06:48:14 -
***
*** 52,58 
   para
The name of the constraint trigger. The actual name of the
created trigger will be of the form
!   literalRI_ConstraintTrigger_literal (where  is some number
assigned by the server).
Use this assigned name when dropping the trigger.
   /para
--- 52,58 
   para
The name of the constraint trigger. The actual name of the
created trigger will be of the form
!   literalRI_ConstraintTrigger_/literal (where  is some number
assigned by the server).
Use this assigned name when dropping the trigger.
   /para
***
*** 60,71 
 /varlistentry
  
 varlistentry
! termreplaceable class=PARAMETERevents/replaceable/term
  listitem
   para
One of literalINSERT/literal, literalUPDATE/literal, or
literalDELETE/literal; this specifies the event that will fire the
!   trigger. Multiple events can be specified using literalORliteral.
   /para
  /listitem
 /varlistentry
--- 60,71 
 /varlistentry
  
 varlistentry
! termreplaceable class=PARAMETERevent/replaceable/term
  listitem
   para
One of literalINSERT/literal, literalUPDATE/literal, or
literalDELETE/literal; this specifies the event that will fire the
!   trigger. Multiple events can be specified using literalOR/literal.
   /para
  /listitem
 /varlistentry

---(end of broadcast)---
TIP 5: don't forget to increase your free space map settings


Re: [PATCHES] Constraint trigger doc patch

2006-10-17 Thread Bruce Momjian

Patch applied.  Thanks.  Your documentation changes can be viewed in
five minutes using links on the developer's page,
http://www.postgresql.org/developer/testing.


---


Michael Paesold wrote:
 Bruce Momjian schrieb:
  Manual page changed applied.  Thanks.
 
 Ok, here is small patch fixing the remaining items I found when 
 reviewing the built page. Two items are just SGML bugs, the other item 
 is to finish an incomplete change from the previous events to the new 
 event [ OR ... ] notation.
 
 Best Regards,
 Michael Paesold
 
 For quick reference:
 http://momjian.us/main/writings/pgsql/sgml/sql-createconstraint.html

 Index: create_constraint.sgml
 ===
 RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/create_constraint.sgml,v
 retrieving revision 1.16
 diff -c -r1.16 create_constraint.sgml
 *** doc/src/sgml/ref/create_constraint.sgml   16 Oct 2006 19:33:12 -  
 1.16
 --- doc/src/sgml/ref/create_constraint.sgml   17 Oct 2006 06:48:14 -
 ***
 *** 52,58 
para
 The name of the constraint trigger. The actual name of the
 created trigger will be of the form
 !   literalRI_ConstraintTrigger_literal (where  is some number
 assigned by the server).
 Use this assigned name when dropping the trigger.
/para
 --- 52,58 
para
 The name of the constraint trigger. The actual name of the
 created trigger will be of the form
 !   literalRI_ConstraintTrigger_/literal (where  is some 
 number
 assigned by the server).
 Use this assigned name when dropping the trigger.
/para
 ***
 *** 60,71 
  /varlistentry
   
  varlistentry
 ! termreplaceable class=PARAMETERevents/replaceable/term
   listitem
para
 One of literalINSERT/literal, literalUPDATE/literal, or
 literalDELETE/literal; this specifies the event that will fire the
 !   trigger. Multiple events can be specified using literalORliteral.
/para
   /listitem
  /varlistentry
 --- 60,71 
  /varlistentry
   
  varlistentry
 ! termreplaceable class=PARAMETERevent/replaceable/term
   listitem
para
 One of literalINSERT/literal, literalUPDATE/literal, or
 literalDELETE/literal; this specifies the event that will fire the
 !   trigger. Multiple events can be specified using literalOR/literal.
/para
   /listitem
  /varlistentry

 
 ---(end of broadcast)---
 TIP 5: don't forget to increase your free space map settings

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---(end of broadcast)---
TIP 2: Don't 'kill -9' the postmaster


Re: [PATCHES] Constraint trigger doc patch

2006-10-16 Thread Michael Paesold

[Added pgsql-hackers to CC:]

Michael Glaesemann wrote:
[ a patch for constraint trigger docs]

Great! I was just going to try to use constraint triggers (because I 
needed deferrable constraints). So I personally appreciate this 
documentation update very much.


Just some notes:


Index: doc/src/sgml/ref/create_constraint.sgml

...

--- 21,32 
   refsynopsisdiv
  synopsis
  CREATE CONSTRAINT TRIGGER replaceable 
class=parametername/replaceable

! AFTER replaceable class=parameterevent [ OR ... ]/replaceable
! ON replaceable class=parametertable_name/replaceable
! [ FROM replaceable 
class=parameterreferenced_table_name/replaceable ]
! { NOT DEFERRABLE | [ DEFERABBLE ] { INITIALLY IMMEDIATE | 
INITIALLY DEFERRED } }

! FOR EACH ROW
! EXECUTE PROCEDURE replaceable 
class=parameterfuncname/replaceable ( replaceable 
class=parameterarguments/replaceable )

  /synopsis
   /refsynopsisdiv


It's spelled DEFERRABLE. You got it right in NOT DEFERRABLE but wrong in 
[ DEFERABBLE ].


 The name of the constraint trigger. The actual name of the
 created trigger will be of the form
 literalRI_ConstraintTrigger_literal (where  is some number
 assigned by the server). Use this assigned name is when dropping the
 constraint.

It think you should drop the is from the last sentence here. 
Additionally, I would prefer Use this assigned name when dropping the 
trigger. here, because this one confused me to try to ALTER TABLE DROP 
CONSTRAINT instead of DROP TRIGGER.


Thanks again.

Best Regards,
Michael Paesold


---(end of broadcast)---
TIP 1: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly


Re: [PATCHES] Constraint trigger doc patch

2006-10-16 Thread Bruce Momjian

Patch applied.  Thanks.  Your documentation changes can be viewed in
five minutes using links on the developer's page,
http://www.postgresql.org/developer/testing.


---


Michael Glaesemann wrote:
 (Fifth attempt: diff inline)
 (And a fourth attempt, from another account...)
 (Third time's the charm?)
 (Resent as I sent this yesterday but haven't seen it on the list yet  
 or in the online archives. Apologies if it ends up double-posting.)
 
 Please find attached a doc patch for CREATE CONSTRAINT TRIGGER. The  
 documentation here has always been sparse, as the command isn't  
 intended for general use. However, in its current form its a bit  
 *too* sparse. For example, it mentions constraint attributes but  
 doesn't say what those might be or where to look for information for  
 details. The patch lists attribute options and provides references to  
 where those options are described.
 
 When looking in gram.y while trying to figure out what exactly was  
 meant by actual constraint specification, I discovered  
 OptConstrFromTable. I assume this means Optional Constraint From  
 Table and it looks like it's used to specify the referenced table a  
 foreign key constraint. I couldn't figure out how to meaningfully use  
 it and have left the description purposefully vague.
 
 I don't have a working DocBook tool chain on my system, so I haven't  
 been able to check if it builds properly. I tried to be conscientious  
 about my formatting, but some SGML bugs may have crept in.
 
 Thanks!
 
 Michael Glaesemann
 grzm myrealbox com
 
 Index: doc/src/sgml/ref/create_constraint.sgml
 ===
 RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/ 
 create_constraint.sgml,v
 retrieving revision 1.14
 diff -c -r1.14 create_constraint.sgml
 *** doc/src/sgml/ref/create_constraint.sgml   16 Sep 2006 00:30:17  
 - 1.14
 --- doc/src/sgml/ref/create_constraint.sgml   7 Oct 2006 03:53:18 -
 ***
 *** 21,29 
 refsynopsisdiv
synopsis
CREATE CONSTRAINT TRIGGER replaceable class=parametername/ 
 replaceable
 ! AFTER replaceable class=parameterevents/replaceable ON
 ! replaceable class=parametertablename/replaceable  
 replaceable class=parameterconstraint/replaceable replaceable  
 class=parameterattributes/replaceable
 ! FOR EACH ROW EXECUTE PROCEDURE replaceable  
 class=parameterfuncname/replaceable ( replaceable  
 class=parameterargs/replaceable )
/synopsis
 /refsynopsisdiv
 
 --- 21,32 
 refsynopsisdiv
synopsis
CREATE CONSTRAINT TRIGGER replaceable class=parametername/ 
 replaceable
 ! AFTER replaceable class=parameterevent [ OR ... ]/ 
 replaceable
 ! ON replaceable class=parametertable_name/replaceable
 ! [ FROM replaceable class=parameterreferenced_table_name/ 
 replaceable ]
 ! { NOT DEFERRABLE | [ DEFERABBLE ] { INITIALLY IMMEDIATE |  
 INITIALLY DEFERRED } }
 ! FOR EACH ROW
 ! EXECUTE PROCEDURE replaceable class=parameterfuncname/ 
 replaceable ( replaceable class=parameterarguments/replaceable )
/synopsis
 /refsynopsisdiv
 
 ***
 *** 33,102 
  para
   commandCREATE CONSTRAINT TRIGGER/command is used within
   commandCREATE TABLE/command/commandALTER TABLE/command  
 and by
 !applicationpg_dump/application  to  create  the  special   
 triggers  for
 !referential  integrity.
   It is not intended for general use.
  /para
 /refsect1
 
 refsect1
 !titleParameters/title
 ! 
 ! variablelist
 !  varlistentry
 !   termreplaceable class=PARAMETERname/replaceable/term
 !   listitem
 !para
 ! The name of the constraint trigger.
 !/para
 !   /listitem
 !  /varlistentry
 !
 !  varlistentry
 !   termreplaceable class=PARAMETERevents/replaceable/term
 !   listitem
 !para
 ! The event categories for which this trigger should be fired.
 !/para
 !   /listitem
 !  /varlistentry
 !
 !  varlistentry
 !   termreplaceable class=PARAMETERtablename/replaceable/ 
 term
 !   listitem
 !para
 ! The name (possibly schema-qualified) of the table in which
 ! the triggering events occur.
 !/para
 !   /listitem
 !  /varlistentry
 !
 !  varlistentry
 !   termreplaceable class=PARAMETERconstraint/ 
 replaceable/term
 !   listitem
 !para
 ! Actual constraint specification.
 !/para
 !   /listitem
 !  /varlistentry
 !
 !  varlistentry
 !   termreplaceable class=PARAMETERattributes/ 
 replaceable/term
 !   listitem
 !para
 ! The constraint attributes.
 !/para
 !   /listitem
 !  /varlistentry
 !
 !  varlistentry
 !   termreplaceable class=PARAMETERfuncname/replaceable 
 (replaceable class=PARAMETERargs/replaceable)/term
 !   listitem
 

Re: [PATCHES] Constraint trigger doc patch

2006-10-16 Thread Bruce Momjian

Manual page changed applied.  Thanks.

---


Michael Paesold wrote:
 [Added pgsql-hackers to CC:]
 
 Michael Glaesemann wrote:
 [ a patch for constraint trigger docs]
 
 Great! I was just going to try to use constraint triggers (because I 
 needed deferrable constraints). So I personally appreciate this 
 documentation update very much.
 
 Just some notes:
 
  Index: doc/src/sgml/ref/create_constraint.sgml
 ...
  --- 21,32 
 refsynopsisdiv
synopsis
CREATE CONSTRAINT TRIGGER replaceable 
  class=parametername/replaceable
  ! AFTER replaceable class=parameterevent [ OR ... ]/replaceable
  ! ON replaceable class=parametertable_name/replaceable
  ! [ FROM replaceable 
  class=parameterreferenced_table_name/replaceable ]
  ! { NOT DEFERRABLE | [ DEFERABBLE ] { INITIALLY IMMEDIATE | 
  INITIALLY DEFERRED } }
  ! FOR EACH ROW
  ! EXECUTE PROCEDURE replaceable 
  class=parameterfuncname/replaceable ( replaceable 
  class=parameterarguments/replaceable )
/synopsis
 /refsynopsisdiv
 
 It's spelled DEFERRABLE. You got it right in NOT DEFERRABLE but wrong in 
 [ DEFERABBLE ].
 
   The name of the constraint trigger. The actual name of the
   created trigger will be of the form
   literalRI_ConstraintTrigger_literal (where  is some number
   assigned by the server). Use this assigned name is when dropping the
   constraint.
 
 It think you should drop the is from the last sentence here. 
 Additionally, I would prefer Use this assigned name when dropping the 
 trigger. here, because this one confused me to try to ALTER TABLE DROP 
 CONSTRAINT instead of DROP TRIGGER.
 
 Thanks again.
 
 Best Regards,
 Michael Paesold
 
 
 ---(end of broadcast)---
 TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly

-- 
  Bruce Momjian   [EMAIL PROTECTED]
  EnterpriseDBhttp://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


[PATCHES] Constraint trigger doc patch

2006-10-10 Thread Michael Glaesemann

(Fifth attempt: diff inline)
(And a fourth attempt, from another account...)
(Third time's the charm?)
(Resent as I sent this yesterday but haven't seen it on the list yet  
or in the online archives. Apologies if it ends up double-posting.)


Please find attached a doc patch for CREATE CONSTRAINT TRIGGER. The  
documentation here has always been sparse, as the command isn't  
intended for general use. However, in its current form its a bit  
*too* sparse. For example, it mentions constraint attributes but  
doesn't say what those might be or where to look for information for  
details. The patch lists attribute options and provides references to  
where those options are described.


When looking in gram.y while trying to figure out what exactly was  
meant by actual constraint specification, I discovered  
OptConstrFromTable. I assume this means Optional Constraint From  
Table and it looks like it's used to specify the referenced table a  
foreign key constraint. I couldn't figure out how to meaningfully use  
it and have left the description purposefully vague.


I don't have a working DocBook tool chain on my system, so I haven't  
been able to check if it builds properly. I tried to be conscientious  
about my formatting, but some SGML bugs may have crept in.


Thanks!

Michael Glaesemann
grzm myrealbox com

Index: doc/src/sgml/ref/create_constraint.sgml
===
RCS file: /projects/cvsroot/pgsql/doc/src/sgml/ref/ 
create_constraint.sgml,v

retrieving revision 1.14
diff -c -r1.14 create_constraint.sgml
*** doc/src/sgml/ref/create_constraint.sgml	16 Sep 2006 00:30:17  
-	1.14

--- doc/src/sgml/ref/create_constraint.sgml 7 Oct 2006 03:53:18 -
***
*** 21,29 
   refsynopsisdiv
  synopsis
  CREATE CONSTRAINT TRIGGER replaceable class=parametername/ 
replaceable

! AFTER replaceable class=parameterevents/replaceable ON
! replaceable class=parametertablename/replaceable  
replaceable class=parameterconstraint/replaceable replaceable  
class=parameterattributes/replaceable
! FOR EACH ROW EXECUTE PROCEDURE replaceable  
class=parameterfuncname/replaceable ( replaceable  
class=parameterargs/replaceable )

  /synopsis
   /refsynopsisdiv

--- 21,32 
   refsynopsisdiv
  synopsis
  CREATE CONSTRAINT TRIGGER replaceable class=parametername/ 
replaceable
! AFTER replaceable class=parameterevent [ OR ... ]/ 
replaceable

! ON replaceable class=parametertable_name/replaceable
! [ FROM replaceable class=parameterreferenced_table_name/ 
replaceable ]
! { NOT DEFERRABLE | [ DEFERABBLE ] { INITIALLY IMMEDIATE |  
INITIALLY DEFERRED } }

! FOR EACH ROW
! EXECUTE PROCEDURE replaceable class=parameterfuncname/ 
replaceable ( replaceable class=parameterarguments/replaceable )

  /synopsis
   /refsynopsisdiv

***
*** 33,102 
para
 commandCREATE CONSTRAINT TRIGGER/command is used within
 commandCREATE TABLE/command/commandALTER TABLE/command  
and by
!applicationpg_dump/application  to  create  the  special   
triggers  for

!referential  integrity.
 It is not intended for general use.
/para
   /refsect1

   refsect1
!titleParameters/title
!   
! variablelist
!  varlistentry
!   termreplaceable class=PARAMETERname/replaceable/term
!   listitem
!para
!   The name of the constraint trigger.
!/para
!   /listitem
!  /varlistentry
!
!  varlistentry
!   termreplaceable class=PARAMETERevents/replaceable/term
!   listitem
!para
!   The event categories for which this trigger should be fired.
!/para
!   /listitem
!  /varlistentry
!
!  varlistentry
!   termreplaceable class=PARAMETERtablename/replaceable/ 
term

!   listitem
!para
!   The name (possibly schema-qualified) of the table in which
!   the triggering events occur.
!/para
!   /listitem
!  /varlistentry
!
!  varlistentry
!   termreplaceable class=PARAMETERconstraint/ 
replaceable/term

!   listitem
!para
!   Actual constraint specification.
!/para
!   /listitem
!  /varlistentry
!
!  varlistentry
!   termreplaceable class=PARAMETERattributes/ 
replaceable/term

!   listitem
!para
!   The constraint attributes.
!/para
!   /listitem
!  /varlistentry
!
!  varlistentry
!   termreplaceable class=PARAMETERfuncname/replaceable 
(replaceable class=PARAMETERargs/replaceable)/term

!   listitem
!para
!   The function to call as part of the trigger processing.
!/para
!   /listitem
!  /varlistentry
! /variablelist
   /refsect1
  /refentry
--- 36,128 
para
 commandCREATE CONSTRAINT TRIGGER/command is used within
 commandCREATE TABLE/command/commandALTER TABLE/command  
and by
!applicationpg_dump/application to create the special  
triggers