Skip to content

Commit c156a6c

Browse files
committed
fix(cubesql): Make zero members wrapper more expensive than filter member
1 parent 709a38f commit c156a6c

File tree

1 file changed

+2
-1
lines changed
  • rust/cubesql/cubesql/src/compile/rewrite

1 file changed

+2
-1
lines changed

rust/cubesql/cubesql/src/compile/rewrite/cost.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ impl BestCubePlan {
234234
/// - `empty_wrappers` > `non_detected_cube_scans` - we don't want empty wrapper to hide non detected cube scan errors
235235
/// - `non_detected_cube_scans` > other nodes - minimize cube scans without members
236236
/// - `filters` > `filter_members` - optimize for push down of filters
237+
/// - `zero_members_wrapper` > `filter_members` - prefer CubeScan(filters) to WrappedSelect(CubeScan(*), filters)
237238
/// - `filter_members` > `cube_members` - optimize for `inDateRange` filter push down to time dimension
238239
/// - `member_errors` > `cube_members` - extra cube members may be required (e.g. CASE)
239240
/// - `member_errors` > `wrapper_nodes` - use SQL push down where possible if cube scan can't be detected
@@ -259,12 +260,12 @@ pub struct CubePlanCost {
259260
wrapped_select_ungrouped_scan: usize,
260261
filters: i64,
261262
structure_points: i64,
262-
filter_members: i64,
263263
// This is separate from both non_detected_cube_scans and cube_members
264264
// Because it's ok to use all members inside wrapper (so non_detected_cube_scans would be zero)
265265
// And we want to select representation with less members
266266
// But only when members are present!
267267
zero_members_wrapper: i64,
268+
filter_members: i64,
268269
cube_members: i64,
269270
errors: i64,
270271
time_dimensions_used_as_dimensions: i64,

0 commit comments

Comments
 (0)