You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@spark.apache.org by "srielau (via GitHub)" <gi...@apache.org> on 2026/10/14 20:12:12 UTC

[PR] [SPARK-60243][SQL] Cover remaining CHAR/VARCHAR standardSemantics test gaps [spark]

srielau opened a new pull request, #59477:
URL: https://github.com/apache/spark/pull/59477

   ### What changes were proposed in this pull request?
   
   Test-only coverage for remaining CHAR/VARCHAR gaps under `spark.sql.charVarchar.standardSemantics.enabled` (parent SPARK-58794):
   
   - `spark.sql.charAsVarchar` still rewrites CREATE TABLE CHAR to VARCHAR when standardSemantics is also on; CAST stays first-class CHAR.
   - `readSideCharPadding=false` is ignored when standardSemantics is on (scan still pads; `warnReadSidePaddingOverride` fires).
   - Parquet/ORC file-only round-trips for `array<array<char(n)>>` and `array<struct<char(n)>>`.
   - Read-side `EXCEED_LIMIT_LENGTH` on oversize pre-existing partition values.
   - Text datasource scan overflow (CHAR and VARCHAR), matching parquet/orc/csv/avro.
   - CAST goldens: CHAR to VARCHAR keeps the pad; VARCHAR to CHAR pads to the target length.
   - `from_avro` restores CHAR/VARCHAR catalyst types. Length assignment for from_avro STRING values remains SPARK-60242.
   
   ### Why are the changes needed?
   
   These paths were each tested in isolation or only at depth 1 / write-side / fit-length. Without crossed flags, nested file inference, partition/text overflow, and CAST pad goldens, standardSemantics regressions are easy to miss.
   
   ### Does this PR introduce _any_ user-facing change?
   
   No.
   
   ### How was this patch tested?
   
   - `sql/testOnly org.apache.spark.sql.SQLQueryTestSuite -- -z charvarchar-standard-semantics.sql` (goldens regenerated)
   - `sql/testOnly org.apache.spark.sql.BasicCharVarcharTestSuite -- -z SPARK-60243`
   - `sql/testOnly org.apache.spark.sql.BasicCharVarcharTestSuite -- -z SPARK-59001`
   - `sql/testOnly org.apache.spark.sql.FileSourceCharVarcharTestSuite -- -z SPARK-60243`
   - `avro/testOnly org.apache.spark.sql.avro.AvroFunctionsSuite -- -z SPARK-60243`
   - `JAVA_HOME=... COURSIER_REPOSITORIES=... ./dev/lint-scala`
   
   ### Was this patch authored or co-authored using generative AI tooling?
   
   Generated-by: Cursor Grok 4.6


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


Re: [PR] [SPARK-60243][SQL] Cover remaining CHAR/VARCHAR standardSemantics test gaps [spark]

Posted by "srielau (via GitHub)" <gi...@apache.org>.
srielau commented on code in PR #59477:
URL: https://github.com/apache/spark/pull/59477#discussion_r4295467746


##########
sql/core/src/test/scala/org/apache/spark/sql/CharVarcharTestSuite.scala:
##########
@@ -3745,6 +3768,82 @@ class BasicCharVarcharTestSuite extends SharedSparkSession {
         Row(Map("ab" -> 1, "AB" -> 2)))
     }
   }
