[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-1759) ClasscQueryTranslator do not make SQL Function substitution
Sandeep Vaid (JIRA)
noreply at atlassian.com
Fri Jun 12 04:23:34 EDT 2009
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-1759?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=33400#action_33400 ]
Sandeep Vaid commented on HHH-1759:
-----------------------------------
Steve, yes i am using weblogic 8 and hence forced to use ClassicQueryTranslatorFactory.
and if i elaborate more on this problem, i get different different error messages in the following 2 cases :
CASE 1: I have extended the DB2Dialect and defined my own function:
registerFunction("svminus1", new SQLFunctionTemplate( Hibernate.TIME, "current time") );
HQL: select svminus1() from Temp c where c.id=1
SQL: select svminus1() as col_0_0_ from TEMP c where c.id=1
The error message is :
COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver][DB2/NT] SQL0440N No authorized routine named "SVMINUS1" of type "FUNCTION"
having compatible arguments was found. SQLSTATE=42884
NOTE: In this case, while converting HQL to SQL it has not replaced my custom function name by it's definition.
CASE 2:
registerFunction("svminus1", new NoArgSQLFunction("current time", Hibernate.TIME, false) );
This time the error is :
org.hibernate.QueryException: aggregate function expected before ( in SELECT [select svminus1() from Temp c where c.id=1]
> 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: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list