Files
email-tracker/external/duckdb/test/sql/generated_columns/virtual/ambiguity.test
2025-10-24 19:21:19 -05:00

61 lines
1.3 KiB
SQL

# name: test/sql/generated_columns/virtual/ambiguity.test
# description: Test if the columnrefs in a generated-column expression can result in ambiguity
# group: [virtual]
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE unit (
price INTEGER,
amount_sold INTEGER,
total_profit AS (price * amount_sold)
);
# Not allowed to have qualified (tbl.name) column references
statement error
CREATE TABLE unit2 (
price INTEGER,
amount_sold INTEGER,
total_profit AS (price / amount_sold),
profit_total AS (unit2.price * unit2.amount_sold)
);
----
statement ok
CREATE TABLE unit2 (
price INTEGER,
amount_sold INTEGER,
total_profit AS (price / amount_sold),
profit_total AS (price * amount_sold)
);
statement ok
INSERT INTO unit VALUES (5,4)
# Ambiguous, both have 'total_profit'
statement error
SELECT total_profit FROM unit, unit2
----
statement ok
INSERT INTO unit2 VALUES (100, 4)
# When using the table name, we avoid ambiguity
statement ok
SELECT unit.total_profit FROM unit, unit2
# When using aliases for tables, this should still work
query I
SELECT unit.total_profit FROM unit AS unit2, unit2 AS unit
----
25
# No ambiguity here
statement ok
SELECT profit_total FROM unit2
# Aliasing the table name shouldn't break the generated expression
statement ok
SELECT profit_total FROM unit2 as unit