+
+  test("SPARK-60243: charAsVarchar still rewrites DDL under standardSemantics") {
+    // charAsVarchar is a CREATE/ALTER rewrite; standardSemantics does not disable it.
+    // CAST remains first-class CHAR even when both flags are on.
+    withSQLConf(
+        SQLConf.CHAR_AS_VARCHAR.key -> "true",
+        SQLConf.CHAR_VARCHAR_STANDARD_SEMANTICS.key -> "true") {
+      val castDf = sql("SELECT CAST('ab' AS CHAR(5)) AS c")
+      assert(castDf.schema.head.dataType === CharType(5))
+      checkAnswer(castDf.selectExpr("concat('<', c, '>')"), Row("<ab   >"))
+
+      withTable("std_char_as_varchar") {
+        sql("CREATE TABLE std_char_as_varchar (c CHAR(5)) USING parquet")
+        assert(spark.table("std_char_as_varchar").schema.head.dataType === VarcharType(5))
+        sql("INSERT INTO std_char_as_varchar VALUES ('ab')")
+        checkAnswer(spark.table("std_char_as_varchar"), Row("ab"))
+        checkError(
+          exception = intercept[SparkRuntimeException] {
+            sql("INSERT INTO std_char_as_varchar VALUES ('abcdef')")
+          },
+          condition = "EXCEED_LIMIT_LENGTH",
+          parameters = Map("limit" -> "5"))
+      }
+    }
+  }
+
+  test("SPARK-60243: standardSemantics ignores readSideCharPadding=false") {
+    // The override warning is once-per-JVM (AtomicBoolean). Reset so this test observes it.
+    val warned = readSidePaddingOverrideWarned()
+    warned.set(false)
+    withSQLConf(
+        SQLConf.CHAR_VARCHAR_STANDARD_SEMANTICS.key -> "true",
+        SQLConf.READ_SIDE_CHAR_PADDING.key -> "false") {
+      withTempPath { dir =>
+        val path = dir.getCanonicalPath
+        sql("SELECT 'ab' AS c").write.mode("overwrite").parquet(path)
+        withTable("std_read_pad_override") {
+          sql(s"CREATE TABLE std_read_pad_override (c CHAR(4)) USING parquet LOCATION '$path'")
+          checkAnswer(
+            sql("SELECT concat('<', c, '>') FROM std_read_pad_override"),
+            Row("<ab  >"))
+        }
+      }
+    }
+    assert(warned.get(), "warnReadSidePaddingOverride should fire when padding is forced on")
+  }
+
+  test("SPARK-60243: deep nested CHAR/VARCHAR file round-trips under standardSemantics") {

Review Comment:
   Done. The nested round-trip now writes and asserts both CHAR(4) and VARCHAR(4) for `array<array<_>>` and `array<struct<_>>` on parquet and orc (padded CHAR vs unpadded VARCHAR).



##########
sql/core/src/test/scala/org/apache/spark/sql/CharVarcharTestSuite.scala:
##########
@@ -2682,6 +2692,19 @@ class BasicCharVarcharTestSuite extends SharedSparkSession {
           assert(df.schema.head.dataType === VarcharType(5))
           checkAnswer(df, Row("cd"))
         }
+        // Oversize non-blank text values fail on scan, matching parquet/orc/csv/avro.

Review Comment:
   Done. Dropped CSV from that comment. Default text/parquet/orc/avro overflow is a direct `EXCEED_LIMIT_LENGTH`; CSV still needs FAILFAST, which SPARK-58814 already covers.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


Re: [PR] [SPARK-60243][SQL] Cover remaining CHAR/VARCHAR standardSemantics test gaps [spark]

Posted by "dtenedor (via GitHub)" <gi...@apache.org>.
dtenedor closed pull request #59477: [SPARK-60243][SQL] Cover remaining CHAR/VARCHAR standardSemantics test gaps
URL: https://github.com/apache/spark/pull/59477


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


Re: [PR] [SPARK-60243][SQL] Cover remaining CHAR/VARCHAR standardSemantics test gaps [spark]

Posted by "dtenedor (via GitHub)" <gi...@apache.org>.
dtenedor commented on PR #59477:
URL: https://github.com/apache/spark/pull/59477#issuecomment-6273341604

   LGTM, merging to master + 4.x


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


Re: [PR] [SPARK-60243][SQL] Cover remaining CHAR/VARCHAR standardSemantics test gaps [spark]

Posted by "HyukjinKwon (via GitHub)" <gi...@apache.org>.
HyukjinKwon commented on code in PR #59477:
URL: https://github.com/apache/spark/pull/59477#discussion_r4284068284


##########
sql/core/src/test/scala/org/apache/spark/sql/CharVarcharTestSuite.scala:
##########
@@ -3745,6 +3768,82 @@ class BasicCharVarcharTestSuite extends SharedSparkSession {
         Row(Map("ab" -> 1, "AB" -> 2)))
     }
   }
