123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- # Copyright Materialize, Inc. and contributors. All rights reserved.
- #
- # Use of this software is governed by the Business Source License
- # included in the LICENSE file at the root of this repository.
- #
- # As of the Change Date specified in that file, in accordance with
- # the Business Source License, use of this software will be governed
- # by the Apache License, Version 2.0.
- mode cockroach
- statement ok
- CREATE TABLE cities (
- name text NOT NULL,
- state text NOT NULL,
- pop int
- )
- statement ok
- INSERT INTO cities VALUES
- ('Los_Angeles', 'CA', 3979576),
- ('Phoenix', 'AZ', 1680992),
- ('Houston', 'TX', 2320268),
- ('San_Diego', 'CA', NULL),
- ('San_Francisco', 'CA', 881549),
- ('New_York', 'NY', 8336817),
- ('Dallas', 'TX', 1343573),
- ('San_Antonio', 'TX', 1547253),
- ('San_Jose', 'CA', 1021795),
- ('Chicago', 'IL', 2695598),
- ('Austin', 'TX', 978908)
- query TT rowsort
- SELECT state, name FROM
- (SELECT DISTINCT state FROM cities) grp,
- LATERAL (SELECT name FROM cities WHERE state = grp.state ORDER BY pop DESC NULLS LAST LIMIT 3)
- ----
- AZ Phoenix
- CA Los_Angeles
- CA San_Francisco
- CA San_Jose
- IL Chicago
- NY New_York
- TX Houston
- TX San_Antonio
- TX Dallas
- query TT rowsort
- SELECT state, name FROM
- (SELECT DISTINCT state FROM cities) grp,
- LATERAL (SELECT name FROM cities WHERE state = grp.state ORDER BY pop DESC NULLS FIRST LIMIT 3)
- ----
- AZ Phoenix
- CA San_Diego
- CA Los_Angeles
- CA San_Jose
- IL Chicago
- NY New_York
- TX Houston
- TX San_Antonio
- TX Dallas
- # LIMIT INPUT GROUP SIZE hint should not affect the results
- query TT rowsort
- SELECT state, name FROM
- (SELECT DISTINCT state FROM cities) grp,
- LATERAL (SELECT name FROM cities WHERE state = grp.state
- OPTIONS (LIMIT INPUT GROUP SIZE = 1)
- ORDER BY pop DESC NULLS LAST LIMIT 3)
- ----
- AZ Phoenix
- CA Los_Angeles
- CA San_Francisco
- CA San_Jose
- IL Chicago
- NY New_York
- TX Dallas
- TX Houston
- TX San_Antonio
- mode standard
- query T multiline
- EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR SELECT state, name FROM
- (SELECT DISTINCT state FROM cities) grp,
- LATERAL (SELECT name, pop FROM cities WHERE state = grp.state ORDER BY pop DESC LIMIT 3)
- ----
- Explained Query:
- Project (#1{state}, #0{name}) // { arity: 2 }
- TopK group_by=[#1{state}] order_by=[#2{pop} desc nulls_first] limit=3 // { arity: 3 }
- ReadStorage materialize.public.cities // { arity: 3 }
- Source materialize.public.cities
- Target cluster: quickstart
- EOF
- query T multiline
- EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR SELECT state, name FROM
- (SELECT DISTINCT state FROM cities) grp
- LEFT JOIN LATERAL (SELECT name, pop FROM cities where cities.state = grp.state ORDER BY pop DESC LIMIT 3) ON true
- ----
- Explained Query:
- With
- cte l0 =
- Project (#0{name}, #1{state}) // { arity: 2 }
- TopK group_by=[#1{state}] order_by=[#2{pop} desc nulls_first] limit=3 // { arity: 3 }
- ReadStorage materialize.public.cities // { arity: 3 }
- Return // { arity: 2 }
- Union // { arity: 2 }
- Project (#1{state}, #0{name}) // { arity: 2 }
- Get l0 // { arity: 2 }
- Map (null) // { arity: 2 }
- Union // { arity: 1 }
- Negate // { arity: 1 }
- Distinct project=[#0{state}] // { arity: 1 }
- Project (#1{state}) // { arity: 1 }
- Get l0 // { arity: 2 }
- Distinct project=[#0{state}] // { arity: 1 }
- Project (#1{state}) // { arity: 1 }
- ReadStorage materialize.public.cities // { arity: 3 }
- Source materialize.public.cities
- Target cluster: quickstart
- EOF
- # Test that LIMIT 0 is optimized out
- query T multiline
- EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR SELECT state, COUNT(*) FROM (
- SELECT state, name FROM
- (SELECT DISTINCT state FROM cities) grp,
- LATERAL (SELECT name, pop FROM cities WHERE state = grp.state ORDER BY pop DESC LIMIT 0)
- )
- GROUP BY state
- ----
- Explained Query (fast path):
- Constant <empty>
- Target cluster: quickstart
- EOF
- # Test that LIMIT 1 results in a unique key
- query T multiline
- EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR SELECT state, COUNT(*) FROM (
- SELECT state, name FROM
- (SELECT DISTINCT state FROM cities) grp,
- LATERAL (SELECT name, pop FROM cities WHERE state = grp.state ORDER BY pop DESC LIMIT 1)
- )
- GROUP BY state
- ----
- Explained Query:
- Project (#0{state}, #2) // { arity: 2 }
- Map (1) // { arity: 3 }
- TopK group_by=[#0{state}] order_by=[#1{pop} desc nulls_first] limit=1 // { arity: 2 }
- Project (#1{state}, #2{pop}) // { arity: 2 }
- ReadStorage materialize.public.cities // { arity: 3 }
- Source materialize.public.cities
- Target cluster: quickstart
- EOF
- query T multiline
- EXPLAIN OPTIMIZED PLAN WITH(humanized expressions, arity, join implementations) AS VERBOSE TEXT FOR SELECT state, name FROM
- (SELECT DISTINCT state FROM cities) grp,
- LATERAL (SELECT name FROM cities WHERE state = grp.state
- OPTIONS (LIMIT INPUT GROUP SIZE = 1)
- ORDER BY pop DESC NULLS LAST LIMIT 3)
- ----
- Explained Query:
- Project (#1{state}, #0{name}) // { arity: 2 }
- TopK group_by=[#1{state}] order_by=[#2{pop} desc nulls_last] limit=3 exp_group_size=1 // { arity: 3 }
- ReadStorage materialize.public.cities // { arity: 3 }
- Source materialize.public.cities
- Target cluster: quickstart
- EOF
|