New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FB4 Release Notes should indicate that revised CREATE TRIGGER (SQL2003) syntax is not backwards compatible with older versions [DOC145] #81
Comments
Modified by: Tony Whyman (twhyman)description: See CORE6243 and CORE5545 for background discussion. The SQL2003 variant of the CREATE TRIGGER syntax has changed in Firebird 4 so that the "POSITION" clause must now come after the "ON <relation name>" clause instead of preceding it as was the case in Firebird 2.5 and Firebird 3.x. SQL statements that successfully used this variant in earlier versions will be rejected by Firebird 4 as invalid syntax (token unknown - POSITION). The Firebird 2.5 language reference specifies: <relation_trigger_sql2003> ::= Firebird 4 effectively changes the syntax specification to <relation_trigger_sql2003> ::= CORE5545 declares this as a bug despite both Firebird 2.5 and Firebird 3 being compliant with the Firebird 2.5 language reference manual. The "POSITION" clause is understood to be a Firebird extension rather than an SQL standard and hence the language reference may be viewed as the original specification. Both Firebird 2.5 and Firebird 3 are compliant with the specification and hence this should not be identified as a bug. CORE5545 is a change to the Firebird SQL syntax specification. The revised CREATE TRIGGER syntax should be declared in the release notes both in chapter 8 (DDL) and in chapter 12 (Compatibility Issues) so that users are correctly informed about this change to the Firebird SQL specification. => See CORE6243 and CORE5545 for background discussion. The SQL2003 variant of the CREATE TRIGGER syntax has changed in Firebird 4 so that the "POSITION" clause must now come after the "ON <relation name>" clause instead of preceding it as was the case in Firebird 2.5 and Firebird 3.x. SQL statements that successfully used this variant in earlier versions will be rejected by Firebird 4 as invalid syntax (token unknown - POSITION). The Firebird 2.5 language reference specifies: <relation_trigger_sql2003> ::= Firebird 4 effectively changes the syntax specification to <relation_trigger_sql2003> ::= CORE5545 declares that this a bug fix despite both Firebird 2.5 and Firebird 3 being compliant with the Firebird 2.5 language reference manual. The "POSITION" clause is understood to be a Firebird extension rather than an SQL standard and hence the language reference may be viewed as the original specification. Both Firebird 2.5 and Firebird 3 are compliant with the specification and hence this should not be identified as a bug. CORE5545 is a change to the Firebird SQL syntax specification. The revised CREATE TRIGGER syntax should be declared in the release notes both in chapter 8 (DDL) and in chapter 12 (Compatibility Issues) so that users are correctly informed about this change to the Firebird SQL specification. |
@dyemanov Can you check if this is still relevant? |
Verified, Firebird allows |
Submitted by: Tony Whyman (twhyman)
See CORE6243 and CORE5545 for background discussion.
The SQL2003 variant of the CREATE TRIGGER syntax has changed in Firebird 4 so that the "POSITION" clause must now come after the "ON <relation name>" clause instead of preceding it as was the case in Firebird 2.5 and Firebird 3.x. SQL statements that successfully used this variant in earlier versions will be rejected by Firebird 4 as invalid syntax (token unknown - POSITION). The Firebird 2.5 language reference specifies:
<relation_trigger_sql2003> ::=
[ACTIVE | INACTIVE]
{BEFORE | AFTER} <mutation_list>
[POSITION number]
ON {tablename | viewname}
Firebird 4 effectively changes the syntax specification to
<relation_trigger_sql2003> ::=
[ACTIVE | INACTIVE]
{BEFORE | AFTER} <mutation_list>
ON {tablename | viewname}
[POSITION number]
CORE5545 declares that this a bug fix despite both Firebird 2.5 and Firebird 3 being compliant with the Firebird 2.5 language reference manual. The "POSITION" clause is understood to be a Firebird extension rather than an SQL standard and hence the language reference may be viewed as the original specification. Both Firebird 2.5 and Firebird 3 are compliant with the specification and hence this should not be identified as a bug. CORE5545 is a change to the Firebird SQL syntax specification.
The revised CREATE TRIGGER syntax should be declared in the release notes both in chapter 8 (DDL) and in chapter 12 (Compatibility Issues) so that users are correctly informed about this change to the Firebird SQL specification.
The text was updated successfully, but these errors were encountered: