From c2881956f55f7e9024031e0267e52cdac65d8113 Mon Sep 17 00:00:00 2001 From: PHILO-HE Date: Fri, 29 Jul 2022 17:15:05 +0800 Subject: [PATCH] [NSE-1023] [NSE-1046] Cover more supported expressions in getting AttributeReference (#1041) * Initial commit * Consider leaf expression * Revert some changes and support to get attr for conv/lpad * Remove the handling for MakeTimestamp --- .../com/intel/oap/expression/ConverterUtils.scala | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/native-sql-engine/core/src/main/scala/com/intel/oap/expression/ConverterUtils.scala b/native-sql-engine/core/src/main/scala/com/intel/oap/expression/ConverterUtils.scala index 273889bb4..bb60fc9d4 100644 --- a/native-sql-engine/core/src/main/scala/com/intel/oap/expression/ConverterUtils.scala +++ b/native-sql-engine/core/src/main/scala/com/intel/oap/expression/ConverterUtils.scala @@ -357,12 +357,23 @@ object ConverterUtils extends Logging { getAttrFromExpr(u.child) case ss: Substring => getAttrFromExpr(ss.children(0)) + case strTrim: StringTrim => + getAttrFromExpr(strTrim.children(0)) case and: And => getAttrFromExpr(and.children(0)) case caseWhen: CaseWhen => getAttrFromExpr(caseWhen.children(0)) case greaterThanOrEqual: GreaterThanOrEqual => getAttrFromExpr(greaterThanOrEqual.children(0)) + case conv: Conv => + getAttrFromExpr(conv.children(0)) + case lpad: StringLPad => + getAttrFromExpr(lpad.children(0)) + case unaryExpr: UnaryExpression => + getAttrFromExpr(unaryExpr.child) + // For leaf expression like CurrentTimestamp, CurrentDate, Now. + case leafExpr: LeafExpression => + new AttributeReference(leafExpr.prettyName, leafExpr.dataType, leafExpr.nullable)() case other => throw new UnsupportedOperationException( s"makeStructField is unable to parse from $other (${other.getClass}).")