File: select_star_replace.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 (80 lines) | stat: -rw-r--r-- 2,204 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
# name: test/sql/projection/select_star_replace.test
# description: SELECT * REPLACE
# group: [projection]

statement ok
PRAGMA enable_verification

statement ok
CREATE TABLE integers(i INTEGER, j INTEGER, k INTEGER)

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

query III
SELECT * REPLACE i+100 AS i FROM integers
----
101	2	3

query IIII
SELECT * EXCLUDE (j, k) REPLACE (i+100 AS i), * EXCLUDE (j) REPLACE (i+100 AS i), * EXCLUDE (j, k) REPLACE (i+101 AS i) FROM integers
----
101	101	3	102

query III
SELECT * REPLACE (i+100 AS i, j+200 AS "J") FROM integers
----
101	202	3

query III
SELECT integers.* REPLACE (i+100 AS i) FROM integers
----
101	2	3

# duplicate entry in replace list
statement error
SELECT * REPLACE (i+100 AS i, i+200 AS i) FROM integers
----
<REGEX>:.*Parser Error.*Duplicate entry.*

# replace name that does not exist
statement error
SELECT * REPLACE (i+100 AS blabla) FROM integers
----
<REGEX>:.*Binder Error.*not found in FROM clause.*

statement error
SELECT integers.* REPLACE (i+100 AS blabla) FROM integers
----
<REGEX>:.*Binder Error.*not found in integers.*

# column cannot occur in both exclude and replace list
statement error
SELECT * EXCLUDE (i) REPLACE (i+100 AS i) FROM integers
----
<REGEX>:.*Parser Error.*cannot occur in both.*

# Test: REPLACE with quoted string constant (ColLabel parser support)
statement ok
CREATE TABLE test_star(id INTEGER, col1 VARCHAR, col2 VARCHAR, col3 INTEGER);

statement ok
INSERT INTO test_star VALUES (1, 'val1', 'val2', 42);

# Test: REPLACE with quoted string and arithmetic expression (binding verification)
query IIII
SELECT test_star.* REPLACE ('computed: ' || (id * 2)::VARCHAR AS col1) FROM test_star;
----
1	computed: 2	val2	42

# Test: Full combo EXCLUDE + REPLACE (arithmetic) + RENAME (unified HandleRename, qualified)
query III
SELECT test_star.* EXCLUDE (col2) REPLACE (id * 2 AS col1) RENAME (col3 AS final3) FROM test_star;
----
1	2	42

# Test: Combo with quoted REPLACE, EXCLUDE, and qualified RENAME (parser + binder integration)
query III
SELECT test_star.* EXCLUDE (col2) REPLACE ('replaced: ' || col3::VARCHAR AS col1) RENAME (id AS renamed_id, col3 AS final3) FROM test_star;
----
1	replaced: 42	42