From f5ceeb114e205f7b0fc56577e168eae747635464 Mon Sep 17 00:00:00 2001 From: curtis lee fulton Date: Fri, 26 Jan 2024 08:19:56 -0800 Subject: [PATCH 1/2] fix: #9010 - Optimizer schema change assert error has incorrect error --- datafusion/optimizer/src/optimizer.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datafusion/optimizer/src/optimizer.rs b/datafusion/optimizer/src/optimizer.rs index f53e70ab6489..37899b58b292 100644 --- a/datafusion/optimizer/src/optimizer.rs +++ b/datafusion/optimizer/src/optimizer.rs @@ -294,7 +294,7 @@ impl Optimizer { self.optimize_recursively(rule, &new_plan, config) .and_then(|plan| { if let Some(plan) = &plan { - assert_schema_is_the_same(rule.name(), &new_plan, plan)?; + assert_schema_is_the_same(rule.name(), plan, &new_plan)?; } Ok(plan) }); From bea1f4d866437e81f561f1301e0f0527358847a8 Mon Sep 17 00:00:00 2001 From: curtis lee fulton Date: Fri, 26 Jan 2024 09:46:49 -0800 Subject: [PATCH 2/2] test: #9010 flip expected order of schema change errors --- datafusion/optimizer/src/optimizer.rs | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/datafusion/optimizer/src/optimizer.rs b/datafusion/optimizer/src/optimizer.rs index 37899b58b292..a192348f6936 100644 --- a/datafusion/optimizer/src/optimizer.rs +++ b/datafusion/optimizer/src/optimizer.rs @@ -501,15 +501,14 @@ mod tests { let err = opt.optimize(&plan, &config, &observe).unwrap_err(); assert_eq!( "Optimizer rule 'get table_scan rule' failed\ncaused by\nget table_scan rule\ncaused by\n\ - Internal error: Failed due to a difference in schemas, \ - original schema: DFSchema { fields: [], metadata: {}, functional_dependencies: FunctionalDependencies { deps: [] } }, \ - new schema: DFSchema { fields: [\ - DFField { qualifier: Some(Bare { table: \"test\" }), field: Field { name: \"a\", data_type: UInt32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} } }, \ - DFField { qualifier: Some(Bare { table: \"test\" }), field: Field { name: \"b\", data_type: UInt32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} } }, \ - DFField { qualifier: Some(Bare { table: \"test\" }), field: Field { name: \"c\", data_type: UInt32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} } }], \ - metadata: {}, functional_dependencies: FunctionalDependencies { deps: [] } }.\ - \nThis was likely caused by a bug in DataFusion's code \ - and we would welcome that you file an bug report in our issue tracker", + Internal error: Failed due to a difference in schemas, \ + original schema: DFSchema { fields: [\ + DFField { qualifier: Some(Bare { table: \"test\" }), field: Field { name: \"a\", data_type: UInt32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} } }, \ + DFField { qualifier: Some(Bare { table: \"test\" }), field: Field { name: \"b\", data_type: UInt32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} } }, \ + DFField { qualifier: Some(Bare { table: \"test\" }), field: Field { name: \"c\", data_type: UInt32, nullable: false, dict_id: 0, dict_is_ordered: false, metadata: {} } }], \ + metadata: {}, functional_dependencies: FunctionalDependencies { deps: [] } }, \ + new schema: DFSchema { fields: [], metadata: {}, functional_dependencies: FunctionalDependencies { deps: [] } }.\ + \nThis was likely caused by a bug in DataFusion's code and we would welcome that you file an bug report in our issue tracker", err.strip_backtrace() ); }