Skip to content

docs: refresh stale issue references and normalize issue link format - #5062

Merged
mbutrovich merged 1 commit into
apache:mainfrom
andygrove:docs/audit-stale-issue-links
Jul 28, 2026
Merged

docs: refresh stale issue references and normalize issue link format#5062
mbutrovich merged 1 commit into
apache:mainfrom
andygrove:docs/audit-stale-issue-links

Conversation

@andygrove

Copy link
Copy Markdown
Member

Which issue does this PR close?

Closes #.

Rationale for this change

Several pages in the user guide and contributor guide link to issues that have since been closed, and in most of those cases the surrounding prose still describes the limitation the issue was filed for. A reader following the link lands on a closed issue and has no way to tell whether the documented behavior is still current.

A separate problem is that issue and PR references are written four different ways across these pages: inline [#NNNN](url), bare URLs, bare #NNNN with no link at all, and reference-style [#NNNN]: definitions. The bare forms are not clickable in the rendered docs.

What changes are included in this PR?

Every issue and PR reference in docs/source/user-guide and docs/source/contributor-guide was checked against its current state on GitHub. Where an issue was closed, the claim in the docs was re-verified against the serde and native code rather than taken from the issue state alone.

Thirteen places described a limitation that no longer exists:

Page Previous claim Current behavior
collection_funcs.md size() over MapType falls back CometSize returns Compatible() for ArrayType and MapType
math_funcs.md CometRemainder rejects EvalMode.TRY, so try_mod falls back gates only on the left input type; all three eval modes serialize
conversion_funcs.md CAST(map AS map) falls back runs natively via cast_map_to_map; support recurses into the key and value casts
conversion_funcs.md spark.sql.legacy.castComplexTypesToString is not honoured detected in CometCast and reported Unsupported
string_funcs.md replace marks Incompatible on a literal empty search string Compatible with a NativeOptIn; codegen dispatch by default
string_funcs.md initcap is unconditionally Incompatible Compatible with a NativeOptIn
map_funcs.md str_to_map ignores spark.sql.legacy.truncateForEmptyRegexSplit reads the config and reports Incompatible, routing to codegen dispatch
window_funcs.md AVG(decimal) over a window is dead on Spark 4.x CometWindowExec.convert unwraps the Cast(Divide(...)) shape
agg_funcs.md Percentile reports Incompatible, native path opt-in plain Compatible(), native by default
pyarrow-udfs.md the row to Arrow round-trip is unchanged CometArrowPythonRunner consumes ColumnarBatch directly
roadmap.md datafusion-spark migration tracked under #2084 closed, superseded by #4150
roadmap.md awslabs TPC-DS results tracked under #3799 closed; the published results improved, so the section was trimmed
datatypes.md "Interval types fall back to Spark today" all three types moved from planned to supported-with-caveats, with the per-operator gaps listed and tracked by #5061

Links that pointed at a closed or unrelated tracker were dropped or repointed: the ten tracking #4098 rows in expressions.md (that issue tracked Spark 4.1 CI failures and never covered kurtosis, skewness, or the Variant functions), translate (#4463, where the incompatibility is real but the issue is closed, so the reason is now stated inline), the TimestampNTZ scan note (#4219), the from_utc_timestamp timezone-parser note (#2013, whose linked issue was "Add from_utc_timestamp support"), and the make_interval / try_make_interval rows (#4540 to #5061).

Seven closed-issue references were kept deliberately because they are historical or illustrative: the 0.9.1 jar-size incident in release_process.md, the hash-aggregate epic in bug_triage.md (now explicitly labelled as closed), the to_json code sample in adding_a_new_expression.md that mirrors live code in structs.scala, the two query ignore(...) syntax examples in sql-file-tests.md, and the two audit notes whose workarounds are still present in the code.

For formatting, 52 bare URLs and 27 bare #NNNN mentions were converted to inline [#NNNN](url). Reference-style definitions were left in place in roadmap.md and iceberg-spark-tests.md, which already used that style consistently. Cross-repo references use the [apache/arrow-rs#10028](url) form. 22 URLs were repointed from /issues/ to /pull/ where the number is a pull request. URLs inside fenced code blocks were left untouched, including the issues/NNNN placeholder in adding_a_new_spark_version.md.

How are these changes tested?

Documentation only, so there is no runtime behavior to test. Every claim that changed was checked against the code it describes (CometSize, CometRemainder, CometCast, CometStringReplace, CometInitCap, CometStrToMap, CometWindowExec, CometPercentile, CometArrowPythonRunner). Link formatting was verified with a script that finds any GitHub issue or PR reference outside a fenced code block that is not an inline link or a reference definition; it reports zero remaining. prettier --check passes on both guides.

Audit the user guide and contributor guide for references to issues that
have since been closed, and make the remaining issue and PR links use a
single format.

Thirteen places described a limitation that no longer exists, verified
against the current serde and native code rather than the issue state
alone: size() over MapType, try_mod / EvalMode.TRY, CAST(map AS map),
spark.sql.legacy.castComplexTypesToString, replace with an empty search
string, initcap, str_to_map with the legacy truncate flag, AVG(decimal)
over a window, Percentile, the pyarrow-udf row round-trip, the
datafusion-spark migration epic, the awslabs TPC-DS epic, and the
interval type epic.

Also drop or repoint links that pointed at a closed or unrelated tracker:
the apache#4098 rows in expressions.md, translate, the TimestampNTZ scan note,
and the from_utc_timestamp timezone-parser note.

Convert bare URLs and bare #NNNN mentions to inline [#NNNN](url), keeping
reference-style definitions where a file already used them, and point URLs
at /pull/ where the number is a pull request.
@andygrove
andygrove marked this pull request as ready for review July 28, 2026 03:46
@andygrove andygrove added this to the 1.0.0 milestone Jul 28, 2026

@mbutrovich mbutrovich left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks @andygrove!

@mbutrovich
mbutrovich merged commit c27eed3 into apache:main Jul 28, 2026
17 checks passed
andygrove added a commit that referenced this pull request Jul 28, 2026
* refactor: unify shuffle configs under `spark.comet.shuffle.*` prefix

Shuffle-related configs were spread across four disjoint prefixes:
`spark.comet.exec.shuffle.*`, `spark.comet.columnar.shuffle.*`,
`spark.comet.native.shuffle.*`, and `spark.comet.shuffle.*`. This
consolidates all shuffle configs under `spark.comet.shuffle.*` with
`.columnar.` and `.native.` sub-namespaces for mode-specific settings.

Every renamed key is registered via `.withAlternative(...)`, so
existing user configurations continue to work (a deprecation warning
is logged when an old key is read). Per-mode leaves that were
previously misplaced move to their honest namespace:

  - `spark.comet.exec.shuffle.writeBufferSize` (native-only) becomes
    `spark.comet.shuffle.native.writeBufferSize`.
  - `spark.comet.shuffle.preferDictionary.ratio` (JVM-only) becomes
    `spark.comet.shuffle.columnar.preferDictionary.ratio`.

The `spark.comet.columnar.shuffle.*` keys also fix Category 2 in
#4978 (dots-in-segment): `spill.threshold`,
`memory.factor`, and `batch.size` become `spillThreshold`,
`memoryFactor`, and `batchSize`.

Part of #4978.

* refactor: rename `.columnar.` sub-namespace to `.jvm.`

The JVM-side shuffle path in Comet is not the only columnar shuffle —
native shuffle is also columnar (both use Arrow). The distinguishing
axis is *where* the shuffle logic runs. Renaming the sub-namespace
to `.jvm.` aligns it with the mode value users already set:
`spark.comet.shuffle.mode = jvm`.

Keys renamed:

  - spark.comet.shuffle.columnar.spillThreshold        → spark.comet.shuffle.jvm.spillThreshold
  - spark.comet.shuffle.columnar.memoryFactor          → spark.comet.shuffle.jvm.memoryFactor
  - spark.comet.shuffle.columnar.batchSize             → spark.comet.shuffle.jvm.batchSize
  - spark.comet.shuffle.columnar.preferDictionary.ratio → spark.comet.shuffle.jvm.preferDictionary.ratio

The pre-existing deprecated aliases (`spark.comet.columnar.shuffle.*`)
are untouched — they were never `.columnar.`-scoped under the new
prefix. Val names follow: `COMET_SHUFFLE_COLUMNAR_*` → `COMET_SHUFFLE_JVM_*`.

The Scala/Java class names (`CometColumnarShuffle`, `CometColumnarShuffleSuite`, etc.)
still use "columnar" and are left alone — that is a separate rename to
consider once the config vocabulary settles.

* chore: re-run prettier on shuffle docs

Table column alignment tweaks after the `.columnar.` → `.jvm.` key
rename. Content unchanged.

* style: apply spotless formatting to CometShuffleExternalSorter

* refactor: move maxBufferBytes under spark.comet.shuffle.native prefix

* test: update Spark diffs for renamed shuffle configs

Regenerate the Spark SQL test diffs to reference shuffle configs by their
string keys rather than CometConf constants, so the config rename in this
PR no longer breaks test compilation.

- spark.comet.exec.shuffle.enabled -> spark.comet.shuffle.enabled
- CometConf.COMET_EXEC_SHUFFLE_WITH_RANGE_PARTITIONING_ENABLED.key ->
  "spark.comet.shuffle.native.partitioning.range.enabled"

* docs: refresh stale issue references and normalize issue link format (#5062)

Audit the user guide and contributor guide for references to issues that
have since been closed, and make the remaining issue and PR links use a
single format.

Thirteen places described a limitation that no longer exists, verified
against the current serde and native code rather than the issue state
alone: size() over MapType, try_mod / EvalMode.TRY, CAST(map AS map),
spark.sql.legacy.castComplexTypesToString, replace with an empty search
string, initcap, str_to_map with the legacy truncate flag, AVG(decimal)
over a window, Percentile, the pyarrow-udf row round-trip, the
datafusion-spark migration epic, the awslabs TPC-DS epic, and the
interval type epic.

Also drop or repoint links that pointed at a closed or unrelated tracker:
the #4098 rows in expressions.md, translate, the TimestampNTZ scan note,
and the from_utc_timestamp timezone-parser note.

Convert bare URLs and bare #NNNN mentions to inline [#NNNN](url), keeping
reference-style definitions where a file already used them, and point URLs
at /pull/ where the number is a pull request.

* docs: fix references to configuration keys that do not exist

Several docs referenced configuration keys that were never registered or were
renamed. Corrected the expression/operator opt-in prefix (spark.comet.expr.* ->
spark.comet.expression.* / spark.comet.operator.*), removed references to a
global allowIncompatible key that does not exist, and updated stale shuffle,
memory pool, and metrics keys.
@andygrove
andygrove deleted the docs/audit-stale-issue-links branch August 5, 2026 19:57
comphead pushed a commit to comphead/arrow-datafusion-comet that referenced this pull request Aug 26, 2026
…pache#5062)

Audit the user guide and contributor guide for references to issues that
have since been closed, and make the remaining issue and PR links use a
single format.

Thirteen places described a limitation that no longer exists, verified
against the current serde and native code rather than the issue state
alone: size() over MapType, try_mod / EvalMode.TRY, CAST(map AS map),
spark.sql.legacy.castComplexTypesToString, replace with an empty search
string, initcap, str_to_map with the legacy truncate flag, AVG(decimal)
over a window, Percentile, the pyarrow-udf row round-trip, the
datafusion-spark migration epic, the awslabs TPC-DS epic, and the
interval type epic.

Also drop or repoint links that pointed at a closed or unrelated tracker:
the apache#4098 rows in expressions.md, translate, the TimestampNTZ scan note,
and the from_utc_timestamp timezone-parser note.

Convert bare URLs and bare #NNNN mentions to inline [#NNNN](url), keeping
reference-style definitions where a file already used them, and point URLs
at /pull/ where the number is a pull request.
comphead pushed a commit to comphead/arrow-datafusion-comet that referenced this pull request Aug 26, 2026
…5063)

* refactor: unify shuffle configs under `spark.comet.shuffle.*` prefix

Shuffle-related configs were spread across four disjoint prefixes:
`spark.comet.exec.shuffle.*`, `spark.comet.columnar.shuffle.*`,
`spark.comet.native.shuffle.*`, and `spark.comet.shuffle.*`. This
consolidates all shuffle configs under `spark.comet.shuffle.*` with
`.columnar.` and `.native.` sub-namespaces for mode-specific settings.

Every renamed key is registered via `.withAlternative(...)`, so
existing user configurations continue to work (a deprecation warning
is logged when an old key is read). Per-mode leaves that were
previously misplaced move to their honest namespace:

  - `spark.comet.exec.shuffle.writeBufferSize` (native-only) becomes
    `spark.comet.shuffle.native.writeBufferSize`.
  - `spark.comet.shuffle.preferDictionary.ratio` (JVM-only) becomes
    `spark.comet.shuffle.columnar.preferDictionary.ratio`.

The `spark.comet.columnar.shuffle.*` keys also fix Category 2 in
apache#4978 (dots-in-segment): `spill.threshold`,
`memory.factor`, and `batch.size` become `spillThreshold`,
`memoryFactor`, and `batchSize`.

Part of apache#4978.

* refactor: rename `.columnar.` sub-namespace to `.jvm.`

The JVM-side shuffle path in Comet is not the only columnar shuffle —
native shuffle is also columnar (both use Arrow). The distinguishing
axis is *where* the shuffle logic runs. Renaming the sub-namespace
to `.jvm.` aligns it with the mode value users already set:
`spark.comet.shuffle.mode = jvm`.

Keys renamed:

  - spark.comet.shuffle.columnar.spillThreshold        → spark.comet.shuffle.jvm.spillThreshold
  - spark.comet.shuffle.columnar.memoryFactor          → spark.comet.shuffle.jvm.memoryFactor
  - spark.comet.shuffle.columnar.batchSize             → spark.comet.shuffle.jvm.batchSize
  - spark.comet.shuffle.columnar.preferDictionary.ratio → spark.comet.shuffle.jvm.preferDictionary.ratio

The pre-existing deprecated aliases (`spark.comet.columnar.shuffle.*`)
are untouched — they were never `.columnar.`-scoped under the new
prefix. Val names follow: `COMET_SHUFFLE_COLUMNAR_*` → `COMET_SHUFFLE_JVM_*`.

The Scala/Java class names (`CometColumnarShuffle`, `CometColumnarShuffleSuite`, etc.)
still use "columnar" and are left alone — that is a separate rename to
consider once the config vocabulary settles.

* chore: re-run prettier on shuffle docs

Table column alignment tweaks after the `.columnar.` → `.jvm.` key
rename. Content unchanged.

* style: apply spotless formatting to CometShuffleExternalSorter

* refactor: move maxBufferBytes under spark.comet.shuffle.native prefix

* test: update Spark diffs for renamed shuffle configs

Regenerate the Spark SQL test diffs to reference shuffle configs by their
string keys rather than CometConf constants, so the config rename in this
PR no longer breaks test compilation.

- spark.comet.exec.shuffle.enabled -> spark.comet.shuffle.enabled
- CometConf.COMET_EXEC_SHUFFLE_WITH_RANGE_PARTITIONING_ENABLED.key ->
  "spark.comet.shuffle.native.partitioning.range.enabled"

* docs: refresh stale issue references and normalize issue link format (apache#5062)

Audit the user guide and contributor guide for references to issues that
have since been closed, and make the remaining issue and PR links use a
single format.

Thirteen places described a limitation that no longer exists, verified
against the current serde and native code rather than the issue state
alone: size() over MapType, try_mod / EvalMode.TRY, CAST(map AS map),
spark.sql.legacy.castComplexTypesToString, replace with an empty search
string, initcap, str_to_map with the legacy truncate flag, AVG(decimal)
over a window, Percentile, the pyarrow-udf row round-trip, the
datafusion-spark migration epic, the awslabs TPC-DS epic, and the
interval type epic.

Also drop or repoint links that pointed at a closed or unrelated tracker:
the apache#4098 rows in expressions.md, translate, the TimestampNTZ scan note,
and the from_utc_timestamp timezone-parser note.

Convert bare URLs and bare #NNNN mentions to inline [#NNNN](url), keeping
reference-style definitions where a file already used them, and point URLs
at /pull/ where the number is a pull request.

* docs: fix references to configuration keys that do not exist

Several docs referenced configuration keys that were never registered or were
renamed. Corrected the expression/operator opt-in prefix (spark.comet.expr.* ->
spark.comet.expression.* / spark.comet.operator.*), removed references to a
global allowIncompatible key that does not exist, and updated stale shuffle,
memory pool, and metrics keys.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants