SybaseASE15Dialect getMaxAliasLength() cause SQL exception
Description
Attachments
Activity

Former userAugust 31, 2021 at 3:56 AM
As of at least Sybase 15.7, this should no longer be an issue.
From the reference manual ( ) :
"Identifiers are names for database objects such as databases, tables, views, columns, indexes, triggers, procedures, defaults, rules, and cursors.
The limit for the length of object names or identifiers is 255 bytes for regular identifiers, and 253 bytes for delimited identifiers. The limit applies to most user-defined identifiers including table name, column name, index name and so on. Due to the expanded limits, some system tables (catalogs) and built-in functions have been expanded."

Former userMarch 27, 2019 at 12:24 AM
, yes, you're correct. I forgot about that.
As said in a PR comment:
"This issue is quite old so it affects all versions of Hibernate, not just 5.4.
If the issue is really important for you, you could try to enhance it so that all tests pass. Anyway, modifying the Column alone is not enough. The aliases used during JPQL parsing is not covered by this PR. So, there's more work to be done to fix this propertly."
We (the Hibernate team) have no plans to fix this, since it will be obsolete in Hibernate 6. If someone creates a PR with a fix, and that fix is not too risky, then we will consider getting it fixed in 5.4.

Kai HackemesserMarch 26, 2019 at 11:55 PM
@Gail Badner this needs to be included into V5 build, not V6. In V6 aliases are no longer used (yay) and the patch becomes obsolete.

Former userMarch 21, 2019 at 7:46 PM

Guillaume SmetMarch 21, 2019 at 6:24 PM
We have a tentative PR here: https://github.com/hibernate/hibernate-orm/pull/2666 but CI is failing.
After upgrade Hibernate from 3.2.0 to 3.6.0, I got following exception with following SQL (converted from HQL):
select defaultwdo1_.displayDescriptionTemplate as displayDescriptionTemplate30_1_ from WJob wjob0_, WDocDist defaultwdo1_
Caused by: com.sybase.jdbc3.jdbc.SybSQLException: The identifier that starts with 'displayDescriptionTemplate30_1' is too long. Maximum length is 30.
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.queryLoop(Unknown Source)
at com.sybase.jdbc3.jdbc.SybStatement.executeQuery(Unknown Source)
at com.sybase.jdbc3.jdbc.SybPreparedStatement.executeQuery(Unknown Source)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1953)
The same SQL can be executed in native Sybase ISQL environment without any error.
The workaround using Sybase11Dilect or modify getMaxAliasLength() inside SybaseASE15Dialect to return a smaller number(e.g. 20)