andygrove opened a new pull request, #6962:
URL: https://github.com/apache/datafusion-comet/pull/6962

   ## Which issue does this PR close?
   
   Part of #5644.
   
   ## Rationale for this change
   
   #6664 turned `spark.comet.write.iceberg.enabled` on by default. This PR 
ships 1.2.0 with the native
   Iceberg writer as a supported, opt-in feature instead, and leaves turning 
the default on until after
   the 1.2.0 branch is cut.
   
   - The native writer merged on 2026-09-02 and shipped in 1.1.0 only under a 
testing-category setting,
     so 1.2.0 is its first release as a user-facing feature. Turning it on by 
default there skips the
     opt-in stage. The native Iceberg scan was opt-in from 0.12.0 to 0.15.0 and 
became the default in
     0.16.0.
   - The write path has had a steady stream of bug reports since it merged, two 
of them critical
     (#6138, #6139). Recent ones (#6562, #6771) are the kind that the 
still-open "manifest metrics
     parity per data type" item in #5644 exists to catch. A write bug leaves 
bad files or metrics in
     tables that every other engine reads, so the bar for a default is higher 
than for a scan.
   - Nothing measures native writes on object storage yet. The benchmark 
numbers in #5644 are from a
     local filesystem, no test asserts a native write against MinIO, and the 
native path reads each
     written file's footer back with two sequential requests (#6772).
   - With the default on, an unpartitioned or clustered write whose open file 
outgrows the off-heap
     pool fails its task, where Comet 1.1.0 wrote it with iceberg-java on the 
JVM heap.
   - Four of the five "Before 1.2.0 ships" items in #5644 are open, and its 
count of ten nightly runs
     starts with the 2026-10-14 nightly. The 1.2.0 milestone is due on 
2026-10-23.
   
   Test coverage does not change. Every Iceberg Spark test diff under 
`dev/diffs/iceberg/` sets
   `spark.comet.write.iceberg.enabled=true` itself, and both Iceberg write 
benchmarks set it for each
   arm, so the Iceberg CI jobs, and the nightly evidence #5644 asks for, run 
the native writer as
   before.
   
   ## What changes are included in this PR?
   
   - `spark.comet.write.iceberg.enabled` defaults to `false`. Everything else 
from #6664 stays: the
     setting is in the query execution category, it alone plans the split 
operator and the native
     writer, merge-on-read writes keep Spark's operator, and 
`spark.comet.exec.enabled=false` keeps
     Spark's write operator.
   - `CometIcebergWriteActionSuite`: the test of what an application that sets 
neither write flag gets
     now expects Spark's own write operator, and a new test checks that the 
write flag alone writes an
     eligible write natively under the split plan. The merge-on-read and 
transition-reversion tests
     that relied on the default now set the write flag themselves.
   - Docs: the user guide's Iceberg writes, Iceberg, data sources and operators 
pages, the FAQ, the
     Gluten comparison, the contributor guide, the roadmap and the Iceberg 
write review skill describe
     the native writer as opt-in. The 1.2.0 upgrade-guide entry now covers the 
move from 1.1.0's
     testing settings to the one supported setting, and points to the user 
guide for what turning it
     on costs.
   
   Once the 1.2.0 branch is cut, the default can go back to `true` on `main`, 
so that it runs as the
   default for a full release cycle before 1.3.0.
   
   ## How are these changes tested?
   
   The updated and new tests in `CometIcebergWriteActionSuite` cover the 
default and the single
   switch. Locally, on the default Spark 4.1 profile, `CometConfSuite`, 
`CometIcebergWriteActionSuite`,
   `CometIcebergWriteDetectionSuite`, `CometIcebergSystemFunctionSuite`,
   `CometIcebergRewriteActionSuite` and `CometIcebergNativeSuite` pass: 358 
passed, 0 failed, and 1
   canceled, the SPARK-55626 test that Spark 4.1+ skips.
   
   The `run-iceberg-tests` and `run-all-spark-profiles` labels run the Iceberg 
Spark tests, which set
   the write setting themselves, and the Comet suites on the other Spark 
profiles, where the
   merge-on-read test needs Spark 3.5+.
   


-- 
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