szehon-ho opened a new pull request, #58222:
URL: https://github.com/apache/spark/pull/58222

   ### What changes were proposed in this pull request?
   
   Adds two entries to the "Upgrading from Spark SQL 4.2 to 4.3" section of
   `docs/sql-migration-guide.md`, documenting the behavior change made by
   SPARK-58517 (#57722):
   
   - Declarative Pipelines now honors `spark.sql.caseSensitive` when inferring 
and
     evolving pipeline table schemas. Under case-insensitive resolution (the
     default), column names differing only in case identify the same column, so
     flows contribute a single column rather than one per spelling, and the note
     states which spelling survives.
   - All flows writing to one pipeline table must agree on the effective
     `spark.sql.caseSensitive`, or the update fails with the new
     `CONFLICTING_PIPELINE_FLOW_CASE_SENSITIVITY` error condition.
   
   Documentation only; no code change.
   
   ### Why are the changes needed?
   
   SPARK-58517 first ships in 4.3.0 (merged to `master`, `branch-4.x`, and
   `branch-4.3`), and the behavior it changed has been in place since 4.1.0:
   `SchemaMergingUtils.mergeSchemas` merged positionally, leaving
   `StructType.merge`'s `caseSensitive = true` default; 
`DataflowGraph.inferredSchema`
   merged with `reduce(SchemaMergingUtils.mergeSchemas)`; and
   `SchemaInferenceUtils.diffSchemas` keyed columns on exact field names. Users
   upgrading from 4.1.x or 4.2.x will see two observable differences that a
   migration note should cover:
   
   - A target schema that previously evolved to carry both spellings, then 
failed
     later with errors such as `COLUMN_ALREADY_EXISTS` or `AMBIGUOUS_REFERENCE`,
     now folds into a single column.
   - A pipeline whose flows disagree on `spark.sql.caseSensitive` now fails up
     front with `CONFLICTING_PIPELINE_FLOW_CASE_SENSITIVITY`.
   
   ### Does this PR introduce _any_ user-facing change?
   
   No. This is a documentation-only change. It documents a user-facing change 
that
   was already made by SPARK-58517.
   
   ### How was this patch tested?
   
   No tests; documentation only. The error condition names in the notes were
   checked against the tree (`CONFLICTING_PIPELINE_FLOW_CASE_SENSITIVITY` in
   `error-conditions.json`, `UNABLE_TO_INFER_PIPELINE_TABLE_SCHEMA` in
   `GraphErrors.scala`), as was the "lowest flow identifier wins" rule
   (`SchemaInferenceUtils.inferSchemaFromFlows` sorts by
   `_.identifier.unquotedString`). The link form
   `declarative-pipelines-programming-guide.html` matches the existing link in
   `docs/index.md`.
   
   ### Was this patch authored or co-authored using generative AI tooling?
   
   Generated-by: Claude Opus 5 (Cursor)


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to