Skip to content

feat: change Expr OuterReferenceColumn to Box type for reducing expr struct size #16771

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

zhuqi-lucas
Copy link
Contributor

@zhuqi-lucas zhuqi-lucas commented Jul 14, 2025

Which issue does this PR close?

Continue to reduce the Expr struct size.

Rationale for this change

Continue to reduce the Expr struct size.

What changes are included in this PR?

Continue to reduce the Expr struct size.

Are these changes tested?

Yes

The size reduce from 128 to 112

Updated:

Continue reduce to 80 now!

Are there any user-facing changes?

No

@github-actions github-actions bot added sql SQL Planner logical-expr Logical plan and expressions physical-expr Changes to the physical-expr crates optimizer Optimizer rules core Core DataFusion crate sqllogictest SQL Logic Tests (.slt) substrait Changes to the substrait crate catalog Related to the catalog crate proto Related to proto crate labels Jul 14, 2025
@zhuqi-lucas zhuqi-lucas changed the title feat: change Expr Alias and OuterReferenceColumn to Box type for redu… feat: change Expr Alias and OuterReferenceColumn to Box type for reducing expr struct size Jul 14, 2025
Copy link
Contributor

@alamb alamb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @zhuqi-lucas -- this looks quite nice

I think it is an API change so I will mark the PR as such and I think it is a good improvement

However, given it is an API change I think we should

  1. Wait until DataFusion 50.0.0 (let's not make any more changes in DataFusion 49 that we are starting to prepare for)
  2. Update the upgrading guide in https://datafusion.apache.org/library-user-guide/upgrading.html to explain to people hw to change things

@@ -4009,12 +4009,12 @@ logical_plan
09)------------Unnest: lists[__unnest_placeholder(generate_series(Int64(1),outer_ref(t1.t1_int)))|depth=1] structs[]
10)--------------Projection: generate_series(Int64(1), CAST(outer_ref(t1.t1_int) AS Int64)) AS __unnest_placeholder(generate_series(Int64(1),outer_ref(t1.t1_int)))
11)----------------EmptyRelation
physical_plan_error This feature is not implemented: Physical plan does not support logical expression OuterReferenceColumn(UInt32, Column { relation: Some(Bare { table: "t1" }), name: "t1_int" })
physical_plan_error This feature is not implemented: Physical plan does not support logical expression OuterReferenceColumn((UInt32, Column { relation: Some(Bare { table: "t1" }), name: "t1_int" }))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you know why the plan changes? I don't think the extra () really adds much -- can we restore the original?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I changed it to OuterReference in latest PR, so it will use OuterReference instead of this change now, thanks!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Next step, we may can add debug/fmt for OuterReference to restore the original behaviour.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Restore all slt in latest PR, no diff from main branch.

