blob: 6d1f96ef4514a6cbeee41f935d5d93bf7ef40b7a [file] [log] [blame]
--! qt:dataset:src
-- VALUES -> array(struct(),struct())
-- TABLE -> LATERAL VIEW INLINE
-- SORT_QUERY_RESULTS
CREATE TABLE mytbl_n1 AS
SELECT key, value
FROM src
ORDER BY key, value
LIMIT 5;
EXPLAIN
INSERT INTO mytbl_n1(key,value)
SELECT a,b as c FROM TABLE(VALUES(1,2),(3,4)) AS vc(a,b)
WHERE b = 9;
INSERT INTO mytbl_n1(key,value)
SELECT a,b as c FROM TABLE(VALUES(1,2),(3,4)) AS vc(a,b)
WHERE b = 9;
EXPLAIN
SELECT tf.col1, tf.col2, tf.col3
FROM
(SELECT key, value FROM mytbl_n1) t
LATERAL VIEW
INLINE(array(struct('A', 10, t.key),struct('B', 20, t.key))) tf AS col1, col2, col3;
SELECT tf.col1, tf.col2, tf.col3
FROM
(SELECT key, value FROM mytbl_n1) t
LATERAL VIEW
INLINE(array(struct('A', 10, t.key),struct('B', 20, t.key))) tf AS col1, col2, col3;
EXPLAIN
SELECT INLINE(array(struct('A', 10, 30),struct('B', 20, 30))) AS (col1, col2, col3);
SELECT INLINE(array(struct('A', 10, 30),struct('B', 20, 30))) AS (col1, col2, col3);
EXPLAIN
SELECT tf.col1, tf.col2, tf.col3
FROM
TABLE(VALUES('A', 10, 30.0),('B', 20, 30.0)) AS tf(col1, col2, col3);
SELECT tf.col1, tf.col2, tf.col3
FROM
TABLE(VALUES('A', 10, 30),('B', 20, 30)) AS tf(col1, col2, col3);
-- CROSS PRODUCT (CANNOT BE EXPRESSED WITH LVJ)
EXPLAIN
SELECT tf.col1, tf.col2, tf.col3
FROM
TABLE(VALUES('A', 10, 30),('B', 20, 30)) AS tf(col1, col2, col3),
(SELECT key, value FROM mytbl_n1) t;
SELECT tf.col1, tf.col2, tf.col3
FROM
TABLE(VALUES('A', 10, 30),('B', 20, 30)) AS tf(col1, col2, col3),
(SELECT key, value FROM mytbl_n1) t;
-- CROSS PRODUCT (FIRST CANNOT BE EXPRESSED WITH LVJ, SECOND CAN
-- BUT IT IS NOT NEEDED)
EXPLAIN
SELECT tf.col1, tf.col2, tf.col3
FROM
TABLE(VALUES('A', 10, 30),('B', 20, 30)) AS tf(col1, col2, col3),
TABLE(VALUES('A', 10),('B', 20)) AS tf2(col1, col2);
SELECT tf.col1, tf.col2, tf.col3
FROM
TABLE(VALUES('A', 10, 30),('B', 20, 30)) AS tf(col1, col2, col3),
TABLE(VALUES('A', 10),('B', 20)) AS tf2(col1, col2);
-- CROSS PRODUCT (CAN BE EXPRESSED WITH LVJ BUT IT IS NOT NEEDED)
EXPLAIN
SELECT tf.col1, tf.col2, tf.col3
FROM
(SELECT key, value FROM mytbl_n1) t,
TABLE(VALUES('A', 10, 30),('B', 20, 30)) AS tf(col1, col2, col3);
SELECT tf.col1, tf.col2, tf.col3
FROM
(SELECT key, value FROM mytbl_n1) t,
TABLE(VALUES('A', 10, 30),('B', 20, 30)) AS tf(col1, col2, col3);
-- LVJ (CORRELATED). LATERAL COULD BE OPTIONAL, BUT IF WE MAKE IT
-- MANDATORY, IT HELPS US DISTINGUISHING FROM PREVIOUS CASE
EXPLAIN
SELECT tf.col1, tf.col2, tf.col3
FROM
(SELECT key, value FROM mytbl_n1) t,
LATERAL TABLE(VALUES('A', 10, t.key),('B', 20, t.key)) AS tf(col1, col2, col3);
SELECT tf.col1, tf.col2, tf.col3
FROM
(SELECT key, value FROM mytbl_n1) t,
LATERAL TABLE(VALUES('A', 10, t.key),('B', 20, t.key)) AS tf(col1, col2, col3);
EXPLAIN
SELECT t.key
FROM
(SELECT key, value FROM mytbl_n1) t,
LATERAL TABLE(VALUES('A', 10, t.key),('B', 20, t.key)) AS tf;
SELECT t.key
FROM
(SELECT key, value FROM mytbl_n1) t,
LATERAL TABLE(VALUES('A', 10, t.key),('B', 20, t.key)) AS tf;
EXPLAIN
SELECT tf.col3
FROM
(SELECT key, value FROM mytbl_n1) t,
LATERAL TABLE(VALUES('A', 10, t.key),('B', 20, t.key)) AS tf(col1, col2, col3);
SELECT tf.col3
FROM
(SELECT key, value FROM mytbl_n1) t,
LATERAL TABLE(VALUES('A', 10, t.key),('B', 20, t.key)) AS tf(col1, col2, col3);
EXPLAIN
SELECT tf.col3
FROM
(SELECT row_number() over (order by key desc) as r FROM mytbl_n1) t,
LATERAL TABLE(VALUES('A', 10, t.r),('B', 20, t.r)) AS tf(col1, col2, col3);
SELECT tf.col3
FROM
(SELECT row_number() over (order by key desc) as r FROM mytbl_n1) t,
LATERAL TABLE(VALUES('A', 10, t.r),('B', 20, t.r)) AS tf(col1, col2, col3);