Package org.apache.calcite.test
Class UdfTest
- java.lang.Object
-
- org.apache.calcite.test.UdfTest
-
public class UdfTest extends java.lang.Object
Tests for user-defined functions; includes user-defined aggregate functions but user-defined table functions are inTableFunctionTest
.- See Also:
Smalls
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
UdfTest.ArrayAppendDoubleFunction
Function with signature "f(ARRAY OF DOUBLE, INTEGER) returns ARRAY OF DOUBLE".private class
UdfTest.ArrayAppendIntegerFunction
Function with signature "f(ARRAY OF INTEGER, INTEGER) returns ARRAY OF INTEGER".private static class
UdfTest.ArrayAppendScalarFunction
Base class for functions that append arrays.
-
Constructor Summary
Constructors Constructor Description UdfTest()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
testArrayUserDefinedFunction()
Test case for [CALCITE-1834] User-defined function for Arrays.void
testBigDecimalAndLong()
void
testDate()
void
testDateAndTimestamp()
void
testNotNullImplementor()
Tests that IS NULL/IS NOT NULL is properly implemented for non-strict functions.void
testPath()
Tests resolution of functions using schema paths.void
testReturnDate()
void
testReturnDate2()
void
testSemiStrict()
Tests that we generate the appropriate checks for a "semi-strict" function.void
testUdfArgumentName()
Tests passing parameters to user-defined function by name.void
testUdfArgumentOptional()
Tests calling a user-defined function some of whose parameters are optional.void
testUdfDerivedReturnType()
Tests derived return type of user-defined function.void
testUdfOverloaded()
Tests a user-defined function that has multiple overloads.void
testUdfOverloadedNullable()
void
testUserDefinedAggregateFunction()
Tests user-defined aggregate function.void
testUserDefinedAggregateFunction3()
Test forCalciteResource.firstParameterOfAdd(String)
.void
testUserDefinedAggregateFunctionImplementsInterface()
void
testUserDefinedAggregateFunctionWithFilter()
Tests user-defined aggregate function with FILTER.void
testUserDefinedAggregateFunctionWithMultipleParameters()
Tests user-defined aggregate function.void
testUserDefinedFunction()
Tests a user-defined function that is defined in terms of a class with non-static methods.void
testUserDefinedFunction2()
Test forCalciteResource.requireDefaultConstructor(String)
.void
testUserDefinedFunctionB()
void
testUserDefinedFunctionInstanceCount()
AstestUserDefinedFunction()
, but checks that the class is instantiated exactly once, per [CALCITE-1548] Instantiate function objects once per query.void
testUserDefinedFunctionInView()
Test case for [CALCITE-937] User-defined function within view.void
testUserDefinedFunctionWithMethodName()
Tests user-defined function, with multiple methods per class.private static CalciteAssert.AssertThat
withBadUdf(java.lang.Class clazz)
private CalciteAssert.AssertThat
withUdf()
-
-
-
Method Detail
-
withUdf
private CalciteAssert.AssertThat withUdf()
-
testUserDefinedFunction
public void testUserDefinedFunction() throws java.lang.Exception
Tests a user-defined function that is defined in terms of a class with non-static methods.- Throws:
java.lang.Exception
-
testUserDefinedFunctionInstanceCount
public void testUserDefinedFunctionInstanceCount() throws java.lang.Exception
AstestUserDefinedFunction()
, but checks that the class is instantiated exactly once, per [CALCITE-1548] Instantiate function objects once per query.- Throws:
java.lang.Exception
-
testUserDefinedFunctionB
public void testUserDefinedFunctionB() throws java.lang.Exception
- Throws:
java.lang.Exception
-
testUserDefinedFunctionInView
public void testUserDefinedFunctionInView() throws java.lang.Exception
Test case for [CALCITE-937] User-defined function within view.- Throws:
java.lang.Exception
-
testNotNullImplementor
public void testNotNullImplementor()
Tests that IS NULL/IS NOT NULL is properly implemented for non-strict functions.
-
testSemiStrict
public void testSemiStrict()
Tests that we generate the appropriate checks for a "semi-strict" function.The difference between "strict" and "semi-strict" functions is that a "semi-strict" function might return null even if none of its arguments are null. (Both always return null if one of their arguments is null.) Thus, a nasty function is more unpredictable.
- See Also:
SemiStrict
-
testUdfDerivedReturnType
public void testUdfDerivedReturnType()
Tests derived return type of user-defined function.
-
testUdfOverloaded
public void testUdfOverloaded()
Tests a user-defined function that has multiple overloads.
-
testUdfOverloadedNullable
public void testUdfOverloadedNullable()
-
testUdfArgumentName
public void testUdfArgumentName()
Tests passing parameters to user-defined function by name.
-
testUdfArgumentOptional
public void testUdfArgumentOptional()
Tests calling a user-defined function some of whose parameters are optional.
-
testUserDefinedFunction2
public void testUserDefinedFunction2() throws java.lang.Exception
Test forCalciteResource.requireDefaultConstructor(String)
.- Throws:
java.lang.Exception
-
testUserDefinedFunctionWithMethodName
public void testUserDefinedFunctionWithMethodName() throws java.lang.Exception
Tests user-defined function, with multiple methods per class.- Throws:
java.lang.Exception
-
testUserDefinedAggregateFunction
public void testUserDefinedAggregateFunction() throws java.lang.Exception
Tests user-defined aggregate function.- Throws:
java.lang.Exception
-
testUserDefinedAggregateFunctionWithMultipleParameters
public void testUserDefinedAggregateFunctionWithMultipleParameters() throws java.lang.Exception
Tests user-defined aggregate function.- Throws:
java.lang.Exception
-
testUserDefinedAggregateFunction3
public void testUserDefinedAggregateFunction3() throws java.lang.Exception
Test forCalciteResource.firstParameterOfAdd(String)
.- Throws:
java.lang.Exception
-
testUserDefinedAggregateFunctionImplementsInterface
public void testUserDefinedAggregateFunctionImplementsInterface()
-
withBadUdf
private static CalciteAssert.AssertThat withBadUdf(java.lang.Class clazz)
-
testUserDefinedAggregateFunctionWithFilter
public void testUserDefinedAggregateFunctionWithFilter() throws java.lang.Exception
Tests user-defined aggregate function with FILTER.Also tests that we do not try to push ADAF to JDBC source.
- Throws:
java.lang.Exception
-
testPath
public void testPath() throws java.lang.Exception
Tests resolution of functions using schema paths.- Throws:
java.lang.Exception
-
testDate
public void testDate()
-
testReturnDate
public void testReturnDate()
-
testDateAndTimestamp
public void testDateAndTimestamp()
-
testBigDecimalAndLong
public void testBigDecimalAndLong()
-
testReturnDate2
public void testReturnDate2()
-
testArrayUserDefinedFunction
public void testArrayUserDefinedFunction() throws java.lang.Exception
Test case for [CALCITE-1834] User-defined function for Arrays.- Throws:
java.lang.Exception
-
-