From d8ce978b09e1f11b6525870aeded86572c2ebf00 Mon Sep 17 00:00:00 2001 From: Jacky Lee Date: Mon, 9 May 2022 21:20:49 +0800 Subject: [PATCH] [followup] support substring_index (#898) This patch adds the missing columnar expression replacement for substring_index --- .../ColumnarExpressionConverter.scala | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/native-sql-engine/core/src/main/scala/com/intel/oap/expression/ColumnarExpressionConverter.scala b/native-sql-engine/core/src/main/scala/com/intel/oap/expression/ColumnarExpressionConverter.scala index 5b7b294ca..e4b49eb51 100644 --- a/native-sql-engine/core/src/main/scala/com/intel/oap/expression/ColumnarExpressionConverter.scala +++ b/native-sql-engine/core/src/main/scala/com/intel/oap/expression/ColumnarExpressionConverter.scala @@ -161,6 +161,23 @@ object ColumnarExpressionConverter extends Logging { attributeSeq, convertBoundRefToAttrRef = convertBoundRefToAttrRef), expr) + case ssi: SubstringIndex => + check_if_no_calculation = false + logInfo(s"${expr.getClass} ${expr} is supported, no_cal is $check_if_no_calculation.") + ColumnarTernaryOperator.create( + replaceWithColumnarExpression( + ssi.strExpr, + attributeSeq, + convertBoundRefToAttrRef = convertBoundRefToAttrRef), + replaceWithColumnarExpression( + ssi.delimExpr, + attributeSeq, + convertBoundRefToAttrRef = convertBoundRefToAttrRef), + replaceWithColumnarExpression( + ssi.countExpr, + attributeSeq, + convertBoundRefToAttrRef = convertBoundRefToAttrRef), + expr) case sr: StringRegexExpression => check_if_no_calculation = false logInfo(s"${expr.getClass} ${expr} is supported, no_cal is $check_if_no_calculation.") @@ -437,7 +454,7 @@ object ColumnarExpressionConverter extends Logging { case regexp: RegExpReplace => containsSubquery(regexp.subject) || containsSubquery( regexp.regexp) || containsSubquery(regexp.rep) || containsSubquery(regexp.pos) - case substrIndex: ColumnarSubstringIndex => + case substrIndex: SubstringIndex => substrIndex.children.map(containsSubquery).exists(_ == true) case sr: StringReplace => containsSubquery(sr.srcExpr) ||