File: select_star_like.test

package info (click to toggle)
duckdb 1.5.1-2
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 299,196 kB
  • sloc: cpp: 865,414; ansic: 57,292; python: 18,871; sql: 12,663; lisp: 11,751; yacc: 7,412; lex: 1,682; sh: 747; makefile: 558
file content (138 lines) | stat: -rw-r--r-- 2,611 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# name: test/sql/projection/select_star_like.test
# description: SELECT * LIKE
# group: [projection]

statement ok
PRAGMA enable_verification

statement ok
CREATE TABLE integers(col1 INTEGER, col2 INTEGER, k INTEGER)

statement ok
INSERT INTO integers VALUES (1, 2, 3)

query II
SELECT COLUMNS(lambda x: x LIKE 'col%') FROM integers
----
1	2

query II
SELECT * LIKE 'col%' FROM integers
----
1	2

# not like
query I
SELECT * NOT LIKE 'col%' FROM integers
----
3

# ilike
query II
SELECT * ILIKE 'COL%' FROM integers
----
1	2

# regex
query II
SELECT * SIMILAR TO '.*col.*' FROM integers
----
1	2

# exclude
query I
SELECT * EXCLUDE (col1) SIMILAR TO '.*col.*' FROM integers
----
2

# SIMILAR TO alias can use regex groups
query II
SELECT c2, c1 FROM (
SELECT * SIMILAR TO 'number(\d+)' AS 'c\1' FROM (SELECT 1 AS number1, 2 AS number2, 3 AS end)
)
----
2	1

# LIKE
query I
SELECT val FROM (
SELECT * NOT LIKE '%number%' AS val FROM (SELECT 1 AS number1, 2 AS number2, 3 AS end)
)
----
3

# ESCAPE
query I
SELECT * LIKE '\_%' ESCAPE '\' AS val FROM (SELECT 1 AS number1, 2 AS _number2)
----
2

query I
SELECT * NOT LIKE '\_%' ESCAPE '\' AS val FROM (SELECT 1 AS number1, 2 AS _number2)
----
1

query I
SELECT * ILIKE '\_NUM%' ESCAPE '\' AS val FROM (SELECT 1 AS number1, 2 AS _number2)
----
2

query I
SELECT * NOT ILIKE '\_NUM%' ESCAPE '\' AS val FROM (SELECT 1 AS number1, 2 AS _number2)
----
1

# non-constant pattern
statement error
SELECT * SIMILAR TO pattern FROM integers, (SELECT '.*col.*') t(pattern)
----
must be a constant

# unsupported function
statement error
SELECT * + 42 FROM integers
----
cannot be applied to a star expression

# replace
statement error
SELECT * REPLACE (col1 + 42 AS col1) SIMILAR TO '.*col.*' FROM integers
----
Replace list cannot be combined with a filtering operation

# rename
statement error
SELECT * RENAME (col1 AS other_) SIMILAR TO '.*col.*' FROM integers
----
Rename list cannot be combined with a filtering operation

# Create two tables with overlapping column name
statement ok
CREATE TABLE t1(id INTEGER, col1 INTEGER, col2 INTEGER)

statement ok
INSERT INTO t1 VALUES (1, 10, 20)

statement ok
CREATE TABLE t2(name VARCHAR, category VARCHAR, col2 INTEGER)

statement ok
INSERT INTO t2 VALUES ('foo', 'bar', 30)

# t1.* LIKE should only select from t1 table
query II
SELECT t1.* LIKE 'col%' FROM t1, t2
----
10	20

# t2.* LIKE should only select from t2 table
query I
SELECT t2.* LIKE 'col%' FROM t1, t2
----
30

# Combining both tables - each should only select from its own table
query III
SELECT t1.* LIKE 'col%', t2.* LIKE 'col%' FROM t1, t2
----
10	20	30