From a9354b60b705076e11f4bd6cd1a4b67239304e50 Mon Sep 17 00:00:00 2001 From: philo Date: Thu, 6 Jan 2022 19:15:41 +0800 Subject: [PATCH 1/4] Initial commit --- .../expression/ColumnarUnaryOperator.scala | 30 +++++++++++++++++++ 1 file changed, 30 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 1dd97858a..312086508 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 @@ -293,6 +293,34 @@ class ColumnarAbs(child: Expression, original: Expression) } } +class ColumnarFloor(child: Expression, original: Expression) + extends Floor(child: Expression) + with ColumnarExpression + with Logging { + + buildCheck() + + def buildCheck(): Unit = { + // Currently, decimal type is not supported. + val supportedTypes = List(DoubleType, LongType) + if (supportedTypes.indexOf(child.dataType) == -1 && + !child.dataType.isInstanceOf[DecimalType]) { + throw new UnsupportedOperationException( + s"${child.dataType} is not supported in ColumnarFloor") + } + } + + override def doColumnarCodeGen(args: java.lang.Object): (TreeNode, ArrowType) = { + val (child_node, _): (TreeNode, ArrowType) = + child.asInstanceOf[ColumnarExpression].doColumnarCodeGen(args) + + val resultType = CodeGeneration.getResultType(dataType) + val funcNode = + TreeBuilder.makeFunction("floor", Lists.newArrayList(child_node), resultType) + (funcNode, resultType) + } +} + class ColumnarUpper(child: Expression, original: Expression) extends Upper(child: Expression) with ColumnarExpression @@ -822,6 +850,8 @@ object ColumnarUnaryOperator { new ColumnarNot(child, n) case a: Abs => new ColumnarAbs(child, a) + case f: Floor => + new ColumnarFloor(child, f) case u: Upper => new ColumnarUpper(child, u) case c: Cast => From 76da658273bffd3794e785128173aa60468cc58d Mon Sep 17 00:00:00 2001 From: philo Date: Thu, 6 Jan 2022 19:59:33 +0800 Subject: [PATCH 2/4] Add ceil expression support --- .../expression/ColumnarUnaryOperator.scala | 30 +++++++++++++++++++ 1 file changed, 30 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 312086508..ef417d63e 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 @@ -321,6 +321,34 @@ class ColumnarFloor(child: Expression, original: Expression) } } +class ColumnarCeil(child: Expression, original: Expression) + extends Ceil(child: Expression) + with ColumnarExpression + with Logging { + + buildCheck() + + def buildCheck(): Unit = { + // Currently, decimal type is not supported. + val supportedTypes = List(DoubleType, LongType) + if (supportedTypes.indexOf(child.dataType) == -1 && + !child.dataType.isInstanceOf[DecimalType]) { + throw new UnsupportedOperationException( + s"${child.dataType} is not supported in ColumnarCeil") + } + } + + override def doColumnarCodeGen(args: java.lang.Object): (TreeNode, ArrowType) = { + val (child_node, _): (TreeNode, ArrowType) = + child.asInstanceOf[ColumnarExpression].doColumnarCodeGen(args) + + val resultType = CodeGeneration.getResultType(dataType) + val funcNode = + TreeBuilder.makeFunction("ceil", Lists.newArrayList(child_node), resultType) + (funcNode, resultType) + } +} + class ColumnarUpper(child: Expression, original: Expression) extends Upper(child: Expression) with ColumnarExpression @@ -852,6 +880,8 @@ object ColumnarUnaryOperator { new ColumnarAbs(child, a) case f: Floor => new ColumnarFloor(child, f) + case c: Ceil => + new ColumnarCeil(child, c) case u: Upper => new ColumnarUpper(child, u) case c: Cast => From 5fb2f4bf0b8b4ef93bef6ddcdbee32e0257dabc0 Mon Sep 17 00:00:00 2001 From: philo Date: Thu, 6 Jan 2022 20:15:29 +0800 Subject: [PATCH 3/4] Change arrow branch for unit test [will revert at last] --- arrow-data-source/script/build_arrow.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arrow-data-source/script/build_arrow.sh b/arrow-data-source/script/build_arrow.sh index d8ec40128..58a5522ce 100755 --- a/arrow-data-source/script/build_arrow.sh +++ b/arrow-data-source/script/build_arrow.sh @@ -62,7 +62,7 @@ echo "ARROW_SOURCE_DIR=${ARROW_SOURCE_DIR}" echo "ARROW_INSTALL_DIR=${ARROW_INSTALL_DIR}" mkdir -p $ARROW_SOURCE_DIR mkdir -p $ARROW_INSTALL_DIR -git clone https://github.com/oap-project/arrow.git --branch arrow-4.0.0-oap $ARROW_SOURCE_DIR +git clone https://github.com/philo-he/arrow.git --branch floor $ARROW_SOURCE_DIR pushd $ARROW_SOURCE_DIR cmake ./cpp \ From 2408e8da9fc5c0a670f13c9b166f33f67471ccdb Mon Sep 17 00:00:00 2001 From: philo Date: Fri, 7 Jan 2022 10:13:36 +0800 Subject: [PATCH 4/4] Revert "Change arrow branch for unit test [will revert at last]" This reverts commit 5fb2f4bf0b8b4ef93bef6ddcdbee32e0257dabc0. --- arrow-data-source/script/build_arrow.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arrow-data-source/script/build_arrow.sh b/arrow-data-source/script/build_arrow.sh index 58a5522ce..d8ec40128 100755 --- a/arrow-data-source/script/build_arrow.sh +++ b/arrow-data-source/script/build_arrow.sh @@ -62,7 +62,7 @@ echo "ARROW_SOURCE_DIR=${ARROW_SOURCE_DIR}" echo "ARROW_INSTALL_DIR=${ARROW_INSTALL_DIR}" mkdir -p $ARROW_SOURCE_DIR mkdir -p $ARROW_INSTALL_DIR -git clone https://github.com/philo-he/arrow.git --branch floor $ARROW_SOURCE_DIR +git clone https://github.com/oap-project/arrow.git --branch arrow-4.0.0-oap $ARROW_SOURCE_DIR pushd $ARROW_SOURCE_DIR cmake ./cpp \