Thread: pgsql: Fix documentation template for CREATE TRIGGER.
Fix documentation template for CREATE TRIGGER. By using curly braces, the template had specified that one of "NOT DEFERRABLE", "INITIALLY IMMEDIATE", or "INITIALLY DEFERRED" was required on any CREATE TRIGGER statement, which is not accurate. Change to square brackets makes that optional. Backpatch to 9.1, where the error was introduced. Branch ------ master Details ------- http://git.postgresql.org/pg/commitdiff/734bea8a69db9ffd675a697f614e80baeb2ca854 Modified Files -------------- doc/src/sgml/ref/create_trigger.sgml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
On Sat, 2014-06-21 at 14:21 +0000, Kevin Grittner wrote: > Fix documentation template for CREATE TRIGGER. > > By using curly braces, the template had specified that one of > "NOT DEFERRABLE", "INITIALLY IMMEDIATE", or "INITIALLY DEFERRED" > was required on any CREATE TRIGGER statement, which is not > accurate. Change to square brackets makes that optional. > > Backpatch to 9.1, where the error was introduced. It still doesn't look quite right to me. The new form: [ NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } ] says that, if DEFERRABLE is specified, then INITIALLY IMMEDIATE or INITIALLY DEFERRED is required. But the following is accepted by the server: create constraint trigger mytrigger after insert on dummy_table deferrable for each row execute procedure dummy_trigger(); (Although the standard doesn't seem to have deferrable triggers, that does seem to match the deferrable constraint syntax that is in the spec.) For that matter, the following is also accepted by the server: create constraint trigger mytrigger after insert on dummy_table initially deferred deferrable for each row execute procedure dummy_trigger(); That case may be a bug; and regardless I don't think we want to document/encourage specifying them in that order. But the first case seems reasonable to me. Regards, Jeff Davis
Did we ever address this concern? --------------------------------------------------------------------------- On Sun, Jun 22, 2014 at 12:19:49PM -0700, Jeff Davis wrote: > On Sat, 2014-06-21 at 14:21 +0000, Kevin Grittner wrote: > > Fix documentation template for CREATE TRIGGER. > > > > By using curly braces, the template had specified that one of > > "NOT DEFERRABLE", "INITIALLY IMMEDIATE", or "INITIALLY DEFERRED" > > was required on any CREATE TRIGGER statement, which is not > > accurate. Change to square brackets makes that optional. > > > > Backpatch to 9.1, where the error was introduced. > > It still doesn't look quite right to me. The new form: > > [ NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY > DEFERRED } ] > > says that, if DEFERRABLE is specified, then INITIALLY IMMEDIATE or > INITIALLY DEFERRED is required. But the following is accepted by the > server: > > create constraint trigger mytrigger > after insert on dummy_table deferrable > for each row execute procedure dummy_trigger(); > > (Although the standard doesn't seem to have deferrable triggers, that > does seem to match the deferrable constraint syntax that is in the > spec.) > > For that matter, the following is also accepted by the server: > > create constraint trigger mytrigger > after insert on dummy_table initially deferred deferrable > for each row execute procedure dummy_trigger(); > > That case may be a bug; and regardless I don't think we want to > document/encourage specifying them in that order. But the first case > seems reasonable to me. > > Regards, > Jeff Davis > > > > > -- > Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-committers -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + Everyone has their own god. +
On Sun, Jun 22, 2014 at 12:19:49PM -0700, Jeff Davis wrote: > On Sat, 2014-06-21 at 14:21 +0000, Kevin Grittner wrote: > > Fix documentation template for CREATE TRIGGER. > > > > By using curly braces, the template had specified that one of > > "NOT DEFERRABLE", "INITIALLY IMMEDIATE", or "INITIALLY DEFERRED" > > was required on any CREATE TRIGGER statement, which is not > > accurate. Change to square brackets makes that optional. > > > > Backpatch to 9.1, where the error was introduced. > > It still doesn't look quite right to me. The new form: > > [ NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY > DEFERRED } ] > > says that, if DEFERRABLE is specified, then INITIALLY IMMEDIATE or > INITIALLY DEFERRED is required. But the following is accepted by the > server: > > create constraint trigger mytrigger > after insert on dummy_table deferrable > for each row execute procedure dummy_trigger(); > > (Although the standard doesn't seem to have deferrable triggers, that > does seem to match the deferrable constraint syntax that is in the > spec.) > > For that matter, the following is also accepted by the server: > > create constraint trigger mytrigger > after insert on dummy_table initially deferred deferrable > for each row execute procedure dummy_trigger(); > > That case may be a bug; and regardless I don't think we want to > document/encourage specifying them in that order. But the first case > seems reasonable to me. I agree with both statements so I have applied the attached doc patch to head. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + Everyone has their own god. +