Skip to content

Commit

Permalink
Test LIKE with dynamic pattern
Browse files Browse the repository at this point in the history
LIKE pattern doesn't have to be static. Add test cases with dynamic LIKE
to prevent potential regressions.
  • Loading branch information
findepi committed Oct 28, 2024
1 parent 4241766 commit 79d2a53
Showing 1 changed file with 100 additions and 0 deletions.
100 changes: 100 additions & 0 deletions datafusion/sqllogictest/test_files/string/string.slt
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,106 @@ NULL NULL NULL NULL NULL NULL
#
include ./string_query.slt.part

# TODO support all String types in sql_like_to_expr and move this test to `string_query.slt.part`
# dynamic LIKE as filter
query TTT rowsort
SELECT ascii_1, 'is LIKE', ascii_2 FROM test_basic_operator WHERE ascii_1 LIKE ascii_2
UNION ALL
SELECT ascii_1, 'is NOT LIKE', ascii_2 FROM test_basic_operator WHERE ascii_1 NOT LIKE ascii_2
UNION ALL
SELECT unicode_1, 'is LIKE', ascii_2 FROM test_basic_operator WHERE unicode_1 LIKE ascii_2
UNION ALL
SELECT unicode_1, 'is NOT LIKE', ascii_2 FROM test_basic_operator WHERE unicode_1 NOT LIKE ascii_2
UNION ALL
SELECT unicode_2, 'is LIKE', ascii_2 FROM test_basic_operator WHERE unicode_2 LIKE ascii_2
UNION ALL
SELECT unicode_2, 'is NOT LIKE', ascii_2 FROM test_basic_operator WHERE unicode_2 NOT LIKE ascii_2
----
Andrew is NOT LIKE X
Pan Tadeusz ma frunąć stąd w kąt is NOT LIKE p%t
Raphael is NOT LIKE R
Xiangpeng is LIKE Xiangpeng
chrząszcz na łące w 東京都 is NOT LIKE un_____core
datafusionДатаФусион is NOT LIKE R
datafusion数据融合 is NOT LIKE Xiangpeng
datafusion数据融合 is NOT LIKE Xiangpeng
datafusion📊🔥 is NOT LIKE X
pan Tadeusz ma iść w kąt is LIKE p%t
percent is LIKE p%t
un iść core is LIKE un_____core
under_score is LIKE un_____core
аФус is NOT LIKE R
🔥 is NOT LIKE R
🔥 is NOT LIKE X

# TODO support all String types in sql_like_to_expr and move this test to `string_query.slt.part`
# dynamic LIKE as projection
query TTTTBBBB rowsort
SELECT
ascii_1, ascii_2, unicode_1, unicode_2,
(ascii_1 LIKE ascii_2) AS ascii_1_like_ascii_2,
(ascii_2 LIKE ascii_1) AS ascii_2_like_ascii_1,
(unicode_1 LIKE ascii_2) AS unicode_1_like_ascii_2,
(unicode_2 LIKE ascii_2) AS unicode_2_like_ascii_2
FROM test_basic_operator
----
Andrew X datafusion📊🔥 🔥 false false false false
NULL R NULL 🔥 NULL NULL NULL false
Raphael R datafusionДатаФусион аФус false false false false
Xiangpeng Xiangpeng datafusion数据融合 datafusion数据融合 true true false false
percent p%t pan Tadeusz ma iść w kąt Pan Tadeusz ma frunąć stąd w kąt true false true false
under_score un_____core un iść core chrząszcz na łące w 東京都 true false true false

# TODO support all String types in sql_like_to_expr and move this test to `string_query.slt.part`
# dynamic ILIKE as filter
query TTT rowsort
SELECT ascii_1, 'is ILIKE', ascii_2 FROM test_basic_operator WHERE ascii_1 ILIKE ascii_2
UNION ALL
SELECT ascii_1, 'is NOT ILIKE', ascii_2 FROM test_basic_operator WHERE ascii_1 NOT ILIKE ascii_2
UNION ALL
SELECT unicode_1, 'is ILIKE', ascii_2 FROM test_basic_operator WHERE unicode_1 ILIKE ascii_2
UNION ALL
SELECT unicode_1, 'is NOT ILIKE', ascii_2 FROM test_basic_operator WHERE unicode_1 NOT ILIKE ascii_2
UNION ALL
SELECT unicode_2, 'is ILIKE', ascii_2 FROM test_basic_operator WHERE unicode_2 ILIKE ascii_2
UNION ALL
SELECT unicode_2, 'is NOT ILIKE', ascii_2 FROM test_basic_operator WHERE unicode_2 NOT ILIKE ascii_2
----
Andrew is NOT ILIKE X
Pan Tadeusz ma frunąć stąd w kąt is ILIKE p%t
Raphael is NOT ILIKE R
Xiangpeng is ILIKE Xiangpeng
chrząszcz na łące w 東京都 is NOT ILIKE un_____core
datafusionДатаФусион is NOT ILIKE R
datafusion数据融合 is NOT ILIKE Xiangpeng
datafusion数据融合 is NOT ILIKE Xiangpeng
datafusion📊🔥 is NOT ILIKE X
pan Tadeusz ma iść w kąt is ILIKE p%t
percent is ILIKE p%t
un iść core is ILIKE un_____core
under_score is ILIKE un_____core
аФус is NOT ILIKE R
🔥 is NOT ILIKE R
🔥 is NOT ILIKE X

# TODO support all String types in sql_like_to_expr and move this test to `string_query.slt.part`
# dynamic ILIKE as projection
query TTTTBBBB rowsort
SELECT
ascii_1, ascii_2, unicode_1, unicode_2,
(ascii_1 ILIKE ascii_2) AS ascii_1_ilike_ascii_2,
(ascii_2 ILIKE ascii_1) AS ascii_2_ilike_ascii_1,
(unicode_1 ILIKE ascii_2) AS unicode_1_ilike_ascii_2,
(unicode_2 ILIKE ascii_2) AS unicode_2_ilike_ascii_2
FROM test_basic_operator
----
Andrew X datafusion📊🔥 🔥 false false false false
NULL R NULL 🔥 NULL NULL NULL false
Raphael R datafusionДатаФусион аФус false false false false
Xiangpeng Xiangpeng datafusion数据融合 datafusion数据融合 true true false false
percent p%t pan Tadeusz ma iść w kąt Pan Tadeusz ma frunąć stąd w kąt true false true true
under_score un_____core un iść core chrząszcz na łące w 東京都 true false true false

#
# Clean up
#
Expand Down

0 comments on commit 79d2a53

Please sign in to comment.