@@ -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