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

Stamatis Zampetakis commented on CALCITE-6123:
----------------------------------------------

I can reproduce the problem consistently by performing the following steps:
 * Initialize Druid and index the foodmart dataset as per instructions in 
[calcite-druid-dataset|https://github.com/zabetak/calcite-druid-dataset/].
 * Open [Druid's SQL query 
client|http://localhost:8888/unified-console.html#query]
 * Run the following foodmart queries in the order they appear below.

+Q1+
{code:sql}
select "store_state", "brand_name", "A"
from (
  select "store_state", "brand_name", sum("store_sales") + sum("store_cost") as 
A
  from "foodmart" 
  group by "store_state", "brand_name")
order by "brand_name", "store_state"
limit 5
{code}
+RQ1+
{noformat}
"store_state","brand_name","A"
"CA","ADJ","222.1524"
"OR","ADJ","186.60359999999997"
"WA","ADJ","216.9912"
"CA","Akron","250.349"
"OR","Akron","278.6972"
{noformat}
+Q2+
{code:sql}
select "store_state", "brand_name", "A"
from (
  select "store_state", "brand_name", sum("store_sales") - sum("store_cost") as 
A
  from "foodmart"
  group by "store_state", "brand_name")
order by "A" 
limit 5
{code}
+RAQ2: results of Q2, when the latter is executed after Q1+
{noformat}
"store_state","brand_name","A"
"OR","ADJ","83.8764"
"WA","Akron","85.84019999999998"
"OR","American","86.78979999999999"
"WA","ADJ","97.6488"
"CA","ADJ","98.00759999999997"
{noformat}
+RBQ2: results of Q2, when the latter is executed before Q1+
{noformat}
"store_state","brand_name","A"
"CA","King","21.463200000000008"
"OR","Symphony","32.176000000000016"
"CA","Toretti","32.24649999999999"
"WA","King","34.610400000000006"
"OR","Toretti","36.3"
{noformat}
The results in RAQ2 are wrong and this result set occurs only if Q1 has run 
before.

The queries above were taken from the [DruidAdapterIT 
class|https://github.com/apache/calcite/blob/d3ab0bc8e4d4c9ebc0fc4e33ce478d276f5d11e4/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java]
 and in particular from the following methods:
 * Q1, testInterleaveBetweenAggregateAndGroupOrderByOnDimension
 * Q2, testInterleaveBetweenAggregateAndGroupOrderByOnMetrics

The problem can be reproduced also via Calcite by running the respective tests 
in sequence:
{noformat}
./gradlew :druid:test --tests 
DruidAdapterIT.testInterleaveBetweenAggregateAndGroupOrderByOnDimension 
-Dcalcite.test.druid
./gradlew :druid:test --tests 
DruidAdapterIT.testInterleaveBetweenAggregateAndGroupOrderByOnMetrics 
-Dcalcite.test.druid

FAILURE   2.0sec, org.apache.calcite.test.DruidAdapterIT > 
testInterleaveBetweenAggregateAndGroupOrderByOnMetrics()
    java.lang.AssertionError: 
    Expected: "store_state=CA; brand_name=King; A=21.4632\nstore_state=OR; 
brand_name=Symphony; A=32.176\nstore_state=CA; brand_name=Toretti; 
A=32.2465\nstore_state=WA; brand_name=King; A=34.6104\nstore_state=OR; 
brand_name=Toretti; A=36.3"
         but: was "store_state=OR; brand_name=ADJ; A=83.8764\nstore_state=WA; 
brand_name=Akron; A=85.8402\nstore_state=OR; brand_name=American; 
A=86.7898\nstore_state=WA; brand_name=ADJ; A=97.6488\nstore_state=CA; 
brand_name=ADJ; A=98.0076"
        at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18)
        at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:6)
        at 
org.apache.calcite.test.CalciteAssert.lambda$checkResult$6(CalciteAssert.java:453)
        at 
org.apache.calcite.test.CalciteAssert.assertQuery(CalciteAssert.java:582)
        at 
org.apache.calcite.test.CalciteAssert$AssertQuery.lambda$returns$1(CalciteAssert.java:1495)
        at 
org.apache.calcite.test.CalciteAssert$AssertQuery.withConnection(CalciteAssert.java:1434)
        at 
org.apache.calcite.test.CalciteAssert$AssertQuery.returns(CalciteAssert.java:1493)
        at 
org.apache.calcite.test.CalciteAssert$AssertQuery.returns(CalciteAssert.java:1483)
        at 
org.apache.calcite.test.CalciteAssert$AssertQuery.returnsOrdered(CalciteAssert.java:1509)
        at 
org.apache.calcite.test.DruidAdapterIT.testInterleaveBetweenAggregateAndGroupOrderByOnMetrics(DruidAdapterIT.java:2336)
        Suppressed: org.apache.calcite.util.TestUtil$ExtraInformation: With 
materializationsEnabled=false, limit=-1, sql=select "store_state", 
"brand_name", "A" from (
          select sum("store_sales")-sum("store_cost") as a, "store_state", 
"brand_name"
          from "foodmart"
          group by "store_state", "brand_name" ) subq
        order by "A" limit 5
            at org.apache.calcite.util.TestUtil.rethrow(TestUtil.java:389)
            at 
org.apache.calcite.test.CalciteAssert.assertQuery(CalciteAssert.java:598)
{noformat}
Druid has various level of caches for speeding up queries and some are on by 
default. It turns out that the problem observed here can be avoided by 
disabling the [query cache on the Historical 
nodes|https://druid.apache.org/docs/latest/querying/using-caching#enabling-query-caching-on-historicals]
 by setting {{druid.historical.cache.useCache}} to false. It seems that we are 
hitting a Druid bug affecting the query cache implementation but couldn't find 
a concrete bug reference describing this problem. I think for the purpose of 
this ticket it is enough to run the tests with the Druid cache disabled since 
the identified bug has nothing to do with the Calcite code base.

> DruidAdapter2IT is failing 
> ---------------------------
>
>                 Key: CALCITE-6123
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6123
>             Project: Calcite
>          Issue Type: Bug
>          Components: tests
>    Affects Versions: 1.36.0
>            Reporter: Benchao Li
>            Assignee: Stamatis Zampetakis
>            Priority: Major
>              Labels: pull-request-available
>         Attachments: image-2023-11-19-15-17-53-699.png
>
>
> The test is all failing after 
> [https://github.com/apache/calcite/commit/55034513b463c938035e5d2436949bbf734b84b6],
>  I'm not sure whether it's related.
> See following jobs:
>  * [https://github.com/apache/calcite/actions/runs/6886169664/job/18731435605]
>  * [https://github.com/apache/calcite/actions/runs/6885301555/job/18729238762]
>  * [https://github.com/apache/calcite/actions/runs/6871630651/job/18688793776]
>  * [https://github.com/apache/calcite/actions/runs/6860287671/job/18653876601]



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

Reply via email to