Skip to content

Follow-ups from the 1.1.0 user guide review #6169

Description

@andygrove

The 1.1.0 user guide review in #6168 left these items open. Some depend on other PRs, some need a decision, and some need a code change or a test rather than a doc edit.

Before the 1.1.0 branch cut

Docs decisions

  • Spark 4.2 has no expression-compatibility page. SPARK_PROFILES in docs/build.sh and dev/generate-release-docs.sh stops at 4.1, while compatibility/expressions/index.md tells readers to pick their version's page. The registrations match 4.1, but aggregates.scala has isSpark42Plus branches for collect_list / collect_set and mode, so a 4.2 page would differ.
  • The links in expressions.md to compatibility/expressions/<category>.md (array, cast, datetime, map) don't resolve on the published site, because those pages only exist under spark-<ver>/ at build time. 1.0.0 has the same problem. Should they point at the Spark 4.1 pages, or at the index? The reverse row also links array.md, while its generated notes land in string.md.
  • In understanding-comet-plans.md, the from_unixtime extended-explain example no longer falls back, since CometFromUnixTime routes the incompatible case through the codegen dispatcher. Replace it with real output from an expression that does fall back. The compatibility guide URL quoted in it is also stale.
  • tuning.md "Remote Shuffle with Celeborn" describes the native push path in detail. However, CelebornReflectionCompatibilitySuite asserts that released Celeborn clients are refused native push, so today users only get ordinary Celeborn shuffle underneath Comet operators. Say so up front, or move the detail to the contributor guide.

Stale text generated from code

  • The spark.comet.exec.scalaUDF.codegen.enabled description says the regex family routes through the dispatcher by default. In-subset rlike literals have run natively since feat: run rlike natively by default for Java-equivalent literal patterns #5415, and the description also understates that the flag gates every dispatch path.
  • The spark.comet.memoryOverhead description still talks about additional memory allocated per executor. After fix: remove the ineffective spark.executor.memoryOverhead adjustment from the driver plugin #6054 it only sizes the native pool in on-heap mode.
  • The TruncTimestamp non-UTC incompatibility reason in serde/datetime.scala cites date_trunc incorrect results in non-UTC timezone #2649, which was closed on 2026-06-30. Check whether the incompatibility still holds, then update or drop the reason. It renders on the generated datetime compatibility page.
  • The Iceberg write toggles, spark.comet.write.iceberg.splitOperator.enabled and spark.comet.iceberg.write.enabled, are in the Testing category. So configs.md lists them as testing settings, even though iceberg-writes.md documents them for users.
  • GenerateDocs Implementation column:
    • Builder-registered functions publish as "—". Examples are hour, minute, second, make_timestamp, mode, to_char and to_varchar.
    • regexp_extract and regexp_extract_all show Native, although they dispatch by default.
    • Each profile's pass rewrites expressions.md, so the last pass wins.
  • Other GenerateDocs gaps:
    • The cast tables use Cast.canCast, so casts that Spark rejects under ANSI show U rather than N/A.
    • There is no hash, predicate or json category, so some notes are never published. For example, hash, xxhash64 and sha* fall back for decimal precision above 18 and for TIME.

Needs a test or a check before changing the docs

  • compatibility/scans.md says decimals encoded in binary format fall back. There is no plan-time check for this, and arrow-rs reads BYTE_ARRAY decimals as Decimal128, so the claim is likely stale.
  • iceberg.md says REST-vended credentials aren't consumed automatically. But the scan forwards FileIO.properties(), so static vended s3.* keys probably do reach the reader. It may be only refresh, or credentials delivered through storage-credentials, that are unsupported.
  • expressions.md "Not currently planned": since feat: route unrecognized StaticInvoke and Invoke through the codegen dispatcher #5692, several of these should route through the codegen dispatcher rather than fall back. That covers is_valid_utf8, make_valid_utf8, validate_utf8, try_validate_utf8, quote, sentences and the scalar bitmap_* functions. Add a fixture before changing the text.
  • These are probably supported but untested:
    • current_time, time_diff and time_trunc
    • the two-argument TIME forms of make_timestamp_ltz / make_timestamp_ntz
    • the datetime form of try_add
  • Reported by the review, not yet confirmed: iceberg.md "Current limitations" may also be missing two fallbacks, equality deletes on struct or variant columns and fixed partition columns.
  • datasources.md doesn't cover native Parquet scans of gs://, including which settings are honoured. It also doesn't explain fs.comet.libhdfs.schemes routing.

Other gaps that predate 1.1.0

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions