Skip to content

Commit fe8034d

Browse files
committed
[SPARK-33915] Allow json expression to be pushable column
1 parent 13e8c28 commit fe8034d

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/jsonExpressions.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ case class GetJsonObject(json: Expression, path: Expression)
139139

140140
@transient private lazy val parsedPath = parsePath(path.eval().asInstanceOf[UTF8String])
141141

142-
override def eval(input: InternalRow): Any = {
142+
override def eval(input: InternalRow): UTF8String = {
143143
val jsonStr = json.eval(input).asInstanceOf[UTF8String]
144144
if (jsonStr == null) {
145145
return null

sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/DataSourceStrategy.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -737,6 +737,8 @@ abstract class PushableColumnBase {
737737
}
738738
case s: GetStructField if nestedPredicatePushdownEnabled =>
739739
helper(s.child).map(_ :+ s.childSchema(s.ordinal).name)
740+
case GetJsonObject(col, field) if nestedPredicatePushdownEnabled =>
741+
Some(Seq("GetJsonObject(" + col + "," + field + ")"))
740742
case _ => None
741743
}
742744
helper(e).map(_.quoted)

0 commit comments

Comments
 (0)