mirror of https://github.com/apache/druid.git
Allow DESC ordering in window expressions (#15195)
This commit is contained in:
parent
e03f863cf6
commit
fbbb9c7730
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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])"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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]
|
Loading…
Reference in New Issue