Skip to content

Commit 082f0be

Browse files
committed
refine test infra
1 parent d6e1825 commit 082f0be

File tree

13 files changed

+85
-71
lines changed

13 files changed

+85
-71
lines changed

optd-cost-model/src/common/predicates/attr_ref_pred.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ impl AttributeRefPred {
4949

5050
/// Gets the attribute index.
5151
/// Note: The attribute index is the **base** index, which is table specific.
52-
pub fn attr_index(&self) -> usize {
53-
self.0.child(1).data.as_ref().unwrap().as_u64() as usize
52+
pub fn attr_index(&self) -> u64 {
53+
self.0.child(1).data.as_ref().unwrap().as_u64()
5454
}
5555

5656
/// Checks whether the attribute is a derived attribute. Currently, this will always return

optd-cost-model/src/cost/agg.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ impl<S: CostModelStorageManager> CostModelImpl<S> {
3737
} else {
3838
let table_id = attr_ref.table_id();
3939
let attr_idx = attr_ref.attr_index();
40+
// TODO: Only query ndistinct instead of all kinds of stats.
4041
let stats_option =
4142
self.get_attribute_comb_stats(table_id, &[attr_idx]).await?;
4243

optd-cost-model/src/cost/filter/attribute.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ impl<S: CostModelStorageManager> CostModelImpl<S> {
1919
pub(crate) async fn get_attribute_equality_selectivity(
2020
&self,
2121
table_id: TableId,
22-
attr_base_index: usize,
22+
attr_base_index: u64,
2323
value: &Value,
2424
is_eq: bool,
2525
) -> CostModelResult<f64> {
@@ -93,7 +93,7 @@ impl<S: CostModelStorageManager> CostModelImpl<S> {
9393
&self,
9494
attribute_stats: &AttributeCombValueStats,
9595
table_id: TableId,
96-
attr_base_index: usize,
96+
attr_base_index: u64,
9797
value: &Value,
9898
) -> CostModelResult<f64> {
9999
// depending on whether value is in mcvs or not, we use different logic to turn total_lt_cdf
@@ -119,7 +119,7 @@ impl<S: CostModelStorageManager> CostModelImpl<S> {
119119
pub(crate) async fn get_attribute_range_selectivity(
120120
&self,
121121
table_id: TableId,
122-
attr_base_index: usize,
122+
attr_base_index: u64,
123123
start: Bound<&Value>,
124124
end: Bound<&Value>,
125125
) -> CostModelResult<f64> {

optd-cost-model/src/cost/filter/controller.rs

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ mod tests {
114114
async fn test_const() {
115115
let cost_model = create_cost_model_mock_storage(
116116
vec![TableId(0)],
117-
vec![get_empty_per_attr_stats()],
117+
vec![HashMap::from([(0, empty_per_attr_stats())])],
118118
vec![None],
119119
HashMap::new(),
120120
);
@@ -141,14 +141,14 @@ mod tests {
141141
vec![Some(Value::Int32(1))],
142142
0.3,
143143
)])),
144+
None,
144145
0,
145146
0.0,
146-
None,
147147
);
148148
let table_id = TableId(0);
149149
let cost_model = create_cost_model_mock_storage(
150150
vec![table_id],
151-
vec![per_attribute_stats],
151+
vec![HashMap::from([(0, per_attribute_stats)])],
152152
vec![None],
153153
HashMap::new(),
154154
);
@@ -175,14 +175,14 @@ mod tests {
175175
(vec![Some(Value::Int32(1))], 0.2),
176176
(vec![Some(Value::Int32(3))], 0.44),
177177
])),
178+
None,
178179
5,
179180
0.0,
180-
None,
181181
);
182182
let table_id = TableId(0);
183183
let cost_model = create_cost_model_mock_storage(
184184
vec![table_id],
185-
vec![per_attribute_stats],
185+
vec![HashMap::from([(0, per_attribute_stats)])],
186186
vec![None],
187187
HashMap::new(),
188188
);
@@ -210,14 +210,14 @@ mod tests {
210210
vec![Some(Value::Int32(1))],
211211
0.3,
212212
)])),
213+
None,
213214
0,
214215
0.0,
215-
None,
216216
);
217217
let table_id = TableId(0);
218218
let cost_model = create_cost_model_mock_storage(
219219
vec![table_id],
220-
vec![per_attribute_stats],
220+
vec![HashMap::from([(0, per_attribute_stats)])],
221221
vec![None],
222222
HashMap::new(),
223223
);
@@ -241,17 +241,17 @@ mod tests {
241241
async fn test_attr_ref_leq_constint_no_mcvs_in_range() {
242242
let per_attribute_stats = TestPerAttributeStats::new(
243243
MostCommonValues::SimpleFrequency(SimpleMap::new(vec![])),
244-
10,
245-
0.0,
246244
Some(Distribution::SimpleDistribution(SimpleMap::new(vec![(
247245
Value::Int32(15),
248246
0.7,
249247
)]))),
248+
10,
249+
0.0,
250250
);
251251
let table_id = TableId(0);
252252
let cost_model = create_cost_model_mock_storage(
253253
vec![table_id],
254-
vec![per_attribute_stats],
254+
vec![HashMap::from([(0, per_attribute_stats)])],
255255
vec![None],
256256
HashMap::new(),
257257
);
@@ -284,17 +284,17 @@ mod tests {
284284
(vec![Some(Value::Int32(17))], 0.08),
285285
(vec![Some(Value::Int32(25))], 0.07),
286286
])),
287-
10,
288-
0.0,
289287
Some(Distribution::SimpleDistribution(SimpleMap::new(vec![(
290288
Value::Int32(15),
291289
0.7,
292290
)]))),
291+
10,
292+
0.0,
293293
);
294294
let table_id = TableId(0);
295295
let cost_model = create_cost_model_mock_storage(
296296
vec![table_id],
297-
vec![per_attribute_stats],
297+
vec![HashMap::from([(0, per_attribute_stats)])],
298298
vec![None],
299299
HashMap::new(),
300300
);
@@ -327,17 +327,17 @@ mod tests {
327327
(vec![Some(Value::Int32(15))], 0.08),
328328
(vec![Some(Value::Int32(25))], 0.07),
329329
])),
330-
10,
331-
0.0,
332330
Some(Distribution::SimpleDistribution(SimpleMap::new(vec![(
333331
Value::Int32(15),
334332
0.7,
335333
)]))),
334+
10,
335+
0.0,
336336
);
337337
let table_id = TableId(0);
338338
let cost_model = create_cost_model_mock_storage(
339339
vec![table_id],
340-
vec![per_attribute_stats],
340+
vec![HashMap::from([(0, per_attribute_stats)])],
341341
vec![None],
342342
HashMap::new(),
343343
);
@@ -365,17 +365,17 @@ mod tests {
365365
async fn test_attr_ref_lt_constint_no_mcvs_in_range() {
366366
let per_attribute_stats = TestPerAttributeStats::new(
367367
MostCommonValues::SimpleFrequency(SimpleMap::new(vec![])),
368-
10,
369-
0.0,
370368
Some(Distribution::SimpleDistribution(SimpleMap::new(vec![(
371369
Value::Int32(15),
372370
0.7,
373371
)]))),
372+
10,
373+
0.0,
374374
);
375375
let table_id = TableId(0);
376376
let cost_model = create_cost_model_mock_storage(
377377
vec![table_id],
378-
vec![per_attribute_stats],
378+
vec![HashMap::from([(0, per_attribute_stats)])],
379379
vec![None],
380380
HashMap::new(),
381381
);
@@ -408,18 +408,18 @@ mod tests {
408408
(vec![Some(Value::Int32(17))], 0.08),
409409
(vec![Some(Value::Int32(25))], 0.07),
410410
])),
411-
11, /* there are 4 MCVs which together add up to 0.3. With 11 total ndistinct, each
412-
* remaining value has freq 0.1 */
413-
0.0,
414411
Some(Distribution::SimpleDistribution(SimpleMap::new(vec![(
415412
Value::Int32(15),
416413
0.7,
417414
)]))),
415+
11, /* there are 4 MCVs which together add up to 0.3. With 11 total ndistinct, each
416+
* remaining value has freq 0.1 */
417+
0.0,
418418
);
419419
let table_id = TableId(0);
420420
let cost_model = create_cost_model_mock_storage(
421421
vec![table_id],
422-
vec![per_attribute_stats],
422+
vec![HashMap::from([(0, per_attribute_stats)])],
423423
vec![None],
424424
HashMap::new(),
425425
);
@@ -452,18 +452,18 @@ mod tests {
452452
(vec![Some(Value::Int32(15))], 0.08),
453453
(vec![Some(Value::Int32(25))], 0.07),
454454
])),
455-
11, /* there are 4 MCVs which together add up to 0.3. With 11 total ndistinct, each
456-
* remaining value has freq 0.1 */
457-
0.0,
458455
Some(Distribution::SimpleDistribution(SimpleMap::new(vec![(
459456
Value::Int32(15),
460457
0.7,
461458
)]))),
459+
11, /* there are 4 MCVs which together add up to 0.3. With 11 total ndistinct, each
460+
* remaining value has freq 0.1 */
461+
0.0,
462462
);
463463
let table_id = TableId(0);
464464
let cost_model = create_cost_model_mock_storage(
465465
vec![table_id],
466-
vec![per_attribute_stats],
466+
vec![HashMap::from([(0, per_attribute_stats)])],
467467
vec![None],
468468
HashMap::new(),
469469
);
@@ -493,17 +493,17 @@ mod tests {
493493
async fn test_attr_ref_gt_constint() {
494494
let per_attribute_stats = TestPerAttributeStats::new(
495495
MostCommonValues::SimpleFrequency(SimpleMap::new(vec![])),
496-
10,
497-
0.0,
498496
Some(Distribution::SimpleDistribution(SimpleMap::new(vec![(
499497
Value::Int32(15),
500498
0.7,
501499
)]))),
500+
10,
501+
0.0,
502502
);
503503
let table_id = TableId(0);
504504
let cost_model = create_cost_model_mock_storage(
505505
vec![table_id],
506-
vec![per_attribute_stats],
506+
vec![HashMap::from([(0, per_attribute_stats)])],
507507
vec![None],
508508
HashMap::new(),
509509
);
@@ -531,17 +531,17 @@ mod tests {
531531
async fn test_attr_ref_geq_constint() {
532532
let per_attribute_stats = TestPerAttributeStats::new(
533533
MostCommonValues::SimpleFrequency(SimpleMap::new(vec![])),
534-
10,
535-
0.0,
536534
Some(Distribution::SimpleDistribution(SimpleMap::new(vec![(
537535
Value::Int32(15),
538536
0.7,
539537
)]))),
538+
10,
539+
0.0,
540540
);
541541
let table_id = TableId(0);
542542
let cost_model = create_cost_model_mock_storage(
543543
vec![table_id],
544-
vec![per_attribute_stats],
544+
vec![HashMap::from([(0, per_attribute_stats)])],
545545
vec![None],
546546
HashMap::new(),
547547
);
@@ -574,14 +574,14 @@ mod tests {
574574
(vec![Some(Value::Int32(5))], 0.5),
575575
(vec![Some(Value::Int32(8))], 0.2),
576576
])),
577+
None,
577578
0,
578579
0.0,
579-
None,
580580
);
581581
let table_id = TableId(0);
582582
let cost_model = create_cost_model_mock_storage(
583583
vec![table_id],
584-
vec![per_attribute_stats],
584+
vec![HashMap::from([(0, per_attribute_stats)])],
585585
vec![None],
586586
HashMap::new(),
587587
);
@@ -621,14 +621,14 @@ mod tests {
621621
(vec![Some(Value::Int32(5))], 0.5),
622622
(vec![Some(Value::Int32(8))], 0.2),
623623
])),
624+
None,
624625
0,
625626
0.0,
626-
None,
627627
);
628628
let table_id = TableId(0);
629629
let cost_model = create_cost_model_mock_storage(
630630
vec![table_id],
631-
vec![per_attribute_stats],
631+
vec![HashMap::from([(0, per_attribute_stats)])],
632632
vec![None],
633633
HashMap::new(),
634634
);
@@ -667,14 +667,14 @@ mod tests {
667667
vec![Some(Value::Int32(1))],
668668
0.3,
669669
)])),
670+
None,
670671
0,
671672
0.0,
672-
None,
673673
);
674674
let table_id = TableId(0);
675675
let cost_model = create_cost_model_mock_storage(
676676
vec![table_id],
677-
vec![per_attribute_stats],
677+
vec![HashMap::from([(0, per_attribute_stats)])],
678678
vec![None],
679679
HashMap::new(),
680680
);
@@ -700,14 +700,14 @@ mod tests {
700700
vec![Some(Value::Int32(1))],
701701
0.3,
702702
)])),
703+
None,
703704
0,
704705
0.0,
705-
None,
706706
);
707707
let table_id = TableId(0);
708708
let cost_model = create_cost_model_mock_storage(
709709
vec![table_id],
710-
vec![per_attribute_stats],
710+
vec![HashMap::from([(0, per_attribute_stats)])],
711711
vec![None],
712712
HashMap::new(),
713713
);
@@ -743,9 +743,9 @@ mod tests {
743743
vec![Some(Value::Int32(1))],
744744
0.3,
745745
)])),
746+
None,
746747
0,
747748
0.1,
748-
None,
749749
);
750750
let table_id = TableId(0);
751751
let attr_infos = HashMap::from([(
@@ -761,7 +761,7 @@ mod tests {
761761
)]);
762762
let cost_model = create_cost_model_mock_storage(
763763
vec![table_id],
764-
vec![per_attribute_stats],
764+
vec![HashMap::from([(0, per_attribute_stats)])],
765765
vec![None],
766766
attr_infos,
767767
);
@@ -799,9 +799,9 @@ mod tests {
799799
async fn test_cast_attr_ref_eq_attr_ref() {
800800
let per_attribute_stats = TestPerAttributeStats::new(
801801
MostCommonValues::SimpleFrequency(SimpleMap::new(vec![])),
802+
None,
802803
0,
803804
0.0,
804-
None,
805805
);
806806
let table_id = TableId(0);
807807
let attr_infos = HashMap::from([(
@@ -827,7 +827,7 @@ mod tests {
827827
)]);
828828
let cost_model = create_cost_model_mock_storage(
829829
vec![table_id],
830-
vec![per_attribute_stats],
830+
vec![HashMap::from([(0, per_attribute_stats)])],
831831
vec![None],
832832
attr_infos,
833833
);

0 commit comments

Comments
 (0)