Allow DESC ordering in window expressions (#15195)

This commit is contained in:
Zoltan Haindrich 2023-10-20 13:55:28 +02:00 committed by GitHub
parent e03f863cf6
commit fbbb9c7730
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 153 additions and 92 deletions

View File

@ -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());
}
}

View File

@ -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;

View File

@ -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])"));
}
}

View File

@ -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()

View File

@ -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;

View File

@ -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]