+
+  test("SPARK-60243: charAsVarchar still rewrites DDL under standardSemantics") {
+    // charAsVarchar is a CREATE/ALTER rewrite; standardSemantics does not disable it.
+    // CAST remains first-class CHAR even when both flags are on.
+    withSQLConf(
+        SQLConf.CHAR_AS_VARCHAR.key -> "true",
+        SQLConf.CHAR_VARCHAR_STANDARD_SEMANTICS.key -> "true") {
+      val castDf = sql("SELECT CAST('ab' AS CHAR(5)) AS c")
+      assert(castDf.schema.head.dataType === CharType(5))
+      checkAnswer(castDf.selectExpr("concat('<', c, '>')"), Row("<ab   >"))
+
+      withTable("std_char_as_varchar") {
+        sql("CREATE TABLE std_char_as_varchar (c CHAR(5)) USING parquet")
+        assert(spark.table("std_char_as_varchar").schema.head.dataType === VarcharType(5))
+        sql("INSERT INTO std_char_as_varchar VALUES ('ab')")
+        checkAnswer(spark.table("std_char_as_varchar"), Row("ab"))
+        checkError(
+          exception = intercept[SparkRuntimeException] {
+            sql("INSERT INTO std_char_as_varchar VALUES ('abcdef')")
+          },
+          condition = "EXCEED_LIMIT_LENGTH",
+          parameters = Map("limit" -> "5"))
+      }
+    }
+  }
+
+  test("SPARK-60243: standardSemantics ignores readSideCharPadding=false") {
+    // The override warning is once-per-JVM (AtomicBoolean). Reset so this test observes it.
+    val warned = readSidePaddingOverrideWarned()
+    warned.set(false)
+    withSQLConf(
+        SQLConf.CHAR_VARCHAR_STANDARD_SEMANTICS.key -> "true",
+        SQLConf.READ_SIDE_CHAR_PADDING.key -> "false") {
+      withTempPath { dir =>
+        val path = dir.getCanonicalPath
+        sql("SELECT 'ab' AS c").write.mode("overwrite").parquet(path)
+        withTable("std_read_pad_override") {
+          sql(s"CREATE TABLE std_read_pad_override (c CHAR(4)) USING parquet LOCATION '$path'")
+          checkAnswer(
+            sql("SELECT concat('<', c, '>') FROM std_read_pad_override"),
+            Row("<ab  >"))
+        }
+      }
+    }
+    assert(warned.get(), "warnReadSidePaddingOverride should fire when padding is forced on")
+  }
+
+  test("SPARK-60243: deep nested CHAR/VARCHAR file round-trips under standardSemantics") {

Review Comment:
   **Nit (P3):** The name says CHAR/VARCHAR, but both cases (`array<array<char(4)>>` and `array<struct<c: char(4)>>`) write and assert only `CharType(4)`, for both parquet and orc. No nested VARCHAR is written or checked. If file-only inference stopped restoring a nested `VarcharType` (for example, reading it back as `StringType`), this test would still pass. The depth-0 file round-trips elsewhere in this suite check both `CharType(4)` and `VarcharType(4)`. Could you add the matching VARCHAR cases, e.g. `array(array(cast('ab' AS VARCHAR(4))))` and `array(named_struct('v', cast('xy' AS VARCHAR(4))))`, asserting `ArrayType(ArrayType(VarcharType(4)))` / `ArrayType(StructType(Seq(StructField("v", VarcharType(4), nullable = true))))` and the unpadded values? Alternatively, rename the test to CHAR only.
   
   **Verification:**
   - **Regression:** The extended test fails if file-only inference returns StringType (or CharType) instead of VarcharType(4) for a nested VARCHAR field in either parquet or orc, and passes on the current implementation.



##########
sql/core/src/test/scala/org/apache/spark/sql/CharVarcharTestSuite.scala:
##########
@@ -2682,6 +2692,19 @@ class BasicCharVarcharTestSuite extends SharedSparkSession {
           assert(df.schema.head.dataType === VarcharType(5))
           checkAnswer(df, Row("cd"))
         }
+        // Oversize non-blank text values fail on scan, matching parquet/orc/csv/avro.

Review Comment:
   **Nit (P3):** CSV doesn't behave this way by default. The SPARK-58814 block in this same file (around lines 2079-2085) notes that CSV's default PERMISSIVE mode turns a length overflow into a null field, and only `mode=FAILFAST` surfaces `EXCEED_LIMIT_LENGTH`, as a wrapped parse error checked with `assertParseExceedLimitError`. This loop reads text with default options and expects a direct `SparkRuntimeException`, which matches parquet/orc/avro but not CSV. Could you drop `csv` from the list, or qualify it as FAILFAST-only?
   
   ```suggestion
           // Oversize non-blank text values fail on scan, matching parquet/orc/avro.
   ```
   
   The PR description's "matching parquet/orc/csv/avro" bullet has the same wording.
   
   **Verification:**
   - **Inspection:** The parity comment's list of formats matches the formats whose existing tests assert a direct EXCEED_LIMIT_LENGTH scan failure under default options. CSV is either absent or explicitly qualified as FAILFAST-only.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


Re: [PR] [SPARK-60243][SQL] Cover remaining CHAR/VARCHAR standardSemantics test gaps [spark]

Posted by "dtenedor (via GitHub)" <gi...@apache.org>.
dtenedor commented on PR #59477:
URL: https://github.com/apache/spark/pull/59477#issuecomment-6273489353

   **Merge Summary:**
   - merged into master https://github.com/apache/spark/commit/3f10e49b0a066a76fb245f1ddd0a9830acb125eb
   - merged into branch-4.x https://github.com/apache/spark/commit/68b098e3d856dfddf508381ebd95bb9afdd3dfce
   
   *Posted by `merge_spark_pr.py`*


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


Re: [PR] [SPARK-60243][SQL] Cover remaining CHAR/VARCHAR standardSemantics test gaps [spark]

Posted by "cloud-fan (via GitHub)" <gi...@apache.org>.
cloud-fan commented on code in PR #59477:
URL: https://github.com/apache/spark/pull/59477#discussion_r4315153082


##########
sql/core/src/test/scala/org/apache/spark/sql/CharVarcharTestSuite.scala:
##########
@@ -3899,6 +3922,90 @@ class BasicCharVarcharTestSuite extends SharedSparkSession {
         Row(Map("ab" -> 1, "AB" -> 2)))
     }
   }
+
+  test("SPARK-60243: charAsVarchar still rewrites DDL under standardSemantics") {
+    // charAsVarchar is a CREATE/ALTER rewrite; standardSemantics does not disable it.
+    // CAST remains first-class CHAR even when both flags are on.
+    withSQLConf(
+        SQLConf.CHAR_AS_VARCHAR.key -> "true",
+        SQLConf.CHAR_VARCHAR_STANDARD_SEMANTICS.key -> "true") {
+      val castDf = sql("SELECT CAST('ab' AS CHAR(5)) AS c")
+      assert(castDf.schema.head.dataType === CharType(5))
+      checkAnswer(castDf.selectExpr("concat('<', c, '>')"), Row("<ab   >"))
+
+      withTable("std_char_as_varchar") {
+        sql("CREATE TABLE std_char_as_varchar (c CHAR(5)) USING parquet")
+        assert(spark.table("std_char_as_varchar").schema.head.dataType === VarcharType(5))
+        sql("INSERT INTO std_char_as_varchar VALUES ('ab')")
+        checkAnswer(spark.table("std_char_as_varchar"), Row("ab"))
+        checkError(
+          exception = intercept[SparkRuntimeException] {
+            sql("INSERT INTO std_char_as_varchar VALUES ('abcdef')")
+          },
+          condition = "EXCEED_LIMIT_LENGTH",
+          parameters = Map("limit" -> "5"))
+      }
+    }
+  }
+
+  test("SPARK-60243: standardSemantics ignores readSideCharPadding=false") {
+    // The override warning is once-per-JVM (AtomicBoolean). Reset so this test observes it.
+    val warned = readSidePaddingOverrideWarned()
+    warned.set(false)
+    withSQLConf(
+        SQLConf.CHAR_VARCHAR_STANDARD_SEMANTICS.key -> "true",
+        SQLConf.READ_SIDE_CHAR_PADDING.key -> "false") {
+      withTempPath { dir =>
+        val path = dir.getCanonicalPath
+        sql("SELECT 'ab' AS c").write.mode("overwrite").parquet(path)
+        withTable("std_read_pad_override") {
+          sql(s"CREATE TABLE std_read_pad_override (c CHAR(4)) USING parquet LOCATION '$path'")
+          checkAnswer(
+            sql("SELECT concat('<', c, '>') FROM std_read_pad_override"),
+            Row("<ab  >"))
+        }
+      }
+    }
+    assert(warned.get(), "warnReadSidePaddingOverride should fire when padding is forced on")

Review Comment:
   **Nit (P3):** This assertion only reads `ApplyCharTypePadding.readSidePaddingOverrideWarned`, and that flag doesn't show the warning was logged. `warnReadSidePaddingOverride()` flips it with `compareAndSet` before it calls `logWarning`. `apply()` also calls it for every plan analyzed while standardSemantics is on and readSideCharPadding is off, so the setup write `sql("SELECT 'ab' AS c")` sets the flag before the CHAR(4) table exists. The assertion still passes if the `logWarning` is removed, downgraded to `logInfo`, or no longer names the config keys. The test name, its assert message, and the PR description all say the warning is covered, but the documented "setting it to false logs a warning" behavior of `spark.sql.readSideCharPadding` has no failing signal. The padding `checkAnswer` above is a real signal; only the warning half lacks one.
   
   Could you assert the captured log event instead, as CSVSuite does for its `lineSep` warning? Keep the reset, but move it right before the SELECT so the setup statements don't consume the once-per-JVM warning. For example (with `org.apache.logging.log4j.Level`):
   
   ```scala
   sql(s"CREATE TABLE std_read_pad_override (c CHAR(4)) USING parquet LOCATION '$path'")
   warned.set(false)
   val logAppender = new LogAppender("readSideCharPadding override warning")
   withLogAppender(logAppender) {
     checkAnswer(
       sql("SELECT concat('<', c, '>') FROM std_read_pad_override"),
       Row("<ab  >"))
   }
   assert(logAppender.loggingEvents.exists { e =>
     val msg = e.getMessage.getFormattedMessage
     e.getLevel == Level.WARN &&
       msg.contains(SQLConf.READ_SIDE_CHAR_PADDING.key) &&
       msg.contains(SQLConf.CHAR_VARCHAR_STANDARD_SEMANTICS.key)
   })
   ```
   
   **Verification:**
   - **Regression:** Show that the strengthened test fails when the override warning is suppressed or logged below WARN, or when its message stops naming both config keys, while the flag is still set.
   - **Behavior:** Show that the strengthened test passes on the current implementation, both alone and after other CHAR/VARCHAR standardSemantics tests in the same JVM have already emitted the once-per-JVM warning, and that it still verifies the padded scan result.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


Re: [PR] [SPARK-60243][SQL] Cover remaining CHAR/VARCHAR standardSemantics test gaps [spark]

Posted by "srielau (via GitHub)" <gi...@apache.org>.
srielau commented on code in PR #59477:
URL: https://github.com/apache/spark/pull/59477#discussion_r4315636097


##########
sql/core/src/test/scala/org/apache/spark/sql/CharVarcharTestSuite.scala:
##########
@@ -3899,6 +3922,90 @@ class BasicCharVarcharTestSuite extends SharedSparkSession {
         Row(Map("ab" -> 1, "AB" -> 2)))
     }
   }
+
+  test("SPARK-60243: charAsVarchar still rewrites DDL under standardSemantics") {
+    // charAsVarchar is a CREATE/ALTER rewrite; standardSemantics does not disable it.
+    // CAST remains first-class CHAR even when both flags are on.
+    withSQLConf(
+        SQLConf.CHAR_AS_VARCHAR.key -> "true",
+        SQLConf.CHAR_VARCHAR_STANDARD_SEMANTICS.key -> "true") {
+      val castDf = sql("SELECT CAST('ab' AS CHAR(5)) AS c")
+      assert(castDf.schema.head.dataType === CharType(5))
+      checkAnswer(castDf.selectExpr("concat('<', c, '>')"), Row("<ab   >"))
+
+      withTable("std_char_as_varchar") {
+        sql("CREATE TABLE std_char_as_varchar (c CHAR(5)) USING parquet")
+        assert(spark.table("std_char_as_varchar").schema.head.dataType === VarcharType(5))
+        sql("INSERT INTO std_char_as_varchar VALUES ('ab')")
+        checkAnswer(spark.table("std_char_as_varchar"), Row("ab"))
+        checkError(
+          exception = intercept[SparkRuntimeException] {
+            sql("INSERT INTO std_char_as_varchar VALUES ('abcdef')")
+          },
+          condition = "EXCEED_LIMIT_LENGTH",
+          parameters = Map("limit" -> "5"))
+      }
+    }
+  }
+
+  test("SPARK-60243: standardSemantics ignores readSideCharPadding=false") {
+    // The override warning is once-per-JVM (AtomicBoolean). Reset so this test observes it.
+    val warned = readSidePaddingOverrideWarned()
+    warned.set(false)
+    withSQLConf(
+        SQLConf.CHAR_VARCHAR_STANDARD_SEMANTICS.key -> "true",
+        SQLConf.READ_SIDE_CHAR_PADDING.key -> "false") {
+      withTempPath { dir =>
+        val path = dir.getCanonicalPath
+        sql("SELECT 'ab' AS c").write.mode("overwrite").parquet(path)
+        withTable("std_read_pad_override") {
+          sql(s"CREATE TABLE std_read_pad_override (c CHAR(4)) USING parquet LOCATION '$path'")
+          checkAnswer(
+            sql("SELECT concat('<', c, '>') FROM std_read_pad_override"),
+            Row("<ab  >"))
+        }
+      }
+    }
+    assert(warned.get(), "warnReadSidePaddingOverride should fire when padding is forced on")

Review Comment:
   Done. The test now resets the once-per-JVM flag immediately before the padded SELECT and asserts a WARN log event that names both config keys, matching the CSVSuite `lineSep` pattern. Padding `checkAnswer` is unchanged.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org