forked from apache/datafusion
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
automate sqllogictest for different string types
- Loading branch information
1 parent
3ece7a7
commit 323aa01
Showing
3 changed files
with
202 additions
and
0 deletions.
There are no files selected for viewing
119 changes: 119 additions & 0 deletions
119
datafusion/sqllogictest/test_files/string_functions/substr/substr_literal.slt.part
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
query T | ||
SELECT substr('alphabet', -3) | ||
---- | ||
alphabet | ||
|
||
query T | ||
SELECT substr('alphabet', 0) | ||
---- | ||
alphabet | ||
|
||
query T | ||
SELECT substr('alphabet', 1) | ||
---- | ||
alphabet | ||
|
||
query T | ||
SELECT substr('alphabet', 2) | ||
---- | ||
lphabet | ||
|
||
query T | ||
SELECT substr('alphabet', 3) | ||
---- | ||
phabet | ||
|
||
query T | ||
SELECT substr('alphabet', 30) | ||
---- | ||
(empty) | ||
|
||
query T | ||
SELECT substr('alphabet', 3, 2) | ||
---- | ||
ph | ||
|
||
query T | ||
SELECT substr('alphabet', 3, 20) | ||
---- | ||
phabet | ||
|
||
query TT | ||
select | ||
substr(arrow_cast('alphabet', 'LargeUtf8'), 3, 20), | ||
substr(arrow_cast('alphabet', 'Utf8View'), 3, 20); | ||
---- | ||
phabet phabet | ||
|
||
# test range ouside of string length | ||
query TTTTTTTTTTTT | ||
SELECT | ||
substr('hi🌏', 1, 3), | ||
substr('hi🌏', 1, 4), | ||
substr('hi🌏', 1, 100), | ||
substr('hi🌏', 0, 1), | ||
substr('hi🌏', 0, 2), | ||
substr('hi🌏', 0, 4), | ||
substr('hi🌏', 0, 5), | ||
substr('hi🌏', -10, 100), | ||
substr('hi🌏', -10, 12), | ||
substr('hi🌏', -10, 5), | ||
substr('hi🌏', 10, 0), | ||
substr('hi🌏', 10, 10); | ||
---- | ||
hi🌏 hi🌏 hi🌏 (empty) h hi🌏 hi🌏 hi🌏 h (empty) (empty) (empty) | ||
|
||
query TTTTTTTTTTTT | ||
SELECT | ||
substr('', 1, 3), | ||
substr('', 1, 4), | ||
substr('', 1, 100), | ||
substr('', 0, 1), | ||
substr('', 0, 2), | ||
substr('', 0, 4), | ||
substr('', 0, 5), | ||
substr('', -10, 100), | ||
substr('', -10, 12), | ||
substr('', -10, 5), | ||
substr('', 10, 0), | ||
substr('', 10, 10); | ||
---- | ||
(empty) (empty) (empty) (empty) (empty) (empty) (empty) (empty) (empty) (empty) (empty) (empty) | ||
|
||
# Nulls | ||
query TTTTTTTTTT | ||
SELECT | ||
substr('alphabet', NULL), | ||
substr(NULL, 1), | ||
substr(NULL, NULL), | ||
substr('alphabet', CAST(NULL AS int), -20), | ||
substr('alphabet', 3, CAST(NULL AS int)), | ||
substr(NULL, 3, -4), | ||
substr(NULL, NULL, 4), | ||
substr(NULL, 1, NULL), | ||
substr('', NULL, NULL), | ||
substr(NULL, NULL, NULL); | ||
---- | ||
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL | ||
|
||
query T | ||
SELECT substr('Hello🌏世界', 5) | ||
---- | ||
o🌏世界 | ||
|
||
query T | ||
SELECT substr('Hello🌏世界', 5, 3) | ||
---- | ||
o🌏世 | ||
|
||
statement error The SUBSTR function can only accept strings, but got Int64. | ||
SELECT substr(1, 3) | ||
|
||
statement error The SUBSTR function can only accept strings, but got Int64. | ||
SELECT substr(1, 3, 4) | ||
|
||
statement error Execution error: negative substring length not allowed | ||
select substr(arrow_cast('foo', 'Utf8View'), 1, -1); | ||
|
||
statement error Execution error: negative substring length not allowed | ||
select substr('', 1, -1); |
55 changes: 55 additions & 0 deletions
55
datafusion/sqllogictest/test_files/string_functions/substr/substr_runner.slt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
# -------------------------------------- | ||
# Test `substr()` with literal arguments | ||
# -------------------------------------- | ||
include ./substr_literal.slt.part | ||
|
||
# -------------------------------------- | ||
# Setup test tables with different physical string types (Utf8/Utf8View/LargeUtf8) | ||
# and repeat tests in `substr_table.slt.part` | ||
# -------------------------------------- | ||
statement ok | ||
create table test_substr_base ( | ||
col1 VARCHAR | ||
) as values ('foo'), ('hello🌏世界'), ('💩'), ('ThisIsAVeryLongASCIIString'), (''), (NULL); | ||
|
||
# | ||
# Run1: Utf8 | ||
# | ||
statement ok | ||
create table test_substr as | ||
select arrow_cast(col1, 'Utf8') as c1 from test_substr_base; | ||
|
||
include ./substr_table.slt.part | ||
|
||
statement ok | ||
drop table test_substr; | ||
|
||
# | ||
# Run2: Utf8View | ||
# | ||
statement ok | ||
create table test_substr as | ||
select arrow_cast(col1, 'Utf8View') as c1 from test_substr_base; | ||
|
||
include ./substr_table.slt.part | ||
|
||
statement ok | ||
drop table test_substr; | ||
|
||
# | ||
# Run3: LargeUtf8 | ||
# | ||
statement ok | ||
create table test_substr as | ||
select arrow_cast(col1, 'LargeUtf8') as c1 from test_substr_base; | ||
|
||
include ./substr_table.slt.part | ||
|
||
statement ok | ||
drop table test_substr; | ||
|
||
# -------------------------------------- | ||
# Cleanup | ||
# -------------------------------------- | ||
statement ok | ||
drop table test_substr_base; |
28 changes: 28 additions & 0 deletions
28
datafusion/sqllogictest/test_files/string_functions/substr/substr_table.slt.part
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# This file is intended to be run with tables already defined | ||
# with standard data but possibly different types in string columns | ||
# (String, StringView, etc.) | ||
|
||
query TTTTTTTTTTTTTT | ||
select | ||
substr(c1, 1), | ||
substr(c1, 3), | ||
substr(c1, 100), | ||
substr(c1, -1), | ||
substr(c1, 0, 0), | ||
substr(c1, -1, 2), | ||
substr(c1, -2, 10), | ||
substr(c1, -100, 200), | ||
substr(c1, -10, 10), | ||
substr(c1, -100, 10), | ||
substr(c1, 1, 100), | ||
substr(c1, 5, 3), | ||
substr(c1, 100, 200), | ||
substr(c1, 8, 0) | ||
from test_substr; | ||
---- | ||
foo o (empty) foo (empty) (empty) foo foo (empty) (empty) foo (empty) (empty) (empty) | ||
hello🌏世界 llo🌏世界 (empty) hello🌏世界 (empty) (empty) hello🌏世 hello🌏世界 (empty) (empty) hello🌏世界 o🌏世 (empty) (empty) | ||
💩 (empty) (empty) 💩 (empty) (empty) 💩 💩 (empty) (empty) 💩 (empty) (empty) (empty) | ||
ThisIsAVeryLongASCIIString isIsAVeryLongASCIIString (empty) ThisIsAVeryLongASCIIString (empty) (empty) ThisIsA ThisIsAVeryLongASCIIString (empty) (empty) ThisIsAVeryLongASCIIString IsA (empty) (empty) | ||
(empty) (empty) (empty) (empty) (empty) (empty) (empty) (empty) (empty) (empty) (empty) (empty) (empty) (empty) | ||
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL |