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

Priyanka commented on CALCITE-7123:
-----------------------------------

Thank you for your input [~julianhyde] and [~mbudiu] and apologies for the 
delay.

I tried to reproduce the issue on the built-in tables, and I wasn't able to see 
the same behaviour. However, there are a couple more things that I should 
mention about my implementation:
 # My implementation is in Java, and I use the Calcite dependency version 
1.39.0.
 # I have my data in two databases - Postgres and Druid.
 # I have two data sources for my NamedParameterJdbcTemplate - a Calcite 
datasource when I require data from both DBs combined, and an Avatica 
datasource when I needed data from only one of the two databases.
 # I ran the same minimal Druid query mentioned above using both the Avatica 
and Calcite datasources. The Avatica query returns the correct results (i.e. 
parentName or stockName depending on whether parentName exists), but the 
Calcite query returns incorrect results (i.e. it always returns the stockName 
even if the parentName exists). The query I need is actually merged data from 
both Postgres and Druid. But it's only the Druid part that is returning the 
wrong results with the Caclite data source.
!image-2025-08-14-11-56-16-650.png!

Please let me know if there's anything else you'd like me to try.

> Query doesn't work as expected when using COALESCE or CASE in the group by 
> query
> --------------------------------------------------------------------------------
>
>                 Key: CALCITE-7123
>                 URL: https://issues.apache.org/jira/browse/CALCITE-7123
>             Project: Calcite
>          Issue Type: Bug
>          Components: avatica
>    Affects Versions: 1.39.0
>            Reporter: Priyanka
>            Priority: Major
>         Attachments: image-2025-08-03-21-12-40-517.png, 
> image-2025-08-03-21-13-52-179.png, image-2025-08-03-21-18-10-506.png, 
> image-2025-08-14-11-56-16-650.png
>
>
> Running the following query directly on the Druid UI returns the expected 
> results:
> {code:java}
> SELECT
>                           FLOOR("__time" TO DAY)  AS "createtime.day", 
> COALESCE("parentName", "stockName") AS "unitName",
>                           COUNT(*) AS "count"
>                         FROM
>                           "druid"."events"
>                         WHERE  "customerName" = 'x' AND  "__time" >= 
> TIMESTAMP '2025-05-31 22:00:00.000' AND  "__time" <= TIMESTAMP '2025-06-12 
> 21:59:59.000'
>                             AND (FALSE = true  OR "fleetName" IN ('y'))
>                             AND (FALSE = false  OR "eventTemplateName" IN 
> (null))
>                             AND (FALSE = false  OR "consistNumber" IN (null))
>                             AND (FALSE = false  OR ("parentName" IS NOT NULL 
> AND "stockName" IN (null)))
>                             AND (FALSE = false  OR (COALESCE("parentName", 
> "stockName") IN (null)))
>                             AND (FALSE = false  OR "locationName" IN (null))
>                             AND (FALSE = false  OR "eventCategory" IN (null))
>                             AND (FALSE = false OR "eventPriorityName" IN 
> (null))
>                             AND (FALSE = false  OR null)
>                             AND (FALSE = false  OR "active" = null)
>                         GROUP BY FLOOR("__time" TO DAY) , 
> COALESCE("parentName", "stockName") {code}
> But when it goes through Calcite, it returns the stockName always as the 
> unitName, even if the parentName is available.
> Testing with CASE instead of COALESCE or using a CAST for the type also 
> didn't have any effect with Calcite.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to