From c285ff597c96aafaaa48423c030c1b47069f1d74 Mon Sep 17 00:00:00 2001 From: zhangliyuan03 Date: Mon, 13 Jun 2022 14:19:58 +0800 Subject: [PATCH 1/2] implement lower function --- .../expression/ColumnarUnaryOperator.scala | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/native-sql-engine/core/src/main/scala/com/intel/oap/expression/ColumnarUnaryOperator.scala b/native-sql-engine/core/src/main/scala/com/intel/oap/expression/ColumnarUnaryOperator.scala index 1e3368b79..fd1cd2a45 100644 --- a/native-sql-engine/core/src/main/scala/com/intel/oap/expression/ColumnarUnaryOperator.scala +++ b/native-sql-engine/core/src/main/scala/com/intel/oap/expression/ColumnarUnaryOperator.scala @@ -379,6 +379,32 @@ class ColumnarUpper(child: Expression, original: Expression) } } +class ColumnarLower(child: Expression, original: Expression) + extends Upper(child: Expression) + with ColumnarExpression + with Logging { + + buildCheck() + + def buildCheck(): Unit = { + val supportedTypes = List(StringType) + if (supportedTypes.indexOf(child.dataType) == -1) { + throw new UnsupportedOperationException( + s"${child.dataType} is not supported in ColumnarLower") + } + } + + override def doColumnarCodeGen(args: java.lang.Object): (TreeNode, ArrowType) = { + val (child_node, childType): (TreeNode, ArrowType) = + child.asInstanceOf[ColumnarExpression].doColumnarCodeGen(args) + + val resultType = new ArrowType.Utf8() + val funcNode = + TreeBuilder.makeFunction("lower", Lists.newArrayList(child_node), resultType) + (funcNode, resultType) + } +} + class ColumnarBitwiseNot(child: Expression, original: Expression) extends BitwiseNot(child: Expression) with ColumnarExpression @@ -958,6 +984,8 @@ object ColumnarUnaryOperator { new ColumnarCeil(child, c) case u: Upper => new ColumnarUpper(child, u) + case l: Lower => + new ColumnarLower(child, l) case c: Cast => new ColumnarCast(child, c.dataType, c.timeZoneId, c) case u: UnscaledValue => From 9c80dd162b264cb478e08673ed25a1fa73c4cc9c Mon Sep 17 00:00:00 2001 From: zhangliyuan03 Date: Mon, 13 Jun 2022 14:19:58 +0800 Subject: [PATCH 2/2] implement lower function --- .../expression/ColumnarUnaryOperator.scala | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/native-sql-engine/core/src/main/scala/com/intel/oap/expression/ColumnarUnaryOperator.scala b/native-sql-engine/core/src/main/scala/com/intel/oap/expression/ColumnarUnaryOperator.scala index 1e3368b79..fd1cd2a45 100644 --- a/native-sql-engine/core/src/main/scala/com/intel/oap/expression/ColumnarUnaryOperator.scala +++ b/native-sql-engine/core/src/main/scala/com/intel/oap/expression/ColumnarUnaryOperator.scala @@ -379,6 +379,32 @@ class ColumnarUpper(child: Expression, original: Expression) } } +class ColumnarLower(child: Expression, original: Expression) + extends Upper(child: Expression) + with ColumnarExpression + with Logging { + + buildCheck() + + def buildCheck(): Unit = { + val supportedTypes = List(StringType) + if (supportedTypes.indexOf(child.dataType) == -1) { + throw new UnsupportedOperationException( + s"${child.dataType} is not supported in ColumnarLower") + } + } + + override def doColumnarCodeGen(args: java.lang.Object): (TreeNode, ArrowType) = { + val (child_node, childType): (TreeNode, ArrowType) = + child.asInstanceOf[ColumnarExpression].doColumnarCodeGen(args) + + val resultType = new ArrowType.Utf8() + val funcNode = + TreeBuilder.makeFunction("lower", Lists.newArrayList(child_node), resultType) + (funcNode, resultType) + } +} + class ColumnarBitwiseNot(child: Expression, original: Expression) extends BitwiseNot(child: Expression) with ColumnarExpression @@ -958,6 +984,8 @@ object ColumnarUnaryOperator { new ColumnarCeil(child, c) case u: Upper => new ColumnarUpper(child, u) + case l: Lower => + new ColumnarLower(child, l) case c: Cast => new ColumnarCast(child, c.dataType, c.timeZoneId, c) case u: UnscaledValue =>