I’d like to the ask guys with experience in Firebird and IBPP (especially the latter). I found a lot of positive posts about Firebird but I’m having a problem to decide about IBPP. The interface itself is clean and simple but it seems that the project does not have much of activity going on (maybe because it’s very stable).
- Would you recommend IBPP for production environment?
- Is it thread-safe?
- Any known bugs?
Thanks.
In addition to the points Milan mentioned:
There is currently no way to use more than one client library when connecting to different databases, or even to specify which client library will be used. There is a certain hard-coded sequence of client library locations that are probed, and the first one that is found will be used for all connections. An IBPP version changing this has been hinted at for a very long time, but hasn’t arrived yet. SVN
trunkcontains some code to deal with this, but I’d say that’s alpha quality at most.And all of this holds true for Windows only, as on all other platforms the Firebird client library isn’t loaded at runtime anyway.
The library isn’t thread-safe. That doesn’t matter for the most part, as you should let each thread have its own connection, transaction and other assorted objects anyway. But IBPP uses its own smart pointer implementation, which is neither completely exception-safe nor thread-safe. Still, as long as you initialize the library from the main thread (before any other thread is created) and create and destroy IBPP objects in the same thread (so absolutely no sharing of objects with other threads!) using IBPP in multiple threads should work fine.
If you can live with the points above (they may not matter to you, at all) it is certainly ready for production use. You can always change things you run into, as we did for FlameRobin too.