From 5a8025505a8eeef1e267c30cea923462d436e470 Mon Sep 17 00:00:00 2001 From: Emily Matheys Date: Wed, 12 Feb 2025 16:23:52 +0200 Subject: [PATCH 1/2] fix invalid evaluation --- .../main/scala/org/apache/comet/serde/QueryPlanSerde.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala b/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala index 9ce6ea9c265..c9a22470d95 100644 --- a/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala +++ b/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala @@ -2128,7 +2128,9 @@ object QueryPlanSerde extends Logging with ShimQueryPlanSerde with CometExprShim // char types. // See https://github.com/apache/spark/pull/38151 case s: StaticInvoke - if s.staticObject.isInstanceOf[Class[CharVarcharCodegenUtils]] && + // classOf gets ther runtime class of T, which lets us compare directly + // Otherwise isInstanceOf[Class[_]] will always evaluate to true + if s.staticObject == classOf[CharVarcharCodegenUtils] && s.dataType.isInstanceOf[StringType] && s.functionName == "readSidePadding" && s.arguments.size == 2 && From eb42ec9687b569d702d57f5a2748fefa099def74 Mon Sep 17 00:00:00 2001 From: Emily Matheys Date: Wed, 12 Feb 2025 16:24:31 +0200 Subject: [PATCH 2/2] update comment --- .../src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala b/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala index c9a22470d95..3f3ae5fbfaf 100644 --- a/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala +++ b/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala @@ -2129,7 +2129,7 @@ object QueryPlanSerde extends Logging with ShimQueryPlanSerde with CometExprShim // See https://github.com/apache/spark/pull/38151 case s: StaticInvoke // classOf gets ther runtime class of T, which lets us compare directly - // Otherwise isInstanceOf[Class[_]] will always evaluate to true + // Otherwise isInstanceOf[Class[T]] will always evaluate to true for Class[_] if s.staticObject == classOf[CharVarcharCodegenUtils] && s.dataType.isInstanceOf[StringType] && s.functionName == "readSidePadding" &&