Issue Details (XML | Word | Printable)

Key: HHH-3679
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Gail Badner
Reporter: Gail Badner
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Hibernate Core

Sybase conversion of Java byte to tinyint fails with 8-bit values causing unit test failures

Created: 26/Dec/08 06:23 PM   Updated: 26/Dec/08 07:20 PM
Component/s: None
Affects Version/s: None
Fix Version/s: 3.2.7, 3.3.2, 3.5

Time Tracking:
Not Specified

Environment: Sybase


 Description  « Hide
If an 8-bit byte value is inserted into a Sybase TINYINT column, GenericJDBCException is thrown because of an arithmetic overflow during implicit conversion of a SMALLINT value to a TINYINT field.

This is happening for MixedTest.testMixedInheritance() and InterfaceProxyTest.testInterfaceProxies().

The full stacktrace is:

could not insert: [org.hibernate.test.interfaceproxy.SecureDocumentImpl]" type="org.hibernate.exception.
GenericJDBCException">org.hibernate.exception.GenericJDBCException: could not insert: [org.hibernate.test.interfaceproxy.Sec
ureDocumentImpl]
        at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2267)
        at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2640)
        at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48)
        at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
        at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298)
        at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
        at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
        at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventL
istener.java:187)
        at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
        at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:
172)
        at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
        at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
        at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
        at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
        at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
        at org.hibernate.test.interfaceproxy.InterfaceProxyTest.testInterfaceProxies(InterfaceProxyTest.java:52)
        at org.hibernate.junit.functional.FunctionalTestCase.runTest(FunctionalTestCase.java:102)
        at org.hibernate.junit.UnitTestCase.runBare(UnitTestCase.java:34)
        at org.hibernate.junit.functional.FunctionalTestClassTestSuite.runTest(FunctionalTestClassTestSuite.java:100)
        at org.hibernate.junit.functional.FunctionalTestClassTestSuite.run(FunctionalTestClassTestSuite.java:69)
Caused by: com.sybase.jdbc3.jdbc.SybSQLException: Arithmetic overflow during implicit conversion of SMALLINT value '-10
4' to a TINYINT field .

        at com.sybase.jdbc3.tds.Tds.a(Unknown Source)
        at com.sybase.jdbc3.tds.Tds.nextResult(Unknown Source)
        at com.sybase.jdbc3.jdbc.ResultGetter.nextResult(Unknown Source)
        at com.sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source)
        at com.sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source)
        at com.sybase.jdbc3.jdbc.SybStatement.updateLoop(Unknown Source)
        at com.sybase.jdbc3.jdbc.SybStatement.executeUpdate(Unknown Source)
        at com.sybase.jdbc3.jdbc.SybPreparedStatement.executeUpdate(Unknown Source)
        at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2250)
        ... 34 more




 All   Comments   Work Log   Change History   FishEye      Sort Order: Ascending order - Click to sort in descending order


Gail Badner added a comment - 26/Dec/08 07:20 PM
Resolved by changing the byte value in the unit tests to be a 7-bit value instead of an 8-bit value. These unit tests now fail for an unrelated reason.

Resolved in Branch_3_2, Branch_3_2_4_SP1_CP, Branch_3_3, trunk.