Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Compatibility of Firebird Client with Firebird Server

Tags:

firebird

i have a question about Firebird Client and Server versions. I know that the Database-File have to match the Firebird Server due to ODS Changes. i.e. Firebird recommends to Backup/Restore the Database-File between Server-Version 2.5.1 and 2.5.2...

But what about Client connections to the Server?

Which combinations are ok?

Client 2.5.2 --> Server 2.5.2 (should be ok. ;) )
Client 2.5.2 --> Server 2.5.1
Client 2.5.1 --> Server 2.5.2
Client 2.5.x --> Server 1.5
Client 1.5.x --> Server 2.5.2

Are there any known problems? What is the recommendation from Firebird? Is it a good why to use always the new official Client? But due to we have a lot of Customer Installations i can not be sure that the server matches the client-version.

Hope someone can give me some advice.

like image 735
Andreas Avatar asked Sep 27 '13 11:09

Andreas


1 Answers

The Firebird protocol has a versioning mechanism: the client and server negotiate which version of the protocol to use. Current Firebird server versions support all previous protocol versions of Firebird (upto and including Interbase 6.0 from which it was forked). This means that any Firebird client version can talk to any Firebird version. However if you use an older client, you can't use features added in newer protocol versions, and you won't be able to use some of the performance improvements in the protocol.

So: yes you can use older versions, but it is advisable to use the latest because bugs will have been fixed and new features or performance improvements have been added.

My answer only applies to TCP/IP connections. For 'local' connections with XNET or named pipes I know there were breaking changes between 1.5 and 2.0, and you might even need a client version that matches the Firebird server version.

For Firebird 3, using older client versions does have some caveats: by default Firebird 3 requires wire protocol encryption and a new authentication mechanism, both of which were introduced in Firebird 3 with wire protocol version 13. To be able to connect with an older client version you will need to make the following changes to firebird.conf and restart Firebird:

  1. Relax the encryption requirement with setting WireCrypt = Enabled (default is Required)
  2. Enable the legacy authentication with setting AuthServer = Srp, Legacy_Auth (default is Srp)
like image 176
Mark Rotteveel Avatar answered Sep 27 '22 17:09

Mark Rotteveel