# LogicTest: default distsql

# Tests for SELECT with table aliasing.

statement ok
CREATE TABLE abc (a INT PRIMARY KEY, b INT, c INT)

statement ok
INSERT INTO abc VALUES (1, 2, 3), (4, 5, 6)


# Verify output column naming with *.

query III colnames,rowsort
SELECT * FROM abc
----
a b c
1 2 3
4 5 6

query III colnames,rowsort
SELECT * FROM abc AS foo
----
a b c
1 2 3
4 5 6

query III colnames,rowsort
SELECT * FROM abc AS foo (foo1)
----
foo1 b c
1 2 3
4 5 6

query III colnames,rowsort
SELECT * FROM abc AS foo (foo1, foo2)
----
foo1 foo2 c
1 2 3
4 5 6

query III colnames,rowsort
SELECT * FROM abc AS foo (foo1, foo2, foo3)
----
foo1 foo2 foo3
1 2 3
4 5 6


# Verify qualified name resolution.

query IIII colnames,rowsort
SELECT foo1, foo.foo1, b, foo.c FROM abc AS foo (foo1)
----
foo1 foo1 b c
1 1 2 3
4 4 5 6

query III colnames,rowsort
SELECT * FROM abc AS foo (foo1, foo2) WHERE foo.foo1 = 1
----
foo1 foo2 c
1 2 3

query III colnames,rowsort
SELECT * FROM abc AS foo (foo1, foo2) WHERE foo.foo2 = 2
----
foo1 foo2 c
1 2 3

query III colnames,rowsort
SELECT * FROM abc AS foo (foo1, foo2) WHERE foo.c = 6
----
foo1 foo2 c
4 5 6


# Verify we can't resolve columns using overridden table or colum names.

query error source name "abc" not found in FROM clause
SELECT abc.foo1 FROM abc AS foo (foo1)

query error source name "abc" not found in FROM clause
SELECT abc.b FROM abc AS foo (foo1)

query error column name "foo.a" not found
SELECT foo.a FROM abc AS foo (foo1)


# Verify error for too many column aliases.

query error source "foo" has 3 columns available but 4 columns specified
SELECT * FROM abc AS foo (foo1, foo2, foo3, foo4)


# Verify that implicit columns don't interfere with aliasing.

statement ok
CREATE TABLE ab (a INT, b INT)

statement ok
INSERT INTO ab VALUES (1, 2), (1, 3), (2, 5)

query II colnames,rowsort
SELECT * FROM ab AS foo (foo1, foo2)
----
foo1 foo2
1 2
1 3
2 5

statement ok
SELECT rowid, foo.rowid FROM ab AS foo (foo1, foo2)

query error source name "ab" not found in FROM clause
SELECT ab.rowid FROM ab AS foo (foo1)

query error source "foo" has 2 columns available but 3 columns specified
SELECT * FROM ab AS foo (foo1, foo2, foo3)
