You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Evgeny Ryabitskiy (JIRA)" <ji...@apache.org> on 2010/05/11 09:27:42 UTC
[jira] Created: (CAY-1430) Problems with TINYINT type mapping
Problems with TINYINT type mapping
----------------------------------
Key: CAY-1430
URL: https://issues.apache.org/jira/browse/CAY-1430
Project: Cayenne
Issue Type: Bug
Components: Core Library
Environment: MS SQL 2005
Reporter: Evgeny Ryabitskiy
Assignee: Evgeny Ryabitskiy
Fix For: 3.1M1
Today I fount some not nice thing.
If I am selecting from column with TINYINT type, Cayenne trying to map it to Byte
But TINYINT can have values from 0 to 255 (which is greater then Byte).
So I got this:
java.sql.SQLException: Numeric overflow in conversion of value 160 to type TINYINT.
at net.sourceforge.jtds.jdbc.Support.convert(Support.java:251)
at net.sourceforge.jtds.jdbc.JtdsResultSet.getByte(JtdsResultSet.java:648)
at org.apache.cayenne.access.types.ByteType.materializeObject(ByteType.java:48)
at org.apache.cayenne.access.jdbc.JDBCResultIterator.readDataRow(JDBCResultIterator.java:291)
at org.apache.cayenne.access.jdbc.JDBCResultIterator.nextDataRow(JDBCResultIterator.java:145)
at org.apache.cayenne.access.jdbc.JDBCResultIterator.dataRows(JDBCResultIterator.java:115)
at org.apache.cayenne.access.jdbc.SQLTemplateAction.processSelectResult(SQLTemplateAction.java:212)
at org.apache.cayenne.access.jdbc.SQLTemplateAction.execute(SQLTemplateAction.java:153)
at org.apache.cayenne.access.jdbc.SQLTemplateAction.performAction(SQLTemplateAction.java:107)
at org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:59)
at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:273)
at org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:301)
at org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:60)
at org.apache.cayenne.access.DataDomainQueryAction$1.transform(DataDomainQueryAction.java:273)
at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:826)
at org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:270)
at org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:110)
at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:746)
at org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:217)
at org.apache.cayenne.access.DataContextQueryAction.execute(DataContextQueryAction.java:54)
at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:1395)
at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:1384)
My idea is to map TINYINT to Short by default. Because:
1) Some databases don't support this type
2) It will handle problem described above
3) I think in 99% cases you don't need it on side of Java application (almost same with short) or if you need you can easily get it from any Number type.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Commented: (CAY-1430) Problems with TINYINT type mapping
Posted by "Andrus Adamchik (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CAY-1430?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12870767#action_12870767 ]
Andrus Adamchik commented on CAY-1430:
--------------------------------------
> Maybe we can remove TINYINT from modeller mapping? not to confuse users....
+1 to remapping TINYINT as SHORT
-1 to removing it - it is part of JDBC spec after all.
> Problems with TINYINT type mapping
> ----------------------------------
>
> Key: CAY-1430
> URL: https://issues.apache.org/jira/browse/CAY-1430
> Project: Cayenne
> Issue Type: Bug
> Components: Core Library
> Environment: MS SQL 2005
> Reporter: Evgeny Ryabitskiy
> Assignee: Evgeny Ryabitskiy
> Fix For: 3.1M1
>
>
> Today I fount some not nice thing.
> If I am selecting from column with TINYINT type, Cayenne trying to map it to Byte
> But TINYINT can have values from 0 to 255 (which is greater then Byte).
> So I got this:
> java.sql.SQLException: Numeric overflow in conversion of value 160 to type TINYINT.
> at net.sourceforge.jtds.jdbc.Support.convert(Support.java:251)
> at net.sourceforge.jtds.jdbc.JtdsResultSet.getByte(JtdsResultSet.java:648)
> at org.apache.cayenne.access.types.ByteType.materializeObject(ByteType.java:48)
> at org.apache.cayenne.access.jdbc.JDBCResultIterator.readDataRow(JDBCResultIterator.java:291)
> at org.apache.cayenne.access.jdbc.JDBCResultIterator.nextDataRow(JDBCResultIterator.java:145)
> at org.apache.cayenne.access.jdbc.JDBCResultIterator.dataRows(JDBCResultIterator.java:115)
> at org.apache.cayenne.access.jdbc.SQLTemplateAction.processSelectResult(SQLTemplateAction.java:212)
> at org.apache.cayenne.access.jdbc.SQLTemplateAction.execute(SQLTemplateAction.java:153)
> at org.apache.cayenne.access.jdbc.SQLTemplateAction.performAction(SQLTemplateAction.java:107)
> at org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:59)
> at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:273)
> at org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:301)
> at org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:60)
> at org.apache.cayenne.access.DataDomainQueryAction$1.transform(DataDomainQueryAction.java:273)
> at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:826)
> at org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:270)
> at org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:110)
> at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:746)
> at org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:217)
> at org.apache.cayenne.access.DataContextQueryAction.execute(DataContextQueryAction.java:54)
> at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:1395)
> at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:1384)
> My idea is to map TINYINT to Short by default. Because:
> 1) Some databases don't support this type
> 2) It will handle problem described above
> 3) I think in 99% cases you don't need it on side of Java application (almost same with short) or if you need you can easily get it from any Number type.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Commented: (CAY-1430) Problems with TINYINT type mapping
Posted by "Evgeny Ryabitskiy (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CAY-1430?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12870665#action_12870665 ]
Evgeny Ryabitskiy commented on CAY-1430:
----------------------------------------
Problem fixed.
Maybe we can remove TINYINT from modeller mapping? not to confuse users....
> Problems with TINYINT type mapping
> ----------------------------------
>
> Key: CAY-1430
> URL: https://issues.apache.org/jira/browse/CAY-1430
> Project: Cayenne
> Issue Type: Bug
> Components: Core Library
> Environment: MS SQL 2005
> Reporter: Evgeny Ryabitskiy
> Assignee: Evgeny Ryabitskiy
> Fix For: 3.1M1
>
>
> Today I fount some not nice thing.
> If I am selecting from column with TINYINT type, Cayenne trying to map it to Byte
> But TINYINT can have values from 0 to 255 (which is greater then Byte).
> So I got this:
> java.sql.SQLException: Numeric overflow in conversion of value 160 to type TINYINT.
> at net.sourceforge.jtds.jdbc.Support.convert(Support.java:251)
> at net.sourceforge.jtds.jdbc.JtdsResultSet.getByte(JtdsResultSet.java:648)
> at org.apache.cayenne.access.types.ByteType.materializeObject(ByteType.java:48)
> at org.apache.cayenne.access.jdbc.JDBCResultIterator.readDataRow(JDBCResultIterator.java:291)
> at org.apache.cayenne.access.jdbc.JDBCResultIterator.nextDataRow(JDBCResultIterator.java:145)
> at org.apache.cayenne.access.jdbc.JDBCResultIterator.dataRows(JDBCResultIterator.java:115)
> at org.apache.cayenne.access.jdbc.SQLTemplateAction.processSelectResult(SQLTemplateAction.java:212)
> at org.apache.cayenne.access.jdbc.SQLTemplateAction.execute(SQLTemplateAction.java:153)
> at org.apache.cayenne.access.jdbc.SQLTemplateAction.performAction(SQLTemplateAction.java:107)
> at org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:59)
> at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:273)
> at org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:301)
> at org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:60)
> at org.apache.cayenne.access.DataDomainQueryAction$1.transform(DataDomainQueryAction.java:273)
> at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:826)
> at org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:270)
> at org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:110)
> at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:746)
> at org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:217)
> at org.apache.cayenne.access.DataContextQueryAction.execute(DataContextQueryAction.java:54)
> at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:1395)
> at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:1384)
> My idea is to map TINYINT to Short by default. Because:
> 1) Some databases don't support this type
> 2) It will handle problem described above
> 3) I think in 99% cases you don't need it on side of Java application (almost same with short) or if you need you can easily get it from any Number type.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Closed: (CAY-1430) Problems with TINYINT type mapping
Posted by "Evgeny Ryabitskiy (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CAY-1430?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Evgeny Ryabitskiy closed CAY-1430.
----------------------------------
Resolution: Fixed
Fixed in 3.1 branch. Closed.
> Problems with TINYINT type mapping
> ----------------------------------
>
> Key: CAY-1430
> URL: https://issues.apache.org/jira/browse/CAY-1430
> Project: Cayenne
> Issue Type: Bug
> Components: Core Library
> Environment: MS SQL 2005
> Reporter: Evgeny Ryabitskiy
> Assignee: Evgeny Ryabitskiy
> Fix For: 3.1M1
>
>
> Today I fount some not nice thing.
> If I am selecting from column with TINYINT type, Cayenne trying to map it to Byte
> But TINYINT can have values from 0 to 255 (which is greater then Byte).
> So I got this:
> java.sql.SQLException: Numeric overflow in conversion of value 160 to type TINYINT.
> at net.sourceforge.jtds.jdbc.Support.convert(Support.java:251)
> at net.sourceforge.jtds.jdbc.JtdsResultSet.getByte(JtdsResultSet.java:648)
> at org.apache.cayenne.access.types.ByteType.materializeObject(ByteType.java:48)
> at org.apache.cayenne.access.jdbc.JDBCResultIterator.readDataRow(JDBCResultIterator.java:291)
> at org.apache.cayenne.access.jdbc.JDBCResultIterator.nextDataRow(JDBCResultIterator.java:145)
> at org.apache.cayenne.access.jdbc.JDBCResultIterator.dataRows(JDBCResultIterator.java:115)
> at org.apache.cayenne.access.jdbc.SQLTemplateAction.processSelectResult(SQLTemplateAction.java:212)
> at org.apache.cayenne.access.jdbc.SQLTemplateAction.execute(SQLTemplateAction.java:153)
> at org.apache.cayenne.access.jdbc.SQLTemplateAction.performAction(SQLTemplateAction.java:107)
> at org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:59)
> at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:273)
> at org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:301)
> at org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:60)
> at org.apache.cayenne.access.DataDomainQueryAction$1.transform(DataDomainQueryAction.java:273)
> at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:826)
> at org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:270)
> at org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:110)
> at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:746)
> at org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:217)
> at org.apache.cayenne.access.DataContextQueryAction.execute(DataContextQueryAction.java:54)
> at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:1395)
> at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:1384)
> My idea is to map TINYINT to Short by default. Because:
> 1) Some databases don't support this type
> 2) It will handle problem described above
> 3) I think in 99% cases you don't need it on side of Java application (almost same with short) or if you need you can easily get it from any Number type.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.