Questions on IBDAC 8.0.1 and Firebird 4.0

Discussion of open issues, suggestions and bugs regarding IBDAC (InterBase Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
tsteinmaurer
Posts: 49
Joined: Thu 17 Dec 2009 08:25

Questions on IBDAC 8.0.1 and Firebird 4.0

Post by tsteinmaurer » Thu 16 Sep 2021 18:13

Hello,

just recently upgraded to IBDAC 8.0.1 (Delphi 32-bit), trying to use it with Firebird 4.0.

I have two issues/questions:

1)
When trying to connect to a Firebird 4.0 database, I get the following error message.

Code: Select all

Error loading plugin ChaCha
Module C:\Firebird\Firebird_400_5050_x86\plugins/ChaCha
exists but can not be loaded
The specified procedure could not be found.
After explicitly disabling WireCrypt in firebird.conf with

Code: Select all

WireCrypt = Disabled
and restarting the Firebird Server, I can connect. Is there something special needed in IBDAC so that I can connect to a database of a default Firebird Server installation? I can connect to the database with isql without issues.

2)
Querying MON$ tables, which now use the new TIMESTAMP WITH TIMEZONE for various fields, fails with a conversion error when using .AsDateTime as field access in my legacy application re-compiled with IBDAC 8.0.1.

Thanks for your help.

tsteinmaurer
Posts: 49
Joined: Thu 17 Dec 2009 08:25

Re: Questions on IBDAC 8.0.1 and Firebird 4.0

Post by tsteinmaurer » Thu 16 Sep 2021 19:30

ad 2)

I see a TIMESTAMP WITH TIME ZONE field maps to a TStringField in Delphi, which then obviously will fail with .AsDateTime.

Does IBDAC 8.0.1 support the new Firebird 4 isc_dpb_set_bind DPB somehow? If not, I think this should be a must have to ease running legacy applications with new data types, especially also with MON$ tables, as you don't control what data types are used there.

See also:
- https://www.firebirdsql.org/file/docume ... l-set-bind
- How Jaybird is dealing with that: https://firebirdsql.github.io/jaybird-m ... tatypebind

Thanks

ViktorV
Devart Team
Posts: 3104
Joined: Wed 30 Jul 2014 07:16

Re: Questions on IBDAC 8.0.1 and Firebird 4.0

Post by ViktorV » Wed 22 Sep 2021 16:41

Hi!

Thank you for your inquiry!
1) This error means that the client library cannot load the required ChaCha plugin. Please try to specify the full path to the client library file in the CliebtLibrary field, so that the Plugins folder with the plugin file was also present there. Pay attention, all these files must have a bitness equal to the bitness of your application.
If this does not help in solving the issue, please send us your sample with the necessary files. And the firebird.conf file from your server.
2) In IBDAC 8.0.1 for Firebird 4, we supported INT128, DECFLOAT and large NUMERIC types, as well as table names up to 64 characters.
The TIMESTAMP WITH TIME ZONE type is supported as a string in this release.
Full support of this type will be added to the next release of IBDAC!
We will consider the possibility of supporting isc_dpb_set_bind DPB.
Should you have any questions, do not hesitate to ask!

Best regards,
Viktor

tsteinmaurer
Posts: 49
Joined: Thu 17 Dec 2009 08:25

Re: Questions on IBDAC 8.0.1 and Firebird 4.0

Post by tsteinmaurer » Fri 24 Sep 2021 05:00

Hello Viktor,

thanks for your reply!

ad 1): Likely this should be easy reproducible on your side.
- I simply extracted a Firebird 4.0.1 32-bit (matching my client app bitness) ZIP distribution into a folder
- The only thing I changed in firebird.conf is listening on port 5050
- In Delphi XE7, at design-time with TIBCConnection, trying to connect to my database with the following connect string "Data Source=localhost;Database=tourism.fdb;Port=5050;User ID=tourism;Password=xxx;Client Library=C:\Firebird\Firebird_400_5050_x86\fbclient.dll;Login Prompt=False" thus full qualified path to the client library of the extracted ZIP distribution

I still get a "Error loading plugin ChaCha ..."

ad 2): With full support you mean being able to access that sort of new date/time data type via .AsDateTime? From a backwards compatibility mode, the isc_dpb_set_bind DPB would be definitely useful as well.

Any timeline for the next release?

Thanks a lot,
Thomas

ViktorV
Devart Team
Posts: 3104
Joined: Wed 30 Jul 2014 07:16

Re: Questions on IBDAC 8.0.1 and Firebird 4.0

Post by ViktorV » Fri 01 Oct 2021 15:57

Hi!

Unfortunately, we were unable to reproduce the behavior you indicated in our environment based on the data you provided - we connected to the server without any issues.
Therefore, please compose us a complete sample demonstrating the behavior you specified and send us all the server files and specify how you run it, like a server or a regular file.

Thanks in advance,
Viktor

tsteinmaurer
Posts: 49
Joined: Thu 17 Dec 2009 08:25

Re: Questions on IBDAC 8.0.1 and Firebird 4.0

Post by tsteinmaurer » Sun 17 Oct 2021 09:15

Hello Viktor,

did some additional digging. The ChaCha connectivity issue with Firebird 4.0 seems to be only the case, if the process in question also has another (older) fbclient.dll library loaded.

E.g. my Delphi XE7 IDE also automatically loads the fbclient.dll library from the Windows system directory, which is from Firebird 2.5. When I now try at design-time to connect to Firebird 4, although my IBDAC connection component has set the client library path to a Firebird 4.0 fbclient.dll, I get the ChaCha error message.

Additionally, in my application, although running out-side the Delphi IDE shows the same issue, cause my application ships and uses Firebird 2.5 embedded, thus my application / executable has the 2.5 embedded library loaded. When I now try to connect via my application to a Firebird 4 server / database, although the IBDAC connection component instance is using a proper path to a 32-bit Firebird 4 client library, I get the same ChaCha connectivity error.

Does this make sense? Any further ideas?

Post Reply