File: attach_multi_identifiers.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 (123 lines) | stat: -rw-r--r-- 2,057 bytes parent folder | download | duplicates (3)
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
# 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