]
Steve Ebersole commented on HHH-1759:
-------------------------------------
Is this really still the case with WebLogic? are they still leaking their Antlr usage?
@Sandeep Are you using WebLogic too? Is that why you "need" to use the classic
parser? Otherwise, why not just use the Antlr based parser?
ClasscQueryTranslator do not make SQL Function substitution
-----------------------------------------------------------
Key: HHH-1759
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1759
Project: Hibernate Core
Issue Type: Bug
Components: query-hql
Affects Versions: 3.1.3
Environment: Hibernate 3.1.3, JDK 1.5.0_05, MySQL 4.0.20d, Tomcat 5.5.15
Reporter: Andrey Grebnev
I have already asked about this problem in forum
http://forum.hibernate.org/viewtopic.php?t=959442 but I did not get answer.
below my text from forum's question:
Hello
I have faced with the following problem. I use Hibernate-3.1.3 with
ClassicQueryTranslatorFactory under MySQL 4.0.20d.
I need the SQL function "day". MySQL 4.0 does not have day function, but it has
equal "dayofmonth". MySQLDialect.java has the following definition:
registerFunction("day", new StandardSQLFunction("day",
Hibernate.INTEGER) );
In order to have compatibility both with MySQL 4.0 and above I have written my own
Dialect which override day function in the following way:
registerFunction("day", new StandardSQLFunction("dayofmonth",
Hibernate.INTEGER) );
With ASTQueryTranslator this dialect works corrrectly, but with Classic one it does not
work!!!
I have examined Hibernate SRC and have found out that we have follwing code in the
org.hibernate.hql.classic.SelectParser: 126
else if ( getFunction( lctoken, q ) != null && token.equals( q.unalias(
token ) ) ) {
// the name of an SQL function
if ( !ready ) throw new QueryException( ", expected before aggregate
function in SELECT: " + token );
aggregate = true;
aggregateAddSelectScalar = true;
aggregateFuncTokenList.add( lctoken );
ready = false;
q.appendScalarSelectToken( token );
if ( !aggregateHasArgs( lctoken, q ) ) {
q.addSelectScalar( aggregateType( aggregateFuncTokenList, null, q ) );
if ( !aggregateFuncNoArgsHasParenthesis( lctoken, q ) ) {
aggregateFuncTokenList.removeLast();
if ( aggregateFuncTokenList.size() < 1 ) {
aggregate = false;
ready = false;
}
else {
ready = true;
}
}
}
}
we can see that we call
q.appendScalarSelectToken( token );
function with original token, we do not use "render" method of
org.hibernate.dialect.function.StandardSQLFunction.
Is this a bug of classic translator?
I am obliged to use Classic translator because Weblogic's problems with AST. Please
give me an advice.
Thanks beforehand.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: