Skip to content

Commit

Permalink
add more test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
adriangb committed Oct 26, 2024
1 parent e02c1eb commit e29ed50
Showing 1 changed file with 56 additions and 12 deletions.
68 changes: 56 additions & 12 deletions datafusion/core/src/physical_optimizer/pruning.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3533,6 +3533,10 @@ mod tests {
/// s1 ["N", "Z"]
/// s1 [NULL, NULL]
/// s1 ["A", NULL]
/// s1 ["", "A"]
/// s1 ["", ""]
/// s1 ["AB", "A\u{10ffff}"]
/// s1 ["A\u{10ffff}\u{10ffff}\u{10ffff}", "A\u{10ffff}\u{10ffff}"]
fn utf8_setup() -> (SchemaRef, TestStatistics) {
let schema = Arc::new(Schema::new(vec![Field::new("s1", DataType::Utf8, true)]));

Expand All @@ -3548,6 +3552,8 @@ mod tests {
Some("A"),
Some(""),
Some(""),
Some("AB"),
Some("A\u{10ffff}"),
], // min
vec![
Some("Z"),
Expand All @@ -3558,6 +3564,8 @@ mod tests {
None,
Some("A"),
Some(""),
Some("A\u{10ffff}\u{10ffff}\u{10ffff}"),
Some("A\u{10ffff}\u{10ffff}"),
], // max
),
);
Expand All @@ -3577,7 +3585,11 @@ mod tests {
// s1 ["A", NULL] ==> unknown (must keep)
// s1 ["", "A"] ==> some rows could pass (must keep)
// s1 ["", ""] ==> no rows can pass (not keep)
let expected_ret = &[true, true, false, false, true, true, true, false];
// s1 ["AB", "A\u{10ffff}"] ==> no rows can pass (not keep)
// s1 ["A\u{10ffff}\u{10ffff}\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> no rows can pass (not keep)
let expected_ret = &[
true, true, false, false, true, true, true, false, false, false,
];
prune_with_expr(
// s1 = 'A'
col("s1").eq(lit("A")),
Expand All @@ -3595,7 +3607,11 @@ mod tests {
// s1 ["A", NULL] ==> no rows can pass (not keep)
// s1 ["", "A"] ==> some rows could pass (must keep)
// s1 ["", ""] ==> all rows must pass (must keep)
let expected_ret = &[false, false, false, false, true, false, true, true];
// s1 ["AB", "A\u{10ffff}"] ==> no rows can pass (not keep)
// s1 ["A\u{10ffff}\u{10ffff}\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> no rows can pass (not keep)
let expected_ret = &[
false, false, false, false, true, false, true, true, false, false,
];
prune_with_expr(
// s1 = ''
col("s1").eq(lit("")),
Expand All @@ -3618,7 +3634,9 @@ mod tests {
// s1 ["A", NULL] ==> unknown (must keep)
// s1 ["", "A"] ==> some rows could pass (must keep)
// s1 ["", ""] ==> all rows must pass (must keep)
let expected_ret = &[true, true, true, true, true, true, true, true];
// s1 ["AB", "A\u{10ffff}"] ==> all rows must pass (must keep)
// s1 ["A\u{10ffff}\u{10ffff}\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> all rows must pass (must keep)
let expected_ret = &[true, true, true, true, true, true, true, true, true, true];
prune_with_expr(
// s1 != 'A'
col("s1").not_eq(lit("A")),
Expand All @@ -3636,7 +3654,9 @@ mod tests {
// s1 ["A", NULL] ==> unknown (must keep)
// s1 ["", "A"] ==> some rows could pass (must keep)
// s1 ["", ""] ==> no rows can pass (not keep)
let expected_ret = &[true, true, true, true, true, true, true, false];
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> all rows must pass (must keep)
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> all rows must pass (must keep)
let expected_ret = &[true, true, true, true, true, true, true, false, true, true];
prune_with_expr(
// s1 != ''
col("s1").not_eq(lit("")),
Expand All @@ -3659,7 +3679,11 @@ mod tests {
// s1 ["A", NULL] ==> unknown (must keep)
// s1 ["", "A"] ==> some rows could pass (must keep)
// s1 ["", ""] ==> no rows can pass (not keep)
let expected_ret = &[true, true, false, false, true, true, true, false];
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> some rows could pass (must keep)
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> some rows could pass (must keep)
let expected_ret = &[
true, true, false, false, true, true, true, false, true, true,
];
prune_with_expr(
// s1 LIKE 'A_'
col("s1").like(lit("A_")),
Expand All @@ -3677,7 +3701,9 @@ mod tests {
// s1 ["A", NULL] ==> unknown (must keep)
// s1 ["", "A"] ==> some rows could pass (must keep)
// s1 ["", ""] ==> some rows could pass (must keep)
let expected_ret = &[true, true, true, true, true, true, true, true];
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> some rows could pass (must keep)
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> some rows could pass (must keep)
let expected_ret = &[true, true, true, true, true, true, true, true, true, true];
prune_with_expr(
// s1 LIKE '_A_'
col("s1").like(lit("_A_")),
Expand All @@ -3695,7 +3721,9 @@ mod tests {
// s1 ["A", NULL] ==> unknown (must keep)
// s1 ["", "A"] ==> all rows must pass (must keep)
// s1 ["", ""] ==> all rows must pass (must keep)
let expected_ret = &[true, true, true, true, true, true, true, true];
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> all rows must pass (must keep)
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> all rows must pass (must keep)
let expected_ret = &[true, true, true, true, true, true, true, true, true, true];
prune_with_expr(
// s1 LIKE '_'
col("s1").like(lit("_")),
Expand All @@ -3713,7 +3741,11 @@ mod tests {
// s1 ["A", NULL] ==> no rows can pass (not keep)
// s1 ["", "A"] ==> some rows could pass (must keep)
// s1 ["", ""] ==> all rows must pass (must keep)
let expected_ret = &[false, false, false, false, true, false, true, true];
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> no rows can pass (not keep)
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> no rows can pass (not keep)
let expected_ret = &[
false, false, false, false, true, false, true, true, false, false,
];
prune_with_expr(
// s1 LIKE ''
col("s1").like(lit("")),
Expand All @@ -3736,7 +3768,11 @@ mod tests {
// s1 ["A", NULL] ==> unknown (must keep)
// s1 ["", "A"] ==> some rows could pass (must keep)
// s1 ["", ""] ==> no rows can pass (not keep)
let expected_ret = &[true, true, false, false, true, true, true, false];
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> some rows could pass (must keep)
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> some rows could pass (must keep)
let expected_ret = &[
true, true, false, false, true, true, true, false, true, true,
];
prune_with_expr(
// s1 LIKE 'A%'
col("s1").like(lit("A%")),
Expand All @@ -3754,7 +3790,9 @@ mod tests {
// s1 ["A", NULL] ==> unknown (must keep)
// s1 ["", "A"] ==> some rows could pass (must keep)
// s1 ["", ""] ==> some rows could pass (must keep)
let expected_ret = &[true, true, true, true, true, true, true, true];
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> some rows could pass (must keep)
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> some rows could pass (must keep)
let expected_ret = &[true, true, true, true, true, true, true, true, true, true];
prune_with_expr(
// s1 LIKE '%A%'
col("s1").like(lit("%A%")),
Expand All @@ -3772,7 +3810,9 @@ mod tests {
// s1 ["A", NULL] ==> unknown (must keep)
// s1 ["", "A"] ==> all rows must pass (must keep)
// s1 ["", ""] ==> all rows must pass (must keep)
let expected_ret = &[true, true, true, true, true, true, true, true];
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> all rows must pass (must keep)
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> all rows must pass (must keep)
let expected_ret = &[true, true, true, true, true, true, true, true, true, true];
prune_with_expr(
// s1 LIKE '%'
col("s1").like(lit("%")),
Expand All @@ -3790,7 +3830,11 @@ mod tests {
// s1 ["A", NULL] ==> no rows can pass (not keep)
// s1 ["", "A"] ==> some rows could pass (must keep)
// s1 ["", ""] ==> all rows must pass (must keep)
let expected_ret = &[false, false, false, false, true, false, true, true];
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> no rows can pass (not keep)
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> no rows can pass (not keep)
let expected_ret = &[
false, false, false, false, true, false, true, true, false, false,
];
prune_with_expr(
// s1 LIKE ''
col("s1").like(lit("")),
Expand Down

0 comments on commit e29ed50

Please sign in to comment.