Skip to content
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

Wrong client version is returned by API [CORE4847] #5143

Open
firebird-automations opened this issue Jun 24, 2015 · 9 comments
Open

Wrong client version is returned by API [CORE4847] #5143

firebird-automations opened this issue Jun 24, 2015 · 9 comments

Comments

@firebird-automations
Copy link
Collaborator

Submitted by: @aafemt

Votes: 1

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());
}

@firebird-automations
Copy link
Collaborator Author

Commented by: @AlexPeshkoff

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.

@firebird-automations
Copy link
Collaborator Author

Commented by: @aafemt

gds32.dll (http://libgds.so) is supposed for backward compatibility. fbclient.dll (http://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.

@firebird-automations
Copy link
Collaborator Author

Commented by: @AlexPeshkoff

http://libgds.so is symlink to http://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

@firebird-automations
Copy link
Collaborator Author

Commented by: @aafemt

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.

@firebird-automations
Copy link
Collaborator Author

Commented by: Bjoern Reimer (bnreimer)

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.

@firebird-automations
Copy link
Collaborator Author

Commented by: @livius2

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)

@firebird-automations
Copy link
Collaborator Author

Commented by: Sean Leyne (seanleyne)

Perhaps v3 is the right time to drop this concern about truly legacy functionality and move forward as the differentiated product that Firebird is.

@firebird-automations
Copy link
Collaborator Author

Commented by: @dyemanov

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.

@firebird-automations
Copy link
Collaborator Author

Commented by: @aafemt

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant