On Fri, 2013-07-19 at 04:40 +0200, Lionel Elie Mamane wrote:
1) I notice that Debian has neither fb_config, nor fbembed.pc; are
these part of the upstream build (and then it is a bug in Debian
that they are not in the packages)? Do other distros have them?
I'm still looking into this. Upstream has fb_config, suse has
fbembed.pc, Gentoo and debian seem to have neither.
Each of those distros has flamerobin which builds against firebird -- it
seems to use the following in it's configure.in (at least in their
current master -- I haven't looked at the distro releases yet):
AC_SEARCH_LIBS([isc_attach_database], [fbclient fbembed], [],
which looks like it could be usable (this worked on my suse system which
also ships the fbembed.pc). However flamerobin also ships the firebird
headers in its sources -- here we'd probably have to check that the
headers are in fact present? I'll try and experiment to see how well the
above works.
2) This is a bit scary in the Debian package description of
libfbembed:
Contrary to libfbclient, libfbembed is not thread-safe.
Taking a quick look at e.g. OResultSet::ensureDataAvailable,
it is mutexed, but (as far as I understand) with a *different*
mutex for each instance (for each object). So this does not keep
multiple ResultSets from making parallel calls to non-thread-safe
libfbembed from different threads.
Yes, I'll probably have to have a mutex on the Connection then which all
the other objects use (I'm not entirely sure -- can we have multiple
files open independently in parallel withe each connection having its
own mutex, or does the entire driver need to have one mutex)?
3) You seem to have duplicated
connectivity/source/{inc,commontools}/propertyids.[hc]xx
in connectivity/source/drivers/firebird/propertyids.[hc]xx?
With the _same_ include guard?
These were already there when I started working on the Firebird driver
-- I'm trying to deduplicate anything that already exists elsewhere so
I'll look at this too. (I think this probably originally came from the
skeleton driver in odk/examples/DevelopersGuide/Database/DriverSkeleton/
).
4) OResultSet::m_sqlData: the driver caches the *whole* resultset? Oh
my... And not only that, it eagerly fetches the *whole* resultset?
That will *not* scale.
Does Firebird 3 support scrollable cursors?
I'm not actually sure any LibreOffice code really requires
scrollable cursors; it seems to me that when it detects that the
driver / database does not support that, it makes a *new* query
with "WHERE primary_key=VALUE" each time it wants to "go back"
(this happens in dbaccess/source/core/api/KeySet.cxx and
RowSetCache.cxx).
If FireBird can't support previous() et al, it could just throw an
SQLError when they are called?
If the LibreOffice detection logic is b0rken, we should fix
*that* rather than inefficiently fake in the driver capabilities
that the database does not have.
Firebird 3 does apparently support scrollable cursors but 2.5 doesn't --
I never realized that drivers were allowed to not support previous() --
I'll remove the local storage and see how things work out.
Cheers,
Andrzej
Context
- FireBird/LibreOffice: fb_config/pkg-config, thread-safety, eager caching · Lionel Elie Mamane
- Re: FireBird/LibreOffice: fb_config/pkg-config, thread-safety, eager caching · Lionel Elie Mamane
- Re: FireBird/LibreOffice: fb_config/pkg-config, thread-safety, eager caching · David Tardon
- Re: FireBird/LibreOffice: fb_config/pkg-config, thread-safety, eager caching · Andrzej J. R. Hunt
- Re: FireBird/LibreOffice: fb_config/pkg-config, thread-safety, eager caching · Rene Engelhard
- Re: FireBird/LibreOffice: fb_config/pkg-config, thread-safety, eager caching · Michael Meeks
- Re: FireBird/LibreOffice: fb_config/pkg-config, thread-safety, eager caching · Popa Adrian Marius
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.