From 740e3648c5c48235a0e7a7c80e3ea5703a7aa6d7 Mon Sep 17 00:00:00 2001 From: Raz Luvaton <16746759+rluvaton@users.noreply.github.com> Date: Wed, 27 May 2026 18:01:40 +0300 Subject: [PATCH 1/5] ci-test: trigger breaking change detector the comment for breaking change detector looks broken since last success was 8 days ago --- datafusion/core/src/lib.rs | 3 --- 1 file changed, 3 deletions(-) diff --git a/datafusion/core/src/lib.rs b/datafusion/core/src/lib.rs index 3170f4be7f683..e17d210c392d4 100644 --- a/datafusion/core/src/lib.rs +++ b/datafusion/core/src/lib.rs @@ -804,9 +804,6 @@ pub mod common { } } -// Backwards compatibility -pub use common::config; - // NB datafusion execution is re-exported in the `execution` module /// re-export of [`datafusion_catalog`] crate From 40c6ecf2e253563e28f551a712979c360ca32bbd Mon Sep 17 00:00:00 2001 From: Raz Luvaton <16746759+rluvaton@users.noreply.github.com> Date: Wed, 27 May 2026 18:22:31 +0300 Subject: [PATCH 2/5] make breaking change in the crate with no workspace deps for faster ci time --- datafusion/common/src/lib.rs | 2 +- datafusion/core/src/lib.rs | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/datafusion/common/src/lib.rs b/datafusion/common/src/lib.rs index e865c548bb554..ab2f65da8ea6c 100644 --- a/datafusion/common/src/lib.rs +++ b/datafusion/common/src/lib.rs @@ -98,7 +98,7 @@ pub use spans::{Location, Span, Spans}; pub use stats::{ColumnStatistics, Statistics}; pub use table_reference::{ResolvedTableReference, TableReference}; pub use unnest::{RecursionUnnestOption, UnnestOptions}; -pub use utils::project_schema; +// pub use utils::project_schema; // These are hidden from docs purely to avoid polluting the public view of what this crate exports. // These are just re-exports of macros by the same name, which gets around the 'cannot refer to diff --git a/datafusion/core/src/lib.rs b/datafusion/core/src/lib.rs index e17d210c392d4..3170f4be7f683 100644 --- a/datafusion/core/src/lib.rs +++ b/datafusion/core/src/lib.rs @@ -804,6 +804,9 @@ pub mod common { } } +// Backwards compatibility +pub use common::config; + // NB datafusion execution is re-exported in the `execution` module /// re-export of [`datafusion_catalog`] crate From 64e4babeb41e12f4ef4a348c995913b1e806b1d9 Mon Sep 17 00:00:00 2001 From: Raz Luvaton <16746759+rluvaton@users.noreply.github.com> Date: Wed, 27 May 2026 23:08:06 +0300 Subject: [PATCH 3/5] update --- .../breaking_changes_detector_comment.yml | 74 ++++++++++++------- 1 file changed, 49 insertions(+), 25 deletions(-) diff --git a/.github/workflows/breaking_changes_detector_comment.yml b/.github/workflows/breaking_changes_detector_comment.yml index 579c61cb9d5c7..1b0d8ed507a83 100644 --- a/.github/workflows/breaking_changes_detector_comment.yml +++ b/.github/workflows/breaking_changes_detector_comment.yml @@ -104,39 +104,63 @@ jobs: echo "${DELIM}" } >> "$GITHUB_OUTPUT" - # The marker `` is what makes the comment - # "sticky": maintain-one-comment uses it to find and replace (or - # delete) the existing comment instead of stacking new ones. + + # Find any existing sticky comment by its hidden marker so we can update + # or delete it instead of stacking new ones. + - name: Find existing sticky comment + id: find + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + PR_NUMBER: ${{ steps.read.outputs.pr_number }} + run: | + COMMENT_ID=$(gh api --paginate "repos/${REPO}/issues/${PR_NUMBER}/comments" \ + --jq '.[] | select(.body | contains("")) | .id' \ + | head -n1) + echo "comment_id=${COMMENT_ID}" >> "$GITHUB_OUTPUT" + + # update the existing comment found above, or create a new one. The hidden + # marker `` stays in the body so the next run + # finds it again. LOGS is interpolated via a shell parameter expansion, + # whose result bash does not re-scan, so untrusted log content cannot + # inject further commands. - name: Upsert sticky comment if: steps.read.outputs.result != 'success' - uses: actions-cool/maintain-one-comment@909842216bc8e8658364c572ec52100f4c2cc50a # v3.3.0 - with: - token: ${{ secrets.GITHUB_TOKEN }} - number: ${{ steps.read.outputs.pr_number }} - body-include: '' - body: | - - Thank you for opening this pull request! + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + PR_NUMBER: ${{ steps.read.outputs.pr_number }} + COMMENT_ID: ${{ steps.find.outputs.comment_id }} + LOGS: ${{ steps.read.outputs.logs }} + run: | + set -euo pipefail + BODY=" + Thank you for opening this pull request! - Reviewer note: [cargo-semver-checks](https://github.com/obi1kenobi/cargo-semver-checks) reported the current version number is not SemVer-compatible with the changes in this pull request (compared against the base branch). + Reviewer note: [cargo-semver-checks](https://github.com/obi1kenobi/cargo-semver-checks) reported the current version number is not SemVer-compatible with the changes in this pull request (compared against the base branch). -
- Details +
+ Details - ``` - ${{ steps.read.outputs.logs }} - ``` + \`\`\` + ${LOGS} + \`\`\` -
+
" + if [ -n "$COMMENT_ID" ]; then + gh api "repos/${REPO}/issues/comments/${COMMENT_ID}" --method PATCH --field body="$BODY" + else + gh api "repos/${REPO}/issues/${PR_NUMBER}/comments" --method POST --field body="$BODY" + fi + # Clear a stale comment once the breaking change is resolved. - name: Delete sticky comment - if: steps.read.outputs.result == 'success' - uses: actions-cool/maintain-one-comment@909842216bc8e8658364c572ec52100f4c2cc50a # v3.3.0 - with: - token: ${{ secrets.GITHUB_TOKEN }} - number: ${{ steps.read.outputs.pr_number }} - body-include: '' - delete: true + if: steps.read.outputs.result == 'success' && steps.find.outputs.comment_id != '' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + COMMENT_ID: ${{ steps.find.outputs.comment_id }} + run: gh api -X DELETE "repos/${REPO}/issues/comments/${COMMENT_ID}" - name: Add "auto detected api change" label if: steps.read.outputs.result != 'success' From b35f08a6ec0b76ecc9b8fdba5e7549b42e4421d9 Mon Sep 17 00:00:00 2001 From: Raz Luvaton <16746759+rluvaton@users.noreply.github.com> Date: Wed, 27 May 2026 23:20:40 +0300 Subject: [PATCH 4/5] use raw field --- .github/workflows/breaking_changes_detector_comment.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/breaking_changes_detector_comment.yml b/.github/workflows/breaking_changes_detector_comment.yml index 1b0d8ed507a83..f3a3400d00f9c 100644 --- a/.github/workflows/breaking_changes_detector_comment.yml +++ b/.github/workflows/breaking_changes_detector_comment.yml @@ -147,10 +147,13 @@ jobs: \`\`\` " + + # Use --raw-field (not --field): always sends the value as a literal string. while --field would treat a leading `@` as a file to read + # (even though the body does not start with user input we are being cautious) if [ -n "$COMMENT_ID" ]; then - gh api "repos/${REPO}/issues/comments/${COMMENT_ID}" --method PATCH --field body="$BODY" + gh api "repos/${REPO}/issues/comments/${COMMENT_ID}" --method PATCH --raw-field body="$BODY" else - gh api "repos/${REPO}/issues/${PR_NUMBER}/comments" --method POST --field body="$BODY" + gh api "repos/${REPO}/issues/${PR_NUMBER}/comments" --method POST --raw-field body="$BODY" fi # Clear a stale comment once the breaking change is resolved. From a3929e096370c108f2ff9a7fe1a7f516ba8ab759 Mon Sep 17 00:00:00 2001 From: Raz Luvaton <16746759+rluvaton@users.noreply.github.com> Date: Wed, 27 May 2026 23:21:15 +0300 Subject: [PATCH 5/5] Revert breaking change --- datafusion/common/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datafusion/common/src/lib.rs b/datafusion/common/src/lib.rs index ab2f65da8ea6c..e865c548bb554 100644 --- a/datafusion/common/src/lib.rs +++ b/datafusion/common/src/lib.rs @@ -98,7 +98,7 @@ pub use spans::{Location, Span, Spans}; pub use stats::{ColumnStatistics, Statistics}; pub use table_reference::{ResolvedTableReference, TableReference}; pub use unnest::{RecursionUnnestOption, UnnestOptions}; -// pub use utils::project_schema; +pub use utils::project_schema; // These are hidden from docs purely to avoid polluting the public view of what this crate exports. // These are just re-exports of macros by the same name, which gets around the 'cannot refer to