Issue Details (XML | Word | Printable)

Key: CORE-4847
Type: Bug Bug
Status: Open Open
Priority: Trivial Trivial
Assignee: Unassigned
Reporter: Dimitry Sibiryakov
Votes: 1
Watchers: 4
Operations

If you were logged in you would be able to see more operations.
Firebird Core

Wrong client version is returned by API

Created: 24/Jun/15 03:05 PM   Updated: 26/Jun/15 10:45 AM
Component/s: API / Client Library
Affects Version/s: 2.1.6, 3.0 Beta 1, 2.5.4
Fix Version/s: None

QA Status: No test


 Description  « Hide
Results of functions isc_get_client_major_version() and isc_get_client_minor_version() don't match real client version even if they are called from fbclient library.

Test program is:

#include <stdio.h>
#include "ibase.h"

int main()
{
  printf("Client version is %d.%d\n", isc_get_client_major_version(), isc_get_client_minor_version());
}


 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Alexander Peshkov added a comment - 24/Jun/15 03:19 PM
Hmm..
Client version is 6.3

Suppose that's something 'as designed' to be compatible with old IB versions. Number 6 definitely came from open-sourced IB6.0.

Dimitry Sibiryakov added a comment - 24/Jun/15 03:27 PM - edited
gds32.dll (libgds.so) is supposed for backward compatibility. fbclient.dll (libfclient.so) is clearly Firebird-only client. Thus this ticket mention fbclient explicitly.

PS: My actual problem is to tell whether multithreaded synchronization is required during API calls or not, but IMHO, returning the real client version is the best way to solve it.

Alexander Peshkov added a comment - 24/Jun/15 03:39 PM
libgds.so is symlink to libfbclient.so
gds32.dll is (as far as I remember) just file copy
no idea how to achieve different API calls behaviour w/o changes in compatibility library creation

PS. I do not remember why was it decided to keep reporting IB version numbers, may be you can find something in devel archive, pre-2005 I suppose

Dimitry Sibiryakov added a comment - 24/Jun/15 03:47 PM
It was decided so to allow IBX show administrative components in Delphi. AFAIK, it has no point now, as IBX changed services discovering method and then was replaced with FireDAC.

BTW, the library is not only copied, but binary patched as well.

Bjoern Reimer added a comment - 24/Jun/15 03:53 PM
As far as I remember it had something to do at least with IBX as the service api and some components arround was availible with a minimum client version at least in delphi ide.

Karol Bieniaszewski added a comment - 24/Jun/15 09:08 PM
And this should stay as it is - but maybe new api should be created?
Many people still use IBX (i use it too in old continued projects)

Sean Leyne added a comment - 24/Jun/15 09:16 PM
Perhaps v3 is the right time to drop this concern about truly legacy functionality and move forward as the differentiated product that Firebird is.

Dmitry Yemanov added a comment - 24/Jun/15 09:45 PM
isc_* functions are intended to return the IB emulation version and I believe this should stay as is. We already tried to be "differentiated" in this regard but IBX users complained. If anyone needs the FB client version, we could created the necessary fb_* functions instead.

Dimitry Sibiryakov added a comment - 26/Jun/15 10:45 AM
Ok, we can put fix for isc_get_client_major_version() off till Firebid version 7. But in meantime, isc_get_cient_minor_version() could return 20, 21, 25 and 30 for Firebird 2.0, 2.1, 2.5 and 3.0 respecitively. Summary result will be 6.20, 6.21, 6.25, 6.30 that will make the API useful and leave IBX unbroken.