[
https://issues.apache.org/cayenne/browse/CAY-990?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12930#action_12930
]
Campbell Boucher-Burnet commented on CAY-990:
---------------------------------------------
Try using SQL casts to disambiguate the expression... like:
WHERE t0.ESTIMATED_PRICE < ( cast(? as decimal) + ( cast(? as decimal) *
cast(? as decimal)))
Casting only one of the parameter markers may be enough, as the type of the
rest may then be inferred.
However, its been a while sine I was deep in the code.
The point is, it states in the SQL 200n specification that there are definite
cases that are to be considered ambiguous, and back in the early 2000s, based
on the spec at the time, I wrote much of the 1.7 to early 1.8 HSQLDB expression
evaluation code that handled ambiguity under parameter markers, as part of my
work refactoring the entire codebase to provide an efficient precompiled
parametric statement facility
A for instance in in the ambiguous expression category is an SQL condition
likeL "? in (?,?,?,?)"... without explicit casts, at least one term must be
resolvable to an SQL literal that has an inferable type in such an expression,
for instance "'test' in (?,?,?,?) " or "? in (?,?,1+4,?)"
What suprises me is that the types of the parameter markers are not inferred
automatically in the parse/resolve phase from t0.ESTIMATED_PRICE, which is
certainly an ellible, as it is a simple RHS of a relational operator from which
to make the inference from the LHS.
Probably, the exception thrown represents a regression caused by ongoing
modification's to the source for the expression resolution facility that cause
it to fail to adhere to expending the best possible effort toward resolving
parameters by inference.
> HSQLDB: Arithmetic operators in EJBQL
> -------------------------------------
>
> Key: CAY-990
> URL: https://issues.apache.org/cayenne/browse/CAY-990
> Project: Cayenne
> Issue Type: Task
> Components: Cayenne Core Library
> Affects Versions: 3.0
> Reporter: Andrus Adamchik
> Assignee: Andrus Adamchik
> Fix For: 3.0
>
>
> Implement arithmetic operators in EJBQL.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.