This is an automated email from the ASF dual-hosted git repository.
rongr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push:
new 78fc66b27c [multistage] clean up transform function type (#11726)
78fc66b27c is described below
commit 78fc66b27c6b36f19b225a4828f7bd3cb646ddba
Author: Rong Rong <[email protected]>
AuthorDate: Tue Oct 3 15:33:51 2023 -0700
[multistage] clean up transform function type (#11726)
* clean up transform function type, always allow `_` separate and
`camelCase` function names.
* also do the same for scalar functions
* for built-in functions we do not follow this rule b/c they are naturally
registered in SqlStdOperatorTable
---------
Co-authored-by: Rong Rong <[email protected]>
---
.../common/function/TransformFunctionType.java | 99 ++++++-----
.../common/function/scalar/DateTimeConvert.java | 2 +-
.../common/function/scalar/DateTimeFunctions.java | 191 ++++++++++-----------
.../common/function/scalar/JsonFunctions.java | 20 +--
.../sql/parsers/rewriter/CLPDecodeRewriter.java | 2 +-
.../function/FunctionDefinitionRegistryTest.java | 6 +-
.../transform/function/ScalarFunctions.java | 26 +--
.../function/CLPDecodeTransformFunction.java | 2 +-
.../function/InIdSetTransformFunction.java | 2 +-
.../function/TransformFunctionFactory.java | 30 ++--
.../query/executor/ServerQueryExecutorV1Impl.java | 2 +-
.../function/CLPDecodeTransformFunctionTest.java | 14 +-
12 files changed, 197 insertions(+), 199 deletions(-)
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/function/TransformFunctionType.java
b/pinot-common/src/main/java/org/apache/pinot/common/function/TransformFunctionType.java
index 0ca0f4f851..15decc86d1 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/function/TransformFunctionType.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/function/TransformFunctionType.java
@@ -69,6 +69,7 @@ public enum TransformFunctionType {
GREATEST("greatest"),
// predicate functions
+ // there's no need to register these functions b/c Calcite parser doesn't
allow explicit function parsing
EQUALS("equals"),
NOT_EQUALS("not_equals"),
GREATER_THAN("greater_than"),
@@ -78,17 +79,19 @@ public enum TransformFunctionType {
IN("in"),
NOT_IN("not_in"),
+ // null handling functions, they never return null
+ // there's no need for alternative name b/c Calcite parser doesn't allow
non-parentese representation
IS_TRUE("is_true"),
IS_NOT_TRUE("is_not_true"),
IS_FALSE("is_false"),
IS_NOT_FALSE("is_not_false"),
IS_NULL("is_null"),
IS_NOT_NULL("is_not_null"),
- COALESCE("coalesce"),
-
IS_DISTINCT_FROM("is_distinct_from"),
IS_NOT_DISTINCT_FROM("is_not_distinct_from"),
+ COALESCE("coalesce"),
+
AND("and"),
OR("or"),
NOT("not"), // NOT operator doesn't cover the transform for NOT IN and NOT
LIKE
@@ -105,57 +108,58 @@ public enum TransformFunctionType {
OperandTypes.family(SqlTypeFamily.ARRAY), "array_to_mv"),
// string functions
- JSONEXTRACTSCALAR("jsonExtractScalar",
+ JSON_EXTRACT_SCALAR("jsonExtractScalar",
ReturnTypes.cascade(opBinding ->
positionalReturnTypeInferenceFromStringLiteral(opBinding, 2,
SqlTypeName.VARCHAR), SqlTypeTransforms.FORCE_NULLABLE),
OperandTypes.family(ImmutableList.of(SqlTypeFamily.ANY,
SqlTypeFamily.CHARACTER, SqlTypeFamily.CHARACTER,
SqlTypeFamily.CHARACTER), ordinal -> ordinal > 2),
"json_extract_scalar"),
- JSONEXTRACTKEY("jsonExtractKey", ReturnTypes.TO_ARRAY,
+ JSON_EXTRACT_KEY("jsonExtractKey", ReturnTypes.TO_ARRAY,
OperandTypes.family(ImmutableList.of(SqlTypeFamily.ANY,
SqlTypeFamily.CHARACTER)), "json_extract_key"),
// date time functions
- TIMECONVERT("timeConvert",
+ TIME_CONVERT("timeConvert",
ReturnTypes.BIGINT_FORCE_NULLABLE,
OperandTypes.family(ImmutableList.of(SqlTypeFamily.ANY,
SqlTypeFamily.CHARACTER, SqlTypeFamily.CHARACTER)),
"time_convert"),
- DATETIMECONVERT("dateTimeConvert",
+ DATE_TIME_CONVERT("dateTimeConvert",
ReturnTypes.cascade(
opBinding -> dateTimeConverterReturnTypeInference(opBinding),
SqlTypeTransforms.FORCE_NULLABLE),
OperandTypes.family(ImmutableList.of(SqlTypeFamily.ANY,
SqlTypeFamily.CHARACTER, SqlTypeFamily.CHARACTER,
SqlTypeFamily.CHARACTER)), "date_time_convert"),
- DATETRUNC("dateTrunc",
+ DATE_TRUNC("dateTrunc",
ReturnTypes.BIGINT_FORCE_NULLABLE,
OperandTypes.family(
ImmutableList.of(SqlTypeFamily.CHARACTER, SqlTypeFamily.ANY,
SqlTypeFamily.CHARACTER, SqlTypeFamily.CHARACTER,
SqlTypeFamily.CHARACTER),
- ordinal -> ordinal > 1)),
+ ordinal -> ordinal > 1), "date_trunc"),
- FROMDATETIME("fromDateTime", ReturnTypes.TIMESTAMP_NULLABLE,
+ FROM_DATE_TIME("fromDateTime", ReturnTypes.TIMESTAMP_NULLABLE,
OperandTypes.family(ImmutableList.of(SqlTypeFamily.CHARACTER,
SqlTypeFamily.CHARACTER, SqlTypeFamily.CHARACTER),
- ordinal -> ordinal > 1)),
+ ordinal -> ordinal > 1), "from_date_time"),
- TODATETIME("toDateTime", ReturnTypes.VARCHAR_2000_NULLABLE,
+ TO_DATE_TIME("toDateTime", ReturnTypes.VARCHAR_2000_NULLABLE,
OperandTypes.family(ImmutableList.of(SqlTypeFamily.ANY,
SqlTypeFamily.CHARACTER, SqlTypeFamily.CHARACTER),
- ordinal -> ordinal > 1)),
+ ordinal -> ordinal > 1), "to_date_time"),
- TIMESTAMPADD("timestampAdd", ReturnTypes.TIMESTAMP_NULLABLE,
+ TIMESTAMP_ADD("timestampAdd", ReturnTypes.TIMESTAMP_NULLABLE,
OperandTypes.family(ImmutableList.of(SqlTypeFamily.CHARACTER,
SqlTypeFamily.NUMERIC, SqlTypeFamily.ANY)),
- "dateAdd"),
+ "timestamp_add", "dateAdd", "date_add"),
- TIMESTAMPDIFF("timestampDiff", ReturnTypes.BIGINT_NULLABLE,
- OperandTypes.family(ImmutableList.of(SqlTypeFamily.CHARACTER,
SqlTypeFamily.ANY, SqlTypeFamily.ANY)), "dateDiff"),
+ TIMESTAMP_DIFF("timestampDiff", ReturnTypes.BIGINT_NULLABLE,
+ OperandTypes.family(ImmutableList.of(SqlTypeFamily.CHARACTER,
SqlTypeFamily.ANY, SqlTypeFamily.ANY)),
+ "timestamp_diff", "dateDiff", "date_diff"),
YEAR("year"),
- YEAR_OF_WEEK("yearOfWeek", "yow"),
+ YEAR_OF_WEEK("yearOfWeek", "year_of_week", "yow"),
QUARTER("quarter"),
- MONTH_OF_YEAR("monthOfYear", "month"),
- WEEK_OF_YEAR("weekOfYear", "week"),
- DAY_OF_YEAR("dayOfYear", "doy"),
- DAY_OF_MONTH("dayOfMonth", "day"),
- DAY_OF_WEEK("dayOfWeek", "dow"),
+ MONTH_OF_YEAR("monthOfYear", "month_of_year", "month"),
+ WEEK_OF_YEAR("weekOfYear", "week_of_year", "week"),
+ DAY_OF_YEAR("dayOfYear", "day_of_year", "doy"),
+ DAY_OF_MONTH("dayOfMonth", "day_of_month", "day"),
+ DAY_OF_WEEK("dayOfWeek", "day_of_week", "dow"),
HOUR("hour"),
MINUTE("minute"),
SECOND("second"),
@@ -166,32 +170,33 @@ public enum TransformFunctionType {
// array functions
// The only column accepted by "cardinality" function is multi-value array,
thus putting "cardinality" as alias.
// TODO: once we support other types of multiset, we should make CARDINALITY
its own function
- ARRAYLENGTH("arrayLength", ReturnTypes.INTEGER,
OperandTypes.family(SqlTypeFamily.ARRAY), "cardinality"),
- ARRAYAVERAGE("arrayAverage", ReturnTypes.DOUBLE,
OperandTypes.family(SqlTypeFamily.ARRAY)),
- ARRAYMIN("arrayMin", ReturnTypes.cascade(opBinding ->
positionalComponentReturnType(opBinding, 0),
- SqlTypeTransforms.FORCE_NULLABLE),
OperandTypes.family(SqlTypeFamily.ARRAY)),
- ARRAYMAX("arrayMax", ReturnTypes.cascade(opBinding ->
positionalComponentReturnType(opBinding, 0),
- SqlTypeTransforms.FORCE_NULLABLE),
OperandTypes.family(SqlTypeFamily.ARRAY)),
- ARRAYSUM("arraySum", ReturnTypes.DOUBLE,
OperandTypes.family(SqlTypeFamily.ARRAY)),
- VALUEIN("valueIn"),
- MAPVALUE("mapValue", ReturnTypes.cascade(opBinding ->
+ ARRAY_LENGTH("arrayLength", ReturnTypes.INTEGER,
OperandTypes.family(SqlTypeFamily.ARRAY), "array_length",
+ "cardinality"),
+ ARRAY_AVERAGE("arrayAverage", ReturnTypes.DOUBLE,
OperandTypes.family(SqlTypeFamily.ARRAY), "array_average"),
+ ARRAY_MIN("arrayMin", ReturnTypes.cascade(opBinding ->
positionalComponentReturnType(opBinding, 0),
+ SqlTypeTransforms.FORCE_NULLABLE),
OperandTypes.family(SqlTypeFamily.ARRAY), "array_min"),
+ ARRAY_MAX("arrayMax", ReturnTypes.cascade(opBinding ->
positionalComponentReturnType(opBinding, 0),
+ SqlTypeTransforms.FORCE_NULLABLE),
OperandTypes.family(SqlTypeFamily.ARRAY), "array_max"),
+ ARRAY_SUM("arraySum", ReturnTypes.DOUBLE,
OperandTypes.family(SqlTypeFamily.ARRAY), "array_sum"),
+ VALUE_IN("valueIn", "value_in"),
+ MAP_VALUE("mapValue", ReturnTypes.cascade(opBinding ->
opBinding.getOperandType(2).getComponentType(),
SqlTypeTransforms.FORCE_NULLABLE),
OperandTypes.family(ImmutableList.of(SqlTypeFamily.ANY,
SqlTypeFamily.ANY, SqlTypeFamily.ANY)),
"map_value"),
// special functions
- INIDSET("inIdSet"),
+ IN_ID_SET("inIdSet", "in_id_set"),
LOOKUP("lookUp"),
GROOVY("groovy"),
// CLP functions
- CLPDECODE("clpDecode", ReturnTypes.VARCHAR_2000_NULLABLE,
OperandTypes.family(
+ CLP_DECODE("clpDecode", ReturnTypes.VARCHAR_2000_NULLABLE,
OperandTypes.family(
ImmutableList.of(SqlTypeFamily.ANY, SqlTypeFamily.ANY,
SqlTypeFamily.ANY, SqlTypeFamily.CHARACTER),
ordinal -> ordinal > 2), "clp_decode"),
// Regexp functions
REGEXP_EXTRACT("regexpExtract", "regexp_extract"),
- REGEXPREPLACE("regexpReplace",
+ REGEXP_REPLACE("regexpReplace",
ReturnTypes.VARCHAR_2000_NULLABLE,
OperandTypes.family(
ImmutableList.of(SqlTypeFamily.ANY, SqlTypeFamily.CHARACTER,
SqlTypeFamily.CHARACTER, SqlTypeFamily.CHARACTER,
@@ -209,31 +214,31 @@ public enum TransformFunctionType {
ST_GEOM_FROM_WKB("ST_GeomFromWKB",
ReturnTypes.explicit(SqlTypeName.VARBINARY), OperandTypes.BINARY),
ST_POINT("ST_Point", ReturnTypes.explicit(SqlTypeName.VARBINARY),
OperandTypes.family(ImmutableList.of(SqlTypeFamily.NUMERIC,
SqlTypeFamily.NUMERIC, SqlTypeFamily.NUMERIC),
- ordinal -> ordinal > 1 && ordinal < 4)),
- ST_POLYGON("ST_Polygon", ReturnTypes.explicit(SqlTypeName.VARBINARY),
OperandTypes.STRING),
+ ordinal -> ordinal > 1 && ordinal < 4), "stPoint"),
+ ST_POLYGON("ST_Polygon", ReturnTypes.explicit(SqlTypeName.VARBINARY),
OperandTypes.STRING, "stPolygon"),
// Geo measurements
- ST_AREA("ST_Area", ReturnTypes.DOUBLE_NULLABLE, OperandTypes.BINARY),
+ ST_AREA("ST_Area", ReturnTypes.DOUBLE_NULLABLE, OperandTypes.BINARY,
"stArea"),
ST_DISTANCE("ST_Distance", ReturnTypes.DOUBLE_NULLABLE,
- OperandTypes.family(ImmutableList.of(SqlTypeFamily.BINARY,
SqlTypeFamily.BINARY))),
- ST_GEOMETRY_TYPE("ST_GeometryType", ReturnTypes.VARCHAR_2000_NULLABLE,
OperandTypes.BINARY),
+ OperandTypes.family(ImmutableList.of(SqlTypeFamily.BINARY,
SqlTypeFamily.BINARY)), "stDistance"),
+ ST_GEOMETRY_TYPE("ST_GeometryType", ReturnTypes.VARCHAR_2000_NULLABLE,
OperandTypes.BINARY, "stGeometryType"),
// Geo outputs
- ST_AS_BINARY("ST_AsBinary", ReturnTypes.explicit(SqlTypeName.VARBINARY),
OperandTypes.BINARY),
- ST_AS_TEXT("ST_AsText", ReturnTypes.VARCHAR_2000_NULLABLE,
OperandTypes.BINARY),
+ ST_AS_BINARY("ST_AsBinary", ReturnTypes.explicit(SqlTypeName.VARBINARY),
OperandTypes.BINARY, "stAsBinary"),
+ ST_AS_TEXT("ST_AsText", ReturnTypes.VARCHAR_2000_NULLABLE,
OperandTypes.BINARY, "stAsText"),
// Geo relationship
ST_CONTAINS("ST_Contains", ReturnTypes.INTEGER,
- OperandTypes.family(ImmutableList.of(SqlTypeFamily.BINARY,
SqlTypeFamily.BINARY))),
+ OperandTypes.family(ImmutableList.of(SqlTypeFamily.BINARY,
SqlTypeFamily.BINARY)), "stContains"),
ST_EQUALS("ST_Equals", ReturnTypes.INTEGER,
- OperandTypes.family(ImmutableList.of(SqlTypeFamily.BINARY,
SqlTypeFamily.BINARY))),
+ OperandTypes.family(ImmutableList.of(SqlTypeFamily.BINARY,
SqlTypeFamily.BINARY)), "stEquals"),
ST_WITHIN("ST_Within", ReturnTypes.INTEGER,
- OperandTypes.family(ImmutableList.of(SqlTypeFamily.BINARY,
SqlTypeFamily.BINARY))),
+ OperandTypes.family(ImmutableList.of(SqlTypeFamily.BINARY,
SqlTypeFamily.BINARY)), "stWithin"),
// Geo indexing
- GEOTOH3("geoToH3", ReturnTypes.explicit(SqlTypeName.BIGINT),
+ GEO_TO_H3("geoToH3", ReturnTypes.explicit(SqlTypeName.BIGINT),
OperandTypes.family(ImmutableList.of(SqlTypeFamily.ANY,
SqlTypeFamily.NUMERIC, SqlTypeFamily.NUMERIC),
- ordinal -> ordinal > 1 && ordinal < 4)),
+ ordinal -> ordinal > 1 && ordinal < 4), "geo_to_h3"),
// Vector functions
// TODO: Once VECTOR type is defined, we should update here.
@@ -251,7 +256,7 @@ public enum TransformFunctionType {
VECTOR_NORM("vectorNorm", ReturnTypes.explicit(SqlTypeName.DOUBLE),
OperandTypes.family(ImmutableList.of(SqlTypeFamily.ARRAY)),
"vector_norm"),
- ARRAY_VALUE_CONSTRUCTOR("arrayValueConstructor"),
+ ARRAY_VALUE_CONSTRUCTOR("arrayValueConstructor", "array_value_constructor"),
// Trigonometry
SIN("sin"),
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeConvert.java
b/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeConvert.java
index 024b92030f..9f2a338295 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeConvert.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeConvert.java
@@ -34,7 +34,7 @@ public class DateTimeConvert {
private DateTimeFormatSpec _outputFormatSpec;
private DateTimeGranularitySpec _granularitySpec;
- @ScalarFunction
+ @ScalarFunction(names = {"dateTimeConvert", "date_time_convert"})
public String dateTimeConvert(String timeValueStr, String inputFormatStr,
String outputFormatStr,
String outputGranularityStr) {
if (_inputFormatSpec == null) {
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java
b/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java
index 7c28c589a7..16dfad75c7 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/DateTimeFunctions.java
@@ -29,6 +29,7 @@ import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.chrono.ISOChronology;
+
/**
* Inbuilt date time related transform functions
*
@@ -74,12 +75,12 @@ public class DateTimeFunctions {
/**
* Convert epoch millis to epoch seconds
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochSeconds", "to_epoch_seconds"})
public static long toEpochSeconds(long millis) {
return TimeUnit.MILLISECONDS.toSeconds(millis);
}
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochSecondsMV", "to_epoch_seconds_mv"})
public static long[] toEpochSecondsMV(long[] millis) {
long[] results = new long[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -91,12 +92,12 @@ public class DateTimeFunctions {
/**
* Convert epoch millis to epoch minutes
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochMinutes", "to_epoch_minutes"})
public static long toEpochMinutes(long millis) {
return TimeUnit.MILLISECONDS.toMinutes(millis);
}
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochMinutesMV", "to_epoch_minutes_mv"})
public static long[] toEpochMinutesMV(long[] millis) {
long[] results = new long[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -108,12 +109,12 @@ public class DateTimeFunctions {
/**
* Convert epoch millis to epoch hours
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochHours", "to_epoch_hours"})
public static long toEpochHours(long millis) {
return TimeUnit.MILLISECONDS.toHours(millis);
}
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochHoursMV", "to_epoch_hours_mv"})
public static long[] toEpochHoursMV(long[] millis) {
long[] results = new long[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -125,12 +126,12 @@ public class DateTimeFunctions {
/**
* Convert epoch millis to epoch days
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochDays", "to_epoch_days"})
public static long toEpochDays(long millis) {
return TimeUnit.MILLISECONDS.toDays(millis);
}
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochDaysMV", "to_epoch_days_mv"})
public static long[] toEpochDaysMV(long[] millis) {
long[] results = new long[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -142,12 +143,12 @@ public class DateTimeFunctions {
/**
* Convert epoch millis to epoch seconds, round to nearest rounding bucket
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochSecondsRounded",
"to_epoch_seconds_rounded"})
public static long toEpochSecondsRounded(long millis, long roundToNearest) {
return (TimeUnit.MILLISECONDS.toSeconds(millis) / roundToNearest) *
roundToNearest;
}
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochSecondsRoundedMV",
"to_epoch_seconds_rounded_mv"})
public static long[] toEpochSecondsRoundedMV(long[] millis, long
roundToNearest) {
long[] results = new long[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -156,16 +157,15 @@ public class DateTimeFunctions {
return results;
}
-
/**
* Convert epoch millis to epoch minutes, round to nearest rounding bucket
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochMinutesRounded",
"to_epoch_minutes_rounded"})
public static long toEpochMinutesRounded(long millis, long roundToNearest) {
return (TimeUnit.MILLISECONDS.toMinutes(millis) / roundToNearest) *
roundToNearest;
}
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochMinutesRoundedMV",
"to_epoch_minutes_rounded_mv"})
public static long[] toEpochMinutesRoundedMV(long[] millis, long
roundToNearest) {
long[] results = new long[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -174,16 +174,15 @@ public class DateTimeFunctions {
return results;
}
-
/**
* Convert epoch millis to epoch hours, round to nearest rounding bucket
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochHoursRounded", "to_epoch_hours_rounded"})
public static long toEpochHoursRounded(long millis, long roundToNearest) {
return (TimeUnit.MILLISECONDS.toHours(millis) / roundToNearest) *
roundToNearest;
}
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochHoursRoundedMV",
"to_epoch_hours_rounded_mv"})
public static long[] toEpochHoursRoundedMV(long[] millis, long
roundToNearest) {
long[] results = new long[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -192,16 +191,15 @@ public class DateTimeFunctions {
return results;
}
-
/**
* Convert epoch millis to epoch days, round to nearest rounding bucket
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochDaysRounded", "to_epoch_days_rounded"})
public static long toEpochDaysRounded(long millis, long roundToNearest) {
return (TimeUnit.MILLISECONDS.toDays(millis) / roundToNearest) *
roundToNearest;
}
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochDaysRoundedMV", "to_epoch_days_rounded_mv"})
public static long[] toEpochDaysRoundedMV(long[] millis, long
roundToNearest) {
long[] results = new long[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -210,16 +208,15 @@ public class DateTimeFunctions {
return results;
}
-
/**
* Convert epoch millis to epoch seconds, divided by given bucket, to get
nSecondsSinceEpoch
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochSecondsBucket", "to_epoch_seconds_bucket"})
public static long toEpochSecondsBucket(long millis, long bucket) {
return TimeUnit.MILLISECONDS.toSeconds(millis) / bucket;
}
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochSecondsBucketMV",
"to_epoch_seconds_bucket_mv"})
public static long[] toEpochSecondsBucketMV(long[] millis, long bucket) {
long[] results = new long[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -228,16 +225,15 @@ public class DateTimeFunctions {
return results;
}
-
/**
* Convert epoch millis to epoch minutes, divided by given bucket, to get
nMinutesSinceEpoch
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochMinutesBucket", "to_epoch_minutes_bucket"})
public static long toEpochMinutesBucket(long millis, long bucket) {
return TimeUnit.MILLISECONDS.toMinutes(millis) / bucket;
}
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochMinutesBucketMV",
"to_epoch_minutes_bucket_mv"})
public static long[] toEpochMinutesBucketMV(long[] millis, long bucket) {
long[] results = new long[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -246,16 +242,15 @@ public class DateTimeFunctions {
return results;
}
-
/**
* Convert epoch millis to epoch hours, divided by given bucket, to get
nHoursSinceEpoch
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochHoursBucket", "to_epoch_hours_bucket"})
public static long toEpochHoursBucket(long millis, long bucket) {
return TimeUnit.MILLISECONDS.toHours(millis) / bucket;
}
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochHoursBucketMV", "to_epoch_hours_bucket_mv"})
public static long[] toEpochHoursBucketMV(long[] millis, long bucket) {
long[] results = new long[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -264,16 +259,15 @@ public class DateTimeFunctions {
return results;
}
-
/**
* Convert epoch millis to epoch days, divided by given bucket, to get
nDaysSinceEpoch
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochDaysBucket", "to_epoch_days_bucket"})
public static long toEpochDaysBucket(long millis, long bucket) {
return TimeUnit.MILLISECONDS.toDays(millis) / bucket;
}
- @ScalarFunction
+ @ScalarFunction(names = {"toEpochDaysBucketMV", "to_epoch_days_bucket_mv"})
public static long[] toEpochDaysBucketMV(long[] millis, long bucket) {
long[] results = new long[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -282,16 +276,15 @@ public class DateTimeFunctions {
return results;
}
-
/**
* Converts epoch seconds to epoch millis
*/
- @ScalarFunction
+ @ScalarFunction(names = {"fromEpochSeconds", "from_epoch_seconds"})
public static long fromEpochSeconds(long seconds) {
return TimeUnit.SECONDS.toMillis(seconds);
}
- @ScalarFunction
+ @ScalarFunction(names = {"fromEpochSecondsMV", "from_epoch_seconds_mv"})
public static long[] fromEpochSecondsMV(long[] seconds) {
long[] results = new long[seconds.length];
for (int i = 0; i < seconds.length; i++) {
@@ -303,12 +296,12 @@ public class DateTimeFunctions {
/**
* Converts epoch minutes to epoch millis
*/
- @ScalarFunction
+ @ScalarFunction(names = {"fromEpochMinutes", "from_epoch_minutes"})
public static long fromEpochMinutes(long minutes) {
return TimeUnit.MINUTES.toMillis(minutes);
}
- @ScalarFunction
+ @ScalarFunction(names = {"fromEpochMinutesMV", "from_epoch_minutes_mv"})
public static long[] fromEpochMinutesMV(long[] minutes) {
long[] results = new long[minutes.length];
for (int i = 0; i < minutes.length; i++) {
@@ -320,12 +313,12 @@ public class DateTimeFunctions {
/**
* Converts epoch hours to epoch millis
*/
- @ScalarFunction
+ @ScalarFunction(names = {"fromEpochHours", "from_epoch_hours"})
public static long fromEpochHours(long hours) {
return TimeUnit.HOURS.toMillis(hours);
}
- @ScalarFunction
+ @ScalarFunction(names = {"fromEpochHoursMV", "from_epoch_hours_mv"})
public static long[] fromEpochHoursMV(long[] hours) {
long[] results = new long[hours.length];
for (int i = 0; i < hours.length; i++) {
@@ -337,12 +330,12 @@ public class DateTimeFunctions {
/**
* Converts epoch days to epoch millis
*/
- @ScalarFunction
+ @ScalarFunction(names = {"fromEpochDays", "from_epoch_days"})
public static long fromEpochDays(long days) {
return TimeUnit.DAYS.toMillis(days);
}
- @ScalarFunction
+ @ScalarFunction(names = {"fromEpochDaysMV", "from_epoch_days_mv"})
public static long[] fromEpochDaysMV(long[] days) {
long[] results = new long[days.length];
for (int i = 0; i < days.length; i++) {
@@ -354,12 +347,12 @@ public class DateTimeFunctions {
/**
* Converts nSecondsSinceEpoch (seconds that have been divided by a bucket),
to epoch millis
*/
- @ScalarFunction
+ @ScalarFunction(names = {"fromEpochSecondsBucket",
"from_epoch_seconds_bucket"})
public static long fromEpochSecondsBucket(long seconds, long bucket) {
return TimeUnit.SECONDS.toMillis(seconds * bucket);
}
- @ScalarFunction
+ @ScalarFunction(names = {"fromEpochSecondsBucketMV",
"from_epoch_seconds_bucket_mv"})
public static long[] fromEpochSecondsBucketMV(long[] seconds, long bucket) {
long[] results = new long[seconds.length];
for (int i = 0; i < seconds.length; i++) {
@@ -371,12 +364,12 @@ public class DateTimeFunctions {
/**
* Converts nMinutesSinceEpoch (minutes that have been divided by a bucket),
to epoch millis
*/
- @ScalarFunction
+ @ScalarFunction(names = {"fromEpochMinutesBucket",
"from_epoch_minutes_bucket"})
public static long fromEpochMinutesBucket(long minutes, long bucket) {
return TimeUnit.MINUTES.toMillis(minutes * bucket);
}
- @ScalarFunction
+ @ScalarFunction(names = {"fromEpochMinutesBucketMV",
"from_epoch_minutes_bucket_mv"})
public static long[] fromEpochMinutesBucketMV(long[] minutes, long bucket) {
long[] results = new long[minutes.length];
for (int i = 0; i < minutes.length; i++) {
@@ -388,12 +381,12 @@ public class DateTimeFunctions {
/**
* Converts nHoursSinceEpoch (hours that have been divided by a bucket), to
epoch millis
*/
- @ScalarFunction
+ @ScalarFunction(names = {"fromEpochHoursBucket", "from_epoch_hours_bucket"})
public static long fromEpochHoursBucket(long hours, long bucket) {
return TimeUnit.HOURS.toMillis(hours * bucket);
}
- @ScalarFunction
+ @ScalarFunction(names = {"fromEpochHoursBucketMV",
"from_epoch_hours_bucket_mv"})
public static long[] fromEpochHoursBucketMV(long[] hours, long bucket) {
long[] results = new long[hours.length];
for (int i = 0; i < hours.length; i++) {
@@ -405,12 +398,12 @@ public class DateTimeFunctions {
/**
* Converts nDaysSinceEpoch (days that have been divided by a bucket), to
epoch millis
*/
- @ScalarFunction
+ @ScalarFunction(names = {"fromEpochDaysBucket", "from_epoch_days_bucket"})
public static long fromEpochDaysBucket(long days, long bucket) {
return TimeUnit.DAYS.toMillis(days * bucket);
}
- @ScalarFunction
+ @ScalarFunction(names = {"fromEpochDaysBucketMV",
"from_epoch_days_bucket_mv"})
public static long[] fromEpochDaysBucketMV(long[] days, long bucket) {
long[] results = new long[days.length];
for (int i = 0; i < days.length; i++) {
@@ -422,12 +415,12 @@ public class DateTimeFunctions {
/**
* Converts epoch millis to Timestamp
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toTimestamp", "to_timestamp"})
public static Timestamp toTimestamp(long millis) {
return new Timestamp(millis);
}
- @ScalarFunction
+ @ScalarFunction(names = {"toTimestampMV", "to_timestamp_mv"})
public static Timestamp[] toTimestampMV(long[] millis) {
Timestamp[] results = new Timestamp[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -439,12 +432,12 @@ public class DateTimeFunctions {
/**
* Converts Timestamp to epoch millis
*/
- @ScalarFunction
+ @ScalarFunction(names = {"fromTimestamp", "from_timestamp"})
public static long fromTimestamp(Timestamp timestamp) {
return timestamp.getTime();
}
- @ScalarFunction
+ @ScalarFunction(names = {"fromTimestampMV", "from_timestamp_mv"})
public static long[] fromTimestampMV(Timestamp[] timestamp) {
long[] results = new long[timestamp.length];
for (int i = 0; i < timestamp.length; i++) {
@@ -456,12 +449,12 @@ public class DateTimeFunctions {
/**
* Converts epoch millis to DateTime string represented by pattern
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toDateTime", "to_date_time"})
public static String toDateTime(long millis, String pattern) {
return DateTimePatternHandler.parseEpochMillisToDateTimeString(millis,
pattern);
}
- @ScalarFunction
+ @ScalarFunction(names = {"toDateTimeMV", "to_date_time_mv"})
public static String[] toDateTimeMV(long[] millis, String pattern) {
String[] results = new String[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -473,12 +466,12 @@ public class DateTimeFunctions {
/**
* Converts epoch millis to DateTime string represented by pattern and the
time zone id.
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toDateTime", "to_date_time"})
public static String toDateTime(long millis, String pattern, String
timezoneId) {
return DateTimePatternHandler.parseEpochMillisToDateTimeString(millis,
pattern, timezoneId);
}
- @ScalarFunction
+ @ScalarFunction(names = {"toDateTimeMV", "to_date_time_mv"})
public static String[] toDateTimeMV(long[] millis, String pattern, String
timezoneId) {
String[] results = new String[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -490,12 +483,12 @@ public class DateTimeFunctions {
/**
* Converts DateTime string represented by pattern to epoch millis
*/
- @ScalarFunction
+ @ScalarFunction(names = {"fromDateTime", "from_date_time"})
public static long fromDateTime(String dateTimeString, String pattern) {
return
DateTimePatternHandler.parseDateTimeStringToEpochMillis(dateTimeString,
pattern);
}
- @ScalarFunction
+ @ScalarFunction(names = {"fromDateTimeMV", "from_date_time_mv"})
public static long[] fromDateTimeMV(String[] dateTimeString, String pattern)
{
long[] results = new long[dateTimeString.length];
for (int i = 0; i < dateTimeString.length; i++) {
@@ -507,17 +500,17 @@ public class DateTimeFunctions {
/**
* Converts DateTime string represented by pattern to epoch millis
*/
- @ScalarFunction
+ @ScalarFunction(names = {"fromDateTime", "from_date_time"})
public static long fromDateTime(String dateTimeString, String pattern,
String timeZoneId) {
return
DateTimePatternHandler.parseDateTimeStringToEpochMillis(dateTimeString,
pattern, timeZoneId);
}
- @ScalarFunction
+ @ScalarFunction(names = {"fromDateTime", "from_date_time"})
public static long fromDateTime(String dateTimeString, String pattern,
String timeZoneId, long defaultVal) {
return
DateTimePatternHandler.parseDateTimeStringToEpochMillis(dateTimeString,
pattern, timeZoneId, defaultVal);
}
- @ScalarFunction
+ @ScalarFunction(names = {"fromDateTimeMV", "from_date_time_mv"})
public static long[] fromDateTimeMV(String[] dateTimeString, String pattern,
String timeZoneId) {
long[] results = new long[dateTimeString.length];
for (int i = 0; i < dateTimeString.length; i++) {
@@ -535,7 +528,7 @@ public class DateTimeFunctions {
return (timeValue / roundToNearest) * roundToNearest;
}
- @ScalarFunction
+ @ScalarFunction(names = {"roundMV", "round_mv"})
public static long[] roundMV(long[] timeValue, long roundToNearest) {
long[] results = new long[timeValue.length];
for (int i = 0; i < timeValue.length; i++) {
@@ -571,7 +564,7 @@ public class DateTimeFunctions {
return System.currentTimeMillis() - period.toMillis();
}
- @ScalarFunction
+ @ScalarFunction(names = {"agoMV", "ago_mv"})
public static long[] agoMV(String[] periodString) {
long[] results = new long[periodString.length];
for (int i = 0; i < periodString.length; i++) {
@@ -588,12 +581,12 @@ public class DateTimeFunctions {
/**
* Returns the hour of the time zone offset.
*/
- @ScalarFunction
+ @ScalarFunction(names = {"timezoneHour", "timezone_hour"})
public static int timezoneHour(String timezoneId) {
return timezoneHour(timezoneId, 0);
}
- @ScalarFunction
+ @ScalarFunction(names = {"timezoneHourMV", "timezone_hour_mv"})
public static int[] timezoneHourMV(String[] timezoneId) {
int[] results = new int[timezoneId.length];
for (int i = 0; i < timezoneId.length; i++) {
@@ -601,16 +594,17 @@ public class DateTimeFunctions {
}
return results;
}
+
/**
* Returns the hour of the time zone offset, for the UTC timestamp at {@code
millis}. This will
* properly handle daylight savings time.
*/
- @ScalarFunction
+ @ScalarFunction(names = {"timezoneHour", "timezone_hour"})
public static int timezoneHour(String timezoneId, long millis) {
return (int)
TimeUnit.MILLISECONDS.toHours(DateTimeZone.forID(timezoneId).getOffset(millis));
}
- @ScalarFunction
+ @ScalarFunction(names = {"timezoneHourMV", "timezone_hour_mv"})
public static int[] timezoneHourMV(String timezoneId, long[] millis) {
int[] results = new int[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -622,12 +616,12 @@ public class DateTimeFunctions {
/**
* Returns the minute of the time zone offset.
*/
- @ScalarFunction
+ @ScalarFunction(names = {"timezoneMinute", "timezone_minute"})
public static int timezoneMinute(String timezoneId) {
return timezoneMinute(timezoneId, 0);
}
- @ScalarFunction
+ @ScalarFunction(names = {"timezoneMinuteMV", "timezone_minute_mv"})
public static int[] timezoneMinuteMV(String[] timezoneId) {
int[] results = new int[timezoneId.length];
for (int i = 0; i < timezoneId.length; i++) {
@@ -640,12 +634,12 @@ public class DateTimeFunctions {
* Returns the minute of the time zone offset, for the UTC timestamp at
{@code millis}. This will
* properly handle daylight savings time
*/
- @ScalarFunction
+ @ScalarFunction(names = {"timezoneMinute", "timezone_minute"})
public static int timezoneMinute(String timezoneId, long millis) {
return (int)
TimeUnit.MILLISECONDS.toMinutes(DateTimeZone.forID(timezoneId).getOffset(millis))
% 60;
}
- @ScalarFunction
+ @ScalarFunction(names = {"timezoneMinuteMV", "timezone_minute_mv"})
public static int[] timezoneMinuteMV(String timezoneId, long[] millis) {
int[] results = new int[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -662,7 +656,7 @@ public class DateTimeFunctions {
return new DateTime(millis, DateTimeZone.UTC).getYear();
}
- @ScalarFunction
+ @ScalarFunction(names = {"yearMV", "year_mv"})
public static int[] yearMV(long[] millis) {
int[] results = new int[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -679,7 +673,7 @@ public class DateTimeFunctions {
return new DateTime(millis, DateTimeZone.forID(timezoneId)).getYear();
}
- @ScalarFunction
+ @ScalarFunction(names = {"yearMV", "year_mv"})
public static int[] yearMV(long[] millis, String timezoneId) {
int[] results = new int[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -730,7 +724,7 @@ public class DateTimeFunctions {
return (monthOfYear(millis) - 1) / 3 + 1;
}
- @ScalarFunction
+ @ScalarFunction(names = {"quarterMV", "quarter_mv"})
public static int[] quarterMV(long[] millis) {
int[] results = new int[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -747,7 +741,7 @@ public class DateTimeFunctions {
return (monthOfYear(millis, timezoneId) - 1) / 3 + 1;
}
- @ScalarFunction
+ @ScalarFunction(names = {"quarterMV", "quarter_mv"})
public static int[] quarterMV(long[] millis, String timezoneId) {
int[] results = new int[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -936,7 +930,7 @@ public class DateTimeFunctions {
return new DateTime(millis, DateTimeZone.UTC).getHourOfDay();
}
- @ScalarFunction
+ @ScalarFunction(names = {"hourMV", "hour_mv"})
public static int[] hourMV(long[] millis) {
int[] results = new int[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -953,7 +947,7 @@ public class DateTimeFunctions {
return new DateTime(millis, DateTimeZone.forID(timezoneId)).getHourOfDay();
}
- @ScalarFunction
+ @ScalarFunction(names = {"hourMV", "hour_mv"})
public static int[] hourMV(long[] millis, String timezoneId) {
int[] results = new int[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -970,7 +964,7 @@ public class DateTimeFunctions {
return new DateTime(millis, DateTimeZone.UTC).getMinuteOfHour();
}
- @ScalarFunction
+ @ScalarFunction(names = {"minuteMV", "minute_mv"})
public static int[] minuteMV(long[] millis) {
int[] results = new int[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -987,7 +981,7 @@ public class DateTimeFunctions {
return new DateTime(millis,
DateTimeZone.forID(timezoneId)).getMinuteOfHour();
}
- @ScalarFunction
+ @ScalarFunction(names = {"minuteMV", "minute_mv"})
public static int[] minuteMV(long[] millis, String timezoneId) {
int[] results = new int[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -1004,7 +998,7 @@ public class DateTimeFunctions {
return new DateTime(millis, DateTimeZone.UTC).getSecondOfMinute();
}
- @ScalarFunction
+ @ScalarFunction(names = {"secondMV", "second_mv"})
public static int[] secondMV(long[] millis) {
int[] results = new int[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -1021,7 +1015,7 @@ public class DateTimeFunctions {
return new DateTime(millis,
DateTimeZone.forID(timezoneId)).getSecondOfMinute();
}
- @ScalarFunction
+ @ScalarFunction(names = {"secondMV", "second_mv"})
public static int[] secondMV(long[] millis, String timezoneId) {
int[] results = new int[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -1038,7 +1032,7 @@ public class DateTimeFunctions {
return new DateTime(millis, DateTimeZone.UTC).getMillisOfSecond();
}
- @ScalarFunction
+ @ScalarFunction(names = {"millisecondMV", "millisecond_mv"})
public static int[] millisecondMV(long[] millis) {
int[] results = new int[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -1055,7 +1049,7 @@ public class DateTimeFunctions {
return new DateTime(millis,
DateTimeZone.forID(timezoneId)).getMillisOfSecond();
}
- @ScalarFunction
+ @ScalarFunction(names = {"millisecondMV", "millisecond_mv"})
public static int[] millisecondMV(long[] millis, String timezoneId) {
int[] results = new int[millis.length];
for (int i = 0; i < millis.length; i++) {
@@ -1071,13 +1065,13 @@ public class DateTimeFunctions {
* @param timeValue value to truncate
* @return truncated timeValue in TimeUnit.MILLISECONDS
*/
- @ScalarFunction
+ @ScalarFunction(names = {"dateTrunc", "date_trunc"})
public static long dateTrunc(String unit, long timeValue) {
return dateTrunc(unit, timeValue, TimeUnit.MILLISECONDS.name(),
ISOChronology.getInstanceUTC(),
TimeUnit.MILLISECONDS.name());
}
- @ScalarFunction
+ @ScalarFunction(names = {"dateTruncMV", "date_trunc_mv"})
public static long[] dateTruncMV(String unit, long[] timeValue) {
long[] results = new long[timeValue.length];
for (int i = 0; i < timeValue.length; i++) {
@@ -1094,12 +1088,12 @@ public class DateTimeFunctions {
* @param inputTimeUnit TimeUnit of value, expressed in Java's joda TimeUnit
* @return truncated timeValue in same TimeUnit as the input
*/
- @ScalarFunction
+ @ScalarFunction(names = {"dateTrunc", "date_trunc"})
public static long dateTrunc(String unit, long timeValue, String
inputTimeUnit) {
return dateTrunc(unit, timeValue, inputTimeUnit,
ISOChronology.getInstanceUTC(), inputTimeUnit);
}
- @ScalarFunction
+ @ScalarFunction(names = {"dateTruncMV", "date_trunc_mv"})
public static long[] dateTruncMV(String unit, long[] timeValue, String
inputTimeUnit) {
long[] results = new long[timeValue.length];
for (int i = 0; i < timeValue.length; i++) {
@@ -1117,13 +1111,13 @@ public class DateTimeFunctions {
* @param timeZone timezone of the input
* @return truncated timeValue in same TimeUnit as the input
*/
- @ScalarFunction
+ @ScalarFunction(names = {"dateTrunc", "date_trunc"})
public static long dateTrunc(String unit, long timeValue, String
inputTimeUnit, String timeZone) {
return dateTrunc(unit, timeValue, inputTimeUnit,
DateTimeUtils.getChronology(TimeZoneKey.getTimeZoneKey(timeZone)),
inputTimeUnit);
}
- @ScalarFunction
+ @ScalarFunction(names = {"dateTruncMV", "date_trunc_mv"})
public static long[] dateTruncMV(String unit, long[] timeValue, String
inputTimeUnit, String timeZone) {
long[] results = new long[timeValue.length];
for (int i = 0; i < timeValue.length; i++) {
@@ -1143,14 +1137,14 @@ public class DateTimeFunctions {
* @return truncated timeValue
*
*/
- @ScalarFunction
+ @ScalarFunction(names = {"dateTrunc", "date_trunc"})
public static long dateTrunc(String unit, long timeValue, String
inputTimeUnit, String timeZone,
String outputTimeUnit) {
- return dateTrunc(unit, timeValue, inputTimeUnit,
- DateTimeUtils.getChronology(TimeZoneKey.getTimeZoneKey(timeZone)),
outputTimeUnit);
+ return dateTrunc(unit, timeValue, inputTimeUnit,
DateTimeUtils.getChronology(TimeZoneKey.getTimeZoneKey(timeZone)),
+ outputTimeUnit);
}
- @ScalarFunction
+ @ScalarFunction(names = {"dateTruncMV", "date_trunc_mv"})
public static long[] dateTruncMV(String unit, long[] timeValue, String
inputTimeUnit, String timeZone,
String outputTimeUnit) {
long[] results = new long[timeValue.length];
@@ -1175,14 +1169,14 @@ public class DateTimeFunctions {
* @param timestamp
* @return
*/
- @ScalarFunction(names = {"timestampAdd", "dateAdd"})
+ @ScalarFunction(names = {"timestampAdd", "timestamp_add", "dateAdd",
"date_add"})
public static long timestampAdd(String unit, long interval, long timestamp) {
ISOChronology chronology = ISOChronology.getInstanceUTC();
long millis = DateTimeUtils.getTimestampField(chronology,
unit).add(timestamp, interval);
return millis;
}
- @ScalarFunction(names = {"timestampAddMV", "dateAddMV"})
+ @ScalarFunction(names = {"timestampAddMV", "timestamp_add_mv", "dateAddMV",
"date_add_mv"})
public static long[] timestampAddMV(String unit, long interval, long[]
timestamp) {
long[] results = new long[timestamp.length];
for (int i = 0; i < timestamp.length; i++) {
@@ -1199,13 +1193,13 @@ public class DateTimeFunctions {
* @param timestamp2
* @return
*/
- @ScalarFunction(names = {"timestampDiff", "dateDiff"})
+ @ScalarFunction(names = {"timestampDiff", "timestamp_diff", "dateDiff",
"date_diff"})
public static long timestampDiff(String unit, long timestamp1, long
timestamp2) {
ISOChronology chronology = ISOChronology.getInstanceUTC();
return DateTimeUtils.getTimestampField(chronology,
unit).getDifferenceAsLong(timestamp2, timestamp1);
}
- @ScalarFunction(names = {"timestampDiffMV", "dateDiffMV"})
+ @ScalarFunction(names = {"timestampDiffMV", "timestamp_diff_mv",
"dateDiffMV", "date_diff_mv"})
public static long[] timestampDiffMV(String unit, long[] timestamp1, long
timestamp2) {
long[] results = new long[timestamp1.length];
for (int i = 0; i < timestamp1.length; i++) {
@@ -1214,7 +1208,8 @@ public class DateTimeFunctions {
return results;
}
- @ScalarFunction(names = {"timestampDiffMVReverse", "dateDiffMVReverse"})
+ @ScalarFunction(names = {"timestampDiffMVReverse",
"timestamp_diff_mv_reverse", "dateDiffMVReverse",
+ "date_diff_mv_reverse"})
public static long[] timestampDiffMVReverse(String unit, long timestamp1,
long[] timestamp2) {
long[] results = new long[timestamp2.length];
for (int i = 0; i < timestamp2.length; i++) {
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/JsonFunctions.java
b/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/JsonFunctions.java
index 5effbe3e54..659f9e717d 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/JsonFunctions.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/JsonFunctions.java
@@ -76,7 +76,7 @@ public class JsonFunctions {
/**
* Convert object to Json String
*/
- @ScalarFunction
+ @ScalarFunction(names = {"jsonFormat", "json_format"})
public static String jsonFormat(Object object)
throws JsonProcessingException {
return JsonUtils.objectToString(object);
@@ -85,7 +85,7 @@ public class JsonFunctions {
/**
* Extract object based on Json path
*/
- @ScalarFunction
+ @ScalarFunction(names = {"jsonPath", "json_path"})
public static Object jsonPath(Object object, String jsonPath) {
if (object instanceof String) {
return PARSE_CONTEXT.parse((String) object).read(jsonPath,
NO_PREDICATES);
@@ -96,7 +96,7 @@ public class JsonFunctions {
/**
* Extract object array based on Json path
*/
- @ScalarFunction
+ @ScalarFunction(names = {"jsonPathArray", "json_path_array"})
public static Object[] jsonPathArray(Object object, String jsonPath) {
if (object instanceof String) {
return convertObjectToArray(PARSE_CONTEXT.parse((String)
object).read(jsonPath, NO_PREDICATES));
@@ -104,7 +104,7 @@ public class JsonFunctions {
return convertObjectToArray(PARSE_CONTEXT.parse(object).read(jsonPath,
NO_PREDICATES));
}
- @ScalarFunction(nullableParameters = true)
+ @ScalarFunction(nullableParameters = true, names =
{"jsonPathArrayDefaultEmpty", "json_path_array_default_empty"})
public static Object[] jsonPathArrayDefaultEmpty(@Nullable Object object,
String jsonPath) {
try {
Object[] result = object == null ? null : jsonPathArray(object,
jsonPath);
@@ -129,7 +129,7 @@ public class JsonFunctions {
* Extract from Json with path to String
*/
@Nullable
- @ScalarFunction
+ @ScalarFunction(names = {"jsonPathString", "json_path_string"})
public static String jsonPathString(Object object, String jsonPath)
throws JsonProcessingException {
Object jsonValue = jsonPath(object, jsonPath);
@@ -142,7 +142,7 @@ public class JsonFunctions {
/**
* Extract from Json with path to String
*/
- @ScalarFunction(nullableParameters = true)
+ @ScalarFunction(nullableParameters = true, names = {"jsonPathString",
"json_path_string"})
public static String jsonPathString(@Nullable Object object, String
jsonPath, String defaultValue) {
try {
Object jsonValue = jsonPath(object, jsonPath);
@@ -158,7 +158,7 @@ public class JsonFunctions {
/**
* Extract from Json with path to Long
*/
- @ScalarFunction
+ @ScalarFunction(names = {"jsonPathLong", "json_path_long"})
public static long jsonPathLong(Object object, String jsonPath) {
return jsonPathLong(object, jsonPath, Long.MIN_VALUE);
}
@@ -166,7 +166,7 @@ public class JsonFunctions {
/**
* Extract from Json with path to Long
*/
- @ScalarFunction(nullableParameters = true)
+ @ScalarFunction(nullableParameters = true, names = {"jsonPathLong",
"json_path_long"})
public static long jsonPathLong(@Nullable Object object, String jsonPath,
long defaultValue) {
try {
Object jsonValue = jsonPath(object, jsonPath);
@@ -185,7 +185,7 @@ public class JsonFunctions {
/**
* Extract from Json with path to Double
*/
- @ScalarFunction
+ @ScalarFunction(names = {"jsonPathDouble", "json_path_double"})
public static double jsonPathDouble(Object object, String jsonPath) {
return jsonPathDouble(object, jsonPath, Double.NaN);
}
@@ -193,7 +193,7 @@ public class JsonFunctions {
/**
* Extract from Json with path to Double
*/
- @ScalarFunction(nullableParameters = true)
+ @ScalarFunction(nullableParameters = true, names = {"jsonPathDouble",
"json_path_double"})
public static double jsonPathDouble(@Nullable Object object, String
jsonPath, double defaultValue) {
try {
Object jsonValue = jsonPath(object, jsonPath);
diff --git
a/pinot-common/src/main/java/org/apache/pinot/sql/parsers/rewriter/CLPDecodeRewriter.java
b/pinot-common/src/main/java/org/apache/pinot/sql/parsers/rewriter/CLPDecodeRewriter.java
index c870f84bb0..aff7266153 100644
---
a/pinot-common/src/main/java/org/apache/pinot/sql/parsers/rewriter/CLPDecodeRewriter.java
+++
b/pinot-common/src/main/java/org/apache/pinot/sql/parsers/rewriter/CLPDecodeRewriter.java
@@ -60,7 +60,7 @@ public class CLPDecodeRewriter implements QueryRewriter {
public static final String ENCODED_VARS_COLUMN_SUFFIX = "_encodedVars";
private static final String _CLPDECODE_LOWERCASE_TRANSFORM_NAME =
- TransformFunctionType.CLPDECODE.getName().toLowerCase();
+ TransformFunctionType.CLP_DECODE.getName().toLowerCase();
@Override
public PinotQuery rewrite(PinotQuery pinotQuery) {
diff --git
a/pinot-common/src/test/java/org/apache/pinot/common/function/FunctionDefinitionRegistryTest.java
b/pinot-common/src/test/java/org/apache/pinot/common/function/FunctionDefinitionRegistryTest.java
index 5acf0b3072..6de8959303 100644
---
a/pinot-common/src/test/java/org/apache/pinot/common/function/FunctionDefinitionRegistryTest.java
+++
b/pinot-common/src/test/java/org/apache/pinot/common/function/FunctionDefinitionRegistryTest.java
@@ -47,10 +47,8 @@ public class FunctionDefinitionRegistryTest {
// Scalar function
"scalar",
// Functions without scalar function counterpart as of now
- // TODO: Revisit this list when we add scalar function for these
functions
- "arraylength", "arrayaverage", "arraymin", "arraymax", "arraysum",
- "valuein", "mapvalue", "inidset", "lookup", "groovy",
- "timeconvert", "datetimeconvert", "jsonextractscalar", "jsonextractkey",
"clpdecode",
+ "arraylength", "arrayaverage", "arraymin", "arraymax", "arraysum",
"clpdecode", "groovy",
+ "inidset", "jsonextractscalar", "jsonextractkey", "lookup", "mapvalue",
"timeconvert", "valuein",
// functions not needed for register b/c they are in std sql table or
they will not be composed directly.
"in", "not_in", "and", "or", "range", "extract", "is_true",
"is_not_true", "is_false", "is_not_false"
);
diff --git
a/pinot-core/src/main/java/org/apache/pinot/core/geospatial/transform/function/ScalarFunctions.java
b/pinot-core/src/main/java/org/apache/pinot/core/geospatial/transform/function/ScalarFunctions.java
index 7291ae6610..a97dbbb9a3 100644
---
a/pinot-core/src/main/java/org/apache/pinot/core/geospatial/transform/function/ScalarFunctions.java
+++
b/pinot-core/src/main/java/org/apache/pinot/core/geospatial/transform/function/ScalarFunctions.java
@@ -42,7 +42,7 @@ public class ScalarFunctions {
* @param y y
* @return the created point
*/
- @ScalarFunction
+ @ScalarFunction(names = {"stPoint", "ST_point"})
public static byte[] stPoint(double x, double y) {
return
GeometrySerializer.serialize(GeometryUtils.GEOMETRY_FACTORY.createPoint(new
Coordinate(x, y)));
}
@@ -55,7 +55,7 @@ public class ScalarFunctions {
* @param isGeography if it's geography
* @return the created point
*/
- @ScalarFunction
+ @ScalarFunction(names = {"stPoint", "ST_point"})
public static byte[] stPoint(double x, double y, boolean isGeography) {
Point point = GeometryUtils.GEOMETRY_FACTORY.createPoint(new Coordinate(x,
y));
if (isGeography) {
@@ -67,7 +67,7 @@ public class ScalarFunctions {
/**
* Reads a geometry object from the WKT format.
*/
- @ScalarFunction
+ @ScalarFunction(names = {"stGeomFromText", "ST_geom_from_text"})
public static byte[] stGeomFromText(String wkt)
throws ParseException {
return
GeometrySerializer.serialize(GeometryUtils.GEOMETRY_WKT_READER.read(wkt));
@@ -76,7 +76,7 @@ public class ScalarFunctions {
/**
* Reads a geography object from the WKT format.
*/
- @ScalarFunction
+ @ScalarFunction(names = {"stGeogFromText", "ST_geog_from_text"})
public static byte[] stGeogFromText(String wkt)
throws ParseException {
return
GeometrySerializer.serialize(GeometryUtils.GEOGRAPHY_WKT_READER.read(wkt));
@@ -85,7 +85,7 @@ public class ScalarFunctions {
/**
* Reads a geometry object from the WKB format.
*/
- @ScalarFunction
+ @ScalarFunction(names = {"stGeomFromWKB", "ST_geom_from_wkb"})
public static byte[] stGeomFromWKB(byte[] wkb)
throws ParseException {
return
GeometrySerializer.serialize(GeometryUtils.GEOMETRY_WKB_READER.read(wkb));
@@ -94,7 +94,7 @@ public class ScalarFunctions {
/**
* Reads a geography object from the WKB format.
*/
- @ScalarFunction
+ @ScalarFunction(names = {"stGeogFromWKB", "ST_geog_from_wkb"})
public static byte[] stGeogFromWKB(byte[] wkb)
throws ParseException {
return
GeometrySerializer.serialize(GeometryUtils.GEOGRAPHY_WKB_READER.read(wkb));
@@ -106,7 +106,7 @@ public class ScalarFunctions {
* @param bytes the serialized geometry object
* @return the geometry in WKT
*/
- @ScalarFunction
+ @ScalarFunction(names = {"stAsText", "ST_as_text"})
public static String stAsText(byte[] bytes) {
return
GeometryUtils.WKT_WRITER.write(GeometrySerializer.deserialize(bytes));
}
@@ -117,7 +117,7 @@ public class ScalarFunctions {
* @param bytes the serialized geometry object
* @return the geometry in WKB
*/
- @ScalarFunction
+ @ScalarFunction(names = {"stAsBinary", "ST_as_binary"})
public static byte[] stAsBinary(byte[] bytes) {
return
GeometryUtils.WKB_WRITER.write(GeometrySerializer.deserialize(bytes));
}
@@ -128,7 +128,7 @@ public class ScalarFunctions {
* @param bytes the serialized geometry object
* @return the geographical object
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toSphericalGeography", "to_spherical_geography"})
public static byte[] toSphericalGeography(byte[] bytes) {
Geometry geometry = GeometrySerializer.deserialize(bytes);
GeometryUtils.setGeography(geometry);
@@ -141,7 +141,7 @@ public class ScalarFunctions {
* @param bytes the serialized geographical object
* @return the geometry object
*/
- @ScalarFunction
+ @ScalarFunction(names = {"toGeometry", "to_geometry"})
public static byte[] toGeometry(byte[] bytes) {
Geometry geometry = GeometrySerializer.deserialize(bytes);
GeometryUtils.setGeometry(geometry);
@@ -155,7 +155,7 @@ public class ScalarFunctions {
* @param resolution H3 index resolution
* @return the H3 index address
*/
- @ScalarFunction
+ @ScalarFunction(names = {"geoToH3", "geo_to_h3"})
public static long geoToH3(double longitude, double latitude, int
resolution) {
return H3Utils.H3_CORE.geoToH3(latitude, longitude, resolution);
}
@@ -166,7 +166,7 @@ public class ScalarFunctions {
* @param resolution H3 index resolution
* @return the H3 index address
*/
- @ScalarFunction
+ @ScalarFunction(names = {"geoToH3", "geo_to_h3"})
public static long geoToH3(byte[] geoBytes, int resolution) {
Geometry geometry = GeometrySerializer.deserialize(geoBytes);
double latitude = geometry.getCoordinate().y;
@@ -174,7 +174,7 @@ public class ScalarFunctions {
return H3Utils.H3_CORE.geoToH3(latitude, longitude, resolution);
}
- @ScalarFunction
+ @ScalarFunction(names = {"stDistance", "ST_distance"})
public static double stDistance(byte[] firstPoint, byte[] secondPoint) {
Geometry firstGeometry = GeometrySerializer.deserialize(firstPoint);
Geometry secondGeometry = GeometrySerializer.deserialize(secondPoint);
diff --git
a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CLPDecodeTransformFunction.java
b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CLPDecodeTransformFunction.java
index fcebd0b02a..bf2eb79cd7 100644
---
a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CLPDecodeTransformFunction.java
+++
b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CLPDecodeTransformFunction.java
@@ -71,7 +71,7 @@ public class CLPDecodeTransformFunction extends
BaseTransformFunction {
@Override
public String getName() {
- return TransformFunctionType.CLPDECODE.getName();
+ return TransformFunctionType.CLP_DECODE.getName();
}
@Override
diff --git
a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/InIdSetTransformFunction.java
b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/InIdSetTransformFunction.java
index 69bbc9410e..7752c13742 100644
---
a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/InIdSetTransformFunction.java
+++
b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/InIdSetTransformFunction.java
@@ -46,7 +46,7 @@ public class InIdSetTransformFunction extends
BaseTransformFunction {
@Override
public String getName() {
- return TransformFunctionType.INIDSET.getName();
+ return TransformFunctionType.IN_ID_SET.getName();
}
@Override
diff --git
a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TransformFunctionFactory.java
b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TransformFunctionFactory.java
index 49030f871f..16f009e657 100644
---
a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TransformFunctionFactory.java
+++
b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TransformFunctionFactory.java
@@ -119,11 +119,11 @@ public class TransformFunctionFactory {
typeToImplementation.put(TransformFunctionType.TRUNCATE,
TruncateDecimalTransformFunction.class);
typeToImplementation.put(TransformFunctionType.CAST,
CastTransformFunction.class);
- typeToImplementation.put(TransformFunctionType.JSONEXTRACTSCALAR,
JsonExtractScalarTransformFunction.class);
- typeToImplementation.put(TransformFunctionType.JSONEXTRACTKEY,
JsonExtractKeyTransformFunction.class);
- typeToImplementation.put(TransformFunctionType.TIMECONVERT,
TimeConversionTransformFunction.class);
- typeToImplementation.put(TransformFunctionType.DATETIMECONVERT,
DateTimeConversionTransformFunction.class);
- typeToImplementation.put(TransformFunctionType.DATETRUNC,
DateTruncTransformFunction.class);
+ typeToImplementation.put(TransformFunctionType.JSON_EXTRACT_SCALAR,
JsonExtractScalarTransformFunction.class);
+ typeToImplementation.put(TransformFunctionType.JSON_EXTRACT_KEY,
JsonExtractKeyTransformFunction.class);
+ typeToImplementation.put(TransformFunctionType.TIME_CONVERT,
TimeConversionTransformFunction.class);
+ typeToImplementation.put(TransformFunctionType.DATE_TIME_CONVERT,
DateTimeConversionTransformFunction.class);
+ typeToImplementation.put(TransformFunctionType.DATE_TRUNC,
DateTruncTransformFunction.class);
typeToImplementation.put(TransformFunctionType.YEAR,
DateTimeTransformFunction.Year.class);
typeToImplementation.put(TransformFunctionType.YEAR_OF_WEEK,
DateTimeTransformFunction.YearOfWeek.class);
typeToImplementation.put(TransformFunctionType.QUARTER,
DateTimeTransformFunction.Quarter.class);
@@ -136,12 +136,12 @@ public class TransformFunctionFactory {
typeToImplementation.put(TransformFunctionType.MINUTE,
DateTimeTransformFunction.Minute.class);
typeToImplementation.put(TransformFunctionType.SECOND,
DateTimeTransformFunction.Second.class);
typeToImplementation.put(TransformFunctionType.MILLISECOND,
DateTimeTransformFunction.Millisecond.class);
- typeToImplementation.put(TransformFunctionType.ARRAYLENGTH,
ArrayLengthTransformFunction.class);
- typeToImplementation.put(TransformFunctionType.VALUEIN,
ValueInTransformFunction.class);
- typeToImplementation.put(TransformFunctionType.MAPVALUE,
MapValueTransformFunction.class);
- typeToImplementation.put(TransformFunctionType.INIDSET,
InIdSetTransformFunction.class);
+ typeToImplementation.put(TransformFunctionType.ARRAY_LENGTH,
ArrayLengthTransformFunction.class);
+ typeToImplementation.put(TransformFunctionType.VALUE_IN,
ValueInTransformFunction.class);
+ typeToImplementation.put(TransformFunctionType.MAP_VALUE,
MapValueTransformFunction.class);
+ typeToImplementation.put(TransformFunctionType.IN_ID_SET,
InIdSetTransformFunction.class);
typeToImplementation.put(TransformFunctionType.LOOKUP,
LookupTransformFunction.class);
- typeToImplementation.put(TransformFunctionType.CLPDECODE,
CLPDecodeTransformFunction.class);
+ typeToImplementation.put(TransformFunctionType.CLP_DECODE,
CLPDecodeTransformFunction.class);
typeToImplementation.put(TransformFunctionType.EXTRACT,
ExtractTransformFunction.class);
@@ -149,10 +149,10 @@ public class TransformFunctionFactory {
typeToImplementation.put(TransformFunctionType.REGEXP_EXTRACT,
RegexpExtractTransformFunction.class);
// Array functions
- typeToImplementation.put(TransformFunctionType.ARRAYAVERAGE,
ArrayAverageTransformFunction.class);
- typeToImplementation.put(TransformFunctionType.ARRAYMAX,
ArrayMaxTransformFunction.class);
- typeToImplementation.put(TransformFunctionType.ARRAYMIN,
ArrayMinTransformFunction.class);
- typeToImplementation.put(TransformFunctionType.ARRAYSUM,
ArraySumTransformFunction.class);
+ typeToImplementation.put(TransformFunctionType.ARRAY_AVERAGE,
ArrayAverageTransformFunction.class);
+ typeToImplementation.put(TransformFunctionType.ARRAY_MAX,
ArrayMaxTransformFunction.class);
+ typeToImplementation.put(TransformFunctionType.ARRAY_MIN,
ArrayMinTransformFunction.class);
+ typeToImplementation.put(TransformFunctionType.ARRAY_SUM,
ArraySumTransformFunction.class);
typeToImplementation.put(TransformFunctionType.ARRAY_VALUE_CONSTRUCTOR,
ArrayLiteralTransformFunction.class);
typeToImplementation.put(TransformFunctionType.GROOVY,
GroovyTransformFunction.class);
@@ -196,7 +196,7 @@ public class TransformFunctionFactory {
typeToImplementation.put(TransformFunctionType.ST_WITHIN,
StWithinFunction.class);
// geo indexing
- typeToImplementation.put(TransformFunctionType.GEOTOH3,
GeoToH3Function.class);
+ typeToImplementation.put(TransformFunctionType.GEO_TO_H3,
GeoToH3Function.class);
// tuple selection
typeToImplementation.put(TransformFunctionType.LEAST,
LeastTransformFunction.class);
diff --git
a/pinot-core/src/main/java/org/apache/pinot/core/query/executor/ServerQueryExecutorV1Impl.java
b/pinot-core/src/main/java/org/apache/pinot/core/query/executor/ServerQueryExecutorV1Impl.java
index 286078f1f6..4c3248e527 100644
---
a/pinot-core/src/main/java/org/apache/pinot/core/query/executor/ServerQueryExecutorV1Impl.java
+++
b/pinot-core/src/main/java/org/apache/pinot/core/query/executor/ServerQueryExecutorV1Impl.java
@@ -578,7 +578,7 @@ public class ServerQueryExecutorV1Impl implements
QueryExecutor {
Preconditions.checkState(result instanceof IdSet, "Got unexpected result
type: %s, expecting IdSet",
result != null ? result.getClass().getSimpleName() : null);
// Rewrite the expression
- function.setFunctionName(TransformFunctionType.INIDSET.name());
+ function.setFunctionName(TransformFunctionType.IN_ID_SET.name());
arguments.set(1,
ExpressionContext.forLiteralContext(FieldSpec.DataType.STRING,
((IdSet) result).toBase64String()));
} else {
diff --git
a/pinot-core/src/test/java/org/apache/pinot/core/operator/transform/function/CLPDecodeTransformFunctionTest.java
b/pinot-core/src/test/java/org/apache/pinot/core/operator/transform/function/CLPDecodeTransformFunctionTest.java
index f2537c0a44..e0d419dca0 100644
---
a/pinot-core/src/test/java/org/apache/pinot/core/operator/transform/function/CLPDecodeTransformFunctionTest.java
+++
b/pinot-core/src/test/java/org/apache/pinot/core/operator/transform/function/CLPDecodeTransformFunctionTest.java
@@ -161,7 +161,7 @@ public class CLPDecodeTransformFunctionTest {
@Test
public void testTransform() {
ExpressionContext expression = RequestContextUtils.getExpression(
- String.format("%s(%s,%s,%s)",
TransformFunctionType.CLPDECODE.getName(), LOGTYPE_COLUMN, DICT_VARS_COLUMN,
+ String.format("%s(%s,%s,%s)",
TransformFunctionType.CLP_DECODE.getName(), LOGTYPE_COLUMN, DICT_VARS_COLUMN,
ENCODED_VARS_COLUMN));
TransformFunction transformFunction =
TransformFunctionFactory.get(expression, _dataSourceMap);
Assert.assertTrue(transformFunction instanceof CLPDecodeTransformFunction);
@@ -178,7 +178,7 @@ public class CLPDecodeTransformFunctionTest {
public void testTransformWithDefaultValue() {
String defaultValue = "default";
ExpressionContext expression = RequestContextUtils.getExpression(
- String.format("%s(%s,%s,%s,'%s')",
TransformFunctionType.CLPDECODE.getName(), LOGTYPE_COLUMN, DICT_VARS_COLUMN,
+ String.format("%s(%s,%s,%s,'%s')",
TransformFunctionType.CLP_DECODE.getName(), LOGTYPE_COLUMN, DICT_VARS_COLUMN,
ENCODED_VARS_COLUMN, defaultValue));
TransformFunction transformFunction =
TransformFunctionFactory.get(expression, _dataSourceMap);
Assert.assertTrue(transformFunction instanceof CLPDecodeTransformFunction);
@@ -198,7 +198,7 @@ public class CLPDecodeTransformFunctionTest {
// 1st parameter literal
assertThrows(BadQueryRequestException.class, () -> {
ExpressionContext expression = RequestContextUtils.getExpression(
- String.format("%s('%s',%s,%s,'%s')",
TransformFunctionType.CLPDECODE.getName(), LOGTYPE_COLUMN,
+ String.format("%s('%s',%s,%s,'%s')",
TransformFunctionType.CLP_DECODE.getName(), LOGTYPE_COLUMN,
DICT_VARS_COLUMN, ENCODED_VARS_COLUMN, defaultValue));
TransformFunctionFactory.get(expression, _dataSourceMap);
});
@@ -206,7 +206,7 @@ public class CLPDecodeTransformFunctionTest {
// 2nd parameter literal
assertThrows(BadQueryRequestException.class, () -> {
ExpressionContext expression = RequestContextUtils.getExpression(
- String.format("%s(%s,'%s',%s,'%s')",
TransformFunctionType.CLPDECODE.getName(), LOGTYPE_COLUMN,
+ String.format("%s(%s,'%s',%s,'%s')",
TransformFunctionType.CLP_DECODE.getName(), LOGTYPE_COLUMN,
DICT_VARS_COLUMN, ENCODED_VARS_COLUMN, defaultValue));
TransformFunctionFactory.get(expression, _dataSourceMap);
});
@@ -214,7 +214,7 @@ public class CLPDecodeTransformFunctionTest {
// 3rd parameter literal
assertThrows(BadQueryRequestException.class, () -> {
ExpressionContext expression = RequestContextUtils.getExpression(
- String.format("%s(%s,%s,'%s','%s')",
TransformFunctionType.CLPDECODE.getName(), LOGTYPE_COLUMN,
+ String.format("%s(%s,%s,'%s','%s')",
TransformFunctionType.CLP_DECODE.getName(), LOGTYPE_COLUMN,
DICT_VARS_COLUMN, ENCODED_VARS_COLUMN, defaultValue));
TransformFunctionFactory.get(expression, _dataSourceMap);
});
@@ -222,7 +222,7 @@ public class CLPDecodeTransformFunctionTest {
// 4th parameter identifier
assertThrows(BadQueryRequestException.class, () -> {
ExpressionContext expression = RequestContextUtils.getExpression(
- String.format("%s(%s,%s,%s,%s)",
TransformFunctionType.CLPDECODE.getName(), LOGTYPE_COLUMN,
+ String.format("%s(%s,%s,%s,%s)",
TransformFunctionType.CLP_DECODE.getName(), LOGTYPE_COLUMN,
DICT_VARS_COLUMN, ENCODED_VARS_COLUMN, defaultValue));
TransformFunctionFactory.get(expression, _dataSourceMap);
});
@@ -230,7 +230,7 @@ public class CLPDecodeTransformFunctionTest {
// Missing arg
assertThrows(BadQueryRequestException.class, () -> {
ExpressionContext expression = RequestContextUtils.getExpression(
- String.format("%s(%s,%s)",
TransformFunctionType.CLPDECODE.getName(), LOGTYPE_COLUMN, DICT_VARS_COLUMN));
+ String.format("%s(%s,%s)",
TransformFunctionType.CLP_DECODE.getName(), LOGTYPE_COLUMN, DICT_VARS_COLUMN));
TransformFunctionFactory.get(expression, _dataSourceMap);
});
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]