no-arg function inside "vector expression" not properly replaced with Dialect
function mappings
-----------------------------------------------------------------------------------------------
Key: HHH-2541
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-2541
Project: Hibernate3
Issue Type: Bug
Components: query-hql
Reporter: Steve Ebersole
Assignee: Steve Ebersole
Priority: Minor
For an example of this, see
org.hibernate.test.component.basic.ComponentTest#testComponentQueries against a Sybase
database.
The issue is the third query in that test: from Employee e where e.person =
('steve', current_timestamp)
The first grammar (hql.g) is currently the one responsible for deciding whether an IDENT
node represents a METHOD_CALL. However, it currently does this by seeing if the IDENT is
immediately followed by an '('. Here, the current_timestamp method call is not
because it is no-arg and so hql.g does not retask the IDENT as a METHOD_CALL. And
actually this is correct. The code in hql.g is simply trying to get the common case. And
we do not want to blindly look up the IDENT text in the Dialect to see if it matches a
mapped function name (because it might also represent a property name, which should take
precedence).
The solution is to account for this in the second grammar (hql-sql.g) during recognition
of a vector expression. Actually, the correct correct solution is better precedented
recognition of atomic expressions...
--
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....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira