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
|