@@ -3818,7 +3816,7 @@ mod test {
// If this test fails when you change `Expr`, please try
// `Box`ing the fields to make `Expr` smaller
// See https://github.com/apache/datafusion/issues/16199 for details
assert_eq!(size_of::<Expr>(), 128);
assert_eq!(size_of::<Expr>(), 112);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change saves 16 bytes per Expr. Nice.

I will run some planning benchmarks and see if we can see any difference

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @alamb , i am doing more amazing experiment, try to reduce from 128 to 80, so we can save 48 bytes per Expr!

@@ -279,7 +279,7 @@ use sqlparser::ast::{
#[derive(Clone, PartialEq, PartialOrd, Eq, Debug, Hash)]
pub enum Expr {
/// An expression with a specific name.
Alias(Alias),
Alias(Box<Alias>),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another change that might be a bit less impactful would be to box the fields of Alias instead

So Alias {
expr: Box
..
}


It may be just as bad / worse though

@@ -362,7 +362,7 @@ pub enum Expr {
Placeholder(Placeholder),
/// A placeholder which holds a reference to a qualified field
/// in the outer query, used for correlated sub queries.
OuterReferenceColumn(DataType, Column),
OuterReferenceColumn(Box<(DataType, Column)>),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we are going to make this change anyways, can we also pull this into a named struct rather than a unnamed tuple

like

struct OuterReference {
 // fields here
}

enum Expr {
... 
    OuterReferenceColumn(OuterReference),
...
}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @alamb for this good suggestion, addressed in latest PR.

@alamb
Copy link
Contributor

alamb commented Jul 14, 2025

🤖 ./gh_compare_branch_bench.sh Benchmark Script Running
Linux aal-dev 6.11.0-1016-gcp #16~24.04.1-Ubuntu SMP Wed May 28 02:40:52 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing reduce_expr_size (d62d060) to 3291e4e diff
BENCH_NAME=sql_planner
BENCH_COMMAND=cargo bench --bench sql_planner
BENCH_FILTER=
BENCH_BRANCH_NAME=reduce_expr_size
Results will be posted here when complete

@alamb alamb added the api change Changes the API exposed to users of the crate label Jul 14, 2025
@alamb
Copy link
Contributor

alamb commented Jul 14, 2025

🤖: Benchmark completed

Details

group                                         main                                   reduce_expr_size
-----                                         ----                                   ----------------
logical_aggregate_with_join                   1.04    641.1±3.04µs        ? ?/sec    1.00    615.9±3.14µs        ? ?/sec
logical_select_all_from_1000                  1.00     11.4±0.06ms        ? ?/sec    1.01     11.4±0.04ms        ? ?/sec
logical_select_one_from_700                   1.06    428.1±3.01µs        ? ?/sec    1.00    405.3±2.68µs        ? ?/sec
logical_trivial_join_high_numbered_columns    1.05    383.1±1.72µs        ? ?/sec    1.00    364.9±2.48µs        ? ?/sec
logical_trivial_join_low_numbered_columns     1.05    367.9±1.93µs        ? ?/sec    1.00    350.9±1.49µs        ? ?/sec
physical_intersection                         1.04    850.4±5.13µs        ? ?/sec    1.00    818.8±5.07µs        ? ?/sec
physical_join_consider_sort                   1.05   1418.7±7.80µs        ? ?/sec    1.00   1348.9±8.64µs        ? ?/sec
physical_join_distinct                        1.05    358.3±0.94µs        ? ?/sec    1.00    341.1±1.58µs        ? ?/sec
physical_many_self_joins                      1.08     10.7±0.07ms        ? ?/sec    1.00      9.9±0.05ms        ? ?/sec
physical_plan_clickbench_all                  1.01    187.2±1.44ms        ? ?/sec    1.00    185.2±1.54ms        ? ?/sec
physical_plan_clickbench_q1                   1.00      2.5±0.02ms        ? ?/sec    1.00      2.5±0.02ms        ? ?/sec
physical_plan_clickbench_q10                  1.00      3.4±0.03ms        ? ?/sec    1.00      3.4±0.03ms        ? ?/sec
physical_plan_clickbench_q11                  1.00      3.6±0.03ms        ? ?/sec    1.00      3.5±0.03ms        ? ?/sec
physical_plan_clickbench_q12                  1.01      3.7±0.04ms        ? ?/sec    1.00      3.7±0.03ms        ? ?/sec
physical_plan_clickbench_q13                  1.01      3.4±0.03ms        ? ?/sec    1.00      3.3±0.03ms        ? ?/sec
physical_plan_clickbench_q14                  1.01      3.6±0.03ms        ? ?/sec    1.00      3.5±0.03ms        ? ?/sec
physical_plan_clickbench_q15                  1.01      3.4±0.03ms        ? ?/sec    1.00      3.4±0.03ms        ? ?/sec
physical_plan_clickbench_q16                  1.01      3.3±0.02ms        ? ?/sec    1.00      3.3±0.04ms        ? ?/sec
physical_plan_clickbench_q17                  1.00      3.4±0.03ms        ? ?/sec    1.00      3.4±0.03ms        ? ?/sec
physical_plan_clickbench_q18                  1.00      2.9±0.03ms        ? ?/sec    1.00      2.9±0.02ms        ? ?/sec
physical_plan_clickbench_q19                  1.01      3.8±0.05ms        ? ?/sec    1.00      3.8±0.04ms        ? ?/sec
physical_plan_clickbench_q2                   1.00      2.9±0.02ms        ? ?/sec    1.00      2.9±0.03ms        ? ?/sec
physical_plan_clickbench_q20                  1.00      2.7±0.03ms        ? ?/sec    1.00      2.7±0.06ms        ? ?/sec
physical_plan_clickbench_q21                  1.01      3.0±0.03ms        ? ?/sec    1.00      2.9±0.03ms        ? ?/sec
physical_plan_clickbench_q22                  1.00      3.6±0.04ms        ? ?/sec    1.00      3.5±0.09ms        ? ?/sec
physical_plan_clickbench_q23                  1.00      3.8±0.03ms        ? ?/sec    1.00      3.8±0.04ms        ? ?/sec
physical_plan_clickbench_q24                  1.01      4.3±0.05ms        ? ?/sec    1.00      4.3±0.04ms        ? ?/sec
physical_plan_clickbench_q25                  1.01      3.1±0.03ms        ? ?/sec    1.00      3.0±0.02ms        ? ?/sec
physical_plan_clickbench_q26                  1.01      2.9±0.03ms        ? ?/sec    1.00      2.9±0.02ms        ? ?/sec
physical_plan_clickbench_q27                  1.00      3.1±0.03ms        ? ?/sec    1.00      3.1±0.02ms        ? ?/sec
physical_plan_clickbench_q28                  1.01      3.9±0.04ms        ? ?/sec    1.00      3.8±0.03ms        ? ?/sec
physical_plan_clickbench_q29                  1.01      4.5±0.06ms        ? ?/sec    1.00      4.5±0.04ms        ? ?/sec
physical_plan_clickbench_q3                   1.00      2.9±0.03ms        ? ?/sec    1.01      2.9±0.13ms        ? ?/sec
physical_plan_clickbench_q30                  1.02     12.9±0.15ms        ? ?/sec    1.00     12.7±0.14ms        ? ?/sec
physical_plan_clickbench_q31                  1.01      3.8±0.04ms        ? ?/sec    1.00      3.8±0.04ms        ? ?/sec
physical_plan_clickbench_q32                  1.01      3.9±0.05ms        ? ?/sec    1.00      3.8±0.04ms        ? ?/sec
physical_plan_clickbench_q33                  1.01      3.4±0.04ms        ? ?/sec    1.00      3.4±0.05ms        ? ?/sec
physical_plan_clickbench_q34                  1.01      3.1±0.03ms        ? ?/sec    1.00      3.0±0.04ms        ? ?/sec
physical_plan_clickbench_q35                  1.00      3.2±0.03ms        ? ?/sec    1.00      3.2±0.03ms        ? ?/sec
physical_plan_clickbench_q36                  1.01      3.9±0.11ms        ? ?/sec    1.00      3.9±0.04ms        ? ?/sec
physical_plan_clickbench_q37                  1.00      3.9±0.04ms        ? ?/sec    1.00      3.9±0.06ms        ? ?/sec
physical_plan_clickbench_q38                  1.00      3.9±0.05ms        ? ?/sec    1.00      3.8±0.03ms        ? ?/sec
physical_plan_clickbench_q39                  1.00      3.7±0.03ms        ? ?/sec    1.00      3.7±0.05ms        ? ?/sec
physical_plan_clickbench_q4                   1.00      2.6±0.03ms        ? ?/sec    1.00      2.6±0.02ms        ? ?/sec
physical_plan_clickbench_q40                  1.00      4.3±0.05ms        ? ?/sec    1.00      4.3±0.06ms        ? ?/sec
physical_plan_clickbench_q41                  1.00      3.9±0.04ms        ? ?/sec    1.00      3.9±0.04ms        ? ?/sec
physical_plan_clickbench_q42                  1.01      3.8±0.04ms        ? ?/sec    1.00      3.8±0.04ms        ? ?/sec
physical_plan_clickbench_q43                  1.00      4.2±0.05ms        ? ?/sec    1.00      4.2±0.04ms        ? ?/sec
physical_plan_clickbench_q44                  1.01      2.8±0.02ms        ? ?/sec    1.00      2.7±0.02ms        ? ?/sec
physical_plan_clickbench_q45                  1.01      2.8±0.02ms        ? ?/sec    1.00      2.7±0.03ms        ? ?/sec
physical_plan_clickbench_q46                  1.01      3.2±0.03ms        ? ?/sec    1.00      3.1±0.03ms        ? ?/sec
physical_plan_clickbench_q47                  1.00      3.8±0.04ms        ? ?/sec    1.00      3.7±0.04ms        ? ?/sec
physical_plan_clickbench_q48                  1.01      4.5±0.04ms        ? ?/sec    1.00      4.4±0.04ms        ? ?/sec
physical_plan_clickbench_q49                  1.01      4.7±0.06ms        ? ?/sec    1.00      4.7±0.05ms        ? ?/sec
physical_plan_clickbench_q5                   1.00      2.8±0.03ms        ? ?/sec    1.00      2.8±0.02ms        ? ?/sec
physical_plan_clickbench_q50                  1.01      4.2±0.06ms        ? ?/sec    1.00      4.1±0.05ms        ? ?/sec
physical_plan_clickbench_q51                  1.01      3.2±0.03ms        ? ?/sec    1.00      3.2±0.03ms        ? ?/sec
physical_plan_clickbench_q6                   1.01      2.8±0.02ms        ? ?/sec    1.00      2.8±0.02ms        ? ?/sec
physical_plan_clickbench_q7                   1.01      2.6±0.02ms        ? ?/sec    1.00      2.5±0.02ms        ? ?/sec
physical_plan_clickbench_q8                   1.00      3.4±0.04ms        ? ?/sec    1.00      3.4±0.03ms        ? ?/sec
physical_plan_clickbench_q9                   1.01      3.3±0.03ms        ? ?/sec    1.00      3.2±0.03ms        ? ?/sec
physical_plan_tpcds_all                       1.01   1033.2±2.65ms        ? ?/sec    1.00   1026.0±3.38ms        ? ?/sec
physical_plan_tpch_all                        1.00     62.1±0.38ms        ? ?/sec    1.00     61.9±0.34ms        ? ?/sec
physical_plan_tpch_q1                         1.00      2.0±0.01ms        ? ?/sec    1.01      2.0±0.01ms        ? ?/sec
physical_plan_tpch_q10                        1.01      3.8±0.02ms        ? ?/sec    1.00      3.8±0.02ms        ? ?/sec
physical_plan_tpch_q11                        1.01      3.3±0.01ms        ? ?/sec    1.00      3.2±0.02ms        ? ?/sec
physical_plan_tpch_q12                        1.01  1781.3±12.28µs        ? ?/sec    1.00   1764.3±6.79µs        ? ?/sec
physical_plan_tpch_q13                        1.00   1442.1±8.82µs        ? ?/sec    1.01  1454.5±10.93µs        ? ?/sec
physical_plan_tpch_q14                        1.00  1919.5±20.30µs        ? ?/sec    1.00  1918.9±14.12µs        ? ?/sec
physical_plan_tpch_q16                        1.01      2.4±0.01ms        ? ?/sec    1.00      2.4±0.01ms        ? ?/sec
physical_plan_tpch_q17                        1.01      2.4±0.01ms        ? ?/sec    1.00      2.4±0.01ms        ? ?/sec
physical_plan_tpch_q18                        1.00      2.7±0.01ms        ? ?/sec    1.00      2.6±0.01ms        ? ?/sec
physical_plan_tpch_q19                        1.02      3.2±0.01ms        ? ?/sec    1.00      3.1±0.03ms        ? ?/sec
physical_plan_tpch_q2                         1.01      5.5±0.02ms        ? ?/sec    1.00      5.4±0.02ms        ? ?/sec
physical_plan_tpch_q20                        1.01      3.1±0.01ms        ? ?/sec    1.00      3.1±0.02ms        ? ?/sec
physical_plan_tpch_q21                        1.01      4.1±0.05ms        ? ?/sec    1.00      4.0±0.02ms        ? ?/sec
physical_plan_tpch_q22                        1.01      2.7±0.02ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
physical_plan_tpch_q3                         1.00      2.5±0.01ms        ? ?/sec    1.00      2.5±0.01ms        ? ?/sec
physical_plan_tpch_q4                         1.00   1509.9±9.88µs        ? ?/sec    1.00   1511.5±8.97µs        ? ?/sec
physical_plan_tpch_q5                         1.00      3.1±0.02ms        ? ?/sec    1.00      3.1±0.02ms        ? ?/sec
physical_plan_tpch_q6                         1.01    850.3±4.71µs        ? ?/sec    1.00    846.0±8.10µs        ? ?/sec
physical_plan_tpch_q7                         1.01      4.2±0.01ms        ? ?/sec    1.00      4.2±0.02ms        ? ?/sec
physical_plan_tpch_q8                         1.01      5.2±0.06ms        ? ?/sec    1.00      5.2±0.02ms        ? ?/sec
physical_plan_tpch_q9                         1.00      4.1±0.04ms        ? ?/sec    1.00      4.1±0.01ms        ? ?/sec
physical_select_aggregates_from_200           1.01     17.7±0.08ms        ? ?/sec    1.00     17.6±0.08ms        ? ?/sec
physical_select_all_from_1000                 1.01     25.1±0.08ms        ? ?/sec    1.00     24.8±0.11ms        ? ?/sec
physical_select_one_from_700                  1.08   1119.8±8.70µs        ? ?/sec    1.00   1034.4±5.66µs        ? ?/sec
physical_sorted_union_orderby                 1.00     42.1±0.27ms        ? ?/sec    1.01     42.4±0.28ms        ? ?/sec
physical_theta_join_consider_sort             1.03   1779.4±8.36µs        ? ?/sec    1.00   1719.7±7.17µs        ? ?/sec
physical_unnest_to_join                       1.03   1321.3±8.77µs        ? ?/sec    1.00  1278.5±12.47µs        ? ?/sec
with_param_values_many_columns                1.05    128.9±0.76µs        ? ?/sec    1.00    123.1±0.68µs        ? ?/sec

@zhuqi-lucas
Copy link
Contributor Author

Thanks @zhuqi-lucas -- this looks quite nice

I think it is an API change so I will mark the PR as such and I think it is a good improvement

However, given it is an API change I think we should

  1. Wait until DataFusion 50.0.0 (let's not make any more changes in DataFusion 49 that we are starting to prepare for)
  2. Update the upgrading guide in https://datafusion.apache.org/library-user-guide/upgrading.html to explain to people hw to change things

Thank you @alamb for review and i agree that we can do this for Datafusion 50.0.0, and since we have enough time, i want to do more improvement, try to reduce Expr more, from size 128 to 80, i am in progress now.

@github-actions github-actions bot added the functions Changes to functions implementation label Jul 15, 2025
@zhuqi-lucas zhuqi-lucas changed the title feat: change Expr Alias and OuterReferenceColumn to Box type for reducing expr struct size feat: change Expr Alias ,OuterReferenceColumn, Column to Box type for reducing expr struct size Jul 15, 2025
@zhuqi-lucas
Copy link
Contributor Author

Updated:

Successfully changed the size from 128 to 80 in latest PR.

@github-actions github-actions bot removed the sqllogictest SQL Logic Tests (.slt) label Jul 15, 2025
@alamb
Copy link
Contributor

alamb commented Jul 15, 2025

🤖 ./gh_compare_branch_bench.sh Benchmark Script Running
Linux aal-dev 6.11.0-1016-gcp #16~24.04.1-Ubuntu SMP Wed May 28 02:40:52 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing reduce_expr_size (45ca84c) to d1e6eb4 diff
BENCH_NAME=sql_planner
BENCH_COMMAND=cargo bench --bench sql_planner
BENCH_FILTER=
BENCH_BRANCH_NAME=reduce_expr_size
Results will be posted here when complete

@alamb
Copy link
Contributor

alamb commented Jul 15, 2025

🤖: Benchmark completed

Details

group                                         main                                   reduce_expr_size
-----                                         ----                                   ----------------
logical_aggregate_with_join                   1.03    637.9±3.29µs        ? ?/sec    1.00    620.2±6.47µs        ? ?/sec
logical_select_all_from_1000                  1.00     11.4±0.10ms        ? ?/sec    1.00     11.4±0.05ms        ? ?/sec
logical_select_one_from_700                   1.04    420.0±1.62µs        ? ?/sec    1.00    405.3±1.27µs        ? ?/sec
logical_trivial_join_high_numbered_columns    1.04    378.2±1.22µs        ? ?/sec    1.00    364.6±1.40µs        ? ?/sec
logical_trivial_join_low_numbered_columns     1.04    365.8±1.77µs        ? ?/sec    1.00    350.8±1.20µs        ? ?/sec
physical_intersection                         1.03    841.6±9.73µs        ? ?/sec    1.00    818.7±5.01µs        ? ?/sec
physical_join_consider_sort                   1.04  1403.8±15.17µs        ? ?/sec    1.00   1348.2±7.87µs        ? ?/sec
physical_join_distinct                        1.04    355.5±1.85µs        ? ?/sec    1.00    342.2±2.38µs        ? ?/sec
physical_many_self_joins                      1.05     10.5±0.06ms        ? ?/sec    1.00      9.9±0.04ms        ? ?/sec
physical_plan_clickbench_all                  1.00    186.3±1.54ms        ? ?/sec    1.01    189.1±2.61ms        ? ?/sec
physical_plan_clickbench_q1                   1.05      2.6±0.06ms        ? ?/sec    1.00      2.5±0.03ms        ? ?/sec
physical_plan_clickbench_q10                  1.01      3.4±0.03ms        ? ?/sec    1.00      3.3±0.04ms        ? ?/sec
physical_plan_clickbench_q11                  1.03      3.6±0.17ms        ? ?/sec    1.00      3.5±0.05ms        ? ?/sec
physical_plan_clickbench_q12                  1.01      3.7±0.04ms        ? ?/sec    1.00      3.7±0.04ms        ? ?/sec
physical_plan_clickbench_q13                  1.01      3.4±0.03ms        ? ?/sec    1.00      3.3±0.04ms        ? ?/sec
physical_plan_clickbench_q14                  1.02      3.6±0.08ms        ? ?/sec    1.00      3.5±0.05ms        ? ?/sec
physical_plan_clickbench_q15                  1.02      3.5±0.03ms        ? ?/sec    1.00      3.4±0.04ms        ? ?/sec
physical_plan_clickbench_q16                  1.03      3.3±0.09ms        ? ?/sec    1.00      3.3±0.05ms        ? ?/sec
physical_plan_clickbench_q17                  1.02      3.4±0.03ms        ? ?/sec    1.00      3.3±0.03ms        ? ?/sec
physical_plan_clickbench_q18                  1.04      3.0±0.09ms        ? ?/sec    1.00      2.9±0.03ms        ? ?/sec
physical_plan_clickbench_q19                  1.01      3.8±0.04ms        ? ?/sec    1.00      3.8±0.05ms        ? ?/sec
physical_plan_clickbench_q2                   1.01      2.9±0.03ms        ? ?/sec    1.00      2.9±0.03ms        ? ?/sec
physical_plan_clickbench_q20                  1.02      2.7±0.07ms        ? ?/sec    1.00      2.6±0.06ms        ? ?/sec
physical_plan_clickbench_q21                  1.01      3.0±0.02ms        ? ?/sec    1.00      2.9±0.05ms        ? ?/sec
physical_plan_clickbench_q22                  1.02      3.6±0.04ms        ? ?/sec    1.00      3.5±0.05ms        ? ?/sec
physical_plan_clickbench_q23                  1.02      3.9±0.09ms        ? ?/sec    1.00      3.8±0.04ms        ? ?/sec
physical_plan_clickbench_q24                  1.00      4.3±0.05ms        ? ?/sec    1.01      4.3±0.05ms        ? ?/sec
physical_plan_clickbench_q25                  1.04      3.1±0.08ms        ? ?/sec    1.00      3.0±0.03ms        ? ?/sec
physical_plan_clickbench_q26                  1.01      2.9±0.03ms        ? ?/sec    1.00      2.9±0.03ms        ? ?/sec
physical_plan_clickbench_q27                  1.00      3.1±0.02ms        ? ?/sec    1.00      3.0±0.03ms        ? ?/sec
physical_plan_clickbench_q28                  1.02      3.9±0.04ms        ? ?/sec    1.00      3.8±0.04ms        ? ?/sec
physical_plan_clickbench_q29                  1.00      4.5±0.05ms        ? ?/sec    1.00      4.5±0.07ms        ? ?/sec
physical_plan_clickbench_q3                   1.01      2.9±0.04ms        ? ?/sec    1.00      2.8±0.03ms        ? ?/sec
physical_plan_clickbench_q30                  1.00     12.7±0.17ms        ? ?/sec    1.00     12.7±0.13ms        ? ?/sec
physical_plan_clickbench_q31                  1.00      3.8±0.04ms        ? ?/sec    1.00      3.8±0.05ms        ? ?/sec
physical_plan_clickbench_q32                  1.01      3.8±0.03ms        ? ?/sec    1.00      3.8±0.04ms        ? ?/sec
physical_plan_clickbench_q33                  1.00      3.3±0.03ms        ? ?/sec    1.00      3.3±0.02ms        ? ?/sec
physical_plan_clickbench_q34                  1.00      3.0±0.03ms        ? ?/sec    1.00      3.0±0.03ms        ? ?/sec
physical_plan_clickbench_q35                  1.00      3.1±0.03ms        ? ?/sec    1.01      3.2±0.09ms        ? ?/sec
physical_plan_clickbench_q36                  1.00      3.9±0.04ms        ? ?/sec    1.00      3.9±0.06ms        ? ?/sec
physical_plan_clickbench_q37                  1.02      3.9±0.03ms        ? ?/sec    1.00      3.8±0.04ms        ? ?/sec
physical_plan_clickbench_q38                  1.02      3.9±0.03ms        ? ?/sec    1.00      3.8±0.03ms        ? ?/sec
physical_plan_clickbench_q39                  1.02      3.7±0.04ms        ? ?/sec    1.00      3.6±0.03ms        ? ?/sec
physical_plan_clickbench_q4                   1.01      2.6±0.03ms        ? ?/sec    1.00      2.6±0.03ms        ? ?/sec
physical_plan_clickbench_q40                  1.02      4.3±0.05ms        ? ?/sec    1.00      4.2±0.04ms        ? ?/sec
physical_plan_clickbench_q41                  1.01      3.9±0.03ms        ? ?/sec    1.00      3.8±0.06ms        ? ?/sec
physical_plan_clickbench_q42                  1.02      3.8±0.04ms        ? ?/sec    1.00      3.8±0.04ms        ? ?/sec
physical_plan_clickbench_q43                  1.01      4.2±0.06ms        ? ?/sec    1.00      4.2±0.05ms        ? ?/sec
physical_plan_clickbench_q44                  1.00      2.7±0.02ms        ? ?/sec    1.02      2.8±0.08ms        ? ?/sec
physical_plan_clickbench_q45                  1.00      2.8±0.03ms        ? ?/sec    1.00      2.7±0.03ms        ? ?/sec
physical_plan_clickbench_q46                  1.00      3.1±0.03ms        ? ?/sec    1.00      3.1±0.03ms        ? ?/sec
physical_plan_clickbench_q47                  1.01      3.7±0.04ms        ? ?/sec    1.00      3.7±0.03ms        ? ?/sec
physical_plan_clickbench_q48                  1.01      4.4±0.06ms        ? ?/sec    1.00      4.4±0.04ms        ? ?/sec
physical_plan_clickbench_q49                  1.03      4.8±0.11ms        ? ?/sec    1.00      4.6±0.05ms        ? ?/sec
physical_plan_clickbench_q5                   1.01      2.8±0.03ms        ? ?/sec    1.00      2.8±0.03ms        ? ?/sec
physical_plan_clickbench_q50                  1.03      4.2±0.06ms        ? ?/sec    1.00      4.1±0.03ms        ? ?/sec
physical_plan_clickbench_q51                  1.01      3.2±0.03ms        ? ?/sec    1.00      3.2±0.03ms        ? ?/sec
physical_plan_clickbench_q6                   1.02      2.8±0.03ms        ? ?/sec    1.00      2.8±0.03ms        ? ?/sec
physical_plan_clickbench_q7                   1.02      2.6±0.02ms        ? ?/sec    1.00      2.5±0.02ms        ? ?/sec
physical_plan_clickbench_q8                   1.01      3.4±0.03ms        ? ?/sec    1.00      3.4±0.03ms        ? ?/sec
physical_plan_clickbench_q9                   1.04      3.3±0.09ms        ? ?/sec    1.00      3.2±0.04ms        ? ?/sec
physical_plan_tpcds_all                       1.01   1036.0±8.86ms        ? ?/sec    1.00   1027.5±8.74ms        ? ?/sec
physical_plan_tpch_all                        1.01     62.3±0.31ms        ? ?/sec    1.00     61.5±0.19ms        ? ?/sec
physical_plan_tpch_q1                         1.00      2.0±0.01ms        ? ?/sec    1.00      2.0±0.01ms        ? ?/sec
physical_plan_tpch_q10                        1.00      3.8±0.01ms        ? ?/sec    1.00      3.8±0.01ms        ? ?/sec
physical_plan_tpch_q11                        1.02      3.3±0.05ms        ? ?/sec    1.00      3.2±0.01ms        ? ?/sec
physical_plan_tpch_q12                        1.01   1781.5±9.48µs        ? ?/sec    1.00   1755.6±9.08µs        ? ?/sec
physical_plan_tpch_q13                        1.02  1466.9±19.07µs        ? ?/sec    1.00   1444.7±5.37µs        ? ?/sec
physical_plan_tpch_q14                        1.01  1925.3±12.20µs        ? ?/sec    1.00   1908.7±8.26µs        ? ?/sec
physical_plan_tpch_q16                        1.01      2.4±0.01ms        ? ?/sec    1.00      2.4±0.01ms        ? ?/sec
physical_plan_tpch_q17                        1.01      2.4±0.02ms        ? ?/sec    1.00      2.4±0.01ms        ? ?/sec
physical_plan_tpch_q18                        1.00      2.7±0.01ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
physical_plan_tpch_q19                        1.04      3.2±0.01ms        ? ?/sec    1.00      3.1±0.01ms        ? ?/sec
physical_plan_tpch_q2                         1.01      5.5±0.02ms        ? ?/sec    1.00      5.4±0.02ms        ? ?/sec
physical_plan_tpch_q20                        1.01      3.1±0.02ms        ? ?/sec    1.00      3.1±0.02ms        ? ?/sec
physical_plan_tpch_q21                        1.01      4.1±0.03ms        ? ?/sec    1.00      4.0±0.01ms        ? ?/sec
physical_plan_tpch_q22                        1.02      2.7±0.03ms        ? ?/sec    1.00      2.6±0.01ms        ? ?/sec
physical_plan_tpch_q3                         1.00      2.5±0.01ms        ? ?/sec    1.00      2.5±0.01ms        ? ?/sec
physical_plan_tpch_q4                         1.01  1515.1±12.16µs        ? ?/sec    1.00   1501.8±7.57µs        ? ?/sec
physical_plan_tpch_q5                         1.00      3.1±0.02ms        ? ?/sec    1.00      3.1±0.01ms        ? ?/sec
physical_plan_tpch_q6                         1.01    853.6±6.22µs        ? ?/sec    1.00    841.8±5.44µs        ? ?/sec
physical_plan_tpch_q7                         1.00      4.2±0.02ms        ? ?/sec    1.00      4.2±0.02ms        ? ?/sec
physical_plan_tpch_q8                         1.00      5.2±0.03ms        ? ?/sec    1.00      5.2±0.03ms        ? ?/sec
physical_plan_tpch_q9                         1.01      4.1±0.18ms        ? ?/sec    1.00      4.1±0.01ms        ? ?/sec
physical_select_aggregates_from_200           1.01     17.6±0.08ms        ? ?/sec    1.00     17.5±0.05ms        ? ?/sec
physical_select_all_from_1000                 1.01     25.0±0.09ms        ? ?/sec    1.00     24.7±0.15ms        ? ?/sec
physical_select_one_from_700                  1.06   1097.8±4.49µs        ? ?/sec    1.00   1036.0±6.18µs        ? ?/sec
physical_sorted_union_orderby                 1.00     41.9±0.31ms        ? ?/sec    1.00     41.9±0.30ms        ? ?/sec
physical_theta_join_consider_sort             1.03   1764.4±7.18µs        ? ?/sec    1.00  1718.2±15.92µs        ? ?/sec
physical_unnest_to_join                       1.03   1311.7±8.13µs        ? ?/sec    1.00   1276.6±5.74µs        ? ?/sec
with_param_values_many_columns                1.00    129.1±0.68µs        ? ?/sec    1.07    138.3±1.10µs        ? ?/sec

@alamb
Copy link
Contributor

alamb commented Jul 15, 2025

🤖 ./gh_compare_branch_bench.sh Benchmark Script Running
Linux aal-dev 6.11.0-1016-gcp #16~24.04.1-Ubuntu SMP Wed May 28 02:40:52 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing reduce_expr_size (45ca84c) to d1e6eb4 diff
BENCH_NAME=sql_planner
BENCH_COMMAND=cargo bench --bench sql_planner
BENCH_FILTER=
BENCH_BRANCH_NAME=reduce_expr_size
Results will be posted here when complete

@alamb
Copy link
Contributor

alamb commented Jul 15, 2025

🤖: Benchmark completed

Details

group                                         main                                   reduce_expr_size
-----                                         ----                                   ----------------
logical_aggregate_with_join                   1.03    638.2±3.12µs        ? ?/sec    1.00    620.3±5.03µs        ? ?/sec
logical_select_all_from_1000                  1.00     11.3±0.07ms        ? ?/sec    1.01     11.4±0.03ms        ? ?/sec
logical_select_one_from_700                   1.03    419.8±2.92µs        ? ?/sec    1.00    407.3±1.32µs        ? ?/sec
logical_trivial_join_high_numbered_columns    1.03    378.9±1.38µs        ? ?/sec    1.00    367.4±5.82µs        ? ?/sec
logical_trivial_join_low_numbered_columns     1.03    364.5±1.35µs        ? ?/sec    1.00    353.6±2.57µs        ? ?/sec
physical_intersection                         1.03    842.8±9.70µs        ? ?/sec    1.00    817.5±4.84µs        ? ?/sec
physical_join_consider_sort                   1.02   1393.1±6.25µs        ? ?/sec    1.00  1359.8±33.11µs        ? ?/sec
physical_join_distinct                        1.04    358.1±4.82µs        ? ?/sec    1.00    344.1±1.60µs        ? ?/sec
physical_many_self_joins                      1.04     10.4±0.05ms        ? ?/sec    1.00     10.0±0.07ms        ? ?/sec
physical_plan_clickbench_all                  1.00    185.4±1.52ms        ? ?/sec    1.00    185.6±1.53ms        ? ?/sec
physical_plan_clickbench_q1                   1.00      2.5±0.02ms        ? ?/sec    1.00      2.5±0.02ms        ? ?/sec
physical_plan_clickbench_q10                  1.00      3.3±0.04ms        ? ?/sec    1.00      3.3±0.04ms        ? ?/sec
physical_plan_clickbench_q11                  1.02      3.6±0.14ms        ? ?/sec    1.00      3.6±0.07ms        ? ?/sec
physical_plan_clickbench_q12                  1.00      3.7±0.03ms        ? ?/sec    1.02      3.7±0.08ms        ? ?/sec
physical_plan_clickbench_q13                  1.00      3.3±0.03ms        ? ?/sec    1.00      3.3±0.03ms        ? ?/sec
physical_plan_clickbench_q14                  1.00      3.5±0.03ms        ? ?/sec    1.00      3.5±0.04ms        ? ?/sec
physical_plan_clickbench_q15                  1.00      3.4±0.04ms        ? ?/sec    1.00      3.4±0.03ms        ? ?/sec
physical_plan_clickbench_q16                  1.00      3.2±0.07ms        ? ?/sec    1.01      3.3±0.04ms        ? ?/sec
physical_plan_clickbench_q17                  1.00      3.3±0.03ms        ? ?/sec    1.02      3.4±0.04ms        ? ?/sec
physical_plan_clickbench_q18                  1.00      2.9±0.03ms        ? ?/sec    1.00      2.9±0.04ms        ? ?/sec
physical_plan_clickbench_q19                  1.00      3.8±0.05ms        ? ?/sec    1.01      3.8±0.05ms        ? ?/sec
physical_plan_clickbench_q2                   1.01      2.9±0.02ms        ? ?/sec    1.00      2.9±0.03ms        ? ?/sec
physical_plan_clickbench_q20                  1.00      2.6±0.02ms        ? ?/sec    1.00      2.6±0.03ms        ? ?/sec
physical_plan_clickbench_q21                  1.00      2.9±0.02ms        ? ?/sec    1.00      2.9±0.03ms        ? ?/sec
physical_plan_clickbench_q22                  1.01      3.5±0.07ms        ? ?/sec    1.00      3.5±0.05ms        ? ?/sec
physical_plan_clickbench_q23                  1.00      3.8±0.09ms        ? ?/sec    1.00      3.8±0.09ms        ? ?/sec
physical_plan_clickbench_q24                  1.00      4.3±0.06ms        ? ?/sec    1.01      4.3±0.06ms        ? ?/sec
physical_plan_clickbench_q25                  1.01      3.0±0.03ms        ? ?/sec    1.00      3.0±0.04ms        ? ?/sec
physical_plan_clickbench_q26                  1.00      2.9±0.03ms        ? ?/sec    1.00      2.9±0.05ms        ? ?/sec
physical_plan_clickbench_q27                  1.00      3.0±0.02ms        ? ?/sec    1.00      3.0±0.03ms        ? ?/sec
physical_plan_clickbench_q28                  1.00      3.8±0.04ms        ? ?/sec    1.00      3.8±0.05ms        ? ?/sec
physical_plan_clickbench_q29                  1.00      4.5±0.06ms        ? ?/sec    1.00      4.5±0.06ms        ? ?/sec
physical_plan_clickbench_q3                   1.00      2.8±0.03ms        ? ?/sec    1.00      2.8±0.03ms        ? ?/sec
physical_plan_clickbench_q30                  1.01     12.8±0.17ms        ? ?/sec    1.00     12.6±0.15ms        ? ?/sec
physical_plan_clickbench_q31                  1.01      3.9±0.11ms        ? ?/sec    1.00      3.8±0.06ms        ? ?/sec
physical_plan_clickbench_q32                  1.00      3.8±0.04ms        ? ?/sec    1.01      3.8±0.08ms        ? ?/sec
physical_plan_clickbench_q33                  1.00      3.3±0.04ms        ? ?/sec    1.00      3.3±0.03ms        ? ?/sec
physical_plan_clickbench_q34                  1.00      3.0±0.03ms        ? ?/sec    1.00      3.0±0.03ms        ? ?/sec
physical_plan_clickbench_q35                  1.00      3.1±0.03ms        ? ?/sec    1.00      3.1±0.03ms        ? ?/sec
physical_plan_clickbench_q36                  1.00      3.9±0.15ms        ? ?/sec    1.00      3.9±0.05ms        ? ?/sec
physical_plan_clickbench_q37                  1.00      3.8±0.03ms        ? ?/sec    1.00      3.8±0.05ms        ? ?/sec
physical_plan_clickbench_q38                  1.00      3.9±0.04ms        ? ?/sec    1.00      3.8±0.09ms        ? ?/sec
physical_plan_clickbench_q39                  1.00      3.7±0.05ms        ? ?/sec    1.00      3.7±0.06ms        ? ?/sec
physical_plan_clickbench_q4                   1.00      2.6±0.02ms        ? ?/sec    1.00      2.6±0.02ms        ? ?/sec
physical_plan_clickbench_q40                  1.01      4.3±0.07ms        ? ?/sec    1.00      4.3±0.06ms        ? ?/sec
physical_plan_clickbench_q41                  1.01      3.9±0.06ms        ? ?/sec    1.00      3.8±0.05ms        ? ?/sec
physical_plan_clickbench_q42                  1.01      3.8±0.06ms        ? ?/sec    1.00      3.8±0.04ms        ? ?/sec
physical_plan_clickbench_q43                  1.00      4.2±0.08ms        ? ?/sec    1.00      4.2±0.04ms        ? ?/sec
physical_plan_clickbench_q44                  1.00      2.7±0.02ms        ? ?/sec    1.00      2.7±0.02ms        ? ?/sec
physical_plan_clickbench_q45                  1.00      2.7±0.02ms        ? ?/sec    1.00      2.7±0.03ms        ? ?/sec
physical_plan_clickbench_q46                  1.00      3.1±0.03ms        ? ?/sec    1.01      3.2±0.03ms        ? ?/sec
physical_plan_clickbench_q47                  1.00      3.7±0.04ms        ? ?/sec    1.00      3.7±0.04ms        ? ?/sec
physical_plan_clickbench_q48                  1.00      4.4±0.05ms        ? ?/sec    1.00      4.4±0.05ms        ? ?/sec
physical_plan_clickbench_q49                  1.01      4.7±0.11ms        ? ?/sec    1.00      4.7±0.05ms        ? ?/sec
physical_plan_clickbench_q5                   1.00      2.8±0.03ms        ? ?/sec    1.00      2.8±0.03ms        ? ?/sec
physical_plan_clickbench_q50                  1.01      4.1±0.08ms        ? ?/sec    1.00      4.1±0.05ms        ? ?/sec
physical_plan_clickbench_q51                  1.00      3.2±0.03ms        ? ?/sec    1.01      3.2±0.04ms        ? ?/sec
physical_plan_clickbench_q6                   1.00      2.8±0.03ms        ? ?/sec    1.01      2.8±0.04ms        ? ?/sec
physical_plan_clickbench_q7                   1.00      2.5±0.02ms        ? ?/sec    1.00      2.5±0.03ms        ? ?/sec
physical_plan_clickbench_q8                   1.00      3.4±0.03ms        ? ?/sec    1.00      3.3±0.03ms        ? ?/sec
physical_plan_clickbench_q9                   1.00      3.2±0.03ms        ? ?/sec    1.00      3.2±0.03ms        ? ?/sec
physical_plan_tpcds_all                       1.01   1033.8±4.95ms        ? ?/sec    1.00   1027.9±4.35ms        ? ?/sec
physical_plan_tpch_all                        1.00     62.2±0.33ms        ? ?/sec    1.00     62.1±0.53ms        ? ?/sec
physical_plan_tpch_q1                         1.00      2.0±0.01ms        ? ?/sec    1.01      2.0±0.01ms        ? ?/sec
physical_plan_tpch_q10                        1.00      3.8±0.02ms        ? ?/sec    1.00      3.8±0.02ms        ? ?/sec
physical_plan_tpch_q11                        1.00      3.2±0.02ms        ? ?/sec    1.00      3.2±0.01ms        ? ?/sec
physical_plan_tpch_q12                        1.01  1784.1±14.73µs        ? ?/sec    1.00   1760.5±9.11µs        ? ?/sec
physical_plan_tpch_q13                        1.00  1456.7±13.57µs        ? ?/sec    1.00  1459.2±11.40µs        ? ?/sec
physical_plan_tpch_q14                        1.00  1915.3±10.76µs        ? ?/sec    1.00  1918.9±15.09µs        ? ?/sec
physical_plan_tpch_q16                        1.00      2.4±0.01ms        ? ?/sec    1.00      2.4±0.01ms        ? ?/sec
physical_plan_tpch_q17                        1.01      2.4±0.01ms        ? ?/sec    1.00      2.4±0.01ms        ? ?/sec
physical_plan_tpch_q18                        1.00      2.7±0.01ms        ? ?/sec    1.00      2.7±0.02ms        ? ?/sec
physical_plan_tpch_q19                        1.04      3.2±0.01ms        ? ?/sec    1.00      3.1±0.02ms        ? ?/sec
physical_plan_tpch_q2                         1.00      5.5±0.03ms        ? ?/sec    1.00      5.5±0.04ms        ? ?/sec
physical_plan_tpch_q20                        1.00      3.1±0.01ms        ? ?/sec    1.00      3.1±0.01ms        ? ?/sec
physical_plan_tpch_q21                        1.00      4.0±0.02ms        ? ?/sec    1.00      4.1±0.02ms        ? ?/sec
physical_plan_tpch_q22                        1.01      2.7±0.01ms        ? ?/sec    1.00      2.7±0.02ms        ? ?/sec
physical_plan_tpch_q3                         1.00      2.5±0.01ms        ? ?/sec    1.00      2.5±0.02ms        ? ?/sec
physical_plan_tpch_q4                         1.00   1517.2±9.81µs        ? ?/sec    1.00   1516.6±8.58µs        ? ?/sec
physical_plan_tpch_q5                         1.00      3.1±0.02ms        ? ?/sec    1.00      3.1±0.01ms        ? ?/sec
physical_plan_tpch_q6                         1.01    859.5±8.00µs        ? ?/sec    1.00   848.9±11.27µs        ? ?/sec
physical_plan_tpch_q7                         1.00      4.2±0.02ms        ? ?/sec    1.00      4.2±0.02ms        ? ?/sec
physical_plan_tpch_q8                         1.00      5.2±0.03ms        ? ?/sec    1.01      5.2±0.04ms        ? ?/sec
physical_plan_tpch_q9                         1.00      4.1±0.02ms        ? ?/sec    1.01      4.1±0.02ms        ? ?/sec
physical_select_aggregates_from_200           1.01     17.7±0.19ms        ? ?/sec    1.00     17.6±0.10ms        ? ?/sec
physical_select_all_from_1000                 1.01     25.0±0.10ms        ? ?/sec    1.00     24.8±0.11ms        ? ?/sec
physical_select_one_from_700                  1.07   1101.0±8.51µs        ? ?/sec    1.00   1029.6±5.26µs        ? ?/sec
physical_sorted_union_orderby                 1.00     41.9±0.36ms        ? ?/sec    1.01     42.2±0.34ms        ? ?/sec
physical_theta_join_consider_sort             1.02   1760.6±6.81µs        ? ?/sec    1.00  1726.7±12.66µs        ? ?/sec
physical_unnest_to_join                       1.03  1308.3±11.00µs        ? ?/sec    1.00  1275.9±10.38µs        ? ?/sec
with_param_values_many_columns                1.00    129.8±0.74µs        ? ?/sec    1.06    137.2±0.79µs        ? ?/sec

@zhuqi-lucas
Copy link
Contributor Author

🤖: Benchmark completed

Details

Thank you @alamb for benchmark, interesting, it seems the performance decrease from 112 size to 80, i will investigate it, if i can't find the root cause, i will revert to 112 bytes first!

@zhuqi-lucas
Copy link
Contributor Author

Strange, i can't reproduce this in my local:

with_param_values_many_columns                1.00    129.8±0.74µs        ? ?/sec    1.06    137.2±0.79µs  

Copy link
Contributor

@kosiew kosiew left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍
Just some nit for your review.

Comment on lines 260 to 262
Expr::Alias(alias_box) => {
// alias_box: Box<Alias>
let Alias { expr, name, .. } = *alias_box;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit - use boxed_alias instead, for consistency

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @kosiew , addressed in latest PR.

Comment on lines 140 to 142
if let Expr::Alias(alias_box) = expr {
// alias_box: &Box<Alias>, so alias_box.as_ref() is &Alias
let alias: &Alias = alias_box.as_ref();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same as above - boxed_alias

Comment on lines 249 to 250
Expr::Alias(alias_box) => {
let Alias { expr, .. } = alias_box.as_ref();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

boxed_alias

@@ -992,7 +996,7 @@ pub fn iter_conjunction_owned(expr: Expr) -> impl Iterator<Item = Expr> {
stack.push(*right);
stack.push(*left);
}
Expr::Alias(Alias { expr, .. }) => stack.push(*expr),
Expr::Alias(alias_box) => stack.push(*alias_box.expr),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

boxed_alias

@zhuqi-lucas
Copy link
Contributor Author

👍 Just some nit for your review.

Thank you @kosiew for review and suggestion, addressed in latest PR.

@xudong963
Copy link
Member

After opening the DF50.0.0 release issue, you can add it to the list

@alamb
Copy link
Contributor

alamb commented Jul 16, 2025

Strange, i can't reproduce this in my local:

I will rerun

@alamb
Copy link
Contributor

alamb commented Jul 16, 2025

🤖 ./gh_compare_branch_bench.sh Benchmark Script Running
Linux aal-dev 6.11.0-1016-gcp #16~24.04.1-Ubuntu SMP Wed May 28 02:40:52 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing reduce_expr_size (3cd8e4e) to c4b9995 diff
BENCH_NAME=sql_planner
BENCH_COMMAND=cargo bench --bench sql_planner
BENCH_FILTER=
BENCH_BRANCH_NAME=reduce_expr_size
Results will be posted here when complete

@alamb
Copy link
Contributor

alamb commented Jul 16, 2025

🤖: Benchmark completed

Details

group                                         main                                   reduce_expr_size
-----                                         ----                                   ----------------
logical_aggregate_with_join                   1.04    644.1±2.48µs        ? ?/sec    1.00    622.3±3.87µs        ? ?/sec
logical_select_all_from_1000                  1.00     11.1±0.04ms        ? ?/sec    1.02     11.3±0.03ms        ? ?/sec
logical_select_one_from_700                   1.06    430.0±2.43µs        ? ?/sec    1.00    406.6±1.75µs        ? ?/sec
logical_trivial_join_high_numbered_columns    1.04    381.2±1.36µs        ? ?/sec    1.00    367.1±6.18µs        ? ?/sec
logical_trivial_join_low_numbered_columns     1.04    367.2±1.42µs        ? ?/sec    1.00    351.6±1.38µs        ? ?/sec
physical_intersection                         1.04    853.4±6.19µs        ? ?/sec    1.00    823.8±8.64µs        ? ?/sec
physical_join_consider_sort                   1.04  1419.2±10.12µs        ? ?/sec    1.00   1358.2±6.04µs        ? ?/sec
physical_join_distinct                        1.05    360.7±1.77µs        ? ?/sec    1.00    343.0±2.09µs        ? ?/sec
physical_many_self_joins                      1.07     10.7±0.07ms        ? ?/sec    1.00     10.0±0.04ms        ? ?/sec
physical_plan_clickbench_all                  1.01    185.5±2.01ms        ? ?/sec    1.00    184.0±1.03ms        ? ?/sec
physical_plan_clickbench_q1                   1.00      2.5±0.05ms        ? ?/sec    1.00      2.5±0.01ms        ? ?/sec
physical_plan_clickbench_q10                  1.00      3.4±0.05ms        ? ?/sec    1.00      3.4±0.02ms        ? ?/sec
physical_plan_clickbench_q11                  1.00      3.5±0.04ms        ? ?/sec    1.00      3.6±0.02ms        ? ?/sec
physical_plan_clickbench_q12                  1.01      3.7±0.06ms        ? ?/sec    1.00      3.7±0.02ms        ? ?/sec
physical_plan_clickbench_q13                  1.00      3.3±0.03ms        ? ?/sec    1.00      3.3±0.02ms        ? ?/sec
physical_plan_clickbench_q14                  1.00      3.5±0.03ms        ? ?/sec    1.01      3.6±0.03ms        ? ?/sec
physical_plan_clickbench_q15                  1.04      3.5±0.05ms        ? ?/sec    1.00      3.4±0.01ms        ? ?/sec
physical_plan_clickbench_q16                  1.01      3.3±0.04ms        ? ?/sec    1.00      3.3±0.02ms        ? ?/sec
physical_plan_clickbench_q17                  1.00      3.3±0.03ms        ? ?/sec    1.01      3.4±0.02ms        ? ?/sec
physical_plan_clickbench_q18                  1.00      2.9±0.03ms        ? ?/sec    1.00      2.9±0.02ms        ? ?/sec
physical_plan_clickbench_q19                  1.02      3.9±0.06ms        ? ?/sec    1.00      3.8±0.02ms        ? ?/sec
physical_plan_clickbench_q2                   1.00      2.9±0.05ms        ? ?/sec    1.01      3.0±0.05ms        ? ?/sec
physical_plan_clickbench_q20                  1.01      2.7±0.03ms        ? ?/sec    1.00      2.6±0.03ms        ? ?/sec
physical_plan_clickbench_q21                  1.00      2.9±0.03ms        ? ?/sec    1.00      2.9±0.02ms        ? ?/sec
physical_plan_clickbench_q22                  1.04      3.6±0.06ms        ? ?/sec    1.00      3.5±0.02ms        ? ?/sec
physical_plan_clickbench_q23                  1.02      3.8±0.05ms        ? ?/sec    1.00      3.8±0.02ms        ? ?/sec
physical_plan_clickbench_q24                  1.00      4.3±0.04ms        ? ?/sec    1.01      4.3±0.03ms        ? ?/sec
physical_plan_clickbench_q25                  1.02      3.1±0.10ms        ? ?/sec    1.00      3.1±0.08ms        ? ?/sec
physical_plan_clickbench_q26                  1.00      2.9±0.04ms        ? ?/sec    1.00      2.9±0.08ms        ? ?/sec
physical_plan_clickbench_q27                  1.00      3.1±0.03ms        ? ?/sec    1.00      3.1±0.03ms        ? ?/sec
physical_plan_clickbench_q28                  1.00      3.9±0.07ms        ? ?/sec    1.02      3.9±0.15ms        ? ?/sec
physical_plan_clickbench_q29                  1.00      4.5±0.07ms        ? ?/sec    1.01      4.5±0.07ms        ? ?/sec
physical_plan_clickbench_q3                   1.00      2.8±0.05ms        ? ?/sec    1.01      2.9±0.02ms        ? ?/sec
physical_plan_clickbench_q30                  1.03     12.8±0.16ms        ? ?/sec    1.00     12.5±0.13ms        ? ?/sec
physical_plan_clickbench_q31                  1.00      3.8±0.05ms        ? ?/sec    1.00      3.8±0.03ms        ? ?/sec
physical_plan_clickbench_q32                  1.00      3.8±0.04ms        ? ?/sec    1.02      3.9±0.06ms        ? ?/sec
physical_plan_clickbench_q33                  1.00      3.3±0.03ms        ? ?/sec    1.01      3.3±0.03ms        ? ?/sec
physical_plan_clickbench_q34                  1.04      3.2±0.05ms        ? ?/sec    1.00      3.1±0.02ms        ? ?/sec
physical_plan_clickbench_q35                  1.02      3.2±0.07ms        ? ?/sec    1.00      3.2±0.03ms        ? ?/sec
physical_plan_clickbench_q36                  1.00      3.8±0.06ms        ? ?/sec    1.00      3.8±0.03ms        ? ?/sec
physical_plan_clickbench_q37                  1.01      3.9±0.05ms        ? ?/sec    1.00      3.8±0.02ms        ? ?/sec
physical_plan_clickbench_q38                  1.01      3.8±0.04ms        ? ?/sec    1.00      3.8±0.02ms        ? ?/sec
physical_plan_clickbench_q39                  1.01      3.7±0.03ms        ? ?/sec    1.00      3.6±0.04ms        ? ?/sec
physical_plan_clickbench_q4                   1.00      2.6±0.05ms        ? ?/sec    1.00      2.6±0.01ms        ? ?/sec
physical_plan_clickbench_q40                  1.04      4.4±0.08ms        ? ?/sec    1.00      4.3±0.03ms        ? ?/sec
physical_plan_clickbench_q41                  1.02      3.9±0.07ms        ? ?/sec    1.00      3.8±0.02ms        ? ?/sec
physical_plan_clickbench_q42                  1.01      3.8±0.05ms        ? ?/sec    1.00      3.8±0.03ms        ? ?/sec
physical_plan_clickbench_q43                  1.00      4.2±0.07ms        ? ?/sec    1.00      4.2±0.04ms        ? ?/sec
physical_plan_clickbench_q44                  1.01      2.7±0.02ms        ? ?/sec    1.00      2.7±0.02ms        ? ?/sec
physical_plan_clickbench_q45                  1.04      2.8±0.06ms        ? ?/sec    1.00      2.7±0.02ms        ? ?/sec
physical_plan_clickbench_q46                  1.01      3.2±0.06ms        ? ?/sec    1.00      3.1±0.02ms        ? ?/sec
physical_plan_clickbench_q47                  1.01      3.8±0.05ms        ? ?/sec    1.00      3.7±0.02ms        ? ?/sec
physical_plan_clickbench_q48                  1.01      4.4±0.06ms        ? ?/sec    1.00      4.4±0.03ms        ? ?/sec
physical_plan_clickbench_q49                  1.00      4.6±0.04ms        ? ?/sec    1.00      4.6±0.04ms        ? ?/sec
physical_plan_clickbench_q5                   1.00      2.8±0.04ms        ? ?/sec    1.01      2.8±0.08ms        ? ?/sec
physical_plan_clickbench_q50                  1.05      4.3±0.09ms        ? ?/sec    1.00      4.1±0.03ms        ? ?/sec
physical_plan_clickbench_q51                  1.01      3.2±0.04ms        ? ?/sec    1.00      3.2±0.02ms        ? ?/sec
physical_plan_clickbench_q6                   1.00      2.8±0.04ms        ? ?/sec    1.00      2.8±0.02ms        ? ?/sec
physical_plan_clickbench_q7                   1.00      2.5±0.03ms        ? ?/sec    1.01      2.6±0.01ms        ? ?/sec
physical_plan_clickbench_q8                   1.00      3.4±0.05ms        ? ?/sec    1.00      3.4±0.02ms        ? ?/sec
physical_plan_clickbench_q9                   1.01      3.3±0.05ms        ? ?/sec    1.00      3.2±0.02ms        ? ?/sec
physical_plan_tpcds_all                       1.02   1043.2±8.58ms        ? ?/sec    1.00   1020.5±3.68ms        ? ?/sec
physical_plan_tpch_all                        1.02     62.9±0.68ms        ? ?/sec    1.00     61.8±0.43ms        ? ?/sec
physical_plan_tpch_q1                         1.00      2.0±0.01ms        ? ?/sec    1.00      2.0±0.01ms        ? ?/sec
physical_plan_tpch_q10                        1.01      3.8±0.02ms        ? ?/sec    1.00      3.8±0.02ms        ? ?/sec
physical_plan_tpch_q11                        1.01      3.3±0.02ms        ? ?/sec    1.00      3.2±0.01ms        ? ?/sec
physical_plan_tpch_q12                        1.02  1799.4±14.71µs        ? ?/sec    1.00  1768.5±12.12µs        ? ?/sec
physical_plan_tpch_q13                        1.00  1456.9±12.44µs        ? ?/sec    1.00   1463.4±5.33µs        ? ?/sec
physical_plan_tpch_q14                        1.01  1924.3±21.56µs        ? ?/sec    1.00  1912.4±10.19µs        ? ?/sec
physical_plan_tpch_q16                        1.02      2.5±0.02ms        ? ?/sec    1.00      2.4±0.01ms        ? ?/sec
physical_plan_tpch_q17                        1.02      2.4±0.02ms        ? ?/sec    1.00      2.4±0.02ms        ? ?/sec
physical_plan_tpch_q18                        1.01      2.7±0.02ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
physical_plan_tpch_q19                        1.06      3.2±0.02ms        ? ?/sec    1.00      3.1±0.01ms        ? ?/sec
physical_plan_tpch_q2                         1.01      5.5±0.04ms        ? ?/sec    1.00      5.4±0.02ms        ? ?/sec
physical_plan_tpch_q20                        1.03      3.1±0.02ms        ? ?/sec    1.00      3.1±0.02ms        ? ?/sec
physical_plan_tpch_q21                        1.02      4.1±0.04ms        ? ?/sec    1.00      4.1±0.02ms        ? ?/sec
physical_plan_tpch_q22                        1.02      2.7±0.02ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
physical_plan_tpch_q3                         1.01      2.5±0.02ms        ? ?/sec    1.00      2.5±0.01ms        ? ?/sec
physical_plan_tpch_q4                         1.01  1527.6±10.50µs        ? ?/sec    1.00   1517.5±9.80µs        ? ?/sec
physical_plan_tpch_q5                         1.00      3.2±0.02ms        ? ?/sec    1.00      3.2±0.01ms        ? ?/sec
physical_plan_tpch_q6                         1.02    861.9±5.92µs        ? ?/sec    1.00    842.1±5.20µs        ? ?/sec
physical_plan_tpch_q7                         1.01      4.2±0.05ms        ? ?/sec    1.00      4.2±0.02ms        ? ?/sec
physical_plan_tpch_q8                         1.01      5.2±0.05ms        ? ?/sec    1.00      5.2±0.02ms        ? ?/sec
physical_plan_tpch_q9                         1.00      4.1±0.02ms        ? ?/sec    1.00      4.1±0.01ms        ? ?/sec
physical_select_aggregates_from_200           1.01     17.8±0.09ms        ? ?/sec    1.00     17.6±0.08ms        ? ?/sec
physical_select_all_from_1000                 1.01     24.9±0.12ms        ? ?/sec    1.00     24.6±0.09ms        ? ?/sec
physical_select_one_from_700                  1.09   1125.1±6.41µs        ? ?/sec    1.00  1036.1±11.76µs        ? ?/sec
physical_sorted_union_orderby                 1.00     42.4±0.39ms        ? ?/sec    1.00     42.3±0.66ms        ? ?/sec
physical_theta_join_consider_sort             1.04  1788.8±10.25µs        ? ?/sec    1.00   1722.3±7.18µs        ? ?/sec
physical_unnest_to_join                       1.04   1330.1±6.58µs        ? ?/sec    1.00   1274.4±6.65µs        ? ?/sec
with_param_values_many_columns                1.00    130.8±0.72µs        ? ?/sec    1.04    136.5±0.76µs        ? ?/sec

@zhuqi-lucas
Copy link
Contributor Author

🤖: Benchmark completed

Details

group                                         main                                   reduce_expr_size
-----                                         ----                                   ----------------
logical_aggregate_with_join                   1.04    644.1±2.48µs        ? ?/sec    1.00    622.3±3.87µs        ? ?/sec
logical_select_all_from_1000                  1.00     11.1±0.04ms        ? ?/sec    1.02     11.3±0.03ms        ? ?/sec
logical_select_one_from_700                   1.06    430.0±2.43µs        ? ?/sec    1.00    406.6±1.75µs        ? ?/sec
logical_trivial_join_high_numbered_columns    1.04    381.2±1.36µs        ? ?/sec    1.00    367.1±6.18µs        ? ?/sec
logical_trivial_join_low_numbered_columns     1.04    367.2±1.42µs        ? ?/sec    1.00    351.6±1.38µs        ? ?/sec
physical_intersection                         1.04    853.4±6.19µs        ? ?/sec    1.00    823.8±8.64µs        ? ?/sec
physical_join_consider_sort                   1.04  1419.2±10.12µs        ? ?/sec    1.00   1358.2±6.04µs        ? ?/sec
physical_join_distinct                        1.05    360.7±1.77µs        ? ?/sec    1.00    343.0±2.09µs        ? ?/sec
physical_many_self_joins                      1.07     10.7±0.07ms        ? ?/sec    1.00     10.0±0.04ms        ? ?/sec
physical_plan_clickbench_all                  1.01    185.5±2.01ms        ? ?/sec    1.00    184.0±1.03ms        ? ?/sec
physical_plan_clickbench_q1                   1.00      2.5±0.05ms        ? ?/sec    1.00      2.5±0.01ms        ? ?/sec
physical_plan_clickbench_q10                  1.00      3.4±0.05ms        ? ?/sec    1.00      3.4±0.02ms        ? ?/sec
physical_plan_clickbench_q11                  1.00      3.5±0.04ms        ? ?/sec    1.00      3.6±0.02ms        ? ?/sec
physical_plan_clickbench_q12                  1.01      3.7±0.06ms        ? ?/sec    1.00      3.7±0.02ms        ? ?/sec
physical_plan_clickbench_q13                  1.00      3.3±0.03ms        ? ?/sec    1.00      3.3±0.02ms        ? ?/sec
physical_plan_clickbench_q14                  1.00      3.5±0.03ms        ? ?/sec    1.01      3.6±0.03ms        ? ?/sec
physical_plan_clickbench_q15                  1.04      3.5±0.05ms        ? ?/sec    1.00      3.4±0.01ms        ? ?/sec
physical_plan_clickbench_q16                  1.01      3.3±0.04ms        ? ?/sec    1.00      3.3±0.02ms        ? ?/sec
physical_plan_clickbench_q17                  1.00      3.3±0.03ms        ? ?/sec    1.01      3.4±0.02ms        ? ?/sec
physical_plan_clickbench_q18                  1.00      2.9±0.03ms        ? ?/sec    1.00      2.9±0.02ms        ? ?/sec
physical_plan_clickbench_q19                  1.02      3.9±0.06ms        ? ?/sec    1.00      3.8±0.02ms        ? ?/sec
physical_plan_clickbench_q2                   1.00      2.9±0.05ms        ? ?/sec    1.01      3.0±0.05ms        ? ?/sec
physical_plan_clickbench_q20                  1.01      2.7±0.03ms        ? ?/sec    1.00      2.6±0.03ms        ? ?/sec
physical_plan_clickbench_q21                  1.00      2.9±0.03ms        ? ?/sec    1.00      2.9±0.02ms        ? ?/sec
physical_plan_clickbench_q22                  1.04      3.6±0.06ms        ? ?/sec    1.00      3.5±0.02ms        ? ?/sec
physical_plan_clickbench_q23                  1.02      3.8±0.05ms        ? ?/sec    1.00      3.8±0.02ms        ? ?/sec
physical_plan_clickbench_q24                  1.00      4.3±0.04ms        ? ?/sec    1.01      4.3±0.03ms        ? ?/sec
physical_plan_clickbench_q25                  1.02      3.1±0.10ms        ? ?/sec    1.00      3.1±0.08ms        ? ?/sec
physical_plan_clickbench_q26                  1.00      2.9±0.04ms        ? ?/sec    1.00      2.9±0.08ms        ? ?/sec
physical_plan_clickbench_q27                  1.00      3.1±0.03ms        ? ?/sec    1.00      3.1±0.03ms        ? ?/sec
physical_plan_clickbench_q28                  1.00      3.9±0.07ms        ? ?/sec    1.02      3.9±0.15ms        ? ?/sec
physical_plan_clickbench_q29                  1.00      4.5±0.07ms        ? ?/sec    1.01      4.5±0.07ms        ? ?/sec
physical_plan_clickbench_q3                   1.00      2.8±0.05ms        ? ?/sec    1.01      2.9±0.02ms        ? ?/sec
physical_plan_clickbench_q30                  1.03     12.8±0.16ms        ? ?/sec    1.00     12.5±0.13ms        ? ?/sec
physical_plan_clickbench_q31                  1.00      3.8±0.05ms        ? ?/sec    1.00      3.8±0.03ms        ? ?/sec
physical_plan_clickbench_q32                  1.00      3.8±0.04ms        ? ?/sec    1.02      3.9±0.06ms        ? ?/sec
physical_plan_clickbench_q33                  1.00      3.3±0.03ms        ? ?/sec    1.01      3.3±0.03ms        ? ?/sec
physical_plan_clickbench_q34                  1.04      3.2±0.05ms        ? ?/sec    1.00      3.1±0.02ms        ? ?/sec
physical_plan_clickbench_q35                  1.02      3.2±0.07ms        ? ?/sec    1.00      3.2±0.03ms        ? ?/sec
physical_plan_clickbench_q36                  1.00      3.8±0.06ms        ? ?/sec    1.00      3.8±0.03ms        ? ?/sec
physical_plan_clickbench_q37                  1.01      3.9±0.05ms        ? ?/sec    1.00      3.8±0.02ms        ? ?/sec
physical_plan_clickbench_q38                  1.01      3.8±0.04ms        ? ?/sec    1.00      3.8±0.02ms        ? ?/sec
physical_plan_clickbench_q39                  1.01      3.7±0.03ms        ? ?/sec    1.00      3.6±0.04ms        ? ?/sec
physical_plan_clickbench_q4                   1.00      2.6±0.05ms        ? ?/sec    1.00      2.6±0.01ms        ? ?/sec
physical_plan_clickbench_q40                  1.04      4.4±0.08ms        ? ?/sec    1.00      4.3±0.03ms        ? ?/sec
physical_plan_clickbench_q41                  1.02      3.9±0.07ms        ? ?/sec    1.00      3.8±0.02ms        ? ?/sec
physical_plan_clickbench_q42                  1.01      3.8±0.05ms        ? ?/sec    1.00      3.8±0.03ms        ? ?/sec
physical_plan_clickbench_q43                  1.00      4.2±0.07ms        ? ?/sec    1.00      4.2±0.04ms        ? ?/sec
physical_plan_clickbench_q44                  1.01      2.7±0.02ms        ? ?/sec    1.00      2.7±0.02ms        ? ?/sec
physical_plan_clickbench_q45                  1.04      2.8±0.06ms        ? ?/sec    1.00      2.7±0.02ms        ? ?/sec
physical_plan_clickbench_q46                  1.01      3.2±0.06ms        ? ?/sec    1.00      3.1±0.02ms        ? ?/sec
physical_plan_clickbench_q47                  1.01      3.8±0.05ms        ? ?/sec    1.00      3.7±0.02ms        ? ?/sec
physical_plan_clickbench_q48                  1.01      4.4±0.06ms        ? ?/sec    1.00      4.4±0.03ms        ? ?/sec
physical_plan_clickbench_q49                  1.00      4.6±0.04ms        ? ?/sec    1.00      4.6±0.04ms        ? ?/sec
physical_plan_clickbench_q5                   1.00      2.8±0.04ms        ? ?/sec    1.01      2.8±0.08ms        ? ?/sec
physical_plan_clickbench_q50                  1.05      4.3±0.09ms        ? ?/sec    1.00      4.1±0.03ms        ? ?/sec
physical_plan_clickbench_q51                  1.01      3.2±0.04ms        ? ?/sec    1.00      3.2±0.02ms        ? ?/sec
physical_plan_clickbench_q6                   1.00      2.8±0.04ms        ? ?/sec    1.00      2.8±0.02ms        ? ?/sec
physical_plan_clickbench_q7                   1.00      2.5±0.03ms        ? ?/sec    1.01      2.6±0.01ms        ? ?/sec
physical_plan_clickbench_q8                   1.00      3.4±0.05ms        ? ?/sec    1.00      3.4±0.02ms        ? ?/sec
physical_plan_clickbench_q9                   1.01      3.3±0.05ms        ? ?/sec    1.00      3.2±0.02ms        ? ?/sec
physical_plan_tpcds_all                       1.02   1043.2±8.58ms        ? ?/sec    1.00   1020.5±3.68ms        ? ?/sec
physical_plan_tpch_all                        1.02     62.9±0.68ms        ? ?/sec    1.00     61.8±0.43ms        ? ?/sec
physical_plan_tpch_q1                         1.00      2.0±0.01ms        ? ?/sec    1.00      2.0±0.01ms        ? ?/sec
physical_plan_tpch_q10                        1.01      3.8±0.02ms        ? ?/sec    1.00      3.8±0.02ms        ? ?/sec
physical_plan_tpch_q11                        1.01      3.3±0.02ms        ? ?/sec    1.00      3.2±0.01ms        ? ?/sec
physical_plan_tpch_q12                        1.02  1799.4±14.71µs        ? ?/sec    1.00  1768.5±12.12µs        ? ?/sec
physical_plan_tpch_q13                        1.00  1456.9±12.44µs        ? ?/sec    1.00   1463.4±5.33µs        ? ?/sec
physical_plan_tpch_q14                        1.01  1924.3±21.56µs        ? ?/sec    1.00  1912.4±10.19µs        ? ?/sec
physical_plan_tpch_q16                        1.02      2.5±0.02ms        ? ?/sec    1.00      2.4±0.01ms        ? ?/sec
physical_plan_tpch_q17                        1.02      2.4±0.02ms        ? ?/sec    1.00      2.4±0.02ms        ? ?/sec
physical_plan_tpch_q18                        1.01      2.7±0.02ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
physical_plan_tpch_q19                        1.06      3.2±0.02ms        ? ?/sec    1.00      3.1±0.01ms        ? ?/sec
physical_plan_tpch_q2                         1.01      5.5±0.04ms        ? ?/sec    1.00      5.4±0.02ms        ? ?/sec
physical_plan_tpch_q20                        1.03      3.1±0.02ms        ? ?/sec    1.00      3.1±0.02ms        ? ?/sec
physical_plan_tpch_q21                        1.02      4.1±0.04ms        ? ?/sec    1.00      4.1±0.02ms        ? ?/sec
physical_plan_tpch_q22                        1.02      2.7±0.02ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
physical_plan_tpch_q3                         1.01      2.5±0.02ms        ? ?/sec    1.00      2.5±0.01ms        ? ?/sec
physical_plan_tpch_q4                         1.01  1527.6±10.50µs        ? ?/sec    1.00   1517.5±9.80µs        ? ?/sec
physical_plan_tpch_q5                         1.00      3.2±0.02ms        ? ?/sec    1.00      3.2±0.01ms        ? ?/sec
physical_plan_tpch_q6                         1.02    861.9±5.92µs        ? ?/sec    1.00    842.1±5.20µs        ? ?/sec
physical_plan_tpch_q7                         1.01      4.2±0.05ms        ? ?/sec    1.00      4.2±0.02ms        ? ?/sec
physical_plan_tpch_q8                         1.01      5.2±0.05ms        ? ?/sec    1.00      5.2±0.02ms        ? ?/sec
physical_plan_tpch_q9                         1.00      4.1±0.02ms        ? ?/sec    1.00      4.1±0.01ms        ? ?/sec
physical_select_aggregates_from_200           1.01     17.8±0.09ms        ? ?/sec    1.00     17.6±0.08ms        ? ?/sec
physical_select_all_from_1000                 1.01     24.9±0.12ms        ? ?/sec    1.00     24.6±0.09ms        ? ?/sec
physical_select_one_from_700                  1.09   1125.1±6.41µs        ? ?/sec    1.00  1036.1±11.76µs        ? ?/sec
physical_sorted_union_orderby                 1.00     42.4±0.39ms        ? ?/sec    1.00     42.3±0.66ms        ? ?/sec
physical_theta_join_consider_sort             1.04  1788.8±10.25µs        ? ?/sec    1.00   1722.3±7.18µs        ? ?/sec
physical_unnest_to_join                       1.04   1330.1±6.58µs        ? ?/sec    1.00   1274.4±6.65µs        ? ?/sec
with_param_values_many_columns                1.00    130.8±0.72µs        ? ?/sec    1.04    136.5±0.76µs        ? ?/sec

Thank you @alamb , almost all improvement for most cases, but still the last one has %4 regression, and i can't reproduce in my local Mac.

@zhuqi-lucas
Copy link
Contributor Author

After opening the DF50.0.0 release issue, you can add it to the list

Thank you @xudong963 , added it in #16799 (comment)

@alamb
Copy link
Contributor

alamb commented Jul 16, 2025

My guess is that some of the new slowdown / less predictability is due to many more Boxes (and thus allocations) -- I suggest we reconsider Boxing frequently used structures (like Column in alias, for example) -- that might make Expr larger but would result in less allocator pressure

@zhuqi-lucas
Copy link
Contributor Author

My guess is that some of the new slowdown / less predictability is due to many more Boxes (and thus allocations) -- I suggest we reconsider Boxing frequently used structures (like Column in alias, for example) -- that might make Expr larger but would result in less allocator pressure

Thank you @alamb , this is a very good point, let me try this and to see the benchmark result!

@github-actions github-actions bot removed physical-expr Changes to the physical-expr crates core Core DataFusion crate proto Related to proto crate functions Changes to functions implementation labels Jul 16, 2025
@zhuqi-lucas
Copy link
Contributor Author

zhuqi-lucas commented Jul 16, 2025

My guess is that some of the new slowdown / less predictability is due to many more Boxes (and thus allocations) -- I suggest we reconsider Boxing frequently used structures (like Column in alias, for example) -- that might make Expr larger but would result in less allocator pressure

Thank you @alamb , this is a very good point, let me try this and to see the benchmark result!

@alamb Updated in latest PR, only small change for OuterReferenceColumn now.

@zhuqi-lucas zhuqi-lucas changed the title feat: change Expr Alias ,OuterReferenceColumn, Column to Box type for reducing expr struct size feat: change Expr OuterReferenceColumn to Box type for reducing expr struct size Jul 16, 2025
@alamb
Copy link
Contributor

alamb commented Jul 17, 2025

🤖 ./gh_compare_branch_bench.sh Benchmark Script Running
Linux aal-dev 6.11.0-1016-gcp #16~24.04.1-Ubuntu SMP Wed May 28 02:40:52 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Comparing reduce_expr_size (af82383) to 63dd4e2 diff
BENCH_NAME=sql_planner
BENCH_COMMAND=cargo bench --bench sql_planner
BENCH_FILTER=
BENCH_BRANCH_NAME=reduce_expr_size
Results will be posted here when complete

@alamb
Copy link
Contributor

alamb commented Jul 17, 2025

🤖: Benchmark completed

Details

group                                         main                                   reduce_expr_size
-----                                         ----                                   ----------------
logical_aggregate_with_join                   1.01    619.3±3.99µs        ? ?/sec    1.00    615.6±2.26µs        ? ?/sec
logical_select_all_from_1000                  1.00     11.2±0.05ms        ? ?/sec    1.00     11.2±0.04ms        ? ?/sec
logical_select_one_from_700                   1.00    405.8±1.41µs        ? ?/sec    1.00    406.5±2.02µs        ? ?/sec
logical_trivial_join_high_numbered_columns    1.00    367.0±7.23µs        ? ?/sec    1.00    367.9±2.19µs        ? ?/sec
logical_trivial_join_low_numbered_columns     1.00    351.9±1.27µs        ? ?/sec    1.00    352.4±2.69µs        ? ?/sec
physical_intersection                         1.00   823.7±13.80µs        ? ?/sec    1.00    823.3±7.95µs        ? ?/sec
physical_join_consider_sort                   1.00  1352.6±13.56µs        ? ?/sec    1.00   1354.6±6.63µs        ? ?/sec
physical_join_distinct                        1.00    342.1±1.02µs        ? ?/sec    1.00    342.6±3.35µs        ? ?/sec
physical_many_self_joins                      1.00     10.0±0.05ms        ? ?/sec    1.00     10.0±0.04ms        ? ?/sec
physical_plan_clickbench_all                  1.01    188.7±1.84ms        ? ?/sec    1.00    187.7±3.23ms        ? ?/sec
physical_plan_clickbench_q1                   1.00      2.5±0.02ms        ? ?/sec    1.05      2.6±0.02ms        ? ?/sec
physical_plan_clickbench_q10                  1.00      3.3±0.03ms        ? ?/sec    1.04      3.5±0.04ms        ? ?/sec
physical_plan_clickbench_q11                  1.00      3.5±0.03ms        ? ?/sec    1.03      3.6±0.05ms        ? ?/sec
physical_plan_clickbench_q12                  1.00      3.6±0.03ms        ? ?/sec    1.04      3.8±0.04ms        ? ?/sec
physical_plan_clickbench_q13                  1.00      3.3±0.03ms        ? ?/sec    1.03      3.4±0.04ms        ? ?/sec
physical_plan_clickbench_q14                  1.00      3.5±0.03ms        ? ?/sec    1.03      3.6±0.07ms        ? ?/sec
physical_plan_clickbench_q15                  1.00      3.4±0.04ms        ? ?/sec    1.01      3.5±0.03ms        ? ?/sec
physical_plan_clickbench_q16                  1.00      3.2±0.04ms        ? ?/sec    1.02      3.3±0.02ms        ? ?/sec
physical_plan_clickbench_q17                  1.00      3.3±0.03ms        ? ?/sec    1.02      3.4±0.04ms        ? ?/sec
physical_plan_clickbench_q18                  1.00      2.9±0.02ms        ? ?/sec    1.03      2.9±0.02ms        ? ?/sec
physical_plan_clickbench_q19                  1.00      3.7±0.03ms        ? ?/sec    1.03      3.8±0.03ms        ? ?/sec
physical_plan_clickbench_q2                   1.00      2.9±0.02ms        ? ?/sec    1.04      3.0±0.07ms        ? ?/sec
physical_plan_clickbench_q20                  1.00      2.6±0.02ms        ? ?/sec    1.02      2.7±0.03ms        ? ?/sec
physical_plan_clickbench_q21                  1.00      2.9±0.02ms        ? ?/sec    1.03      3.0±0.03ms        ? ?/sec
physical_plan_clickbench_q22                  1.00      3.5±0.03ms        ? ?/sec    1.02      3.6±0.03ms        ? ?/sec
physical_plan_clickbench_q23                  1.00      3.8±0.04ms        ? ?/sec    1.02      3.8±0.03ms        ? ?/sec
physical_plan_clickbench_q24                  1.00      4.3±0.04ms        ? ?/sec    1.01      4.3±0.03ms        ? ?/sec
physical_plan_clickbench_q25                  1.00      3.0±0.03ms        ? ?/sec    1.03      3.1±0.03ms        ? ?/sec
physical_plan_clickbench_q26                  1.00      2.9±0.03ms        ? ?/sec    1.03      3.0±0.03ms        ? ?/sec
physical_plan_clickbench_q27                  1.00      3.0±0.03ms        ? ?/sec    1.02      3.1±0.03ms        ? ?/sec
physical_plan_clickbench_q28                  1.00      3.8±0.12ms        ? ?/sec    1.01      3.9±0.04ms        ? ?/sec
physical_plan_clickbench_q29                  1.00      4.4±0.04ms        ? ?/sec    1.02      4.5±0.04ms        ? ?/sec
physical_plan_clickbench_q3                   1.00      2.8±0.03ms        ? ?/sec    1.03      2.9±0.03ms        ? ?/sec
physical_plan_clickbench_q30                  1.00     12.8±0.12ms        ? ?/sec    1.00     12.7±0.15ms        ? ?/sec
physical_plan_clickbench_q31                  1.00      3.8±0.03ms        ? ?/sec    1.02      3.8±0.03ms        ? ?/sec
physical_plan_clickbench_q32                  1.00      3.8±0.04ms        ? ?/sec    1.02      3.9±0.04ms        ? ?/sec
physical_plan_clickbench_q33                  1.00      3.3±0.03ms        ? ?/sec    1.02      3.4±0.03ms        ? ?/sec
physical_plan_clickbench_q34                  1.00      3.0±0.03ms        ? ?/sec    1.03      3.1±0.02ms        ? ?/sec
physical_plan_clickbench_q35                  1.00      3.1±0.03ms        ? ?/sec    1.02      3.2±0.03ms        ? ?/sec
physical_plan_clickbench_q36                  1.00      3.8±0.03ms        ? ?/sec    1.02      3.9±0.03ms        ? ?/sec
physical_plan_clickbench_q37                  1.00      3.8±0.06ms        ? ?/sec    1.01      3.9±0.04ms        ? ?/sec
physical_plan_clickbench_q38                  1.00      3.8±0.04ms        ? ?/sec    1.02      3.9±0.03ms        ? ?/sec
physical_plan_clickbench_q39                  1.00      3.6±0.03ms        ? ?/sec    1.02      3.7±0.03ms        ? ?/sec
physical_plan_clickbench_q4                   1.00      2.6±0.05ms        ? ?/sec    1.03      2.6±0.02ms        ? ?/sec
physical_plan_clickbench_q40                  1.00      4.2±0.05ms        ? ?/sec    1.02      4.3±0.05ms        ? ?/sec
physical_plan_clickbench_q41                  1.00      3.8±0.04ms        ? ?/sec    1.02      3.9±0.03ms        ? ?/sec
physical_plan_clickbench_q42                  1.00      3.7±0.03ms        ? ?/sec    1.02      3.8±0.04ms        ? ?/sec
physical_plan_clickbench_q43                  1.00      4.1±0.03ms        ? ?/sec    1.03      4.2±0.03ms        ? ?/sec
physical_plan_clickbench_q44                  1.00      2.7±0.02ms        ? ?/sec    1.03      2.8±0.02ms        ? ?/sec
physical_plan_clickbench_q45                  1.00      2.7±0.02ms        ? ?/sec    1.03      2.8±0.03ms        ? ?/sec
physical_plan_clickbench_q46                  1.00      3.1±0.03ms        ? ?/sec    1.02      3.2±0.04ms        ? ?/sec
physical_plan_clickbench_q47                  1.00      3.7±0.04ms        ? ?/sec    1.02      3.8±0.05ms        ? ?/sec
physical_plan_clickbench_q48                  1.00      4.3±0.03ms        ? ?/sec    1.02      4.4±0.04ms        ? ?/sec
physical_plan_clickbench_q49                  1.00      4.6±0.04ms        ? ?/sec    1.02      4.7±0.05ms        ? ?/sec
physical_plan_clickbench_q5                   1.00      2.8±0.02ms        ? ?/sec    1.03      2.8±0.02ms        ? ?/sec
physical_plan_clickbench_q50                  1.00      4.1±0.04ms        ? ?/sec    1.01      4.1±0.03ms        ? ?/sec
physical_plan_clickbench_q51                  1.00      3.2±0.03ms        ? ?/sec    1.02      3.3±0.03ms        ? ?/sec
physical_plan_clickbench_q6                   1.00      2.8±0.03ms        ? ?/sec    1.02      2.9±0.03ms        ? ?/sec
physical_plan_clickbench_q7                   1.00      2.5±0.02ms        ? ?/sec    1.05      2.6±0.02ms        ? ?/sec
physical_plan_clickbench_q8                   1.00      3.3±0.03ms        ? ?/sec    1.05      3.5±0.05ms        ? ?/sec
physical_plan_clickbench_q9                   1.00      3.2±0.04ms        ? ?/sec    1.04      3.3±0.04ms        ? ?/sec
physical_plan_tpcds_all                       1.01   1031.8±3.36ms        ? ?/sec    1.00   1021.7±3.66ms        ? ?/sec
physical_plan_tpch_all                        1.01     62.2±0.27ms        ? ?/sec    1.00     61.7±0.30ms        ? ?/sec
physical_plan_tpch_q1                         1.01      2.0±0.01ms        ? ?/sec    1.00      2.0±0.01ms        ? ?/sec
physical_plan_tpch_q10                        1.01      3.8±0.02ms        ? ?/sec    1.00      3.8±0.02ms        ? ?/sec
physical_plan_tpch_q11                        1.01      3.2±0.02ms        ? ?/sec    1.00      3.2±0.01ms        ? ?/sec
physical_plan_tpch_q12                        1.01   1777.4±9.12µs        ? ?/sec    1.00   1766.5±7.68µs        ? ?/sec
physical_plan_tpch_q13                        1.00   1445.9±5.98µs        ? ?/sec    1.00   1445.9±6.51µs        ? ?/sec
physical_plan_tpch_q14                        1.00   1919.2±7.27µs        ? ?/sec    1.00   1914.0±8.26µs        ? ?/sec
physical_plan_tpch_q16                        1.01      2.4±0.01ms        ? ?/sec    1.00      2.4±0.01ms        ? ?/sec
physical_plan_tpch_q17                        1.00      2.4±0.01ms        ? ?/sec    1.00      2.4±0.01ms        ? ?/sec
physical_plan_tpch_q18                        1.00      2.7±0.01ms        ? ?/sec    1.00      2.6±0.02ms        ? ?/sec
physical_plan_tpch_q19                        1.02      3.2±0.01ms        ? ?/sec    1.00      3.1±0.01ms        ? ?/sec
physical_plan_tpch_q2                         1.01      5.5±0.03ms        ? ?/sec    1.00      5.4±0.02ms        ? ?/sec
physical_plan_tpch_q20                        1.01      3.1±0.01ms        ? ?/sec    1.00      3.1±0.01ms        ? ?/sec
physical_plan_tpch_q21                        1.00      4.1±0.02ms        ? ?/sec    1.00      4.0±0.02ms        ? ?/sec
physical_plan_tpch_q22                        1.01      2.7±0.01ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
physical_plan_tpch_q3                         1.00      2.5±0.01ms        ? ?/sec    1.00      2.5±0.01ms        ? ?/sec
physical_plan_tpch_q4                         1.00   1512.3±7.03µs        ? ?/sec    1.00   1511.6±8.29µs        ? ?/sec
physical_plan_tpch_q5                         1.00      3.1±0.01ms        ? ?/sec    1.00      3.1±0.01ms        ? ?/sec
physical_plan_tpch_q6                         1.00    852.0±6.30µs        ? ?/sec    1.00    851.5±5.11µs        ? ?/sec
physical_plan_tpch_q7                         1.01      4.2±0.02ms        ? ?/sec    1.00      4.2±0.02ms        ? ?/sec
physical_plan_tpch_q8                         1.01      5.2±0.02ms        ? ?/sec    1.00      5.1±0.03ms        ? ?/sec
physical_plan_tpch_q9                         1.00      4.1±0.02ms        ? ?/sec    1.00      4.1±0.02ms        ? ?/sec
physical_select_aggregates_from_200           1.01     17.7±0.08ms        ? ?/sec    1.00     17.5±0.07ms        ? ?/sec
physical_select_all_from_1000                 1.00     24.6±0.07ms        ? ?/sec    1.00     24.6±0.14ms        ? ?/sec
physical_select_one_from_700                  1.00   1034.5±4.94µs        ? ?/sec    1.00   1036.4±5.79µs        ? ?/sec
physical_sorted_union_orderby                 1.00     41.7±0.28ms        ? ?/sec    1.00     41.6±0.31ms        ? ?/sec
physical_theta_join_consider_sort             1.00   1729.3±7.23µs        ? ?/sec    1.00  1735.2±20.95µs        ? ?/sec
physical_unnest_to_join                       1.00   1282.8±8.18µs        ? ?/sec    1.00   1281.4±8.05µs        ? ?/sec
with_param_values_many_columns                1.03    129.1±0.88µs        ? ?/sec    1.00    125.5±0.66µs        ? ?/sec

@zhuqi-lucas
Copy link
Contributor Author

🤖: Benchmark completed

Details

group                                         main                                   reduce_expr_size
-----                                         ----                                   ----------------
logical_aggregate_with_join                   1.01    619.3±3.99µs        ? ?/sec    1.00    615.6±2.26µs        ? ?/sec
logical_select_all_from_1000                  1.00     11.2±0.05ms        ? ?/sec    1.00     11.2±0.04ms        ? ?/sec
logical_select_one_from_700                   1.00    405.8±1.41µs        ? ?/sec    1.00    406.5±2.02µs        ? ?/sec
logical_trivial_join_high_numbered_columns    1.00    367.0±7.23µs        ? ?/sec    1.00    367.9±2.19µs        ? ?/sec
logical_trivial_join_low_numbered_columns     1.00    351.9±1.27µs        ? ?/sec    1.00    352.4±2.69µs        ? ?/sec
physical_intersection                         1.00   823.7±13.80µs        ? ?/sec    1.00    823.3±7.95µs        ? ?/sec
physical_join_consider_sort                   1.00  1352.6±13.56µs        ? ?/sec    1.00   1354.6±6.63µs        ? ?/sec
physical_join_distinct                        1.00    342.1±1.02µs        ? ?/sec    1.00    342.6±3.35µs        ? ?/sec
physical_many_self_joins                      1.00     10.0±0.05ms        ? ?/sec    1.00     10.0±0.04ms        ? ?/sec
physical_plan_clickbench_all                  1.01    188.7±1.84ms        ? ?/sec    1.00    187.7±3.23ms        ? ?/sec
physical_plan_clickbench_q1                   1.00      2.5±0.02ms        ? ?/sec    1.05      2.6±0.02ms        ? ?/sec
physical_plan_clickbench_q10                  1.00      3.3±0.03ms        ? ?/sec    1.04      3.5±0.04ms        ? ?/sec
physical_plan_clickbench_q11                  1.00      3.5±0.03ms        ? ?/sec    1.03      3.6±0.05ms        ? ?/sec
physical_plan_clickbench_q12                  1.00      3.6±0.03ms        ? ?/sec    1.04      3.8±0.04ms        ? ?/sec
physical_plan_clickbench_q13                  1.00      3.3±0.03ms        ? ?/sec    1.03      3.4±0.04ms        ? ?/sec
physical_plan_clickbench_q14                  1.00      3.5±0.03ms        ? ?/sec    1.03      3.6±0.07ms        ? ?/sec
physical_plan_clickbench_q15                  1.00      3.4±0.04ms        ? ?/sec    1.01      3.5±0.03ms        ? ?/sec
physical_plan_clickbench_q16                  1.00      3.2±0.04ms        ? ?/sec    1.02      3.3±0.02ms        ? ?/sec
physical_plan_clickbench_q17                  1.00      3.3±0.03ms        ? ?/sec    1.02      3.4±0.04ms        ? ?/sec
physical_plan_clickbench_q18                  1.00      2.9±0.02ms        ? ?/sec    1.03      2.9±0.02ms        ? ?/sec
physical_plan_clickbench_q19                  1.00      3.7±0.03ms        ? ?/sec    1.03      3.8±0.03ms        ? ?/sec
physical_plan_clickbench_q2                   1.00      2.9±0.02ms        ? ?/sec    1.04      3.0±0.07ms        ? ?/sec
physical_plan_clickbench_q20                  1.00      2.6±0.02ms        ? ?/sec    1.02      2.7±0.03ms        ? ?/sec
physical_plan_clickbench_q21                  1.00      2.9±0.02ms        ? ?/sec    1.03      3.0±0.03ms        ? ?/sec
physical_plan_clickbench_q22                  1.00      3.5±0.03ms        ? ?/sec    1.02      3.6±0.03ms        ? ?/sec
physical_plan_clickbench_q23                  1.00      3.8±0.04ms        ? ?/sec    1.02      3.8±0.03ms        ? ?/sec
physical_plan_clickbench_q24                  1.00      4.3±0.04ms        ? ?/sec    1.01      4.3±0.03ms        ? ?/sec
physical_plan_clickbench_q25                  1.00      3.0±0.03ms        ? ?/sec    1.03      3.1±0.03ms        ? ?/sec
physical_plan_clickbench_q26                  1.00      2.9±0.03ms        ? ?/sec    1.03      3.0±0.03ms        ? ?/sec
physical_plan_clickbench_q27                  1.00      3.0±0.03ms        ? ?/sec    1.02      3.1±0.03ms        ? ?/sec
physical_plan_clickbench_q28                  1.00      3.8±0.12ms        ? ?/sec    1.01      3.9±0.04ms        ? ?/sec
physical_plan_clickbench_q29                  1.00      4.4±0.04ms        ? ?/sec    1.02      4.5±0.04ms        ? ?/sec
physical_plan_clickbench_q3                   1.00      2.8±0.03ms        ? ?/sec    1.03      2.9±0.03ms        ? ?/sec
physical_plan_clickbench_q30                  1.00     12.8±0.12ms        ? ?/sec    1.00     12.7±0.15ms        ? ?/sec
physical_plan_clickbench_q31                  1.00      3.8±0.03ms        ? ?/sec    1.02      3.8±0.03ms        ? ?/sec
physical_plan_clickbench_q32                  1.00      3.8±0.04ms        ? ?/sec    1.02      3.9±0.04ms        ? ?/sec
physical_plan_clickbench_q33                  1.00      3.3±0.03ms        ? ?/sec    1.02      3.4±0.03ms        ? ?/sec
physical_plan_clickbench_q34                  1.00      3.0±0.03ms        ? ?/sec    1.03      3.1±0.02ms        ? ?/sec
physical_plan_clickbench_q35                  1.00      3.1±0.03ms        ? ?/sec    1.02      3.2±0.03ms        ? ?/sec
physical_plan_clickbench_q36                  1.00      3.8±0.03ms        ? ?/sec    1.02      3.9±0.03ms        ? ?/sec
physical_plan_clickbench_q37                  1.00      3.8±0.06ms        ? ?/sec    1.01      3.9±0.04ms        ? ?/sec
physical_plan_clickbench_q38                  1.00      3.8±0.04ms        ? ?/sec    1.02      3.9±0.03ms        ? ?/sec
physical_plan_clickbench_q39                  1.00      3.6±0.03ms        ? ?/sec    1.02      3.7±0.03ms        ? ?/sec
physical_plan_clickbench_q4                   1.00      2.6±0.05ms        ? ?/sec    1.03      2.6±0.02ms        ? ?/sec
physical_plan_clickbench_q40                  1.00      4.2±0.05ms        ? ?/sec    1.02      4.3±0.05ms        ? ?/sec
physical_plan_clickbench_q41                  1.00      3.8±0.04ms        ? ?/sec    1.02      3.9±0.03ms        ? ?/sec
physical_plan_clickbench_q42                  1.00      3.7±0.03ms        ? ?/sec    1.02      3.8±0.04ms        ? ?/sec
physical_plan_clickbench_q43                  1.00      4.1±0.03ms        ? ?/sec    1.03      4.2±0.03ms        ? ?/sec
physical_plan_clickbench_q44                  1.00      2.7±0.02ms        ? ?/sec    1.03      2.8±0.02ms        ? ?/sec
physical_plan_clickbench_q45                  1.00      2.7±0.02ms        ? ?/sec    1.03      2.8±0.03ms        ? ?/sec
physical_plan_clickbench_q46                  1.00      3.1±0.03ms        ? ?/sec    1.02      3.2±0.04ms        ? ?/sec
physical_plan_clickbench_q47                  1.00      3.7±0.04ms        ? ?/sec    1.02      3.8±0.05ms        ? ?/sec
physical_plan_clickbench_q48                  1.00      4.3±0.03ms        ? ?/sec    1.02      4.4±0.04ms        ? ?/sec
physical_plan_clickbench_q49                  1.00      4.6±0.04ms        ? ?/sec    1.02      4.7±0.05ms        ? ?/sec
physical_plan_clickbench_q5                   1.00      2.8±0.02ms        ? ?/sec    1.03      2.8±0.02ms        ? ?/sec
physical_plan_clickbench_q50                  1.00      4.1±0.04ms        ? ?/sec    1.01      4.1±0.03ms        ? ?/sec
physical_plan_clickbench_q51                  1.00      3.2±0.03ms        ? ?/sec    1.02      3.3±0.03ms        ? ?/sec
physical_plan_clickbench_q6                   1.00      2.8±0.03ms        ? ?/sec    1.02      2.9±0.03ms        ? ?/sec
physical_plan_clickbench_q7                   1.00      2.5±0.02ms        ? ?/sec    1.05      2.6±0.02ms        ? ?/sec
physical_plan_clickbench_q8                   1.00      3.3±0.03ms        ? ?/sec    1.05      3.5±0.05ms        ? ?/sec
physical_plan_clickbench_q9                   1.00      3.2±0.04ms        ? ?/sec    1.04      3.3±0.04ms        ? ?/sec
physical_plan_tpcds_all                       1.01   1031.8±3.36ms        ? ?/sec    1.00   1021.7±3.66ms        ? ?/sec
physical_plan_tpch_all                        1.01     62.2±0.27ms        ? ?/sec    1.00     61.7±0.30ms        ? ?/sec
physical_plan_tpch_q1                         1.01      2.0±0.01ms        ? ?/sec    1.00      2.0±0.01ms        ? ?/sec
physical_plan_tpch_q10                        1.01      3.8±0.02ms        ? ?/sec    1.00      3.8±0.02ms        ? ?/sec
physical_plan_tpch_q11                        1.01      3.2±0.02ms        ? ?/sec    1.00      3.2±0.01ms        ? ?/sec
physical_plan_tpch_q12                        1.01   1777.4±9.12µs        ? ?/sec    1.00   1766.5±7.68µs        ? ?/sec
physical_plan_tpch_q13                        1.00   1445.9±5.98µs        ? ?/sec    1.00   1445.9±6.51µs        ? ?/sec
physical_plan_tpch_q14                        1.00   1919.2±7.27µs        ? ?/sec    1.00   1914.0±8.26µs        ? ?/sec
physical_plan_tpch_q16                        1.01      2.4±0.01ms        ? ?/sec    1.00      2.4±0.01ms        ? ?/sec
physical_plan_tpch_q17                        1.00      2.4±0.01ms        ? ?/sec    1.00      2.4±0.01ms        ? ?/sec
physical_plan_tpch_q18                        1.00      2.7±0.01ms        ? ?/sec    1.00      2.6±0.02ms        ? ?/sec
physical_plan_tpch_q19                        1.02      3.2±0.01ms        ? ?/sec    1.00      3.1±0.01ms        ? ?/sec
physical_plan_tpch_q2                         1.01      5.5±0.03ms        ? ?/sec    1.00      5.4±0.02ms        ? ?/sec
physical_plan_tpch_q20                        1.01      3.1±0.01ms        ? ?/sec    1.00      3.1±0.01ms        ? ?/sec
physical_plan_tpch_q21                        1.00      4.1±0.02ms        ? ?/sec    1.00      4.0±0.02ms        ? ?/sec
physical_plan_tpch_q22                        1.01      2.7±0.01ms        ? ?/sec    1.00      2.7±0.01ms        ? ?/sec
physical_plan_tpch_q3                         1.00      2.5±0.01ms        ? ?/sec    1.00      2.5±0.01ms        ? ?/sec
physical_plan_tpch_q4                         1.00   1512.3±7.03µs        ? ?/sec    1.00   1511.6±8.29µs        ? ?/sec
physical_plan_tpch_q5                         1.00      3.1±0.01ms        ? ?/sec    1.00      3.1±0.01ms        ? ?/sec
physical_plan_tpch_q6                         1.00    852.0±6.30µs        ? ?/sec    1.00    851.5±5.11µs        ? ?/sec
physical_plan_tpch_q7                         1.01      4.2±0.02ms        ? ?/sec    1.00      4.2±0.02ms        ? ?/sec
physical_plan_tpch_q8                         1.01      5.2±0.02ms        ? ?/sec    1.00      5.1±0.03ms        ? ?/sec
physical_plan_tpch_q9                         1.00      4.1±0.02ms        ? ?/sec    1.00      4.1±0.02ms        ? ?/sec
physical_select_aggregates_from_200           1.01     17.7±0.08ms        ? ?/sec    1.00     17.5±0.07ms        ? ?/sec
physical_select_all_from_1000                 1.00     24.6±0.07ms        ? ?/sec    1.00     24.6±0.14ms        ? ?/sec
physical_select_one_from_700                  1.00   1034.5±4.94µs        ? ?/sec    1.00   1036.4±5.79µs        ? ?/sec
physical_sorted_union_orderby                 1.00     41.7±0.28ms        ? ?/sec    1.00     41.6±0.31ms        ? ?/sec
physical_theta_join_consider_sort             1.00   1729.3±7.23µs        ? ?/sec    1.00  1735.2±20.95µs        ? ?/sec
physical_unnest_to_join                       1.00   1282.8±8.18µs        ? ?/sec    1.00   1281.4±8.05µs        ? ?/sec
with_param_values_many_columns                1.03    129.1±0.88µs        ? ?/sec    1.00    125.5±0.66µs        ? ?/sec

The result is bad, no performance gain from only OuterReferenceColumn changing to Box, so i guess the improvement coming from Alias changing to Box? 🤔

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api change Changes the API exposed to users of the crate catalog Related to the catalog crate logical-expr Logical plan and expressions optimizer Optimizer rules sql SQL Planner substrait Changes to the substrait crate
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Continue to reduce Expr struct size
4 participants