diff --git a/datafusion/core/src/physical_plan/planner.rs b/datafusion/core/src/physical_plan/planner.rs index 65b4a6ed462c1..b6269a560386c 100644 --- a/datafusion/core/src/physical_plan/planner.rs +++ b/datafusion/core/src/physical_plan/planner.rs @@ -1892,8 +1892,7 @@ mod tests { fn make_session_state() -> SessionState { let runtime = Arc::new(RuntimeEnv::default()); let config = SessionConfig::new().with_target_partitions(4); - // TODO we should really test that no optimizer rules are failing here - // let config = config.set_bool(crate::config::OPT_OPTIMIZER_SKIP_FAILED_RULES, false); + let config = config.set_bool("datafusion.optimizer.skip_failed_rules", false); SessionState::with_config_rt(config, runtime) } @@ -2191,7 +2190,12 @@ mod tests { .build()?; let e = plan(&logical_plan).await.unwrap_err().to_string(); - assert_contains!(&e, "The data type inlist should be same, the value type is Boolean, one of list expr type is Struct([Field { name: \"foo\", data_type: Boolean, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }])"); + assert_contains!( + &e, + r#"type_coercion +caused by +Internal error: Optimizer rule 'type_coercion' failed due to unexpected error: Error during planning: Can not find compatible types to compare Boolean with [Struct([Field { name: "foo", data_type: Boolean, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} }]), Utf8]. This was likely caused by a bug in DataFusion's code and we would welcome that you file an bug report in our issue tracker"# + ); Ok(()) } diff --git a/datafusion/core/tests/sql/timestamp.rs b/datafusion/core/tests/sql/timestamp.rs index fc9b99f14dd0e..128ee1639e3f9 100644 --- a/datafusion/core/tests/sql/timestamp.rs +++ b/datafusion/core/tests/sql/timestamp.rs @@ -17,6 +17,7 @@ use super::*; use datafusion::from_slice::FromSlice; +use datafusion_common::ScalarValue; use std::ops::Add; #[tokio::test] @@ -1046,7 +1047,11 @@ async fn sub_interval_day() -> Result<()> { #[tokio::test] async fn cast_string_to_time() { - let ctx = SessionContext::new(); + let config = SessionConfig::new().set( + "datafusion.optimizer.skip_failed_rules", + ScalarValue::Boolean(Some(false)), + ); + let ctx = SessionContext::with_config(config); let sql = "select \ time '08:09:10.123456789' as time_nano, \ @@ -1070,7 +1075,9 @@ async fn cast_string_to_time() { let result = try_execute_to_batches(&ctx, sql).await; assert_eq!( result.err().unwrap().to_string(), - "Arrow error: Cast error: Cannot cast string 'not a time' to value of Time64(Nanosecond) type" + "simplify_expressions\ncaused by\nInternal error: Optimizer rule 'simplify_expressions' failed due to unexpected error: \ + Arrow error: Cast error: Cannot cast string 'not a time' to value of Time64(Nanosecond) type. \ + This was likely caused by a bug in DataFusion's code and we would welcome that you file an bug report in our issue tracker" ); // An invalid time @@ -1078,7 +1085,9 @@ async fn cast_string_to_time() { let result = try_execute_to_batches(&ctx, sql).await; assert_eq!( result.err().unwrap().to_string(), - "Arrow error: Cast error: Cannot cast string '24:01:02' to value of Time64(Nanosecond) type" + "simplify_expressions\ncaused by\nInternal error: Optimizer rule 'simplify_expressions' failed due to unexpected error: \ + Arrow error: Cast error: Cannot cast string '24:01:02' to value of Time64(Nanosecond) type. \ + This was likely caused by a bug in DataFusion's code and we would welcome that you file an bug report in our issue tracker" ); }