Skip to content

Commit dcbdeba

Browse files
committed
Test explain sort with Calcite without push-down
Signed-off-by: Yuanchun Shen <yuanchu@amazon.com>
1 parent 0a2ced5 commit dcbdeba

7 files changed

Lines changed: 42 additions & 28 deletions

File tree

integ-test/src/test/java/org/opensearch/sql/ppl/ExplainIT.java

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,7 @@ public void testSortPushDownExplain() throws IOException {
7979
@Test
8080
public void testSortWithAggregationExplain() throws IOException {
8181
// Sorts whose by fields are aggregators should not be pushed down
82-
String expected =
83-
isCalciteEnabled()
84-
? loadFromFile("expectedOutput/calcite/explain_sort_agg_push.json")
85-
: loadFromFile("expectedOutput/ppl/explain_sort_agg_push.json");
86-
82+
String expected = loadExpectedPlan("explain_sort_agg_push.json");
8783
assertJsonEqualsIgnoreId(
8884
expected,
8985
explainQueryToString(
@@ -99,11 +95,7 @@ public void testSortWithAggregationExplain() throws IOException {
9995
public void testMultiSortPushDownExplain() throws IOException {
10096
// TODO: Fix the expected output in expectedOutput/ppl/explain_multi_sort_push.json (v2)
10197
// balance and gender should take precedence over account_number and firstname
102-
String expected =
103-
isCalciteEnabled()
104-
? loadFromFile("expectedOutput/calcite/explain_multi_sort_push.json")
105-
: loadFromFile("expectedOutput/ppl/explain_multi_sort_push.json");
106-
98+
String expected = loadExpectedPlan("explain_multi_sort_push.json");
10799
assertJsonEqualsIgnoreId(
108100
expected,
109101
explainQueryToString(
@@ -117,11 +109,7 @@ public void testMultiSortPushDownExplain() throws IOException {
117109
public void testSortThenAggregatePushDownExplain() throws IOException {
118110
// TODO: Remove pushed-down sort in DSL in expectedOutput/ppl/explain_sort_then_agg_push.json
119111
// existing collations should be eliminated when pushing down aggregations (v2)
120-
String expected =
121-
isCalciteEnabled()
122-
? loadFromFile("expectedOutput/calcite/explain_sort_then_agg_push.json")
123-
: loadFromFile("expectedOutput/ppl/explain_sort_then_agg_push.json");
124-
112+
String expected = loadExpectedPlan("explain_sort_then_agg_push.json");
125113
assertJsonEqualsIgnoreId(
126114
expected,
127115
explainQueryToString(
@@ -132,11 +120,7 @@ public void testSortThenAggregatePushDownExplain() throws IOException {
132120

133121
@Test
134122
public void testSortWithRenameExplain() throws IOException {
135-
String expected =
136-
isCalciteEnabled()
137-
? loadFromFile("expectedOutput/calcite/explain_sort_rename_push.json")
138-
: loadFromFile("expectedOutput/ppl/explain_sort_rename_push.json");
139-
123+
String expected = loadExpectedPlan("explain_sort_rename_push.json");
140124
assertJsonEqualsIgnoreId(
141125
expected,
142126
explainQueryToString(
@@ -153,10 +137,7 @@ public void testSortWithRenameExplain() throws IOException {
153137
*/
154138
@Test
155139
public void testSortThenLimitExplain() throws IOException {
156-
String expected =
157-
isCalciteEnabled()
158-
? loadFromFile("expectedOutput/calcite/explain_sort_then_limit_push.json")
159-
: loadFromFile("expectedOutput/ppl/explain_sort_then_limit_push.json");
140+
String expected = loadExpectedPlan("explain_sort_then_limit_push.json");
160141
assertJsonEqualsIgnoreId(
161142
expected,
162143
explainQueryToString(
@@ -174,10 +155,7 @@ public void testSortThenLimitExplain() throws IOException {
174155
public void testLimitThenSortExplain() throws IOException {
175156
// TODO: Fix the expected output in expectedOutput/ppl/explain_limit_then_sort_push.json (v2)
176157
// limit-then-sort should not be pushed down.
177-
String expected =
178-
isCalciteEnabled()
179-
? loadFromFile("expectedOutput/calcite/explain_limit_then_sort_push.json")
180-
: loadFromFile("expectedOutput/ppl/explain_limit_then_sort_push.json");
158+
String expected = loadExpectedPlan("explain_limit_then_sort_push.json");
181159
assertJsonEqualsIgnoreId(
182160
expected,
183161
explainQueryToString(
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"calcite": {
3+
"logical": "LogicalSort(sort0=[$0], dir0=[ASC])\n LogicalProject(age=[$8])\n LogicalSort(sort0=[$8], dir0=[ASC])\n LogicalSort(fetch=[5])\n CalciteLogicalIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])\n",
4+
"physical": "EnumerableSort(sort0=[$0], dir0=[ASC])\n EnumerableCalc(expr#0..16=[{inputs}], age=[$t8])\n EnumerableLimit(fetch=[5])\n CalciteEnumerableIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])\n"
5+
}
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"calcite": {
3+
"logical": "LogicalSort(sort0=[$3], sort1=[$4], sort2=[$2], dir0=[DESC], dir1=[DESC], dir2=[ASC])\n LogicalProject(account_number=[$0], firstname=[$1], address=[$2], balance=[$3], gender=[$4])\n LogicalSort(sort0=[$3], sort1=[$4], sort2=[$2], dir0=[DESC], dir1=[DESC], dir2=[ASC])\n LogicalSort(sort0=[$0], sort1=[$1], sort2=[$2], sort3=[$3], dir0=[ASC], dir1=[ASC], dir2=[ASC], dir3=[ASC])\n CalciteLogicalIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])\n",
4+
"physical": "EnumerableSort(sort0=[$3], sort1=[$4], sort2=[$2], dir0=[DESC], dir1=[DESC], dir2=[ASC])\n EnumerableCalc(expr#0..16=[{inputs}], proj#0..4=[{exprs}])\n CalciteEnumerableIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])\n"
5+
}
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"calcite": {
3+
"logical": "LogicalSort(sort0=[$0], dir0=[ASC])\n LogicalProject(avg_age=[$2], state=[$0], city=[$1])\n LogicalAggregate(group=[{0, 1}], avg_age=[AVG($2)])\n LogicalProject(state=[$7], city=[$5], age=[$8])\n CalciteLogicalIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])\n",
4+
"physical": "EnumerableSort(sort0=[$0], dir0=[ASC])\n EnumerableCalc(expr#0..3=[{inputs}], expr#4=[0], expr#5=[=($t3, $t4)], expr#6=[null:BIGINT], expr#7=[CASE($t5, $t6, $t2)], expr#8=[CAST($t7):DOUBLE], expr#9=[/($t8, $t3)], avg_age=[$t9], state=[$t1], city=[$t0])\n EnumerableAggregate(group=[{5, 7}], agg#0=[$SUM0($8)], agg#1=[COUNT($8)])\n CalciteEnumerableIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])\n"
5+
}
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"calcite": {
3+
"logical": "LogicalSort(sort0=[$0], dir0=[ASC])\n LogicalProject(alias=[$17])\n LogicalSort(sort0=[$17], dir0=[ASC])\n LogicalProject(account_number=[$0], name=[$1], address=[$2], balance=[$3], gender=[$4], city=[$5], employer=[$6], state=[$7], age=[$8], email=[$9], lastname=[$10], _id=[$11], _index=[$12], _score=[$13], _maxscore=[$14], _sort=[$15], _routing=[$16], alias=[$1])\n CalciteLogicalIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])\n",
4+
"physical": "EnumerableSort(sort0=[$0], dir0=[ASC])\n EnumerableCalc(expr#0..16=[{inputs}], alias=[$t1])\n CalciteEnumerableIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])\n"
5+
}
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"calcite": {
3+
"logical": "LogicalProject(avg(balance)=[$1], state=[$0])\n LogicalAggregate(group=[{0}], avg(balance)=[AVG($1)])\n LogicalProject(state=[$7], balance=[$3])\n LogicalSort(sort0=[$3], sort1=[$8], dir0=[ASC], dir1=[ASC])\n CalciteLogicalIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])\n",
4+
"physical": "EnumerableCalc(expr#0..2=[{inputs}], expr#3=[0], expr#4=[=($t2, $t3)], expr#5=[null:BIGINT], expr#6=[CASE($t4, $t5, $t1)], expr#7=[CAST($t6):DOUBLE], expr#8=[/($t7, $t2)], avg(balance)=[$t8], state=[$t0])\n EnumerableAggregate(group=[{7}], agg#0=[$SUM0($3)], agg#1=[COUNT($3)])\n CalciteEnumerableIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])\n"
5+
}
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"calcite": {
3+
"logical": "LogicalSort(sort0=[$0], dir0=[ASC])\n LogicalProject(age=[$8])\n LogicalSort(sort0=[$8], dir0=[ASC], fetch=[5])\n CalciteLogicalIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])\n",
4+
"physical": "EnumerableCalc(expr#0..16=[{inputs}], age=[$t8])\n EnumerableLimit(fetch=[5])\n EnumerableSort(sort0=[$8], dir0=[ASC])\n CalciteEnumerableIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])\n"
5+
}
6+
}

0 commit comments

Comments
 (0)