diff --git a/datafusion/common/Cargo.toml b/datafusion/common/Cargo.toml index c8ed7a034ccf..8842894b745f 100644 --- a/datafusion/common/Cargo.toml +++ b/datafusion/common/Cargo.toml @@ -36,6 +36,7 @@ path = "src/lib.rs" avro = ["apache-avro"] default = [] jit = ["cranelift-module"] +optimizer_failed_rules = [] pyarrow = ["pyo3", "arrow/pyarrow"] [dependencies] diff --git a/datafusion/core/Cargo.toml b/datafusion/core/Cargo.toml index 6512db0ae922..8eebb9adfd51 100644 --- a/datafusion/core/Cargo.toml +++ b/datafusion/core/Cargo.toml @@ -46,6 +46,7 @@ default = ["crypto_expressions", "regex_expressions", "unicode_expressions"] force_hash_collisions = [] # Used to enable JIT code generation jit = ["datafusion-jit", "datafusion-row/jit"] +optimizer_failed_rules = [] pyarrow = ["pyo3", "arrow/pyarrow", "datafusion-common/pyarrow"] regex_expressions = ["datafusion-physical-expr/regex_expressions"] # Used to enable scheduler diff --git a/datafusion/core/src/config.rs b/datafusion/core/src/config.rs index e058f5c72bd4..0f9cfce342a5 100644 --- a/datafusion/core/src/config.rs +++ b/datafusion/core/src/config.rs @@ -237,11 +237,17 @@ impl BuiltInConfigs { to reduce the number of rows decoded.", false, ), + // By default tests run with ignoring optimizer errors. To make errors visible need to run the project + // with enabled 'optimizer_failed_rules' configuration + // cargo test --features "optimizer_failed_rules" ConfigDefinition::new_bool( OPT_OPTIMIZER_SKIP_FAILED_RULES, "When set to true, the logical plan optimizer will produce warning \ messages if any optimization rules produce errors and then proceed to the next \ rule. When set to false, any rules that produce errors will cause the query to fail.", + #[cfg(feature = "optimizer_failed_rules")] + false, + #[cfg(not(feature = "optimizer_failed_rules"))] true ), ConfigDefinition::new_u64( diff --git a/datafusion/expr/Cargo.toml b/datafusion/expr/Cargo.toml index d3b348c4bcb3..7c790f3f4a49 100644 --- a/datafusion/expr/Cargo.toml +++ b/datafusion/expr/Cargo.toml @@ -33,6 +33,7 @@ name = "datafusion_expr" path = "src/lib.rs" [features] +optimizer_failed_rules = [] [dependencies] ahash = { version = "0.8", default-features = false, features = ["runtime-rng"] } diff --git a/datafusion/optimizer/Cargo.toml b/datafusion/optimizer/Cargo.toml index e07d798caf8d..699ab7273abb 100644 --- a/datafusion/optimizer/Cargo.toml +++ b/datafusion/optimizer/Cargo.toml @@ -34,6 +34,7 @@ path = "src/lib.rs" [features] default = ["unicode_expressions"] +optimizer_failed_rules = [] unicode_expressions = [] [dependencies] diff --git a/datafusion/physical-expr/Cargo.toml b/datafusion/physical-expr/Cargo.toml index ba4dc0b036a9..ec5d70460938 100644 --- a/datafusion/physical-expr/Cargo.toml +++ b/datafusion/physical-expr/Cargo.toml @@ -35,6 +35,7 @@ path = "src/lib.rs" [features] crypto_expressions = ["md-5", "sha2", "blake2", "blake3"] default = ["crypto_expressions", "regex_expressions", "unicode_expressions"] +optimizer_failed_rules = [] regex_expressions = ["regex"] unicode_expressions = ["unicode-segmentation"] diff --git a/datafusion/row/Cargo.toml b/datafusion/row/Cargo.toml index 52e6e50c7e85..cb5d0b91a79a 100644 --- a/datafusion/row/Cargo.toml +++ b/datafusion/row/Cargo.toml @@ -35,6 +35,7 @@ path = "src/lib.rs" [features] # Used to enable JIT code generation jit = ["datafusion-jit"] +optimizer_failed_rules = [] [dependencies] arrow = "25.0.0" diff --git a/datafusion/sql/Cargo.toml b/datafusion/sql/Cargo.toml index 4a88a01e31b0..9f6ad14cf41d 100644 --- a/datafusion/sql/Cargo.toml +++ b/datafusion/sql/Cargo.toml @@ -34,6 +34,7 @@ path = "src/lib.rs" [features] default = ["unicode_expressions"] +optimizer_failed_rules = [] unicode_expressions = [] [dependencies]