[
https://issues.apache.org/jira/browse/OPENJPA-2966?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18106354#comment-18106354
]
ASF subversion and git services commented on OPENJPA-2966:
----------------------------------------------------------
Commit b7a45f5825ae6e3cb1bf9dcdbc7defb9d83e9b37 in openjpa's branch
refs/heads/OPENJPA-2966 from Richard Zowalla
[ https://gitbox.apache.org/repos/asf?p=openjpa.git;h=b7a45f582 ]
[OPENJPA-2966] Use a dedicated cast target type for long values
Long values are now cast via a lazily resolved longCastTypeName (SIGNED on
MySQL/MariaDB) instead of the DDL decimalTypeName, which defaults to
DECIMAL(10,0) there and silently truncates, and both cast paths now strip the
size suffix through the same DBDictionary helpers.
> Long cast uses decimalTypeName instead of bigint
> ------------------------------------------------
>
> Key: OPENJPA-2966
> URL: https://issues.apache.org/jira/browse/OPENJPA-2966
> Project: OpenJPA
> Issue Type: Sub-task
> Components: jpa
> Affects Versions: 4.2.0
> Reporter: Maxim Solodovnik
> Assignee: Maxim Solodovnik
> Priority: Major
> Fix For: 4.2.0
>
>
> Discussion thread:
> https://github.com/apache/openjpa/pull/144#discussion_r3683002577
> **(medium)** Casting to Long uses {{dict.decimalTypeName}}; on MySQL {{CAST(x
> AS DECIMAL)}} defaults to DECIMAL(10,0), so large long values
> overflow/truncate - why not {{bigintTypeName}} for the long case?
> Also {{getDbNumberTargetTypeName}} sanitizes the {{{0}}} size suffix while
> the sibling {{TypecastAsString.java:152}} appends {{dict.varcharTypeName}}
> raw - the two siblings should share the same sanitize logic.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)