Subject Re: [firebird-support] Re: Why this procedure crashes server
Author Geoff Worboys
Re: [firebird-support] Re: Why this procedure crashes server jonatan.lauritsen@... [firebird-support] wrote:

Problem happens only on dialect 1 database, dialect 3 database accepts this SQL as expected.

Back when dialect 1 was current, you could not have empty begin/end blocks.  This was fixed in FB v1.5.  I am not certain this explains the error you are seeing, I have no idea whether the fix back then applied to dialect 1 or not (and even if not valid, it should not cause a server abort, so this is definitely a bug if Firebird somewhere).

However, given that you are using a legacy dialect, it seems a bit much to expect statements that were invalid back when dialect 1 was current, to be valid now.  (I hope that sentence parses correctly.)

I am curious as to why you are using dialect 1 on an FB3 database.

Back when Interbase 6 was released the 1999 language reference said:
"Dialect 1 exists to ease the migration of legacy databases."

More currently, the FirebirdSQL website ( ) says:

"Currently it is possible to create databases in Dialect 1 and 3 only, however it is recommended that you use Dialect 3 exclusively, since Dialect 1 will eventually be deprecated. Dialect 2 cannot be used to create a database since it only serves to convert Dialect 1 to Dialect 3."  [the highlighting is mine]

If the system was still using IB6 or FB1.x I could understand it, but given the many other changes generally required to upgrade to FB2 and now FB3, staying with dialect 1 seems an odd choice.  This is not intended as criticism, I am just curious as to why anyone is still using dialect 1 on new databases, 17+ years after it was superceded.

Geoff Worboys
Telesis Computing Pty Ltd