123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- # 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.
- #
- # Tests for Move unrolling of peek multiplicities to coordinator. materialize#10673
- #
- # The important thing here is to test ORDER BY + LIMIT in the presence of
- # records where the diff will be > 1
- #
- > CREATE TABLE t1 (f1 INTEGER);
- > INSERT INTO t1 VALUES (1), (1), (1);
- > INSERT INTO t1 VALUES (2), (2);
- > INSERT INTO t1 VALUES (NULL), (NULL);
- #
- # ORDER BY + LIMIT
- #
- > SELECT * FROM t1 ORDER BY f1 LIMIT 0;
- > SELECT * FROM t1 ORDER BY f1 LIMIT 1;
- 1
- > SELECT * FROM t1 ORDER BY f1 LIMIT 2;
- 1
- 1
- > SELECT * FROM t1 ORDER BY f1 LIMIT 3;
- 1
- 1
- 1
- > SELECT * FROM t1 ORDER BY f1 LIMIT 4;
- 1
- 1
- 1
- 2
- > SELECT * FROM t1 ORDER BY f1 LIMIT 5;
- 1
- 1
- 1
- 2
- 2
- > SELECT * FROM t1 ORDER BY f1 LIMIT 6;
- 1
- 1
- 1
- 2
- 2
- <null>
- > SELECT * FROM t1 ORDER BY f1 LIMIT 65535;
- 1
- 1
- 1
- 2
- 2
- <null>
- <null>
- #
- # ORDER BY + LIMIT + OFFSET
- #
- > SELECT * FROM t1 ORDER BY f1 LIMIT 0 OFFSET 0;
- > SELECT * FROM t1 ORDER BY f1 LIMIT 0 OFFSET 1;
- > SELECT * FROM t1 ORDER BY f1 LIMIT 1 OFFSET 1;
- 1
- > SELECT * FROM t1 ORDER BY f1 LIMIT 1 OFFSET 2;
- 1
- > SELECT * FROM t1 ORDER BY f1 LIMIT 3 OFFSET 2;
- 1
- 2
- 2
- > SELECT * FROM t1 ORDER BY f1 LIMIT 4 OFFSET 2;
- 1
- 2
- 2
- <null>
- > SELECT * FROM t1 ORDER BY f1 LIMIT 3 OFFSET 3;
- 2
- 2
- <null>
- #
- # OFFSET alone
- #
- > SELECT * FROM t1 OFFSET 0;
- <null>
- <null>
- 1
- 1
- 1
- 2
- 2
- > SELECT * FROM t1 ORDER BY 1 OFFSET 4;
- 2
- <null>
- <null>
- > SELECT * FROM t1 OFFSET 999999;
- #
- # And some larger offsets
- #
- > CREATE TABLE ten (f1 INTEGER);
- > INSERT INTO ten VALUES (0),(1), (2),(3),(4),(5),(6),(7),(8),(9);
- > CREATE VIEW v1 AS SELECT (a2.f1 * 10) + (a3.f1 * 100) + (a4.f1 * 1000) + (a5.f1 * 10000) + (a6.f1 * 100000) AS f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5, ten AS a6;
- > SELECT * FROM v1 ORDER BY f1 OFFSET 999980;
- 999980
- 999980
- 999980
- 999980
- 999980
- 999980
- 999980
- 999980
- 999980
- 999980
- 999990
- 999990
- 999990
- 999990
- 999990
- 999990
- 999990
- 999990
- 999990
- 999990
- > SELECT * FROM v1 ORDER BY f1 LIMIT 3 OFFSET 999990;
- 999990
- 999990
- 999990
- > CREATE VIEW v2 AS SELECT a1.f1 + (a2.f1 * 10) + (a3.f1 * 100) + (a4.f1 * 1000) + (a5.f1 * 10000) + (a6.f1 * 100000) < 999999 AS f1 FROM ten AS a1, ten AS a2, ten AS a3, ten AS a4, ten AS a5, ten AS a6;
- > SELECT * FROM v2 ORDER BY f1 DESC LIMIT 33 OFFSET 999990;
- true
- true
- true
- true
- true
- true
- true
- true
- true
- false
|