[
https://issues.apache.org/jira/browse/OPENJPA-2935?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18141805#comment-18141805
]
ASF subversion and git services commented on OPENJPA-2935:
----------------------------------------------------------
Commit 3ead6357f846d601fdc2b6130beb02b66e782157 in openjpa's branch
refs/heads/OPENJPA-2935 from Richard Zowalla
[ https://gitbox.apache.org/repos/asf?p=openjpa.git;h=3ead6357f ]
[OPENJPA-2935] Write temporal values of COALESCE, CASE and NULLIF as date-time
literals
Binding a temporal value as a parameter gave each copy of the expression
its own placeholder, so PostgreSQL and Derby rejected it with DISTINCT
and ORDER BY or with GROUP BY, and a CASE with only temporal results had
no known type. Dates, times and timestamps, including Calendar and the
java.time local types, are now written as JDBC escaped date-time
literals, which are typed and identical in every clause. Other values
without a literal form, such as a Character, are bound instead of being
written as their unquoted toString(), and GROUP BY keeps the parameters
of the grouped expression.
> Timestamp + coalesce + orderBy + Postgres makes Postgres syntax errors
> ----------------------------------------------------------------------
>
> Key: OPENJPA-2935
> URL: https://issues.apache.org/jira/browse/OPENJPA-2935
> Project: OpenJPA
> Issue Type: Bug
> Components: jdbc
> Affects Versions: 3.1.2
> Reporter: Pawel Veselov
> Priority: Major
>
> {code:java}
> public class E {
> @Column(name = "due")
> private Timestamp due;
> }
> {code}
>
> Using criteria API, when querying from E, say:
> Timestamp ts = new Timestamp();
> {{query.orderBy(cb.asc(cb.coalesce(root.get(E_.due), ts)))}}
> Same if using {{cb.literal()}}
> Results in:
> {noformat}
> Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: ERROR: syntax
> error at or near "11"
> Position: 77 {prepstmnt 575413488 SELECT t0.X, COALESCE(t0.due,2025-04-08
> 11:56:02.93), t0.id FROM E t0 ORDER BY COALESCE(t0.due,2025-04-08
> 11:56:02.93) ASC, t0.id ASC LIMIT ? [params=(long)
> 1]} [code=0, state=42601]
> {noformat}
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)