Hi Andy,

I understand that many databases restrict SQL identifiers to a length of
30 characters, though SQL92 specifies a max length of 128 characters.

What is the reason, that JPOX mangels tablenames specified in the orm
metadata?


Something that had been in the codebase from before its JPOX lifetime and that I'd meant to remove (so I just did - thanks for reminding me) :-).

Derby accepts table names up to 30 chars in length. If the user specifies anything longer than 30, the last part of the name is hashed so we limit the specified tablename to 30 chars. If the user specifies a name of 30 chars or less then it is now preserved.
I think, mangling of tablenames does only make sense in the case of forward engineering when the orm metadata and the SQL schema are generated.

In the case, where the orm metadata and the SQL schema are given by the user, JPOX should not mangle tablenames. Otherwise, you cannot be sure that there is a suitable table in the database.

Currently, you can see this phenomenon when you run the TCK: there are about 5 errors "Table 'xxx' does not exist", e.g. the classname is "HashtableStringKeyCollections", the orm metadata maps it to a tablename "HASHTABLESTRINGKEY_COLLECTIONS" (this tablename is also used in the SQL schema), but the JPOX generated tablename name is "HASHTABLESTRINGKEY_COLLET8".

Another question: The Derby Reference Manual Version 10, June 11, 2005, specifies that table names in Derby conform to SQL92 indentifiers. SQL92 identifiers have a max length of 192 unicode characters. So, I'm not sure about the Derby restriction of 30 characters for identifiers which you mention above.

Regards,
Michael
--
-------------------------------------------------------------------
Michael Watzek                  [EMAIL PROTECTED] Engineering GmbH
mailto:[EMAIL PROTECTED]        Buelowstr. 66
Tel.:  ++49/30/235 520 36       10783 Berlin - Germany
Fax.:  ++49/30/217 520 12       http://www.spree.de/
-------------------------------------------------------------------

Reply via email to