Skip to content

Instantly share code, notes, and snippets.

@BohuTANG
Created April 10, 2025 02:07
Show Gist options
  • Save BohuTANG/0641aa46a1f25e77726dbad85b11950f to your computer and use it in GitHub Desktop.
Save BohuTANG/0641aa46a1f25e77726dbad85b11950f to your computer and use it in GitHub Desktop.
trace-opt
Applied optimizer: SubqueryRewriter, diff:
No differences found.
Applied optimizer: RuleStatsAggregateOptimizer, diff:
No differences found.
Applied optimizer: CollectStatisticsOptimizer, diff:
No differences found.
Applied optimizer: RuleNormalizeAggregateOptimizer, diff:
No differences found.
Applied optimizer: PullUpFilterOptimizer, diff:
Limit
├── limit: [100]
├── offset: [0]
└── Sort
├── sort keys: [default.date_dim.d_year (#6) ASC NULLS LAST, derived.SUM(ss_ext_sales_price) (#73) DESC NULLS LAST, default.item.i_brand_id (#58) ASC NULLS LAST]
├── limit: [NONE]
└── EvalScalar
├── scalars: [dt.d_year (#6) AS (#6), item.i_brand_id (#58) AS (#58), item.i_brand (#59) AS (#59), SUM(ss_ext_sales_price) (#73) AS (#73)]
└── Aggregate(Initial)
├── group items: [dt.d_year (#6) AS (#6), item.i_brand (#59) AS (#59), item.i_brand_id (#58) AS (#58)]
├── aggregate functions: [SUM(ss_ext_sales_price) AS (#73)]
- └── EvalScalar
- ├── scalars: [dt.d_year (#6) AS (#6), store_sales.ss_ext_sales_price (#43) AS (#43), item.i_brand_id (#58) AS (#58), item.i_brand (#59) AS (#59)]
- └── Filter
- ├── filters: [eq(dt.d_date_sk (#0), store_sales.ss_sold_date_sk (#28)), eq(store_sales.ss_item_sk (#30), item.i_item_sk (#51)), eq(item.i_manufact_id (#64), 128), eq(dt.d_moy (#8), 11)]
+ └── Filter
+ ├── filters: [eq(item.i_manufact_id (#78), 128), eq(dt.d_moy (#79), 11), eq(dt.d_date_sk (#74), store_sales.ss_sold_date_sk (#75)), eq(store_sales.ss_item_sk (#76), item.i_item_sk (#77))]
+ └── EvalScalar
+ ├── scalars: [dt.d_year (#6) AS (#6), store_sales.ss_ext_sales_price (#43) AS (#43), item.i_brand_id (#58) AS (#58), item.i_brand (#59) AS (#59), dt.d_date_sk (#0) AS (#74), store_sales.ss_sold_date_sk (#28) AS (#75), store_sales.ss_item_sk (#30) AS (#76), item.i_item_sk (#51) AS (#77), item.i_manufact_id (#64) AS (#78), dt.d_moy (#8) AS (#79)]
└── Join(Cross)
├── build keys: []
├── probe keys: []
├── other filters: []
├── Join(Cross)
│ ├── build keys: []
│ ├── probe keys: []
│ ├── other filters: []
│ ├── Scan
│ │ ├── table: default.date_dim (#0)
│ │ ├── filters: []
│ │ ├── order by: []
│ │ └── limit: NONE
│ └── Scan
│ ├── table: default.store_sales (#1)
│ ├── filters: []
│ ├── order by: []
│ └── limit: NONE
└── Scan
├── table: default.item (#2)
├── filters: []
├── order by: []
└── limit: NONE
Applied optimizer: RecursiveOptimizer[EliminateSort,EliminateUnion,...(28)], diff:
Limit
├── limit: [100]
├── offset: [0]
└── Sort
├── sort keys: [default.date_dim.d_year (#6) ASC NULLS LAST, derived.SUM(ss_ext_sales_price) (#73) DESC NULLS LAST, default.item.i_brand_id (#58) ASC NULLS LAST]
- ├── limit: [NONE]
+ ├── limit: [100]
└── EvalScalar
├── scalars: [dt.d_year (#6) AS (#6), item.i_brand_id (#58) AS (#58), item.i_brand (#59) AS (#59), SUM(ss_ext_sales_price) (#73) AS (#73)]
└── Aggregate(Initial)
├── group items: [dt.d_year (#6) AS (#6), item.i_brand (#59) AS (#59), item.i_brand_id (#58) AS (#58)]
├── aggregate functions: [SUM(ss_ext_sales_price) AS (#73)]
- └── Filter
- ├── filters: [eq(item.i_manufact_id (#78), 128), eq(dt.d_moy (#79), 11), eq(dt.d_date_sk (#74), store_sales.ss_sold_date_sk (#75)), eq(store_sales.ss_item_sk (#76), item.i_item_sk (#77))]
- └── EvalScalar
- ├── scalars: [dt.d_year (#6) AS (#6), store_sales.ss_ext_sales_price (#43) AS (#43), item.i_brand_id (#58) AS (#58), item.i_brand (#59) AS (#59), dt.d_date_sk (#0) AS (#74), store_sales.ss_sold_date_sk (#28) AS (#75), store_sales.ss_item_sk (#30) AS (#76), item.i_item_sk (#51) AS (#77), item.i_manufact_id (#64) AS (#78), dt.d_moy (#8) AS (#79)]
- └── Join(Cross)
- ├── build keys: []
- ├── probe keys: []
- ├── other filters: []
- ├── Join(Cross)
- │ ├── build keys: []
- │ ├── probe keys: []
- │ ├── other filters: []
- │ ├── Scan
- │ │ ├── table: default.date_dim (#0)
- │ │ ├── filters: []
- │ │ ├── order by: []
- │ │ └── limit: NONE
- │ └── Scan
- │ ├── table: default.store_sales (#1)
- │ ├── filters: []
- │ ├── order by: []
- │ └── limit: NONE
- └── Scan
- ├── table: default.item (#2)
- ├── filters: []
- ├── order by: []
- └── limit: NONE
+ └── EvalScalar
+ ├── scalars: [dt.d_year (#6) AS (#6), store_sales.ss_ext_sales_price (#43) AS (#43), item.i_brand_id (#58) AS (#58), item.i_brand (#59) AS (#59), dt.d_date_sk (#0) AS (#74), store_sales.ss_sold_date_sk (#28) AS (#75), store_sales.ss_item_sk (#30) AS (#76), item.i_item_sk (#51) AS (#77), item.i_manufact_id (#64) AS (#78), dt.d_moy (#8) AS (#79)]
+ └── Join(Inner)
+ ├── build keys: [item.i_item_sk (#51)]
+ ├── probe keys: [store_sales.ss_item_sk (#30)]
+ ├── other filters: []
+ ├── Join(Inner)
+ │ ├── build keys: [store_sales.ss_sold_date_sk (#28)]
+ │ ├── probe keys: [dt.d_date_sk (#0)]
+ │ ├── other filters: []
+ │ ├── Scan
+ │ │ ├── table: default.date_dim (#0)
+ │ │ ├── filters: [eq(date_dim.d_moy (#8), 11)]
+ │ │ ├── order by: []
+ │ │ └── limit: NONE
+ │ └── Scan
+ │ ├── table: default.store_sales (#1)
+ │ ├── filters: []
+ │ ├── order by: []
+ │ └── limit: NONE
+ └── Scan
+ ├── table: default.item (#2)
+ ├── filters: [eq(item.i_manufact_id (#64), 128)]
+ ├── order by: []
+ └── limit: NONE
Applied optimizer: RecursiveOptimizer[SplitAggregate], diff:
Limit
├── limit: [100]
├── offset: [0]
└── Sort
├── sort keys: [default.date_dim.d_year (#6) ASC NULLS LAST, derived.SUM(ss_ext_sales_price) (#73) DESC NULLS LAST, default.item.i_brand_id (#58) ASC NULLS LAST]
├── limit: [100]
└── EvalScalar
├── scalars: [dt.d_year (#6) AS (#6), item.i_brand_id (#58) AS (#58), item.i_brand (#59) AS (#59), SUM(ss_ext_sales_price) (#73) AS (#73)]
- └── Aggregate(Initial)
+ └── Aggregate(Final)
├── group items: [dt.d_year (#6) AS (#6), item.i_brand (#59) AS (#59), item.i_brand_id (#58) AS (#58)]
├── aggregate functions: [SUM(ss_ext_sales_price) AS (#73)]
- └── EvalScalar
- ├── scalars: [dt.d_year (#6) AS (#6), store_sales.ss_ext_sales_price (#43) AS (#43), item.i_brand_id (#58) AS (#58), item.i_brand (#59) AS (#59), dt.d_date_sk (#0) AS (#74), store_sales.ss_sold_date_sk (#28) AS (#75), store_sales.ss_item_sk (#30) AS (#76), item.i_item_sk (#51) AS (#77), item.i_manufact_id (#64) AS (#78), dt.d_moy (#8) AS (#79)]
- └── Join(Inner)
- ├── build keys: [item.i_item_sk (#51)]
- ├── probe keys: [store_sales.ss_item_sk (#30)]
- ├── other filters: []
- ├── Join(Inner)
- │ ├── build keys: [store_sales.ss_sold_date_sk (#28)]
- │ ├── probe keys: [dt.d_date_sk (#0)]
- │ ├── other filters: []
- │ ├── Scan
- │ │ ├── table: default.date_dim (#0)
- │ │ ├── filters: [eq(date_dim.d_moy (#8), 11)]
- │ │ ├── order by: []
- │ │ └── limit: NONE
- │ └── Scan
- │ ├── table: default.store_sales (#1)
- │ ├── filters: []
- │ ├── order by: []
- │ └── limit: NONE
- └── Scan
- ├── table: default.item (#2)
- ├── filters: [eq(item.i_manufact_id (#64), 128)]
- ├── order by: []
- └── limit: NONE
+ └── Aggregate(Partial)
+ ├── group items: [dt.d_year (#6) AS (#6), item.i_brand (#59) AS (#59), item.i_brand_id (#58) AS (#58)]
+ ├── aggregate functions: [SUM(ss_ext_sales_price) AS (#73)]
+ └── EvalScalar
+ ├── scalars: [dt.d_year (#6) AS (#6), store_sales.ss_ext_sales_price (#43) AS (#43), item.i_brand_id (#58) AS (#58), item.i_brand (#59) AS (#59), dt.d_date_sk (#0) AS (#74), store_sales.ss_sold_date_sk (#28) AS (#75), store_sales.ss_item_sk (#30) AS (#76), item.i_item_sk (#51) AS (#77), item.i_manufact_id (#64) AS (#78), dt.d_moy (#8) AS (#79)]
+ └── Join(Inner)
+ ├── build keys: [item.i_item_sk (#51)]
+ ├── probe keys: [store_sales.ss_item_sk (#30)]
+ ├── other filters: []
+ ├── Join(Inner)
+ │ ├── build keys: [store_sales.ss_sold_date_sk (#28)]
+ │ ├── probe keys: [dt.d_date_sk (#0)]
+ │ ├── other filters: []
+ │ ├── Scan
+ │ │ ├── table: default.date_dim (#0)
+ │ │ ├── filters: [eq(date_dim.d_moy (#8), 11)]
+ │ │ ├── order by: []
+ │ │ └── limit: NONE
+ │ └── Scan
+ │ ├── table: default.store_sales (#1)
+ │ ├── filters: []
+ │ ├── order by: []
+ │ └── limit: NONE
+ └── Scan
+ ├── table: default.item (#2)
+ ├── filters: [eq(item.i_manufact_id (#64), 128)]
+ ├── order by: []
+ └── limit: NONE
Applied optimizer: DPhpy, diff:
Limit
├── limit: [100]
├── offset: [0]
└── Sort
├── sort keys: [default.date_dim.d_year (#6) ASC NULLS LAST, derived.SUM(ss_ext_sales_price) (#73) DESC NULLS LAST, default.item.i_brand_id (#58) ASC NULLS LAST]
├── limit: [100]
└── EvalScalar
├── scalars: [dt.d_year (#6) AS (#6), item.i_brand_id (#58) AS (#58), item.i_brand (#59) AS (#59), SUM(ss_ext_sales_price) (#73) AS (#73)]
└── Aggregate(Final)
├── group items: [dt.d_year (#6) AS (#6), item.i_brand (#59) AS (#59), item.i_brand_id (#58) AS (#58)]
├── aggregate functions: [SUM(ss_ext_sales_price) AS (#73)]
└── Aggregate(Partial)
├── group items: [dt.d_year (#6) AS (#6), item.i_brand (#59) AS (#59), item.i_brand_id (#58) AS (#58)]
├── aggregate functions: [SUM(ss_ext_sales_price) AS (#73)]
└── EvalScalar
├── scalars: [dt.d_year (#6) AS (#6), store_sales.ss_ext_sales_price (#43) AS (#43), item.i_brand_id (#58) AS (#58), item.i_brand (#59) AS (#59), dt.d_date_sk (#0) AS (#74), store_sales.ss_sold_date_sk (#28) AS (#75), store_sales.ss_item_sk (#30) AS (#76), item.i_item_sk (#51) AS (#77), item.i_manufact_id (#64) AS (#78), dt.d_moy (#8) AS (#79)]
└── Join(Inner)
- ├── build keys: [item.i_item_sk (#51)]
- ├── probe keys: [store_sales.ss_item_sk (#30)]
+ ├── build keys: [store_sales.ss_sold_date_sk (#28)]
+ ├── probe keys: [dt.d_date_sk (#0)]
├── other filters: []
- ├── Join(Inner)
- │ ├── build keys: [store_sales.ss_sold_date_sk (#28)]
- │ ├── probe keys: [dt.d_date_sk (#0)]
- │ ├── other filters: []
- │ ├── Scan
- │ │ ├── table: default.date_dim (#0)
- │ │ ├── filters: [eq(date_dim.d_moy (#8), 11)]
- │ │ ├── order by: []
- │ │ └── limit: NONE
- │ └── Scan
- │ ├── table: default.store_sales (#1)
- │ ├── filters: []
- │ ├── order by: []
- │ └── limit: NONE
- └── Scan
- ├── table: default.item (#2)
- ├── filters: [eq(item.i_manufact_id (#64), 128)]
- ├── order by: []
- └── limit: NONE
+ ├── Scan
+ │ ├── table: default.date_dim (#0)
+ │ ├── filters: [eq(date_dim.d_moy (#8), 11)]
+ │ ├── order by: []
+ │ └── limit: NONE
+ └── Join(Inner)
+ ├── build keys: [item.i_item_sk (#51)]
+ ├── probe keys: [store_sales.ss_item_sk (#30)]
+ ├── other filters: []
+ ├── Scan
+ │ ├── table: default.store_sales (#1)
+ │ ├── filters: []
+ │ ├── order by: []
+ │ └── limit: NONE
+ └── Scan
+ ├── table: default.item (#2)
+ ├── filters: [eq(item.i_manufact_id (#64), 128)]
+ ├── order by: []
+ └── limit: NONE
Applied optimizer: SingleToInnerOptimizer, diff:
No differences found.
Applied optimizer: DeduplicateJoinConditionOptimizer, diff:
No differences found.
Applied optimizer: RecursiveOptimizer[CommuteJoin], diff:
No differences found.
Applied optimizer: CascadesOptimizer, diff:
No differences found.
Applied optimizer: RecursiveOptimizer[EliminateEvalScalar], diff:
Limit
├── limit: [100]
├── offset: [0]
└── Sort
├── sort keys: [default.date_dim.d_year (#6) ASC NULLS LAST, derived.SUM(ss_ext_sales_price) (#73) DESC NULLS LAST, default.item.i_brand_id (#58) ASC NULLS LAST]
├── limit: [100]
- └── EvalScalar
- ├── scalars: [dt.d_year (#6) AS (#6), item.i_brand_id (#58) AS (#58), item.i_brand (#59) AS (#59), SUM(ss_ext_sales_price) (#73) AS (#73)]
- └── Aggregate(Final)
+ └── Aggregate(Final)
+ ├── group items: [dt.d_year (#6) AS (#6), item.i_brand (#59) AS (#59), item.i_brand_id (#58) AS (#58)]
+ ├── aggregate functions: [SUM(ss_ext_sales_price) AS (#73)]
+ └── Aggregate(Partial)
├── group items: [dt.d_year (#6) AS (#6), item.i_brand (#59) AS (#59), item.i_brand_id (#58) AS (#58)]
├── aggregate functions: [SUM(ss_ext_sales_price) AS (#73)]
- └── Aggregate(Partial)
- ├── group items: [dt.d_year (#6) AS (#6), item.i_brand (#59) AS (#59), item.i_brand_id (#58) AS (#58)]
- ├── aggregate functions: [SUM(ss_ext_sales_price) AS (#73)]
- └── EvalScalar
- ├── scalars: [dt.d_year (#6) AS (#6), store_sales.ss_ext_sales_price (#43) AS (#43), item.i_brand_id (#58) AS (#58), item.i_brand (#59) AS (#59), dt.d_date_sk (#0) AS (#74), store_sales.ss_sold_date_sk (#28) AS (#75), store_sales.ss_item_sk (#30) AS (#76), item.i_item_sk (#51) AS (#77), item.i_manufact_id (#64) AS (#78), dt.d_moy (#8) AS (#79)]
+ └── EvalScalar
+ ├── scalars: [dt.d_year (#6) AS (#6), store_sales.ss_ext_sales_price (#43) AS (#43), item.i_brand_id (#58) AS (#58), item.i_brand (#59) AS (#59), dt.d_date_sk (#0) AS (#74), store_sales.ss_sold_date_sk (#28) AS (#75), store_sales.ss_item_sk (#30) AS (#76), item.i_item_sk (#51) AS (#77), item.i_manufact_id (#64) AS (#78), dt.d_moy (#8) AS (#79)]
+ └── Join(Inner)
+ ├── build keys: [store_sales.ss_sold_date_sk (#28)]
+ ├── probe keys: [dt.d_date_sk (#0)]
+ ├── other filters: []
+ ├── Scan
+ │ ├── table: default.date_dim (#0)
+ │ ├── filters: [eq(date_dim.d_moy (#8), 11)]
+ │ ├── order by: []
+ │ └── limit: NONE
└── Join(Inner)
- ├── build keys: [store_sales.ss_sold_date_sk (#28)]
- ├── probe keys: [dt.d_date_sk (#0)]
+ ├── build keys: [item.i_item_sk (#51)]
+ ├── probe keys: [store_sales.ss_item_sk (#30)]
├── other filters: []
├── Scan
- │ ├── table: default.date_dim (#0)
- │ ├── filters: [eq(date_dim.d_moy (#8), 11)]
+ │ ├── table: default.store_sales (#1)
+ │ ├── filters: []
│ ├── order by: []
│ └── limit: NONE
- └── Join(Inner)
- ├── build keys: [item.i_item_sk (#51)]
- ├── probe keys: [store_sales.ss_item_sk (#30)]
- ├── other filters: []
- ├── Scan
- │ ├── table: default.store_sales (#1)
- │ ├── filters: []
- │ ├── order by: []
- │ └── limit: NONE
- └── Scan
- ├── table: default.item (#2)
- ├── filters: [eq(item.i_manufact_id (#64), 128)]
- ├── order by: []
- └── limit: NONE
+ └── Scan
+ ├── table: default.item (#2)
+ ├── filters: [eq(item.i_manufact_id (#64), 128)]
+ ├── order by: []
+ └── limit: NONE
Optimized plan:
Limit
├── limit: [100]
├── offset: [0]
└── Sort
├── sort keys: [default.date_dim.d_year (#6) ASC NULLS LAST, derived.SUM(ss_ext_sales_price) (#73) DESC NULLS LAST, default.item.i_brand_id (#58) ASC NULLS LAST]
├── limit: [100]
└── Aggregate(Final)
├── group items: [dt.d_year (#6) AS (#6), item.i_brand (#59) AS (#59), item.i_brand_id (#58) AS (#58)]
├── aggregate functions: [SUM(ss_ext_sales_price) AS (#73)]
└── Aggregate(Partial)
├── group items: [dt.d_year (#6) AS (#6), item.i_brand (#59) AS (#59), item.i_brand_id (#58) AS (#58)]
├── aggregate functions: [SUM(ss_ext_sales_price) AS (#73)]
└── EvalScalar
├── scalars: [dt.d_year (#6) AS (#6), store_sales.ss_ext_sales_price (#43) AS (#43), item.i_brand_id (#58) AS (#58), item.i_brand (#59) AS (#59), dt.d_date_sk (#0) AS (#74), store_sales.ss_sold_date_sk (#28) AS (#75), store_sales.ss_item_sk (#30) AS (#76), item.i_item_sk (#51) AS (#77), item.i_manufact_id (#64) AS (#78), dt.d_moy (#8) AS (#79)]
└── Join(Inner)
├── build keys: [store_sales.ss_sold_date_sk (#28)]
├── probe keys: [dt.d_date_sk (#0)]
├── other filters: []
├── Scan
│ ├── table: default.date_dim (#0)
│ ├── filters: [eq(date_dim.d_moy (#8), 11)]
│ ├── order by: []
│ └── limit: NONE
└── Join(Inner)
├── build keys: [item.i_item_sk (#51)]
├── probe keys: [store_sales.ss_item_sk (#30)]
├── other filters: []
├── Scan
│ ├── table: default.store_sales (#1)
│ ├── filters: []
│ ├── order by: []
│ └── limit: NONE
└── Scan
├── table: default.item (#2)
├── filters: [eq(item.i_manufact_id (#64), 128)]
├── order by: []
└── limit: NONE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment