From fc36e38d4c8d1049ab242d3807a531b155d15819 Mon Sep 17 00:00:00 2001 From: dengzhaochu Date: Sat, 14 Dec 2024 11:20:10 +0800 Subject: [PATCH 1/2] fix -0.0 --- .../expression/OmniExpressionAdaptor.scala | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/omnioperator/omniop-spark-extension/java/src/main/scala/com/huawei/boostkit/spark/expression/OmniExpressionAdaptor.scala b/omnioperator/omniop-spark-extension/java/src/main/scala/com/huawei/boostkit/spark/expression/OmniExpressionAdaptor.scala index 6082dc141..302ad91eb 100644 --- a/omnioperator/omniop-spark-extension/java/src/main/scala/com/huawei/boostkit/spark/expression/OmniExpressionAdaptor.scala +++ b/omnioperator/omniop-spark-extension/java/src/main/scala/com/huawei/boostkit/spark/expression/OmniExpressionAdaptor.scala @@ -774,6 +774,11 @@ object OmniExpressionAdaptor extends Logging { .put("precision", dt.precision) .put("scale", dt.scale) } + case DoubleType => + new JSONObject().put("exprType", "LITERAL") + .put("dataType", omniType.toInt) + .put("isNull", false) + .put("value", doubleToString(value)) case _ => new JSONObject().put("exprType", "LITERAL") .put("dataType", omniType.toInt) @@ -782,6 +787,18 @@ object OmniExpressionAdaptor extends Logging { } } + private def doubleToString(value: Any): String = { + val doubleValue = value.asInstanceOf[Number].doubleValue() + if (java.lang.Double.isFinite(doubleValue) || java.lang.Double.isNaN(doubleValue)) { + throw new UnsupportedOperationException("Forbidden numeric value: " + doubleValue) + } + val longValue = value.asInstanceOf[Number].longValue() + if (doubleValue == longValue.toDouble) { + return java.lang.Long.toString(longValue) + } + value.toString + } + def checkFirstParamType(agg: AggregateExpression): Unit = { agg.aggregateFunction.children.map( exp => { -- Gitee From c481f43d3b960a55e677b35e3be73cbfcf5544a4 Mon Sep 17 00:00:00 2001 From: dengzhaochu Date: Mon, 16 Dec 2024 00:49:42 +0800 Subject: [PATCH 2/2] Reduce the scope of sharing build op. Restricted to same plan --- .../sql/execution/joins/ColumnarBroadcastHashJoinExec.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/omnioperator/omniop-spark-extension/java/src/main/scala/org/apache/spark/sql/execution/joins/ColumnarBroadcastHashJoinExec.scala b/omnioperator/omniop-spark-extension/java/src/main/scala/org/apache/spark/sql/execution/joins/ColumnarBroadcastHashJoinExec.scala index 1f958b998..cca636913 100644 --- a/omnioperator/omniop-spark-extension/java/src/main/scala/org/apache/spark/sql/execution/joins/ColumnarBroadcastHashJoinExec.scala +++ b/omnioperator/omniop-spark-extension/java/src/main/scala/org/apache/spark/sql/execution/joins/ColumnarBroadcastHashJoinExec.scala @@ -338,7 +338,7 @@ case class ColumnarBroadcastHashJoinExec( val canShareBuildOp = (lookupJoinType != OMNI_JOIN_TYPE_RIGHT && lookupJoinType != OMNI_JOIN_TYPE_FULL) val buildPlanId = buildPlan match { case exec: BroadcastQueryStageExec => - exec.broadcast.id + exec.plan.id case _ => buildPlan.id } -- Gitee