should be it
This commit is contained in:
256
external/duckdb/test/sql/function/string/test_glob.test
vendored
Normal file
256
external/duckdb/test/sql/function/string/test_glob.test
vendored
Normal file
@@ -0,0 +1,256 @@
|
||||
# name: test/sql/function/string/test_glob.test
|
||||
# description: Test GLOB statement
|
||||
# group: [string]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
# scalar glob
|
||||
query T
|
||||
SELECT 'aaa' GLOB 'bbb'
|
||||
----
|
||||
0
|
||||
|
||||
query T
|
||||
SELECT 'aaa' GLOB 'aaa'
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT 'aaa' GLOB '*'
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT 'aaa' GLOB '*a'
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT 'aaa' GLOB '*b'
|
||||
----
|
||||
0
|
||||
|
||||
query T
|
||||
SELECT 'aaa' GLOB 'a*'
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT 'aaa' GLOB 'b*'
|
||||
----
|
||||
0
|
||||
|
||||
query T
|
||||
SELECT 'aaa' GLOB 'a?a'
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT 'aaa' GLOB 'a?'
|
||||
----
|
||||
0
|
||||
|
||||
query T
|
||||
SELECT 'aaa' GLOB '??*'
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT 'aaa' GLOB '????*'
|
||||
----
|
||||
0
|
||||
|
||||
query T
|
||||
SELECT 'ababac' GLOB '*abac'
|
||||
----
|
||||
1
|
||||
|
||||
# bracket matching
|
||||
query T
|
||||
SELECT '3' GLOB '[0-9]'
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT 'a' GLOB '[0-9]'
|
||||
----
|
||||
0
|
||||
|
||||
# multiple brackets in a row
|
||||
query T
|
||||
SELECT '012' GLOB '[0-9][0-9][0-9]'
|
||||
----
|
||||
1
|
||||
|
||||
# trailing in pattern after brackets
|
||||
query T
|
||||
SELECT '012' GLOB '[0-9][0-9][0-9]a'
|
||||
----
|
||||
0
|
||||
|
||||
# trailing in string after brackets
|
||||
query T
|
||||
SELECT '012a' GLOB '[0-9][0-9][0-9]'
|
||||
----
|
||||
0
|
||||
|
||||
# more complicated brackets
|
||||
query T
|
||||
SELECT 'b3' GLOB '[abc0-9][abc0-9]'
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT 'd3' GLOB '[abc0-9][abc0-9]'
|
||||
----
|
||||
0
|
||||
|
||||
# inverse brackets
|
||||
query T
|
||||
SELECT 'a' GLOB '[!0-9]'
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT '1' GLOB '[!0-9]'
|
||||
----
|
||||
0
|
||||
|
||||
# escapes
|
||||
query T
|
||||
SELECT '*' GLOB '\*'
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT 'a' GLOB '\*'
|
||||
----
|
||||
0
|
||||
|
||||
# escaped escape
|
||||
query T
|
||||
SELECT '\' GLOB '\\'
|
||||
----
|
||||
1
|
||||
|
||||
# '
|
||||
query T
|
||||
SELECT 'a' GLOB '\\'
|
||||
----
|
||||
0
|
||||
|
||||
# bracket in a bracket
|
||||
# this is valid as long as the closing bracket is the first non-exclamation mark character
|
||||
query T
|
||||
SELECT '3]' GLOB '[]3][]]'
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT '3]' GLOB '[]3][]]'
|
||||
----
|
||||
1
|
||||
|
||||
# bracket is not properly closed
|
||||
query T
|
||||
SELECT '3' GLOB '[3'
|
||||
----
|
||||
0
|
||||
|
||||
# trailing range
|
||||
query T
|
||||
SELECT '3' GLOB '[3-'
|
||||
----
|
||||
0
|
||||
|
||||
# trailing escape
|
||||
query T
|
||||
SELECT '3' GLOB '\\'
|
||||
----
|
||||
0
|
||||
|
||||
query T
|
||||
SELECT '3' GLOB '\'
|
||||
----
|
||||
0
|
||||
|
||||
# a bunch of asterisks
|
||||
query T
|
||||
SELECT '3' GLOB '3***'
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT '1245' GLOB '**1***2*******4*5***'
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT 'aaaaaaaaaaaaaaaaaaaaaaa' GLOB '*a'
|
||||
----
|
||||
1
|
||||
|
||||
# special characters in brackets
|
||||
query T
|
||||
SELECT '?' GLOB '[?]'
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT '3' GLOB '[?]'
|
||||
----
|
||||
0
|
||||
|
||||
query T
|
||||
SELECT '*' GLOB '[*]'
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT '3' GLOB '[*]'
|
||||
----
|
||||
0
|
||||
|
||||
# multiple ranges in a bracket
|
||||
query T
|
||||
SELECT '6' GLOB '[1-35-7]'
|
||||
----
|
||||
1
|
||||
|
||||
query T
|
||||
SELECT '4' GLOB '[1-35-7]'
|
||||
----
|
||||
0
|
||||
|
||||
# trailing bracket
|
||||
query T
|
||||
SELECT '4' GLOB '['
|
||||
----
|
||||
0
|
||||
|
||||
# like with table
|
||||
statement ok
|
||||
CREATE TABLE strings(s STRING, pat STRING);
|
||||
|
||||
statement ok
|
||||
INSERT INTO strings VALUES ('abab', 'ab*'), ('aaa', 'a?a'), ('aaa', '*b*')
|
||||
|
||||
query T
|
||||
SELECT s FROM strings WHERE s GLOB 'ab*'
|
||||
----
|
||||
abab
|
||||
|
||||
query T
|
||||
SELECT s FROM strings WHERE 'aba' GLOB pat
|
||||
----
|
||||
abab
|
||||
aaa
|
||||
aaa
|
||||
|
||||
query T
|
||||
SELECT s FROM strings WHERE s GLOB pat
|
||||
----
|
||||
abab
|
||||
aaa
|
||||
|
||||
Reference in New Issue
Block a user