Sherlock,

It doesn’t affect the Mac Bundle because that defines GNC_DBD_DIR to point to 
the bundle’s Resources/lib/dbd in the environment file.

Mingw64 doesn’t provide libdbi so it’s built by jhbuild. We set the dbd-driver 
directory to the installation prefix, 
https://github.com/Gnucash/gnucash-on-windows/blob/668227c9651224bd0a0f9ce87713546ccfca9af8/jhbuildrc.in#L82.
 

Regards,
John Ralls

> On Oct 29, 2025, at 20:02, Sherlock <[email protected]> wrote:
> 
> I've been trying to understand why this hasn't been an issue on the other 
> platforms that have been on libdbi 0.9.1 for sometime.  The generic bug was 
> introduced 2 years ago (commit b011c81). I suspect the issue isn't seen on 
> Linux where libdbi is installed in the system location or on a Mac build 
> machine.  I think the issue should appear on non-build Macs but, of course, 
> the issue won't be apparent to a user unless they aren't using the xml format.
> 
> Regards,
> 
> Sherlock
> 
> On 10/29/25 6:54 PM, Sherlock wrote:
>> I maybe wrong about the c:\libdbi\lib\dbd folder as there are compile time 
>> definition that will override the location which appears to be something 
>> like /mingw32/lib/dbd but that should still typically miss in a typical 
>> user's gnucash installation.
>> Setting GNC_DBD_DIR to something like C:\Program Files (x86)\gnucash\lib\dbd 
>> should work around the issue.
>> Regards,
>> Sherlock
>> On 10/29/25 4:32 PM, Sherlock wrote:
>>> Hi John,
>>> 
>>> I suspect the Windows nightly builds have not been properly supporting 
>>> databases since libdbi was updated to 0.9.1 on October 5th unless the 
>>> drivers are in the c:\libdbi\lib\dbd folder or the folder to which the 
>>> GNC_DBD_DIR environment variable is set.
>>> 
>>> For example, attempt to save as sqlite3.
>>> 
>>> It appears there is a generic bug in gnc_module_init_backend_dbi() when 
>>> HAVE_LIBDBI_R is defined.  Specifically, when the initial 
>>> dbi_initialize_r() returns no drivers, the dbi_instance variable is still 
>>> set.
>>> 
>>> So, instead of:
>>> 
>>> #if HAVE_LIBDBI_R
>>>          if (dbi_instance)
>>>              return;
>>> #endif
>>> 
>>> the code should be:
>>> 
>>> #if HAVE_LIBDBI_R
>>>          if (dbi_instance)
>>>          {
>>>              dbi_shutdown_r (dbi_instance);
>>>              dbi_instance = nullptr;
>>>          }
>>> #endif
>>> 
>>> 
>>> Regards,
>>> 
>>> Sherlock
>>> 
> 
> _______________________________________________
> gnucash-user mailing list
> [email protected]
> To update your subscription preferences or to unsubscribe:
> https://lists.gnucash.org/mailman/listinfo/gnucash-user
> -----
> Please remember to CC this list on all your replies.
> You can do this by using Reply-To-List or Reply-All.

_______________________________________________
gnucash-user mailing list
[email protected]
To update your subscription preferences or to unsubscribe:
https://lists.gnucash.org/mailman/listinfo/gnucash-user
-----
Please remember to CC this list on all your replies.
You can do this by using Reply-To-List or Reply-All.

Reply via email to