Skip to content

Commit e29ed50

Browse files
committed
add more test cases
1 parent e02c1eb commit e29ed50

1 file changed

Lines changed: 56 additions & 12 deletions

File tree

datafusion/core/src/physical_optimizer/pruning.rs

Lines changed: 56 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3533,6 +3533,10 @@ mod tests {
35333533
/// s1 ["N", "Z"]
35343534
/// s1 [NULL, NULL]
35353535
/// s1 ["A", NULL]
3536+
/// s1 ["", "A"]
3537+
/// s1 ["", ""]
3538+
/// s1 ["AB", "A\u{10ffff}"]
3539+
/// s1 ["A\u{10ffff}\u{10ffff}\u{10ffff}", "A\u{10ffff}\u{10ffff}"]
35363540
fn utf8_setup() -> (SchemaRef, TestStatistics) {
35373541
let schema = Arc::new(Schema::new(vec![Field::new("s1", DataType::Utf8, true)]));
35383542

@@ -3548,6 +3552,8 @@ mod tests {
35483552
Some("A"),
35493553
Some(""),
35503554
Some(""),
3555+
Some("AB"),
3556+
Some("A\u{10ffff}"),
35513557
], // min
35523558
vec![
35533559
Some("Z"),
@@ -3558,6 +3564,8 @@ mod tests {
35583564
None,
35593565
Some("A"),
35603566
Some(""),
3567+
Some("A\u{10ffff}\u{10ffff}\u{10ffff}"),
3568+
Some("A\u{10ffff}\u{10ffff}"),
35613569
], // max
35623570
),
35633571
);
@@ -3577,7 +3585,11 @@ mod tests {
35773585
// s1 ["A", NULL] ==> unknown (must keep)
35783586
// s1 ["", "A"] ==> some rows could pass (must keep)
35793587
// s1 ["", ""] ==> no rows can pass (not keep)
3580-
let expected_ret = &[true, true, false, false, true, true, true, false];
3588+
// s1 ["AB", "A\u{10ffff}"] ==> no rows can pass (not keep)
3589+
// s1 ["A\u{10ffff}\u{10ffff}\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> no rows can pass (not keep)
3590+
let expected_ret = &[
3591+
true, true, false, false, true, true, true, false, false, false,
3592+
];
35813593
prune_with_expr(
35823594
// s1 = 'A'
35833595
col("s1").eq(lit("A")),
@@ -3595,7 +3607,11 @@ mod tests {
35953607
// s1 ["A", NULL] ==> no rows can pass (not keep)
35963608
// s1 ["", "A"] ==> some rows could pass (must keep)
35973609
// s1 ["", ""] ==> all rows must pass (must keep)
3598-
let expected_ret = &[false, false, false, false, true, false, true, true];
3610+
// s1 ["AB", "A\u{10ffff}"] ==> no rows can pass (not keep)
3611+
// s1 ["A\u{10ffff}\u{10ffff}\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> no rows can pass (not keep)
3612+
let expected_ret = &[
3613+
false, false, false, false, true, false, true, true, false, false,
3614+
];
35993615
prune_with_expr(
36003616
// s1 = ''
36013617
col("s1").eq(lit("")),
@@ -3618,7 +3634,9 @@ mod tests {
36183634
// s1 ["A", NULL] ==> unknown (must keep)
36193635
// s1 ["", "A"] ==> some rows could pass (must keep)
36203636
// s1 ["", ""] ==> all rows must pass (must keep)
3621-
let expected_ret = &[true, true, true, true, true, true, true, true];
3637+
// s1 ["AB", "A\u{10ffff}"] ==> all rows must pass (must keep)
3638+
// s1 ["A\u{10ffff}\u{10ffff}\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> all rows must pass (must keep)
3639+
let expected_ret = &[true, true, true, true, true, true, true, true, true, true];
36223640
prune_with_expr(
36233641
// s1 != 'A'
36243642
col("s1").not_eq(lit("A")),
@@ -3636,7 +3654,9 @@ mod tests {
36363654
// s1 ["A", NULL] ==> unknown (must keep)
36373655
// s1 ["", "A"] ==> some rows could pass (must keep)
36383656
// s1 ["", ""] ==> no rows can pass (not keep)
3639-
let expected_ret = &[true, true, true, true, true, true, true, false];
3657+
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> all rows must pass (must keep)
3658+
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> all rows must pass (must keep)
3659+
let expected_ret = &[true, true, true, true, true, true, true, false, true, true];
36403660
prune_with_expr(
36413661
// s1 != ''
36423662
col("s1").not_eq(lit("")),
@@ -3659,7 +3679,11 @@ mod tests {
36593679
// s1 ["A", NULL] ==> unknown (must keep)
36603680
// s1 ["", "A"] ==> some rows could pass (must keep)
36613681
// s1 ["", ""] ==> no rows can pass (not keep)
3662-
let expected_ret = &[true, true, false, false, true, true, true, false];
3682+
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> some rows could pass (must keep)
3683+
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> some rows could pass (must keep)
3684+
let expected_ret = &[
3685+
true, true, false, false, true, true, true, false, true, true,
3686+
];
36633687
prune_with_expr(
36643688
// s1 LIKE 'A_'
36653689
col("s1").like(lit("A_")),
@@ -3677,7 +3701,9 @@ mod tests {
36773701
// s1 ["A", NULL] ==> unknown (must keep)
36783702
// s1 ["", "A"] ==> some rows could pass (must keep)
36793703
// s1 ["", ""] ==> some rows could pass (must keep)
3680-
let expected_ret = &[true, true, true, true, true, true, true, true];
3704+
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> some rows could pass (must keep)
3705+
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> some rows could pass (must keep)
3706+
let expected_ret = &[true, true, true, true, true, true, true, true, true, true];
36813707
prune_with_expr(
36823708
// s1 LIKE '_A_'
36833709
col("s1").like(lit("_A_")),
@@ -3695,7 +3721,9 @@ mod tests {
36953721
// s1 ["A", NULL] ==> unknown (must keep)
36963722
// s1 ["", "A"] ==> all rows must pass (must keep)
36973723
// s1 ["", ""] ==> all rows must pass (must keep)
3698-
let expected_ret = &[true, true, true, true, true, true, true, true];
3724+
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> all rows must pass (must keep)
3725+
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> all rows must pass (must keep)
3726+
let expected_ret = &[true, true, true, true, true, true, true, true, true, true];
36993727
prune_with_expr(
37003728
// s1 LIKE '_'
37013729
col("s1").like(lit("_")),
@@ -3713,7 +3741,11 @@ mod tests {
37133741
// s1 ["A", NULL] ==> no rows can pass (not keep)
37143742
// s1 ["", "A"] ==> some rows could pass (must keep)
37153743
// s1 ["", ""] ==> all rows must pass (must keep)
3716-
let expected_ret = &[false, false, false, false, true, false, true, true];
3744+
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> no rows can pass (not keep)
3745+
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> no rows can pass (not keep)
3746+
let expected_ret = &[
3747+
false, false, false, false, true, false, true, true, false, false,
3748+
];
37173749
prune_with_expr(
37183750
// s1 LIKE ''
37193751
col("s1").like(lit("")),
@@ -3736,7 +3768,11 @@ mod tests {
37363768
// s1 ["A", NULL] ==> unknown (must keep)
37373769
// s1 ["", "A"] ==> some rows could pass (must keep)
37383770
// s1 ["", ""] ==> no rows can pass (not keep)
3739-
let expected_ret = &[true, true, false, false, true, true, true, false];
3771+
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> some rows could pass (must keep)
3772+
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> some rows could pass (must keep)
3773+
let expected_ret = &[
3774+
true, true, false, false, true, true, true, false, true, true,
3775+
];
37403776
prune_with_expr(
37413777
// s1 LIKE 'A%'
37423778
col("s1").like(lit("A%")),
@@ -3754,7 +3790,9 @@ mod tests {
37543790
// s1 ["A", NULL] ==> unknown (must keep)
37553791
// s1 ["", "A"] ==> some rows could pass (must keep)
37563792
// s1 ["", ""] ==> some rows could pass (must keep)
3757-
let expected_ret = &[true, true, true, true, true, true, true, true];
3793+
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> some rows could pass (must keep)
3794+
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> some rows could pass (must keep)
3795+
let expected_ret = &[true, true, true, true, true, true, true, true, true, true];
37583796
prune_with_expr(
37593797
// s1 LIKE '%A%'
37603798
col("s1").like(lit("%A%")),
@@ -3772,7 +3810,9 @@ mod tests {
37723810
// s1 ["A", NULL] ==> unknown (must keep)
37733811
// s1 ["", "A"] ==> all rows must pass (must keep)
37743812
// s1 ["", ""] ==> all rows must pass (must keep)
3775-
let expected_ret = &[true, true, true, true, true, true, true, true];
3813+
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> all rows must pass (must keep)
3814+
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> all rows must pass (must keep)
3815+
let expected_ret = &[true, true, true, true, true, true, true, true, true, true];
37763816
prune_with_expr(
37773817
// s1 LIKE '%'
37783818
col("s1").like(lit("%")),
@@ -3790,7 +3830,11 @@ mod tests {
37903830
// s1 ["A", NULL] ==> no rows can pass (not keep)
37913831
// s1 ["", "A"] ==> some rows could pass (must keep)
37923832
// s1 ["", ""] ==> all rows must pass (must keep)
3793-
let expected_ret = &[false, false, false, false, true, false, true, true];
3833+
// s1 ["AB", "A\u{10ffff}\u{10ffff}\u{10ffff}"] ==> no rows can pass (not keep)
3834+
// s1 ["A\u{10ffff}", "A\u{10ffff}\u{10ffff}"] ==> no rows can pass (not keep)
3835+
let expected_ret = &[
3836+
false, false, false, false, true, false, true, true, false, false,
3837+
];
37943838
prune_with_expr(
37953839
// s1 LIKE ''
37963840
col("s1").like(lit("")),

0 commit comments

Comments
 (0)