Subject | Re: [firebird-support] Streamed blobs versus Blobs |
---|---|
Author | Olivier Mascia |
Post date | 2004-12-02T14:11:55Z |
Hello Paul and all,
On Thu, 2 Dec 2004 11:52:22 -0000,
"Paul Beach" <pbeach@...> wrote:
PB> > OM> For what the C-API is concerned with, what are the differences between
PB> > OM> "streamed" blobs and blobs ?
PB>
PB> http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_stream_blob
Thank you Paul. I should spend more time on IBPhoenix site.
Thoug, now that I read that article, even more questions come...
What physical differences does it make to the database internals wether
a stream blob or a segmented blob is used. Is the internal storage
really different ?
Though I have not yet spent the required time to verify this in the
source code, it looks to me that those STREAM* / Bopen / putb / putbx /
getb / isc_seek_blob / BLOB_close are just a hack over the basic real
blob handling which is inherently 'segment' based, at least due to page
storage. Also this API seems completely built despite of any good sense
(I don't want to be rude on anybody by writing this, but it clearly
looks like mess than good order). Not even the naming of the functions
is coherent. We have Bopen but BLOB_close, we have putb/putx/getb but
isc_seek_blob... What happened to that area of the API during the
Borland days or before ?
Am I wrong when I think that isc_seek_blob can actually be used with so
called segmented blobs ? That one does not take a STREAM* but a plain
isc_blob_handle as expected...
Is it true that a blob written using the above set of calls can later be
retrieved using the common set of APIs (isc_create_blob2 /
isc_open_blob2 / isc_close_blob / isc_cancel_blob / isc_get_segment /
isc_put_segment / isc_blob_info) and reciproqual ? Or are these two kind
of blobs really two different kind of beasts inherently incompatible,
for what regards their manipulation using the C- API ?
Thanks,
--
Olivier Mascia
On Thu, 2 Dec 2004 11:52:22 -0000,
"Paul Beach" <pbeach@...> wrote:
PB> > OM> For what the C-API is concerned with, what are the differences between
PB> > OM> "streamed" blobs and blobs ?
PB>
PB> http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_stream_blob
Thank you Paul. I should spend more time on IBPhoenix site.
Thoug, now that I read that article, even more questions come...
What physical differences does it make to the database internals wether
a stream blob or a segmented blob is used. Is the internal storage
really different ?
Though I have not yet spent the required time to verify this in the
source code, it looks to me that those STREAM* / Bopen / putb / putbx /
getb / isc_seek_blob / BLOB_close are just a hack over the basic real
blob handling which is inherently 'segment' based, at least due to page
storage. Also this API seems completely built despite of any good sense
(I don't want to be rude on anybody by writing this, but it clearly
looks like mess than good order). Not even the naming of the functions
is coherent. We have Bopen but BLOB_close, we have putb/putx/getb but
isc_seek_blob... What happened to that area of the API during the
Borland days or before ?
Am I wrong when I think that isc_seek_blob can actually be used with so
called segmented blobs ? That one does not take a STREAM* but a plain
isc_blob_handle as expected...
Is it true that a blob written using the above set of calls can later be
retrieved using the common set of APIs (isc_create_blob2 /
isc_open_blob2 / isc_close_blob / isc_cancel_blob / isc_get_segment /
isc_put_segment / isc_blob_info) and reciproqual ? Or are these two kind
of blobs really two different kind of beasts inherently incompatible,
for what regards their manipulation using the C- API ?
Thanks,
--
Olivier Mascia