Skip to content
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Update code
  • Loading branch information
beliefer committed Jul 23, 2022
commit a8899b93b07c03b5d0c24ced54623d3ee471593f
Original file line number Diff line number Diff line change
Expand Up @@ -90,70 +90,44 @@ class V2ExpressionBuilder(e: Expression, isPredicate: Boolean = false) {
}
case Cast(child, dataType, _, true) =>
generateExpression(child).map(v => new V2Cast(v, dataType))
case Abs(child, true) => generateExpression(child)
.map(v => new GeneralScalarExpression("ABS", Array[V2Expression](v)))
case Abs(child, true) => generateExpressionWithName("ABS", Seq(child))
case Coalesce(children) => generateExpressionWithName("COALESCE", children)
case Greatest(children) => generateExpressionWithName("GREATEST", children)
case Least(children) => generateExpressionWithName("LEAST", children)
case Rand(child, hideSeed) =>
if (hideSeed) {
Some(new GeneralScalarExpression("RAND", Array.empty[V2Expression]))
} else {
generateExpression(child)
.map(v => new GeneralScalarExpression("RAND", Array[V2Expression](v)))
generateExpressionWithName("RAND", Seq(child))
}
case log: Logarithm => generateExpressionWithName("LOG", log.children)
case Log10(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("LOG10", Array[V2Expression](v)))
case Log2(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("LOG2", Array[V2Expression](v)))
case Log(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("LN", Array[V2Expression](v)))
case Exp(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("EXP", Array[V2Expression](v)))
case Log10(child) => generateExpressionWithName("LOG10", Seq(child))
case Log2(child) => generateExpressionWithName("LOG2", Seq(child))
case Log(child) => generateExpressionWithName("LN", Seq(child))
case Exp(child) => generateExpressionWithName("EXP", Seq(child))
case pow: Pow => generateExpressionWithName("POWER", pow.children)
case Sqrt(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("SQRT", Array[V2Expression](v)))
case Floor(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("FLOOR", Array[V2Expression](v)))
case Ceil(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("CEIL", Array[V2Expression](v)))
case Sqrt(child) => generateExpressionWithName("SQRT", Seq(child))
case Floor(child) => generateExpressionWithName("FLOOR", Seq(child))
case Ceil(child) => generateExpressionWithName("CEIL", Seq(child))
case round: Round => generateExpressionWithName("ROUND", round.children)
case Sin(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("SIN", Array[V2Expression](v)))
case Sinh(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("SINH", Array[V2Expression](v)))
case Cos(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("COS", Array[V2Expression](v)))
case Cosh(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("COSH", Array[V2Expression](v)))
case Tan(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("TAN", Array[V2Expression](v)))
case Tanh(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("TANH", Array[V2Expression](v)))
case Cot(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("COT", Array[V2Expression](v)))
case Asin(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("ASIN", Array[V2Expression](v)))
case Asinh(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("ASINH", Array[V2Expression](v)))
case Acos(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("ACOS", Array[V2Expression](v)))
case Acosh(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("ACOSH", Array[V2Expression](v)))
case Atan(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("ATAN", Array[V2Expression](v)))
case Atanh(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("ATANH", Array[V2Expression](v)))
case Sin(child) => generateExpressionWithName("SIN", Seq(child))
case Sinh(child) => generateExpressionWithName("SINH", Seq(child))
case Cos(child) => generateExpressionWithName("COS", Seq(child))
case Cosh(child) => generateExpressionWithName("COSH", Seq(child))
case Tan(child) => generateExpressionWithName("TAN", Seq(child))
case Tanh(child) => generateExpressionWithName("TANH", Seq(child))
case Cot(child) => generateExpressionWithName("COT", Seq(child))
case Asin(child) => generateExpressionWithName("ASIN", Seq(child))
case Asinh(child) => generateExpressionWithName("ASINH", Seq(child))
case Acos(child) => generateExpressionWithName("ACOS", Seq(child))
case Acosh(child) => generateExpressionWithName("ACOSH", Seq(child))
case Atan(child) => generateExpressionWithName("ATAN", Seq(child))
case Atanh(child) => generateExpressionWithName("ATANH", Seq(child))
case atan2: Atan2 => generateExpressionWithName("ATAN2", atan2.children)
case Cbrt(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("CBRT", Array[V2Expression](v)))
case ToDegrees(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("DEGREES", Array[V2Expression](v)))
case ToRadians(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("RADIANS", Array[V2Expression](v)))
case Signum(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("SIGN", Array[V2Expression](v)))
case Cbrt(child) => generateExpressionWithName("CBRT", Seq(child))
case ToDegrees(child) => generateExpressionWithName("DEGREES", Seq(child))
case ToRadians(child) => generateExpressionWithName("RADIANS", Seq(child))
case Signum(child) => generateExpressionWithName("SIGN", Seq(child))
case wb: WidthBucket => generateExpressionWithName("WIDTH_BUCKET", wb.children)
case and: And =>
// AND expects predicate
Expand Down Expand Up @@ -205,10 +179,8 @@ class V2ExpressionBuilder(e: Expression, isPredicate: Boolean = false) {
assert(v.isInstanceOf[V2Predicate])
new V2Not(v.asInstanceOf[V2Predicate])
}
case UnaryMinus(child, true) => generateExpression(child)
.map(v => new GeneralScalarExpression("-", Array[V2Expression](v)))
case BitwiseNot(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("~", Array[V2Expression](v)))
case UnaryMinus(child, true) => generateExpressionWithName("-", Seq(child))
case BitwiseNot(child) => generateExpressionWithName("~", Seq(child))
case CaseWhen(branches, elseValue) =>
val conditions = branches.map(_._1).flatMap(generateExpression(_, true))
val values = branches.map(_._2).flatMap(generateExpression(_, true))
Expand Down Expand Up @@ -237,10 +209,8 @@ class V2ExpressionBuilder(e: Expression, isPredicate: Boolean = false) {
substring.children
}
generateExpressionWithName("SUBSTRING", children)
case Upper(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("UPPER", Array[V2Expression](v)))
case Lower(child) => generateExpression(child)
.map(v => new GeneralScalarExpression("LOWER", Array[V2Expression](v)))
case Upper(child) => generateExpressionWithName("UPPER", Seq(child))
case Lower(child) => generateExpressionWithName("LOWER", Seq(child))
case translate: StringTranslate => generateExpressionWithName("TRANSLATE", translate.children)
case trim: StringTrim => generateExpressionWithName("TRIM", trim.children)
case trim: StringTrimLeft => generateExpressionWithName("LTRIM", trim.children)
Expand Down