123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- # 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.
- #
- # Test the implementation of SUM over decimals using the EXCEPT method to issue retractions
- #
- #
- # The name of each table corresponds to the number it stores. We use multiple tables per value in order
- # to prevent the optimizer from folding our UNION + EXCEPT constructs in a way that will case no
- # retractions to actually be processed
- #
- > CREATE TABLE "A-999999999999999999999999999999999999999" (f1 DECIMAL);
- > INSERT INTO "A-999999999999999999999999999999999999999" VALUES ('-999999999999999999999999999999999999999');
- > CREATE TABLE "A-999999999999999999999999999999999999998" (f1 DECIMAL);
- > INSERT INTO "A-999999999999999999999999999999999999998" VALUES ('-999999999999999999999999999999999999999');
- > CREATE TABLE "A+999999999999999999999999999999999999999" (f1 DECIMAL);
- > INSERT INTO "A+999999999999999999999999999999999999999" VALUES ('999999999999999999999999999999999999999');
- > CREATE TABLE "A+999999999999999999999999999999999999998" (f1 DECIMAL);
- > INSERT INTO "A+999999999999999999999999999999999999998" VALUES ('999999999999999999999999999999999999999');
- > CREATE TABLE "B-999999999999999999999999999999999999999" (f1 DECIMAL);
- > INSERT INTO "B-999999999999999999999999999999999999999" VALUES ('-999999999999999999999999999999999999999');
- > CREATE TABLE "B-999999999999999999999999999999999999998" (f1 DECIMAL);
- > INSERT INTO "B-999999999999999999999999999999999999998" VALUES ('-999999999999999999999999999999999999999');
- > CREATE TABLE "B+999999999999999999999999999999999999999" (f1 DECIMAL);
- > INSERT INTO "B+999999999999999999999999999999999999999" VALUES ('999999999999999999999999999999999999999');
- > CREATE TABLE "B+999999999999999999999999999999999999998" (f1 DECIMAL);
- > INSERT INTO "B+999999999999999999999999999999999999998" VALUES ('999999999999999999999999999999999999999');
- > CREATE TABLE "C-999999999999999999999999999999999999999" (f1 DECIMAL);
- > INSERT INTO "C-999999999999999999999999999999999999999" VALUES ('-999999999999999999999999999999999999999');
- > CREATE TABLE "C-999999999999999999999999999999999999998" (f1 DECIMAL);
- > INSERT INTO "C-999999999999999999999999999999999999998" VALUES ('-999999999999999999999999999999999999999');
- > CREATE TABLE "C+999999999999999999999999999999999999999" (f1 DECIMAL);
- > INSERT INTO "C+999999999999999999999999999999999999999" VALUES ('999999999999999999999999999999999999999');
- > CREATE TABLE "C+999999999999999999999999999999999999998" (f1 DECIMAL);
- > INSERT INTO "C+999999999999999999999999999999999999998" VALUES ('999999999999999999999999999999999999999');
- > SELECT SUM(f1) FROM (SELECT * FROM "A-999999999999999999999999999999999999999");
- -999999999999999999999999999999999999999
- > SELECT SUM(DISTINCT f1) FROM (
- SELECT * FROM "A-999999999999999999999999999999999999999"
- UNION ALL SELECT * FROM "B-999999999999999999999999999999999999999"
- );
- -999999999999999999999999999999999999999
- > SELECT SUM(f1) FROM (
- SELECT * FROM "A-999999999999999999999999999999999999999"
- UNION ALL SELECT * FROM "B-999999999999999999999999999999999999999"
- );
- -Infinity
- # Retracting the offending value causes the sum to go back within bounds
- > SELECT SUM(f1) FROM (
- SELECT * FROM "A-999999999999999999999999999999999999999"
- UNION ALL SELECT * FROM "B-999999999999999999999999999999999999999"
- EXCEPT ALL SELECT * FROM "C-999999999999999999999999999999999999999"
- );
- -999999999999999999999999999999999999999
- > SELECT SUM(ABS(f1)) FROM (
- SELECT * FROM "A-999999999999999999999999999999999999999"
- UNION ALL SELECT * FROM "B-999999999999999999999999999999999999999"
- EXCEPT ALL SELECT * FROM "C-999999999999999999999999999999999999999"
- );
- 999999999999999999999999999999999999999
- > CREATE TABLE "A+0.000000000000000000000000000000000000001" (f1 DECIMAL);
- > INSERT INTO "A+0.000000000000000000000000000000000000001" VALUES ('0.000000000000000000000000000000000000001');
- > CREATE TABLE "B+0.000000000000000000000000000000000000001" (f1 DECIMAL);
- > INSERT INTO "B+0.000000000000000000000000000000000000001" VALUES ('0.000000000000000000000000000000000000001');
- > CREATE TABLE "C+0.000000000000000000000000000000000000001" (f1 DECIMAL);
- > INSERT INTO "C+0.000000000000000000000000000000000000001" VALUES ('0.000000000000000000000000000000000000001');
- > SELECT SUM(f1) FROM (
- SELECT * FROM "A+0.000000000000000000000000000000000000001"
- UNION ALL SELECT * FROM "B+0.000000000000000000000000000000000000001"
- );
- 0.000000000000000000000000000000000000002
- > SELECT SUM(f1) FROM (
- SELECT * FROM "A+0.000000000000000000000000000000000000001"
- UNION ALL SELECT * FROM "B+0.000000000000000000000000000000000000001"
- EXCEPT ALL SELECT * FROM "C+0.000000000000000000000000000000000000001"
- );
- 0.000000000000000000000000000000000000001
- > SELECT SUM(f1) FROM (
- SELECT f1 FROM "A+0.000000000000000000000000000000000000001"
- UNION ALL SELECT -f1 FROM "B+0.000000000000000000000000000000000000001"
- );
- 0
- > SELECT SUM(f1) FROM (
- SELECT f1 FROM "A+0.000000000000000000000000000000000000001"
- UNION ALL SELECT -f1 FROM "B+0.000000000000000000000000000000000000001"
- EXCEPT ALL SELECT -f1 FROM "C+0.000000000000000000000000000000000000001"
- );
- 0.000000000000000000000000000000000000001
- > SELECT SUM(f1) FROM (
- SELECT f1 FROM "A+0.000000000000000000000000000000000000001"
- UNION ALL SELECT -f1 FROM "B+0.000000000000000000000000000000000000001"
- EXCEPT ALL SELECT f1 FROM "C+0.000000000000000000000000000000000000001"
- );
- -0.000000000000000000000000000000000000001
|