You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datafusion.apache.org by gi...@apache.org on 2026/10/21 21:45:34 UTC

(datafusion) 01/01: chore: Skip `datafusion-sqllogictest` in semver check (#26577)

This is an automated email from the ASF dual-hosted git repository.

github-merge-queue[bot] pushed a commit to branch gh-readonly-queue/main/pr-26577-95ef315f37ff642baeb8aac0e03bc85e87598d30
in repository https://gitbox.apache.org/repos/asf/datafusion.git

commit 659b4758f8ebb5eb6fdee95f08abf08b77e7c2ab
Author: Neil Conway <ne...@gmail.com>
AuthorDate: Wed Oct 21 21:01:18 2026 +0000

    chore: Skip `datafusion-sqllogictest` in semver check (#26577)
    
    ## Which issue does this PR close?
    
    - Related to #25088, #25148
    
    ## Rationale for this change
    
    Many PRs modify some Rust code and also touch some SLT files. At
    present, this results in checking all of `datafusion-sqllogictest` for
    semver compatibility, which is very expensive (because it depends on
    almost all of the other crates). `datafusion-sqllogictest` is a
    published crate but it is test tooling that isn't part of the library
    API, so I think skipping semver checks for it is not unreasonable.
    
    The longer-term goal here is to make the semver check cheap enough that
    we can run it using `ubuntu-slim`, but we're probably not at that point
    yet. In any case, reducing semver check overhead is a useful improvement
    by itself.
    
    ## What changes are included in this PR?
    
    See above. We also use `install-action` to install `protoc` rather than
    `apt`, since it's much faster.
    
    ## What is the testing strategy for this PR?
    
    CI change only.
    
    ## Are there any user-facing changes?
    
    No.
---
 .github/workflows/breaking_changes_detector.yml | 16 ++++++++--------
 ci/scripts/changed_crates.sh                    | 13 +++++++++----
 2 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/.github/workflows/breaking_changes_detector.yml b/.github/workflows/breaking_changes_detector.yml
index 0ae295255b..8b33ca3526 100644
--- a/.github/workflows/breaking_changes_detector.yml
+++ b/.github/workflows/breaking_changes_detector.yml
@@ -18,7 +18,8 @@
 # Detect semver-incompatible (breaking) API changes in crates modified by a PR.
 #
 # Only public workspace crates that have file changes are checked.
-# Internal crates (benchmarks, test-utils, sqllogictest, doc) are excluded.
+# Crates with `publish = false` (such as benchmarks and test-utils) and
+# datafusion-sqllogictest are excluded.
 #
 # This workflow only runs cargo-semver-checks and uploads the result as an
 # artifact. The actual PR comment is posted by a companion workflow
@@ -78,14 +79,13 @@ jobs:
           echo "packages=$PACKAGES" >> "$GITHUB_OUTPUT"
           echo "Changed crates: $PACKAGES"
 
-      # `datafusion-substrait` (and crates that depend on it via sqllogictest)
-      # have a build script that calls protoc, which is not preinstalled on
-      # ubuntu-latest runners.
-      - name: Install Protobuf Compiler
+      # The `substrait` crate's build script runs protoc, which is not
+      # preinstalled on ubuntu-latest runners.
+      - name: Install protoc
         if: steps.changed_crates.outputs.packages != ''
-        run: |
-          sudo apt-get update
-          sudo apt-get install -y protobuf-compiler
+        uses: taiki-e/install-action@8cca0918f8471c33515202b73f56ab27f2bed283  # v2.87.29
+        with:
+          tool: protoc@3.21.12
 
       - name: Install cargo-semver-checks
         if: steps.changed_crates.outputs.packages != ''
diff --git a/ci/scripts/changed_crates.sh b/ci/scripts/changed_crates.sh
index 6d014a9492..be8c48b26e 100755
--- a/ci/scripts/changed_crates.sh
+++ b/ci/scripts/changed_crates.sh
@@ -21,8 +21,12 @@
 # Subcommands:
 #   changed-crates <base_ref>
 #       Print space-separated list of crate names whose files changed vs base_ref.
-#       Only published workspace members (those without `publish = false`) are
-#       considered.
+#       Only published workspace members (those without `publish = false`)
+#       are considered. We also omit datafusion-sqllogictest. It is published
+#       so that other projects can write tests with DataFusion's sqllogictest
+#       driver, but it is test tooling rather than part of DataFusion's
+#       library API. It also depends on nearly every other DataFusion crate,
+#       so checking it usually takes most of the job's time.
 #
 #   semver-check <base_ref> <packages...>
 #       Run cargo-semver-checks for the given packages against base_ref.
@@ -42,12 +46,13 @@ cmd_changed_crates() {
   # 2. Every publishable workspace member, one per line as
   #    "<crate-name> <crate-dir>". `publish = false` in Cargo.toml shows
   #    up as `"publish": []` in cargo metadata, so filtering on that
-  #    excludes internal crates without a manual exclusion list.
+  #    excludes unpublished crates. datafusion-sqllogictest is excluded by
+  #    name; see the comment at the top of this file.
   local crates
   crates=$(cargo metadata --no-deps --format-version 1 | jq -r '
     (.workspace_root + "/") as $root
     | .packages[]
-    | select(.publish != [])
+    | select(.publish != [] and .name != "datafusion-sqllogictest")
     | "\(.name) \(.manifest_path | ltrimstr($root) | rtrimstr("/Cargo.toml"))"
   ')
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datafusion.apache.org
For additional commands, e-mail: commits-help@datafusion.apache.org