Skip to content

Commit cb74485

Browse files
authored
[datafusion] prepend physical_optimizer_rule before other rules (#2114)
* [datafusion] prepend physical_optimizer_rule before the other rules This is a bug fix that was introduced in #2004 Which change the order that optimizers are registered. The reason for this is described as a comment few lines above.
1 parent db5fa3a commit cb74485

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

crates/storage-query-datafusion/src/context.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use datafusion::error::DataFusionError;
1818
use datafusion::execution::context::SQLOptions;
1919
use datafusion::execution::runtime_env::{RuntimeConfig, RuntimeEnv};
2020
use datafusion::execution::SessionStateBuilder;
21-
use datafusion::physical_optimizer::PhysicalOptimizerRule;
21+
use datafusion::physical_optimizer::optimizer::PhysicalOptimizer;
2222
use datafusion::physical_plan::SendableRecordBatchStream;
2323
use datafusion::prelude::{SessionConfig, SessionContext};
2424

@@ -225,13 +225,14 @@ impl QueryContext {
225225
// A far more involved but potentially more robust solution would be wrap the SymmetricHashJoin in a ProjectionExec
226226
// If this would become an issue for any reason, then we can explore that alternative.
227227
//
228-
let physical_optimizers: Vec<Arc<dyn PhysicalOptimizerRule + Send + Sync>> =
229-
vec![Arc::new(physical_optimizer::JoinRewrite::new())];
228+
let join_rewrite = Arc::new(physical_optimizer::JoinRewrite::new());
229+
let mut default_physical_optimizer_rules = PhysicalOptimizer::default().rules;
230+
default_physical_optimizer_rules.insert(0, join_rewrite);
230231

231-
state_builder = state_builder.with_physical_optimizer_rules(physical_optimizers);
232+
state_builder =
233+
state_builder.with_physical_optimizer_rules(default_physical_optimizer_rules);
232234

233235
let state = state_builder.build();
234-
235236
let ctx = SessionContext::new_with_state(state);
236237

237238
let sql_options = SQLOptions::new()

0 commit comments

Comments
 (0)