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

wayne pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new d896000ad3 Add CI compile checks for feature flags in 
datafusion-functions (#9772)
d896000ad3 is described below

commit d896000ad3111e46d1b3e53b03c9a10092b51e65
Author: Andrew Lamb <[email protected]>
AuthorDate: Sat Mar 30 12:54:26 2024 -0400

    Add CI compile checks for feature flags in datafusion-functions (#9772)
    
    * Add CI checks for feature flags
    
    * Fix builds
    
    * Move function benchmark to datafusion-functions crate
    
    * Less aggressive ci checks
    
    * Improve doc
    
    * Fix compilation of datafusion-array
    
    * toml format
    
    * Update datafusion/functions-array/benches/array_expression.rs
---
 .github/workflows/rust.yml                         | 59 +++++++++++++++++-----
 datafusion/core/Cargo.toml                         |  7 ++-
 datafusion/functions-array/Cargo.toml              |  7 +++
 .../benches/array_expression.rs                    |  4 +-
 datafusion/functions/Cargo.toml                    |  4 ++
 5 files changed, 60 insertions(+), 21 deletions(-)

diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml
index 07c46351e9..ffd45b9777 100644
--- a/.github/workflows/rust.yml
+++ b/.github/workflows/rust.yml
@@ -65,42 +65,73 @@ jobs:
           # this key equals the ones on `linux-build-lib` for re-use
           key: cargo-cache-benchmark-${{ hashFiles('datafusion/**/Cargo.toml', 
'benchmarks/Cargo.toml', 'datafusion-cli/Cargo.toml') }}
 
-      - name: Check workspace without default features
+      - name: Check datafusion without default features
+        # Some of the test binaries require the parquet feature still
+        #run: cargo check --all-targets --no-default-features -p datafusion
         run: cargo check --no-default-features -p datafusion
 
       - name: Check datafusion-common without default features
-        run: cargo check --tests --no-default-features -p datafusion-common
+        run: cargo check --all-targets --no-default-features -p 
datafusion-common
+
+      - name: Check datafusion-functions
+        run: cargo check --all-targets --no-default-features -p 
datafusion-functions
 
       - name: Check workspace in debug mode
         run: cargo check
 
-      - name: Check workspace with all features
+      - name: Check workspace with avro,json features
         run: cargo check --workspace --benches --features avro,json
 
+      - name: Check Cargo.lock for datafusion-cli
+        run: |
+          # If this test fails, try running `cargo update` in the 
`datafusion-cli` directory
+          # and check in the updated Cargo.lock file.
+          cargo check --manifest-path datafusion-cli/Cargo.toml --locked
+
       # Ensure that the datafusion crate can be built with only a subset of 
the function
       # packages enabled.
-      - name: Check function packages (array_expressions)
+      - name: Check datafusion (array_expressions)
         run: cargo check --no-default-features --features=array_expressions -p 
datafusion
 
-      - name: Check function packages (datetime_expressions)
+      - name: Check datafusion (crypto)
+        run: cargo check --no-default-features --features=crypto_expressions 
-p datafusion
+
+      - name: Check datafusion (datetime_expressions)
         run: cargo check --no-default-features --features=datetime_expressions 
-p datafusion
 
-      - name: Check function packages (encoding_expressions)
+      - name: Check datafusion (encoding_expressions)
         run: cargo check --no-default-features --features=encoding_expressions 
-p datafusion
 
-      - name: Check function packages (math_expressions)
+      - name: Check datafusion (math_expressions)
         run: cargo check --no-default-features --features=math_expressions -p 
datafusion
 
-      - name: Check function packages (regex_expressions)
+      - name: Check datafusion (regex_expressions)
         run: cargo check --no-default-features --features=regex_expressions -p 
datafusion
 
-      - name: Check Cargo.lock for datafusion-cli
-        run: |
-          # If this test fails, try running `cargo update` in the 
`datafusion-cli` directory
-          # and check in the updated Cargo.lock file.
-          cargo check --manifest-path datafusion-cli/Cargo.toml --locked
+      - name: Check datafusion (string_expressions)
+        run: cargo check --no-default-features --features=string_expressions 
-p datafusion
+
+      # Ensure that the datafusion-functions crate can be built with only a 
subset of the function
+      # packages enabled.
+      - name: Check datafusion-functions (crypto)
+        run: cargo check --all-targets --no-default-features 
--features=crypto_expressions -p datafusion-functions
+
+      - name: Check datafusion-functions (datetime_expressions)
+        run: cargo check --all-targets --no-default-features 
--features=datetime_expressions -p datafusion-functions
+
+      - name: Check datafusion-functions (encoding_expressions)
+        run: cargo check --all-targets --no-default-features 
--features=encoding_expressions -p datafusion-functions
+
+      - name: Check datafusion-functions (math_expressions)
+        run: cargo check --all-targets --no-default-features 
--features=math_expressions -p datafusion-functions
+
+      - name: Check datafusion-functions (regex_expressions)
+        run: cargo check --all-targets --no-default-features 
--features=regex_expressions -p datafusion-functions
+
+      - name: Check datafusion-functions (string_expressions)
+        run: cargo check --all-targets --no-default-features 
--features=string_expressions -p datafusion-functions
 
-  # test the crate
+  # Run tests
   linux-test:
     name: cargo test (amd64)
     needs: [ linux-build-lib ]
diff --git a/datafusion/core/Cargo.toml b/datafusion/core/Cargo.toml
index fbbe047880..18946334db 100644
--- a/datafusion/core/Cargo.toml
+++ b/datafusion/core/Cargo.toml
@@ -50,6 +50,7 @@ default = [
     "datetime_expressions",
     "encoding_expressions",
     "regex_expressions",
+    "string_expressions",
     "unicode_expressions",
     "compression",
     "parquet",
@@ -66,6 +67,7 @@ regex_expressions = [
     "datafusion-functions/regex_expressions",
 ]
 serde = ["arrow-schema/serde"]
+string_expressions = ["datafusion-functions/string_expressions"]
 unicode_expressions = [
     "datafusion-physical-expr/unicode_expressions",
     "datafusion-optimizer/unicode_expressions",
@@ -188,6 +190,7 @@ name = "physical_plan"
 [[bench]]
 harness = false
 name = "parquet_query_sql"
+required-features = ["parquet"]
 
 [[bench]]
 harness = false
@@ -204,7 +207,3 @@ name = "sort"
 [[bench]]
 harness = false
 name = "topk_aggregate"
-
-[[bench]]
-harness = false
-name = "array_expression"
diff --git a/datafusion/functions-array/Cargo.toml 
b/datafusion/functions-array/Cargo.toml
index 80c0e5e187..6ef9c6b055 100644
--- a/datafusion/functions-array/Cargo.toml
+++ b/datafusion/functions-array/Cargo.toml
@@ -49,3 +49,10 @@ datafusion-functions = { workspace = true }
 itertools = { version = "0.12", features = ["use_std"] }
 log = { workspace = true }
 paste = "1.0.14"
+
+[dev-dependencies]
+criterion = { version = "0.5", features = ["async_tokio"] }
+
+[[bench]]
+harness = false
+name = "array_expression"
diff --git a/datafusion/core/benches/array_expression.rs 
b/datafusion/functions-array/benches/array_expression.rs
similarity index 93%
rename from datafusion/core/benches/array_expression.rs
rename to datafusion/functions-array/benches/array_expression.rs
index c980329620..48b829793c 100644
--- a/datafusion/core/benches/array_expression.rs
+++ b/datafusion/functions-array/benches/array_expression.rs
@@ -18,12 +18,10 @@
 #[macro_use]
 extern crate criterion;
 extern crate arrow;
-extern crate datafusion;
 
-mod data_utils;
 use crate::criterion::Criterion;
-use datafusion::functions_array::expr_fn::{array_replace_all, make_array};
 use datafusion_expr::lit;
+use datafusion_functions_array::expr_fn::{array_replace_all, make_array};
 
 fn criterion_benchmark(c: &mut Criterion) {
     // Construct large arrays for benchmarking
diff --git a/datafusion/functions/Cargo.toml b/datafusion/functions/Cargo.toml
index 3ae3061012..51452b9d4c 100644
--- a/datafusion/functions/Cargo.toml
+++ b/datafusion/functions/Cargo.toml
@@ -90,15 +90,19 @@ tokio = { workspace = true, features = ["macros", "rt", 
"sync"] }
 [[bench]]
 harness = false
 name = "to_timestamp"
+required-features = ["datetime_expressions"]
 
 [[bench]]
 harness = false
 name = "regx"
+required-features = ["regex_expressions"]
 
 [[bench]]
 harness = false
 name = "make_date"
+required-features = ["datetime_expressions"]
 
 [[bench]]
 harness = false
 name = "to_char"
+required-features = ["datetime_expressions"]

Reply via email to