Subject | RE: [IBO] MON$SQL_TEXT Blob column in MON$STATEMENTS table |
---|---|
Author | IBO Support List |
Post date | 2012-04-28T07:06:28Z |
Jerry and all,
The problem I am having with the "Invalid BLOB ID" error is not going to be
easy to solve. Here are the issues I am confronting:
When a query is executed and a record is fetched and there is
transliteration involved the database engine creates a temporary BLOB ID
that is only valid for that transaction. These temporary BLOB IDs are what
get fetched and therefore stored in the dataset buffers. If that transaction
goes away then all of those temporary BLOB IDs become invalid. So, if you
try and access the contents of the blob column you will get an error
message.
This can be resolved by automatically retrieving the blob contents at the
time of fetching the record or by me putting yet additional constraints upon
keeping the transaction open until it is safe to let it go.
There are advantages and disadvantages to both of these approaches. The
first one would be very easy to do and I can do it today. The second one
would take a considerable amount of doing and add to the complexity of the
IBO engine significantly.
Not only would I need to preserve a transaction while a cursor is open on
the server for fetching, I also need to preserve a transaction while there
are temporary BLOB IDs in the dataset buffer that have not been opened and
streamed into the buffer.
Would anyone like to add their thoughts and ideas?
Jason
The problem I am having with the "Invalid BLOB ID" error is not going to be
easy to solve. Here are the issues I am confronting:
When a query is executed and a record is fetched and there is
transliteration involved the database engine creates a temporary BLOB ID
that is only valid for that transaction. These temporary BLOB IDs are what
get fetched and therefore stored in the dataset buffers. If that transaction
goes away then all of those temporary BLOB IDs become invalid. So, if you
try and access the contents of the blob column you will get an error
message.
This can be resolved by automatically retrieving the blob contents at the
time of fetching the record or by me putting yet additional constraints upon
keeping the transaction open until it is safe to let it go.
There are advantages and disadvantages to both of these approaches. The
first one would be very easy to do and I can do it today. The second one
would take a considerable amount of doing and add to the complexity of the
IBO engine significantly.
Not only would I need to preserve a transaction while a cursor is open on
the server for fetching, I also need to preserve a transaction while there
are temporary BLOB IDs in the dataset buffer that have not been opened and
streamed into the buffer.
Would anyone like to add their thoughts and ideas?
Jason