123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- # 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.
- # Regression test for https://github.com/MaterializeInc/database-issues/issues/7318
- # This query involves a 1-input join. `JoinImplementation` or other join code shouldn't choke on this.
- statement ok
- CREATE TABLE t1 (f1 DOUBLE PRECISION, f2 DOUBLE PRECISION NOT NULL);
- statement ok
- CREATE INDEX t1i1 ON t1(f1);
- statement ok
- CREATE INDEX t1i2 ON t1(f2, f1);
- # one NULL row in t1
- statement ok
- INSERT INTO t1 VALUES (NULL, 0);
- # values 1 and 2 have 2 rows each in t1
- statement ok
- INSERT INTO t1 VALUES (1, 1), (1, 1), (2, 2), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8);
- # value 9 not present in either table
- statement ok
- CREATE TABLE t2 (f1 DOUBLE PRECISION, f2 DOUBLE PRECISION NOT NULL);
- statement ok
- CREATE INDEX t2i1 ON t2(f1);
- statement ok
- CREATE INDEX i2i2 ON t2(f2, f1);
- # two NULL rows in t2
- statement ok
- INSERT INTO t2 VALUES (NULL, 0);
- statement ok
- INSERT INTO t2 VALUES (NULL, 0);
- statement ok
- INSERT INTO t2 VALUES (1, 1);
- # value 2 has 2 rows in t2
- statement ok
- INSERT INTO t2 VALUES (2, 2);
- statement ok
- INSERT INTO t2 VALUES (2, 2);
- # value 3 has no rows in t2
- statement ok
- INSERT INTO t2 VALUES (4, 4), (5, 5), (6, 6), (7, 7), (8, 8);
- # value 9 not present in either table
- statement ok
- CREATE TABLE t3 (f1 DOUBLE PRECISION, f2 DOUBLE PRECISION NOT NULL);
- statement ok
- CREATE INDEX t3i1 ON t2(f1);
- statement ok
- CREATE INDEX i3i2 ON t2(f2, f1);
- statement ok
- CREATE MATERIALIZED VIEW pk1 AS SELECT DISTINCT ON (f1) f1 , f2 FROM t1 WHERE f1 IS NOT NULL AND f2 IS NOT NULL;
- statement ok
- CREATE MATERIALIZED VIEW pk2 AS SELECT DISTINCT ON (f1) f1 , f2 FROM t2 WHERE f1 IS NOT NULL AND f2 IS NOT NULL;
- statement ok
- CREATE MATERIALIZED VIEW pk3 AS SELECT DISTINCT ON (f1) f1 , f2 FROM t3 WHERE f1 IS NOT NULL AND f2 IS NOT NULL;
- query RR
- SELECT
- left_object.f1 AS f1,
- left_object.f1 AS f2
- FROM
- (
- SELECT
- DISTINCT f2 AS f1,
- f2 AS f2
- FROM
- t1
- ) AS left_object
- LEFT JOIN pk1 AS before ON (left_object.f1 = before.f1)
- JOIN LATERAL (
- SELECT
- f2 AS f1,
- f1 AS f2
- FROM
- t2
- LIMIT
- left_object.f1
- ) AS right_object ON (left_object.f2 = right_object.f1) ;
- ----
|