-- This file and its contents are licensed under the Apache License 2.0. -- Please see the included NOTICE for copyright information and -- LICENSE-APACHE for a copy of the license. -- table 1 CREATE TABLE "hitest1"(key real, val varchar(40)); -- insertions INSERT INTO "hitest1" VALUES(0, 'hi'); INSERT INTO "hitest1" VALUES(1, 'sup'); INSERT INTO "hitest1" VALUES(2, 'hello'); INSERT INTO "hitest1" VALUES(3, 'yo'); INSERT INTO "hitest1" VALUES(4, 'howdy'); INSERT INTO "hitest1" VALUES(5, 'hola'); INSERT INTO "hitest1" VALUES(6, 'ya'); INSERT INTO "hitest1" VALUES(1, 'sup'); INSERT INTO "hitest1" VALUES(2, 'hello'); INSERT INTO "hitest1" VALUES(1, 'sup'); -- table 2 CREATE TABLE "hitest2"(name varchar(30), score integer, qualify boolean); -- insertions INSERT INTO "hitest2" VALUES('Tom', 6, TRUE); INSERT INTO "hitest2" VALUES('Mary', 4, FALSE); INSERT INTO "hitest2" VALUES('Jaq', 3, FALSE); INSERT INTO "hitest2" VALUES('Jane', 10, TRUE); -- standard 2 bucket SELECT histogram(key, 0, 9, 2) FROM hitest1; -- standard multi-bucket SELECT histogram(key, 0, 9, 5) FROM hitest1; -- standard 3 bucket SELECT val, histogram(key, 0, 7, 3) FROM hitest1 GROUP BY val ORDER BY val; -- standard element beneath lb SELECT histogram(key, 1, 7, 3) FROM hitest1; -- standard element above ub SELECT histogram(key, 0, 3, 3) FROM hitest1; -- standard element beneath and above lb and ub, respectively SELECT histogram(key, 1, 3, 2) FROM hitest1; -- standard 1 bucket SELECT histogram(key, 1, 3, 1) FROM hitest1; -- standard 2 bucket SELECT qualify, histogram(score, 0, 10, 2) FROM hitest2 GROUP BY qualify ORDER BY qualify; -- standard multi-bucket SELECT qualify, histogram(score, 0, 10, 5) FROM hitest2 GROUP BY qualify ORDER BY qualify; -- check number of buckets is constant \set ON_ERROR_STOP 0 select histogram(i,10,90,case when i=1 then 1 else 1000000 end) FROM generate_series(1,100) i; \set ON_ERROR_STOP 1 CREATE TABLE weather ( time TIMESTAMPTZ NOT NULL, city TEXT, temperature FLOAT, PRIMARY KEY(time, city) ); -- There is a bug in width_bucket() causing a NaN as a result, so we -- check that it is not causing a crash in histogram(). SELECT * FROM create_hypertable('weather', 'time', 'city', 3); INSERT INTO weather VALUES ('2023-02-10 09:16:51.133584+00','city1',10.4), ('2023-02-10 11:16:51.611618+00','city1',10.3), ('2023-02-10 06:58:59.999999+00','city1',10.3), ('2023-02-10 01:58:59.999999+00','city1',10.3), ('2023-02-09 01:58:59.999999+00','city1',10.3), ('2023-02-10 08:58:59.999999+00','city1',10.3), ('2023-03-23 06:12:02.73765+00 ','city1', 9.7), ('2023-03-23 06:12:06.990998+00','city1',11.7); -- This will currently generate an error on PG15 and prior versions \set ON_ERROR_STOP 0 SELECT histogram(temperature, -1.79769e+308, 1.79769e+308,10) FROM weather GROUP BY city; \set ON_ERROR_STOP 1