[
https://issues.apache.org/jira/browse/OPENJPA-1051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12756107#action_12756107
]
Pinaki Poddar commented on OPENJPA-1051:
----------------------------------------
A more parsimonious solution (perhaps) would be to simply add the valid name to
NameSet.addName(...),
after the name is validated by DBDictionary.makeNameValid() which also ensures
uniqueness against the name set,
The issue of naming is getting trickier with several aspects
a) The logic/protocol of naming of database elements
(Table/Column/Schema/Sequence) is somewhat well-spread at different parts
b) few assumptions are implicit (like full name of a table is a concatenation
of schema.table -- but MySQL, for example, will not like that)
c) other 'container' things often cache these elements by their names but
these names may get shortened/modified because of database length
restrictions/keyword clash
-- all these make naming a complex issue. One can see when methods like
MappingDefaults.correctName() appears -- as if we know we have done mistakes :)
d) the proverbial straw on the camel's back is the new JPA 2.0 requirement of
these names be optionally quoted/delimited with default/platform specific quote
characters.
In light of all the above, having a NameSet._subNames and adding/resetting it
everywhere may add to the complexities.
Comments/Thoughts?
> [patch] Mappingtool doesn't check name conflicts if MappingDefaultsImpl is
> called with multiple columns.
> --------------------------------------------------------------------------------------------------------
>
> Key: OPENJPA-1051
> URL: https://issues.apache.org/jira/browse/OPENJPA-1051
> Project: OpenJPA
> Issue Type: Bug
> Components: jdbc
> Affects Versions: 1.0.0, 2.0.0-M2
> Environment: OpenJPA Trunk.
> Reporter: Ravi P Palacherla
> Assignee: David Ezzio
> Fix For: 1.1.1, 2.0.0-M2
>
> Attachments: OPENJPA-1051_Trunk.patch
>
>
> In OpenJPA implementation, it looks that
> MappingDefaultsImpl.populateColumns can accept multiple columns
> because it has Column[] signature.
> If column name is longer than DBDictionary restriction (it's very short in
> some databases.
> For example, oracle max name length is 32), names are truncated.
>
> Because name conflict is detected based on actual Table info,given Column[]
> data does not get checked.
> So, if given Column[] have very long name and truncated name of these
> Column[] is conflicted,
> it could not be detected.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.