Exception with Firebird and large varchar
Posted: 04.05.2009, 13:47
Hello,
I think this is a regression from Zeos-6. An exception is thrown (assert failed) from TZAbstractBlob.GetUnicodeString (specifically "Assert(Len mod 2 = 0);") with large varchar fields (I triggered it first with a varchar(2561)). As far as I know this is way lower than the Firebird row size limit (64K).
I'm not sure I understand the code for this function. If the fetched data length mod 2 is equal 0 the assertion is not thrown, but the returned data is corrupted.
I've made a simple test case in Delphi 2009. I can upload it if it helps. I did not made extensive testing, but it occurs with Delphi 2009, ZEOS trunk 619 and Firebird (embedded) 2.1.2.
I think this is a regression from Zeos-6. An exception is thrown (assert failed) from TZAbstractBlob.GetUnicodeString (specifically "Assert(Len mod 2 = 0);") with large varchar fields (I triggered it first with a varchar(2561)). As far as I know this is way lower than the Firebird row size limit (64K).
I'm not sure I understand the code for this function. If the fetched data length mod 2 is equal 0 the assertion is not thrown, but the returned data is corrupted.
I've made a simple test case in Delphi 2009. I can upload it if it helps. I did not made extensive testing, but it occurs with Delphi 2009, ZEOS trunk 619 and Firebird (embedded) 2.1.2.