From fc77ed0210a30d0ad43433ba356a34b4eb4ce05d Mon Sep 17 00:00:00 2001 From: Eric Maynard Date: Thu, 9 May 2024 11:13:33 -0700 Subject: [PATCH] polish --- .../sql/catalyst/json/JacksonParser.scala | 4 ++- .../datasources/json/JsonSuite.scala | 32 +++++++++---------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/json/JacksonParser.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/json/JacksonParser.scala index f649d78eda442..b2c302fbbbe31 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/json/JacksonParser.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/json/JacksonParser.scala @@ -25,8 +25,8 @@ import scala.util.control.NonFatal import com.fasterxml.jackson.core._ import org.apache.hadoop.fs.PositionedReadable -import org.apache.spark.SparkUpgradeException +import org.apache.spark.SparkUpgradeException import org.apache.spark.internal.Logging import org.apache.spark.sql.catalyst.{InternalRow, NoopFilters, StructFilters} import org.apache.spark.sql.catalyst.expressions._ @@ -277,6 +277,7 @@ class JacksonParser( } case _: StringType => (parser: JsonParser) => { + // This must be enabled if we will retrieve the bytes directly from the raw content: val includeSourceInLocation = JsonParser.Feature.INCLUDE_SOURCE_IN_LOCATION val originalMask = if (includeSourceInLocation.enabledIn(parser.getFeatureMask)) { 1 @@ -328,6 +329,7 @@ class JacksonParser( UTF8String.fromBytes(writer.toByteArray) } } + // Reset back to the original configuration: parser.overrideStdFeatures(includeSourceInLocation.getMask, originalMask) result } diff --git a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/json/JsonSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/json/JsonSuite.scala index 026dd7390124b..3d0eedd2f689c 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/json/JsonSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/json/JsonSuite.scala @@ -3899,22 +3899,22 @@ abstract class JsonSuite } } } -// extractData( -// """{"data": {"white": "space"}}""", -// expectedInexactData = Seq("""{"white":"space"}"""), -// expectedExactData = Seq("""{"white": "space"}""") -// ) -// extractData( -// """{"data": ["white", "space"]}""", -// expectedInexactData = Seq("""["white","space"]"""), -// expectedExactData = Seq("""["white", "space"]""") -// ) -// val granularFloat = "-999.99999999999999999999999999999999995" -// extractData( -// s"""{"data": {"v": ${granularFloat}}}""", -// expectedInexactData = Seq("""{"v":-1000.0}"""), -// expectedExactData = Seq(s"""{"v": ${granularFloat}}""") -// ) + extractData( + """{"data": {"white": "space"}}""", + expectedInexactData = Seq("""{"white":"space"}"""), + expectedExactData = Seq("""{"white": "space"}""") + ) + extractData( + """{"data": ["white", "space"]}""", + expectedInexactData = Seq("""["white","space"]"""), + expectedExactData = Seq("""["white", "space"]""") + ) + val granularFloat = "-999.99999999999999999999999999999999995" + extractData( + s"""{"data": {"v": ${granularFloat}}}""", + expectedInexactData = Seq("""{"v":-1000.0}"""), + expectedExactData = Seq(s"""{"v": ${granularFloat}}""") + ) extractData( s"""{"data": {"white":\n"space"}}""", expectedInexactData = Seq("""{"white":"space"}"""),