|Subject||Re: [firebird-support] Re: Why this procedure crashes server|
|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 ( http://firebirdsql.org/manual/isql-dialects.html ) 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.
Telesis Computing Pty Ltd