Firbird / Blob support

Andrzej J. R. Hunt andrzej at
Sun Jul 21 11:23:49 PDT 2013


I've just been working on the first stages of supporting blobs with
firebird (I've noticed that most drivers don't seem to support blobs at
all, however firebird stores table and column descriptions within blobs
so in order to support them we need blob suppport).

The firebird blob calls require repeated calls to isc_get_segment which
reads the blob (in chunks of specified size) into memory, whereby it
isn't possible to scroll backwards again. This would probably work well
with Blob::getBinaryStream() -- for the moment I've only implemented
getBytes() though where we read the whole blob into memory on request.

For smaller blobs I guess it'd be fine to read all data into memory in
such a fashion, for larger blobs this isn't satisfactory but then
hopefully an Input stream would be used anyway? (I've also found
BlobHelper within connectivity which in fact just wraps round a Sequence
-- I could essentially modify the firebird blob to extend that -- most
of the code in my Blob implementation is just to do with loading the
blob from the database, whereas BlobHelper implements the remaining
methods.) I haven't managed to sucessfully find any usage of Blob within
LO though, so I guess this isn't actually particularly important?



More information about the LibreOffice mailing list