Files
email-tracker/external/duckdb/test/sql/attach/attach_multi_identifiers.test
2025-10-24 19:21:19 -05:00

124 lines
2.0 KiB
SQL

# name: test/sql/attach/attach_multi_identifiers.test
# description: Test ATTACH with complex identifiers
# group: [attach]
statement ok
PRAGMA enable_verification
statement ok
ATTACH ':memory:' AS db1;
statement ok
ATTACH ':memory:' AS db2;
statement ok
CREATE SCHEMA db1.s1;
statement ok
CREATE SCHEMA db2.s1;
statement ok
CREATE TABLE db1.s1.t(c INT);
statement ok
CREATE TABLE db2.s1.t(c INT);
statement ok
INSERT INTO db1.s1.t VALUES (42);
statement ok
INSERT INTO db2.s1.t SELECT c * 2 FROM db1.s1.t
query II
SELECT * FROM db1.s1.t, db2.s1.t
----
42 84
query II
SELECT db1.t.c, db2.t.c FROM db1.s1.t, db2.s1.t
----
42 84
query II
SELECT db1.s1.t.c, db2.s1.t.c FROM db1.s1.t, db2.s1.t
----
42 84
query I
SELECT * EXCLUDE (db1.s1.t.c) FROM db1.s1.t, db2.s1.t
----
84
query I
SELECT * EXCLUDE (DB1.S1.T.C) FROM db1.s1.t, db2.s1.t
----
84
query I
SELECT * EXCLUDE (s1.t.c) FROM db1.s1.t, (SELECT 42) t
----
42
# rename
query I
SELECT * EXCLUDE (new_col) FROM (SELECT * RENAME (db1.s1.t.c AS new_col) FROM db1.s1.t, db2.s1.t)
----
84
query I
SELECT * EXCLUDE (new_col) FROM (SELECT * RENAME (DB1.S1.T.C AS new_col) FROM db1.s1.t, db2.s1.t)
----
84
query I
SELECT * EXCLUDE (new_col) FROM (SELECT * RENAME (s1.t.c AS new_col) FROM db1.s1.t, (SELECT 42) t)
----
42
# struct pack
query II
SELECT db1.s1.t, db2.s1.t FROM db1.s1.t, db2.s1.t
----
{'c': 42} {'c': 84}
query II
SELECT db1.t, db2.t FROM db1.s1.t, db2.s1.t
----
{'c': 42} {'c': 84}
# conflicting identifiers
statement error
SELECT c FROM db1.s1.t, db2.s1.t
----
<REGEX>:.*Ambiguous reference to column name.*db1.s1.t.c.*db2.s1.t.c.*
statement error
SELECT t.c FROM db1.s1.t, db2.s1.t
----
Ambiguous reference to table
statement error
SELECT s1.t.c FROM db1.s1.t, db2.s1.t
----
Ambiguous reference to table
query I
SELECT db1.s1.t.c FROM db1.s1.t, db2.s1.t
----
42
# generated columns
statement ok
CREATE OR REPLACE TABLE db1.s1.t (
c INT,
c_squared AS (c * c),
);
statement ok
INSERT INTO db1.s1.t VALUES (42);
query III
SELECT * FROM db1.s1.t, db2.s1.t
----
42 1764 84