BLOB not found in SuperClassic and Classic on Uncommitted Transactions
----------------------------------------------------------------------

                 Key: CORE-4678
                 URL: http://tracker.firebirdsql.org/browse/CORE-4678
             Project: Firebird Core
          Issue Type: Bug
    Affects Versions: 2.5.3 Update 1
         Environment: Windows Server 2008/2012 and Windows 7
Firebird: 2.5.3.26778 and 2.5.2.26540
            Reporter: Israel Lopez


I'm supporting a commercial product that happens to use Firebird SQL.  As part 
of new vendor updates, the Firebird installation was upgraded from 2.5.2.26540 
to 2.5.3.26778.

The customer who uses the commercial product uses a feature in the database 
schema known as a "memo" which is stored as a BLOB datatype. Specifically: BLOB 
SUB_TYPE 1 SEGMENT SIZE 100 CHARACTER SET ASCII

The users started reporting errors in the application, which upon inspection 
was a Stacktrace message through JayBird, through Hibernate, and through the 
application code.  They were receiving the following error message "BLOB not 
found."  Because no other changes were made, and no other customers reported 
the issue on the same new version, we had believed it was hardware. While 
waiting for the hardware specialists to respond I created a test application to 
confirm.

The test code is hosted here: https://github.com/ilopez/Firebird.TestBlobs
Binaries are available here: 
https://github.com/ilopez/Firebird.TestBlobs/releases/download/0.1/Debug.zip

Arguments are TestFirebirdBlobs.exe [1] [2] [3]
1 - Path to DB
2 - Username
3 - Password

The application drops the DB, and creates a new DB, then applies the selected 
schema I was testing. 

For testing; two connections are created, one for inserting, and another for 
selecting.   For the first connection, I insert records, but do not commit and 
close the connection.  Then I create a new second connection and do a simple 
count on the table.  Using this code, and switching the MEMO type field from 
VARCHAR(256) to the BLOB type, I can confirm and replicate the results the 
users were seeing.

On SuperClassic and Classic for 2.5.3.26778 I receive a BLOB not found when 
using the second connection, on 2.5.2.26540 I receive no errors for both 
VARCHAR and BLOB types.

Command Example output and testing results:
https://gist.github.com/ilopez/7d36e860a7a31373cca9

It appears there has been some kind of regression that exposes the first 
connection's inserts, to the second connections reads, and therefore we receive 
BLOB not found errors.  Writing this separate code, confirms that it was not 
the commercial software's code OR the customer's hardware causing this issue.  

My workaround is going to be to revert back to 2.5.2.26540.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to