[ 
https://issues.apache.org/jira/browse/OPENJPA-2935?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18141804#comment-18141804
 ] 

ASF subversion and git services commented on OPENJPA-2935:
----------------------------------------------------------

Commit bc79078d80434e19dad8fd81a947a10f37cb986a in openjpa's branch 
refs/heads/OPENJPA-2935 from Richard Zowalla
[ https://gitbox.apache.org/repos/asf?p=openjpa.git;h=bc79078d8 ]

[OPENJPA-2935] Bind temporal values of COALESCE, CASE and NULLIF as parameters

Literals in COALESCE, CASE and NULLIF expressions are rendered into the
SQL text. For a java.util.Date, Calendar or java.time value of a
criteria literal this wrote its toString() unquoted, e.g.
COALESCE(t0.due,2025-04-08 11:56:02.93), which every database rejects.
Such values are now bound as parameters.


> 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)

Reply via email to