This is an automated email from the ASF dual-hosted git repository.
rohangarg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new fbbb9c77305 Allow DESC ordering in window expressions (#15195)
fbbb9c77305 is described below
commit fbbb9c77305e2f5a4296a6969f66abb42a01ba33
Author: Zoltan Haindrich <[email protected]>
AuthorDate: Fri Oct 20 13:55:28 2023 +0200
Allow DESC ordering in window expressions (#15195)
---
.../sql/calcite/planner/DruidSqlValidator.java | 36 ++++++
.../planner/convertlet/DruidConvertletTable.java | 3 +
.../apache/druid/sql/calcite/CalciteQueryTest.java | 24 ++++
.../druid/sql/calcite/DrillWindowQueryTest.java | 134 +++++++--------------
.../apache/druid/sql/calcite/NotYetSupported.java | 3 +-
.../calcite/tests/window/orderByDescNulls.sqlTest | 45 +++++++
6 files changed, 153 insertions(+), 92 deletions(-)
diff --git
a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java
b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java
index 5a901c72296..bbc4f99a131 100644
---
a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java
+++
b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java
@@ -22,7 +22,14 @@ package org.apache.druid.sql.calcite.planner;
import org.apache.calcite.adapter.java.JavaTypeFactory;
import org.apache.calcite.prepare.BaseDruidSqlValidator;
import org.apache.calcite.prepare.CalciteCatalogReader;
+import org.apache.calcite.runtime.CalciteContextException;
+import org.apache.calcite.runtime.CalciteException;
+import org.apache.calcite.sql.SqlCall;
+import org.apache.calcite.sql.SqlKind;
+import org.apache.calcite.sql.SqlNode;
import org.apache.calcite.sql.SqlOperatorTable;
+import org.apache.calcite.sql.parser.SqlParserPos;
+import org.apache.calcite.sql.validate.SqlValidatorScope;
/**
* Druid extended SQL validator. (At present, it doesn't actually
@@ -39,4 +46,33 @@ class DruidSqlValidator extends BaseDruidSqlValidator
{
super(opTab, catalogReader, typeFactory, validatorConfig);
}
+
+ @Override
+ public void validateCall(SqlCall call, SqlValidatorScope scope)
+ {
+ if (call.getKind() == SqlKind.NULLS_FIRST) {
+ SqlNode op0 = call.getOperandList().get(0);
+ if (op0.getKind() == SqlKind.DESCENDING) {
+ throw buildCalciteContextException("DESCENDING ordering with NULLS
FIRST is not supported!", call);
+ }
+ }
+ if (call.getKind() == SqlKind.NULLS_LAST) {
+ SqlNode op0 = call.getOperandList().get(0);
+ if (op0.getKind() != SqlKind.DESCENDING) {
+ throw buildCalciteContextException("ASCENDING ordering with NULLS LAST
is not supported!", call);
+ }
+ }
+ super.validateCall(call, scope);
+ }
+
+ private CalciteContextException buildCalciteContextException(String message,
SqlCall call)
+ {
+ SqlParserPos pos = call.getParserPosition();
+ return new CalciteContextException(message,
+ new CalciteException(message, null),
+ pos.getLineNum(),
+ pos.getColumnNum(),
+ pos.getEndLineNum(),
+ pos.getEndColumnNum());
+ }
}
diff --git
a/sql/src/main/java/org/apache/druid/sql/calcite/planner/convertlet/DruidConvertletTable.java
b/sql/src/main/java/org/apache/druid/sql/calcite/planner/convertlet/DruidConvertletTable.java
index 59ad4ef24f0..eadd2e48268 100644
---
a/sql/src/main/java/org/apache/druid/sql/calcite/planner/convertlet/DruidConvertletTable.java
+++
b/sql/src/main/java/org/apache/druid/sql/calcite/planner/convertlet/DruidConvertletTable.java
@@ -67,6 +67,9 @@ public class DruidConvertletTable implements
SqlRexConvertletTable
.add(SqlStdOperatorTable.NULLIF)
.add(SqlStdOperatorTable.COALESCE)
.add(SqlLibraryOperators.NVL)
+ .add(SqlStdOperatorTable.DESC)
+ .add(SqlStdOperatorTable.NULLS_FIRST)
+ .add(SqlStdOperatorTable.NULLS_LAST)
.build();
private final Map<SqlOperator, SqlRexConvertlet> table;
diff --git
a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java
b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java
index 49b66f8bc9f..811227162ac 100644
--- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java
+++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java
@@ -137,6 +137,9 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertThrows;
+
public class CalciteQueryTest extends BaseCalciteQueryTest
{
@Test
@@ -14251,4 +14254,25 @@ public class CalciteQueryTest extends
BaseCalciteQueryTest
new Object[] {"abc", defaultString, "def", defaultString, "def",
defaultString}
));
}
+
+ @Test
+ public void testUnSupportedNullsFirst()
+ {
+ DruidException e = assertThrows(DruidException.class, () -> testBuilder()
+ .queryContext(ImmutableMap.of(PlannerContext.CTX_ENABLE_WINDOW_FNS,
true))
+ .sql("SELECT dim1,ROW_NUMBER() OVER (ORDER BY dim1 DESC NULLS FIRST)
from druid.foo")
+ .run());
+
+ assertThat(e, invalidSqlIs("DESCENDING ordering with NULLS FIRST is not
supported! (line [1], column [41])"));
+ }
+
+ @Test
+ public void testUnSupportedNullsLast()
+ {
+ DruidException e = assertThrows(DruidException.class, () -> testBuilder()
+ .queryContext(ImmutableMap.of(PlannerContext.CTX_ENABLE_WINDOW_FNS,
true))
+ .sql("SELECT dim1,ROW_NUMBER() OVER (ORDER BY dim1 NULLS LAST) from
druid.foo")
+ .run());
+ assertThat(e, invalidSqlIs("ASCENDING ordering with NULLS LAST is not
supported! (line [1], column [41])"));
+ }
}
diff --git
a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java
b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java
index ebc55166144..8a737eca035 100644
--- a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java
+++ b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java
@@ -450,7 +450,8 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
}
try {
LocalTime v = LocalTime.parse(val);
- return v.getMillisOfDay();
+ Long l = (long) v.getMillisOfDay();
+ return l;
}
catch (Exception e) {
}
@@ -4384,7 +4385,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.MISSING_DESC)
+ @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("aggregates/winFnQry_63")
@Test
public void test_aggregates_winFnQry_63()
@@ -4392,7 +4393,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.MISSING_DESC)
+ @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/winFnQry_83")
@Test
public void test_aggregates_winFnQry_83()
@@ -4400,7 +4401,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.MISSING_DESC)
+ @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("frameclause/multipl_wnwds/mulwind_01")
@Test
public void test_frameclause_multipl_wnwds_mulwind_01()
@@ -4408,7 +4409,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.MISSING_DESC)
+ @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("frameclause/multipl_wnwds/mulwind_06")
@Test
public void test_frameclause_multipl_wnwds_mulwind_06()
@@ -4416,7 +4417,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.MISSING_DESC)
+ @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("frameclause/multipl_wnwds/mulwind_07")
@Test
public void test_frameclause_multipl_wnwds_mulwind_07()
@@ -4424,7 +4425,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.MISSING_DESC)
@DrillTest("lag_func/lag_Fn_108")
@Test
public void test_lag_func_lag_Fn_108()
@@ -4432,7 +4432,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.MISSING_DESC)
@DrillTest("lag_func/lag_Fn_109")
@Test
public void test_lag_func_lag_Fn_109()
@@ -4440,7 +4439,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.MISSING_DESC)
@DrillTest("lag_func/lag_Fn_69")
@Test
public void test_lag_func_lag_Fn_69()
@@ -4448,7 +4446,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.MISSING_DESC)
@DrillTest("lead_func/lead_Fn_103")
@Test
public void test_lead_func_lead_Fn_103()
@@ -4456,7 +4453,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.MISSING_DESC)
@DrillTest("lead_func/lead_Fn_104")
@Test
public void test_lead_func_lead_Fn_104()
@@ -4464,7 +4460,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.MISSING_DESC)
@DrillTest("lead_func/lead_Fn_69")
@Test
public void test_lead_func_lead_Fn_69()
@@ -4472,7 +4467,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.MISSING_DESC)
+ @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("nestedAggs/multiWin_7")
@Test
public void test_nestedAggs_multiWin_7()
@@ -4992,7 +4987,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_COUNT_MISMATCH)
@DrillTest("aggregates/testW_Nulls_10")
@Test
public void test_aggregates_testW_Nulls_10()
@@ -5000,7 +4995,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/testW_Nulls_11")
@Test
public void test_aggregates_testW_Nulls_11()
@@ -5152,7 +5147,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/testW_Nulls_2")
@Test
public void test_aggregates_testW_Nulls_2()
@@ -5240,7 +5235,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_COUNT_MISMATCH)
@DrillTest("aggregates/testW_Nulls_3")
@Test
public void test_aggregates_testW_Nulls_3()
@@ -5248,7 +5243,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/testW_Nulls_4")
@Test
public void test_aggregates_testW_Nulls_4()
@@ -5256,7 +5251,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.COLUMN_NOT_FOUND)
@DrillTest("aggregates/testW_Nulls_5")
@Test
public void test_aggregates_testW_Nulls_5()
@@ -5264,7 +5259,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.COLUMN_NOT_FOUND)
@DrillTest("aggregates/testW_Nulls_6")
@Test
public void test_aggregates_testW_Nulls_6()
@@ -5272,7 +5267,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/testW_Nulls_7")
@Test
public void test_aggregates_testW_Nulls_7()
@@ -5280,7 +5275,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("aggregates/testW_Nulls_8")
@Test
public void test_aggregates_testW_Nulls_8()
@@ -5288,7 +5282,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/testW_Nulls_9")
@Test
public void test_aggregates_testW_Nulls_9()
@@ -5296,7 +5290,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/winFnQry_61")
@Test
public void test_aggregates_winFnQry_61()
@@ -5304,7 +5298,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/winFnQry_62")
@Test
public void test_aggregates_winFnQry_62()
@@ -5312,7 +5306,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/winFnQry_64")
@Test
public void test_aggregates_winFnQry_64()
@@ -5320,7 +5314,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/winFnQry_65")
@Test
public void test_aggregates_winFnQry_65()
@@ -5408,7 +5402,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/winFnQry_76")
@Test
public void test_aggregates_winFnQry_76()
@@ -5416,7 +5410,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/winFnQry_77")
@Test
public void test_aggregates_winFnQry_77()
@@ -5424,7 +5418,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/winFnQry_78")
@Test
public void test_aggregates_winFnQry_78()
@@ -5432,7 +5426,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_COUNT_MISMATCH)
@DrillTest("aggregates/winFnQry_79")
@Test
public void test_aggregates_winFnQry_79()
@@ -5440,7 +5434,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_COUNT_MISMATCH)
@DrillTest("aggregates/winFnQry_80")
@Test
public void test_aggregates_winFnQry_80()
@@ -5448,7 +5442,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_COUNT_MISMATCH)
@DrillTest("aggregates/winFnQry_81")
@Test
public void test_aggregates_winFnQry_81()
@@ -5456,7 +5450,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/winFnQry_82")
@Test
public void test_aggregates_winFnQry_82()
@@ -5464,7 +5458,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lag_func/lag_Fn_10")
@Test
public void test_lag_func_lag_Fn_10()
@@ -5472,7 +5465,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lag_func/lag_Fn_11")
@Test
public void test_lag_func_lag_Fn_11()
@@ -5480,7 +5472,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lag_func/lag_Fn_12")
@Test
public void test_lag_func_lag_Fn_12()
@@ -5488,7 +5479,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lag_func/lag_Fn_13")
@Test
public void test_lag_func_lag_Fn_13()
@@ -5496,7 +5486,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lag_func/lag_Fn_14")
@Test
public void test_lag_func_lag_Fn_14()
@@ -5504,7 +5493,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lag_func/lag_Fn_15")
@Test
public void test_lag_func_lag_Fn_15()
@@ -5512,7 +5500,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lag_func/lag_Fn_16")
@Test
public void test_lag_func_lag_Fn_16()
@@ -5520,7 +5507,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lag_func/lag_Fn_17")
@Test
public void test_lag_func_lag_Fn_17()
@@ -5528,7 +5514,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lag_func/lag_Fn_18")
@Test
public void test_lag_func_lag_Fn_18()
@@ -5536,7 +5521,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING)
@DrillTest("lag_func/lag_Fn_19")
@Test
public void test_lag_func_lag_Fn_19()
@@ -5544,7 +5529,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING)
@DrillTest("lag_func/lag_Fn_20")
@Test
public void test_lag_func_lag_Fn_20()
@@ -5552,7 +5537,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING)
@DrillTest("lag_func/lag_Fn_21")
@Test
public void test_lag_func_lag_Fn_21()
@@ -5560,7 +5545,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING)
@DrillTest("lag_func/lag_Fn_22")
@Test
public void test_lag_func_lag_Fn_22()
@@ -5576,7 +5561,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING)
@DrillTest("lag_func/lag_Fn_24")
@Test
public void test_lag_func_lag_Fn_24()
@@ -5584,7 +5569,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING)
@DrillTest("lag_func/lag_Fn_25")
@Test
public void test_lag_func_lag_Fn_25()
@@ -5592,7 +5577,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING)
@DrillTest("lag_func/lag_Fn_26")
@Test
public void test_lag_func_lag_Fn_26()
@@ -5600,7 +5585,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING)
@DrillTest("lag_func/lag_Fn_54")
@Test
public void test_lag_func_lag_Fn_54()
@@ -5608,7 +5593,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lag_func/lag_Fn_64")
@Test
public void test_lag_func_lag_Fn_64()
@@ -5616,7 +5600,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lag_func/lag_Fn_65")
@Test
public void test_lag_func_lag_Fn_65()
@@ -5624,7 +5607,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lag_func/lag_Fn_66")
@Test
public void test_lag_func_lag_Fn_66()
@@ -5632,7 +5614,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lag_func/lag_Fn_67")
@Test
public void test_lag_func_lag_Fn_67()
@@ -5640,7 +5621,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING)
@DrillTest("lag_func/lag_Fn_68")
@Test
public void test_lag_func_lag_Fn_68()
@@ -5648,7 +5629,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lag_func/lag_Fn_71")
@Test
public void test_lag_func_lag_Fn_71()
@@ -5656,7 +5636,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING)
@DrillTest("lag_func/lag_Fn_72")
@Test
public void test_lag_func_lag_Fn_72()
@@ -5664,7 +5644,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lead_func/lead_Fn_10")
@Test
public void test_lead_func_lead_Fn_10()
@@ -5672,7 +5651,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lead_func/lead_Fn_11")
@Test
public void test_lead_func_lead_Fn_11()
@@ -5680,7 +5658,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lead_func/lead_Fn_12")
@Test
public void test_lead_func_lead_Fn_12()
@@ -5688,7 +5665,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lead_func/lead_Fn_13")
@Test
public void test_lead_func_lead_Fn_13()
@@ -5696,7 +5672,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lead_func/lead_Fn_14")
@Test
public void test_lead_func_lead_Fn_14()
@@ -5704,7 +5679,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lead_func/lead_Fn_15")
@Test
public void test_lead_func_lead_Fn_15()
@@ -5712,7 +5686,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lead_func/lead_Fn_16")
@Test
public void test_lead_func_lead_Fn_16()
@@ -5720,7 +5693,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lead_func/lead_Fn_17")
@Test
public void test_lead_func_lead_Fn_17()
@@ -5728,7 +5700,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lead_func/lead_Fn_18")
@Test
public void test_lead_func_lead_Fn_18()
@@ -5736,7 +5707,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING)
@DrillTest("lead_func/lead_Fn_19")
@Test
public void test_lead_func_lead_Fn_19()
@@ -5752,7 +5723,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING)
@DrillTest("lead_func/lead_Fn_21")
@Test
public void test_lead_func_lead_Fn_21()
@@ -5760,7 +5731,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING)
@DrillTest("lead_func/lead_Fn_22")
@Test
public void test_lead_func_lead_Fn_22()
@@ -5792,7 +5763,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lead_func/lead_Fn_64")
@Test
public void test_lead_func_lead_Fn_64()
@@ -5800,7 +5770,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lead_func/lead_Fn_65")
@Test
public void test_lead_func_lead_Fn_65()
@@ -5808,7 +5777,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lead_func/lead_Fn_66")
@Test
public void test_lead_func_lead_Fn_66()
@@ -5816,7 +5784,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lead_func/lead_Fn_67")
@Test
public void test_lead_func_lead_Fn_67()
@@ -5824,7 +5791,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING)
@DrillTest("lead_func/lead_Fn_68")
@Test
public void test_lead_func_lead_Fn_68()
@@ -5832,7 +5799,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
@DrillTest("lead_func/lead_Fn_71")
@Test
public void test_lead_func_lead_Fn_71()
@@ -5840,7 +5806,7 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.NULLS_FIRST_LAST)
+ @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING)
@DrillTest("lead_func/lead_Fn_72")
@Test
public void test_lead_func_lead_Fn_72()
@@ -6462,7 +6428,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/wo_OrdrBy_17")
@Test
public void test_aggregates_wo_OrdrBy_17()
@@ -6470,7 +6435,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/wo_OrdrBy_18")
@Test
public void test_aggregates_wo_OrdrBy_18()
@@ -6478,7 +6442,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/wo_OrdrBy_19")
@Test
public void test_aggregates_wo_OrdrBy_19()
@@ -6486,7 +6449,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/wo_OrdrBy_20")
@Test
public void test_aggregates_wo_OrdrBy_20()
@@ -6494,7 +6456,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("aggregates/wo_OrdrBy_21")
@Test
public void test_aggregates_wo_OrdrBy_21()
@@ -6673,7 +6634,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("first_val/firstValFn_17")
@Test
public void test_first_val_firstValFn_17()
@@ -7575,7 +7535,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("lead_func/lead_Fn_54")
@Test
public void test_lead_func_lead_Fn_54()
@@ -7590,7 +7549,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("lead_func/lead_Fn_63")
@Test
public void test_lead_func_lead_Fn_63()
@@ -7612,7 +7570,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("lead_func/lead_Fn_90")
@Test
public void test_lead_func_lead_Fn_90()
@@ -7627,7 +7584,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("lead_func/lead_Fn_9")
@Test
public void test_lead_func_lead_Fn_9()
@@ -7643,7 +7599,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("nestedAggs/basic_5")
@Test
public void test_nestedAggs_basic_5()
@@ -7729,7 +7684,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.RESULT_MISMATCH)
@DrillTest("ntile_func/ntileFn_15")
@Test
public void test_ntile_func_ntileFn_15()
@@ -7898,7 +7852,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.T_ALLTYPES_ISSUES)
@DrillTest("lag_func/lag_Fn_77")
@Test
public void test_lag_func_lag_Fn_77()
@@ -7906,7 +7859,6 @@ public class DrillWindowQueryTest extends
BaseCalciteQueryTest
windowQueryTest();
}
- @NotYetSupported(Modes.T_ALLTYPES_ISSUES)
@DrillTest("lag_func/lag_Fn_95")
@Test
public void test_lag_func_lag_Fn_95()
diff --git
a/sql/src/test/java/org/apache/druid/sql/calcite/NotYetSupported.java
b/sql/src/test/java/org/apache/druid/sql/calcite/NotYetSupported.java
index 32364f6a8b1..933359e96bf 100644
--- a/sql/src/test/java/org/apache/druid/sql/calcite/NotYetSupported.java
+++ b/sql/src/test/java/org/apache/druid/sql/calcite/NotYetSupported.java
@@ -88,7 +88,8 @@ public @interface NotYetSupported
INCORRECT_SYNTAX(DruidException.class, "Incorrect syntax near the
keyword"),
// at least c7 is represented oddly in the parquet file
T_ALLTYPES_ISSUES(AssertionError.class,
"(t_alltype|allTypsUniq|fewRowsAllData).parquet.*Verifier.verify"),
- RESULT_MISMATCH(AssertionError.class, "assertResultsEquals");
+ RESULT_MISMATCH(AssertionError.class, "assertResultsEquals"),
+ UNSUPPORTED_NULL_ORDERING(DruidException.class, "(A|DE)SCENDING ordering
with NULLS (LAST|FIRST)");
public Class<? extends Throwable> throwableClass;
public String regex;
diff --git
a/sql/src/test/resources/calcite/tests/window/orderByDescNulls.sqlTest
b/sql/src/test/resources/calcite/tests/window/orderByDescNulls.sqlTest
new file mode 100644
index 00000000000..320b448c748
--- /dev/null
+++ b/sql/src/test/resources/calcite/tests/window/orderByDescNulls.sqlTest
@@ -0,0 +1,45 @@
+type: "operatorValidation"
+
+sql: |
+ SELECT
+ cityName,
+ __time,
+ ROW_NUMBER() OVER (ORDER BY cityName desc nulls last, __time )
windowedDelta,
+ ROW_NUMBER() OVER (ORDER BY cityName nulls first, __time ) windowedDelta
+ FROM wikipedia
+ where page < '0' and channel like '#en%'
+
+expectedOperators:
+ - type: "naiveSort"
+ columns:
+ - column: "cityName"
+ direction: "DESC"
+ - column: "__time"
+ direction: "ASC"
+ - type: "naivePartition"
+ partitionColumns: [ ]
+ - type: "window"
+ processor:
+ type: "rowNumber"
+ outputColumn: "w0"
+ - type: "naiveSort"
+ columns:
+ - column: "cityName"
+ direction: "ASC"
+ - column: "__time"
+ direction: "ASC"
+ - type: "naivePartition"
+ partitionColumns: [ ]
+ - type: "window"
+ processor:
+ type: "rowNumber"
+ outputColumn: "w1"
+expectedResults:
+ - [null,1442019358364,3,1]
+ - [null,1442021099146,4,2]
+ - [null,1442033539153,5,3]
+ - [null,1442095704125,6,4]
+ - [null,1442096110867,7,5]
+ - [null,1442100368226,8,6]
+ - ["Crescent City",1442035449448,2,7]
+ - ["Vinnytsya",1442100940306,1,8]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]