@@ -283,17 +283,14 @@ pub fn optimize_query(opt_ctx: OptimizerContext, mut s_expr: SExpr) -> Result<SE
283
283
enable_distributed_query,
284
284
) ?;
285
285
286
+ if opt_ctx. enable_join_reorder {
287
+ s_expr =
288
+ RecursiveOptimizer :: new ( [ RuleID :: CommuteJoin ] . as_slice ( ) , & opt_ctx) . run ( & s_expr) ?;
289
+ }
290
+
286
291
// Cascades optimizer may fail due to timeout, fallback to heuristic optimizer in this case.
287
292
s_expr = match cascades. optimize ( s_expr. clone ( ) ) {
288
293
Ok ( mut s_expr) => {
289
- let rules = if opt_ctx. enable_join_reorder {
290
- [ RuleID :: EliminateEvalScalar , RuleID :: CommuteJoin ] . as_slice ( )
291
- } else {
292
- [ RuleID :: EliminateEvalScalar ] . as_slice ( )
293
- } ;
294
-
295
- s_expr = RecursiveOptimizer :: new ( rules, & opt_ctx) . run ( & s_expr) ?;
296
-
297
294
// Push down sort and limit
298
295
// TODO(leiysky): do this optimization in cascades optimizer
299
296
if enable_distributed_query {
@@ -308,10 +305,6 @@ pub fn optimize_query(opt_ctx: OptimizerContext, mut s_expr: SExpr) -> Result<SE
308
305
"CascadesOptimizer failed, fallback to heuristic optimizer: {}" ,
309
306
e
310
307
) ;
311
-
312
- s_expr =
313
- RecursiveOptimizer :: new ( & [ RuleID :: EliminateEvalScalar ] , & opt_ctx) . run ( & s_expr) ?;
314
-
315
308
if enable_distributed_query {
316
309
s_expr = optimize_distributed_query ( opt_ctx. table_ctx . clone ( ) , & s_expr) ?;
317
310
}
@@ -320,6 +313,9 @@ pub fn optimize_query(opt_ctx: OptimizerContext, mut s_expr: SExpr) -> Result<SE
320
313
}
321
314
} ;
322
315
316
+ s_expr =
317
+ RecursiveOptimizer :: new ( [ RuleID :: EliminateEvalScalar ] . as_slice ( ) , & opt_ctx) . run ( & s_expr) ?;
318
+
323
319
Ok ( s_expr)
324
320
}
325
321
0 commit comments