Re: JAVA_OBJECT Problem with byte[64] and byte[0] array
Tobias Downer <[email protected]> Tue, 14 Feb 2006 16:21:46 -0800
| Newsgroups | gmane.comp.db.mckoi |
|---|---|
| Message-ID | <[email protected]> |
Thanks. I wrote a test case for this and was able to reproduce the error.
This is actually a design flaw in the way the Mckoi JDBC driver sends
and receives Java byte[] objects. When serializing a Java object, Mckoi
wraps the serialized data form in a ByteLongObject (which is basically
just a byte[] array). Unfortunately, Mckoi also uses a ByteLongObject
to represent byte[] objects. When using 'getObject', Mckoi
automatically assumes the ByteLongObject is a serialized Java object and
attempts to deserialize it. When it's a byte[] array, this fails.
An easy workaround for you would be to wrap all byte[] objects that you
give to 'setObject' with a custom Serializable class. eg.
class AByteArray implements java.io.Serializable {
byte[] byte_arr;
}
So all byte[] objects read with 'getObject' would become AByteArray
objects instead.
Unfortunately this kind of fix can't be implemented in the JDBC driver
code because getObject has to work for byte[] array data that has been
written to the database in other ways.
Hope this helps and thanks for the bug report,
Toby.
Klaus, Gerd wrote:
> Sorry, I forgot the Mckoi Version. I am using Mckoi 1.0.3.
>
> Best Regards,
> Gerd
>
>
>>-----Original Message-----
>>From: [email protected] [mailto:[email protected]] On Behalf
>>Of Klaus, Gerd
>>Sent: Thursday, February 09, 2006 3:09 PM
>>To: [email protected]
>>Subject: JAVA_OBJECT Problem with byte[64] and byte[0] array
>>
>>Hi All,
>>
>>Table definition:
>>
>>CREATE TABLE IF NOT EXISTS xyz (
>> identifier INTEGER NOT NULL PRIMARY KEY,
>> parameter JAVA_OBJECT);
>>
>>Data in Table:
>> identifier | parameter
>> -----------+-------------
>> 1 | boolean[64]
>> 2 | byte[64]
>> 3 | int[64]
>> 4 | int[64]
>> 5 | boolean[64]
>> 6 | int[1]
>> 7 | byte[0][0]
>> 8 | byte[0]
>> 9 | int[0]
>> 10 | int[0]
>> 11 | boolean[0]
>> 12 | boolean[1]
>> 13 | boolean[1]
>>
>>INSERT and UPDATE works fine with all 13 identifier.
>>
>>READING data with "SELECT identifier,parameter FROM xyz ORDER BY
>>identifier ASC;" also. But if I try to read the 'parameter'
>>column with
>>"ResultSet.getObject(2)" after a the SELECT, an exception at
>>'identifier' 2 and 8 is thrown:
>>
>>Exception at identifier 2:
>>Exception in thread "main" java.lang.Error: De-serialization error:
>>invalid stream header
>> at
>>com.mckoi.database.global.ObjectTranslator.deserialize(ObjectT
>>ranslator.
>>java:107)
>> at
>>com.mckoi.database.jdbc.MResultSet.getRawColumn(MResultSet.java:592)
>> at
>>com.mckoi.database.jdbc.MResultSet.getObject(MResultSet.java:1105)
>> at
>>mmr.DB.statements.DbAlarmBrdSer.getParameters(DbAlarmBrdSer.java:97)
>> at mmr.MIDAS.loadAlarmBrdDat(MIDAS.java:1052)
>> at mmr.MIDAS.main(MIDAS.java:692)
>>
>>Exception at identifier 8:
>>Exception in thread "main" java.lang.Error: De-serialization
>>error: null
>> at
>>com.mckoi.database.global.ObjectTranslator.deserialize(ObjectT
>>ranslator.
>>java:107)
>> at
>>com.mckoi.database.jdbc.MResultSet.getRawColumn(MResultSet.java:592)
>> at
>>com.mckoi.database.jdbc.MResultSet.getObject(MResultSet.java:1105)
>> at
>>mmr.DB.statements.DbAlarmBrdSer.getParameters(DbAlarmBrdSer.java:102)
>> at mmr.MIDAS.loadAlarmBrdDat(MIDAS.java:1052)
>> at mmr.MIDAS.main(MIDAS.java:692)
>>
>>Any ideas why the exceptions are thrown?
>>
>>
>>Best regards,
>>
>>Gerd
>
>
> ------------------------------------------------------------------------------------------------
> This message is for the designated recipient only and may
> contain privileged, proprietary, or otherwise private information.
> If you have received it in error, please notify the sender
> immediately and delete the original. Any unauthorized use of
> this email is prohibited.
> ------------------------------------------------------------------------------------------------
> [mf2]
>
>
> ---------------------------------------------------------------
> Mckoi SQL Database mailing list http://www.mckoi.com/database/
> To unsubscribe, send a message to [email protected]
>
>
---------------------------------------------------------------
Mckoi SQL Database mailing list http://www.mckoi.com/database/
To unsubscribe, send a message to [email protected]