mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-15 19:02:04 +00:00
104 lines
2.3 KiB
SQL
104 lines
2.3 KiB
SQL
-- https://github.com/ClickHouse/ClickHouse/issues/23194
|
|
SET enable_analyzer = 1;
|
|
|
|
DROP DATABASE IF EXISTS {CLICKHOUSE_DATABASE:Identifier};
|
|
CREATE DATABASE {CLICKHOUSE_DATABASE:Identifier};
|
|
USE {CLICKHOUSE_DATABASE:Identifier};
|
|
|
|
-- simple tuple access operator
|
|
SELECT tuple(1, 'a').1;
|
|
-- named tuple or complex column access operator - can be applied to Nested type as well as Array of named Tuple
|
|
SELECT CAST(('hello', 1) AS Tuple(hello String, count UInt32)) AS t, t.hello;
|
|
-- TODO: this doesn't work
|
|
-- https://github.com/ClickHouse/ClickHouse/issues/57361
|
|
-- SELECT CAST(('hello', 1) AS Tuple(hello String, count UInt32)).hello;
|
|
|
|
-- expansion of a tuple or complex column with asterisk
|
|
SELECT tuple(1, 'a').*;
|
|
|
|
SELECT '---';
|
|
|
|
SELECT CAST(('hello', 1) AS Tuple(name String, count UInt32)).*;
|
|
|
|
SELECT untuple(CAST(('hello', 1) AS Tuple(name String, count UInt32))); -- will give two columns `name` and `count`.
|
|
|
|
SELECT '---';
|
|
|
|
CREATE TABLE {CLICKHOUSE_DATABASE:Identifier}.t
|
|
(
|
|
col String,
|
|
hello String,
|
|
world String
|
|
)
|
|
ENGINE = Memory;
|
|
|
|
CREATE TABLE {CLICKHOUSE_DATABASE:Identifier}.u
|
|
(
|
|
cc String
|
|
)
|
|
ENGINE = Memory;
|
|
|
|
SELECT * EXCEPT('hello|world');
|
|
-- TODO: Qualified matcher t.* EXCEPT 'hello|world' does not find table.
|
|
-- SELECT t.* EXCEPT(hello, world);
|
|
-- SELECT {CLICKHOUSE_DATABASE:Identifier}.t.* REPLACE(x + 1 AS x);
|
|
|
|
|
|
SELECT * EXCEPT(hello) REPLACE(x + 1 AS x);
|
|
|
|
SELECT COLUMNS('^c') FROM t;
|
|
SELECT t.COLUMNS('^c') FROM t, u;
|
|
SELECT t.COLUMNS('^c') EXCEPT (test_hello, test_world) FROM t, u;
|
|
|
|
SELECT '---';
|
|
|
|
SELECT * FROM (SELECT x, x FROM (SELECT 1 AS x));
|
|
SELECT x FROM (SELECT x, x FROM (SELECT 1 AS x));
|
|
SELECT 1 FROM (SELECT x, x FROM (SELECT 1 AS x));
|
|
|
|
SELECT '---';
|
|
|
|
SELECT `plus(1, 2)` FROM (SELECT 1 + 2);
|
|
|
|
-- Lambda expressions can be aliased. (proposal)
|
|
--SELECT arrayMap(plus, [1, 2], [10, 20]);
|
|
--SELECT x -> x + 1 AS fun;
|
|
|
|
SELECT '---';
|
|
|
|
SELECT x FROM numbers(5 AS x);
|
|
|
|
|
|
SELECT '---';
|
|
|
|
CREATE TEMPORARY TABLE aliased
|
|
(
|
|
x UInt8 DEFAULT 0,
|
|
y ALIAS x + 1
|
|
);
|
|
|
|
INSERT INTO aliased VALUES (10);
|
|
|
|
SELECT y FROM aliased;
|
|
|
|
CREATE TEMPORARY TABLE aliased2
|
|
(
|
|
x UInt8,
|
|
y ALIAS ((x + 1) AS z) + 1
|
|
);
|
|
|
|
SELECT x, y, z FROM aliased2; -- { serverError UNKNOWN_IDENTIFIER }
|
|
|
|
|
|
SELECT '---';
|
|
|
|
CREATE TEMPORARY TABLE aliased3
|
|
(
|
|
x UInt8,
|
|
y ALIAS z + 1,
|
|
z ALIAS x + 1
|
|
);
|
|
INSERT INTO aliased3 VALUES (10);
|
|
|
|
SELECT x, y, z FROM aliased3;
|