Projection/TPC issue: MatchError substring(input_1#6269, 1, 2) (Query 22)
Query 22 *** FAILED ***
(Hide Details)
Message: substring(input_1#6269, 1, 2) AS cntrycode#6518 (of class org.apache.spark.sql.catalyst.expressions.Alias)
Exception: scala.MatchError
com.nec.spark.agile.SparkExpressionToCExpression$.evalString(SparkExpressionToCExpression.scala:161)
com.nec.spark.planning.VERewriteStrategy.$anonfun$apply$2(VERewriteStrategy.scala:134)
https://www.sparkcyclone.io/tpc-html/20211123160932/
com.nec.spark.agile.SparkExpressionToCExpression$.evalString(SparkExpressionToCExpression.scala:161)
com.nec.spark.planning.VERewriteStrategy.$anonfun$apply$2(VERewriteStrategy.scala:134)
scala.collection.immutable.List.map(List.scala:286)
com.nec.spark.planning.VERewriteStrategy.res$1(VERewriteStrategy.scala:131)
com.nec.spark.planning.VERewriteStrategy.apply(VERewriteStrategy.scala:386)
org.apache.spark.sql.catalyst.planning.QueryPlanner.$anonfun$plan$1(QueryPlanner.scala:63)
scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:484)
scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:490)
scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:489)
org.apache.spark.sql.catalyst.planning.QueryPlanner.plan(QueryPlanner.scala:93)
org.apache.spark.sql.execution.SparkStrategies.plan(SparkStrategies.scala:67)
org.apache.spark.sql.catalyst.planning.QueryPlanner.$anonfun$plan$3(QueryPlanner.scala:78)
// SparkCyclone/src/main/scala/com/nec/spark/agile/SparkExpressionToCExpression.scala(143)
case _ => sys.error(s"Could not handle the expression ${expression}, type ${expression.getClass}")
tests/tpchbench/src/main/scala/sparkcyclone/tpch/TPCHBenchmark.scala(1161)
SparkCyclone - new GitHub branch carlos-gh350-add-match-else
case _ => sys.error(s"SparkExpressionToCExpression.evalString: " +
"Could not match ${expression}, " +
"class ${expression.getClass}")
https://github.com/XpressAI/SparkCyclone/pull/441
Failed toString() invocation on an object of type [org.apache.spark.sql.execution.QueryExecution]
java.lang.RuntimeException: SparkExpressionToCExpression.evalString:
Could not match Success(substring(input_1#57879, 1, 2) AS cntrycode#59510),
class class org.apache.spark.sql.catalyst.expressions.Alias
import scala.util.Try
case _ => sys.error(s"SparkExpressionToCExpression.evalString: " +
s"Could not match ${Try(expression.toString)}, " +
s"type ${expression.getClass}")
select
substring(c_phone from 1 for 2) as cntrycode,
c_acctbal
from
customer
class Alias
child: Expression
name: String
override def toString: String = s"$child AS $name#${exprId.id}$typeSuffix$delaySuffix"
new branch carlos-gh350-query22
SLF4J: Failed toString() invocation on an object of type [org.apache.spark.sql.execution.QueryExecution]
│ Reported exception:
│ java.lang.ClassCastException: org.apache.spark.sql.catalyst.expressions.AttributeReference
│ cannot be cast to org.apache.spark.unsafe.types.UTF8String
│ at org.apache.spark.sql.catalyst.expressions.Substring.nullSafeEval(stringExpressions.scala:1728)
│ at com.nec.spark.agile.SparkExpressionToCExpression$.evalString(SparkExpressionToCExpression.scala:173)
carlos-gh350-query22-2
carlos-gh350-query22-3
https://github.com/XpressAI/SparkCyclone/actions/runs/1726602754
SLF4J: Failed toString() invocation on an object of type [org.apache.spark.sql.execution.QueryExecution]
Reported exception:
java.lang.RuntimeException: Could not map substring(input_4#57879, 1, 2) IN (13,31,23,29,30,18,17) (class org.apache.spark.sql.catalyst.
│ expressions.In None); input is List(c_custkey#57875L, c_name#57876, c_address#57877, c_nationkey#57878L, c_phone#57879, c_acctbal#57880, c_mktsegment#57881, c_commen
│ t#57882), condition is (substring(c_phone#57879, 1, 2) IN (13,31,23,29,30,18,17) AND (c_acctbal#57880 > scalar-subquery#59508 []))
at scala.sys.package$.error(package.scala:30)
at com.nec.spark.planning.VERewriteStrategy.$anonfun$apply$19(VERewriteStrategy.scala:305)
at scala.util.Either.fold(Either.scala:192)
at com.nec.spark.planning.VERewriteStrategy.res$1(VERewriteStrategy.scala:307)
at com.nec.spark.planning.VERewriteStrategy.apply(VERewriteStrategy.scala:692)