Skip to content
Snippets Groups Projects
Commit 6812e95a authored by Bruce Momjian's avatar Bruce Momjian
Browse files

Improve random regression tests to fail less frequently.

parent 98bb1d20
No related branches found
No related tags found
No related merge requests found
...@@ -2,34 +2,51 @@ ...@@ -2,34 +2,51 @@
-- RANDOM -- RANDOM
-- Test the random function -- Test the random function
-- --
-- count the number of tuples originally -- count the number of tuples originally, should be 1000
SELECT count(*) FROM onek; SELECT count(*) FROM onek;
count count
------- -------
1000 1000
(1 row) (1 row)
-- select roughly 1/10 of the tuples -- pick three random rows, they shouldn't match
-- Assume that the "onek" table has 1000 tuples (SELECT unique1 AS random
-- and try to bracket the correct number so we FROM onek ORDER BY random() LIMIT 1)
-- have a regression test which can pass/fail INTERSECT
-- - thomas 1998-08-17 (SELECT unique1 AS random
FROM onek ORDER BY random() LIMIT 1)
INTERSECT
(SELECT unique1 AS random
FROM onek ORDER BY random() LIMIT 1);
random
--------
(0 rows)
-- count roughly 1/10 of the tuples
SELECT count(*) AS random INTO RANDOM_TBL SELECT count(*) AS random INTO RANDOM_TBL
FROM onek WHERE random() < 1.0/10; FROM onek WHERE random() < 1.0/10;
-- select again, the count should be different -- select again, the count should be different
INSERT INTO RANDOM_TBL (random) INSERT INTO RANDOM_TBL (random)
SELECT count(*) SELECT count(*)
FROM onek WHERE random() < 1.0/10; FROM onek WHERE random() < 1.0/10;
-- now test the results for randomness in the correct range -- select again, the count should be different
INSERT INTO RANDOM_TBL (random)
SELECT count(*)
FROM onek WHERE random() < 1.0/10;
-- select again, the count should be different
INSERT INTO RANDOM_TBL (random)
SELECT count(*)
FROM onek WHERE random() < 1.0/10;
-- now test that they are different counts
SELECT random, count(random) FROM RANDOM_TBL SELECT random, count(random) FROM RANDOM_TBL
GROUP BY random HAVING count(random) > 1; GROUP BY random HAVING count(random) > 3;
random | count random | count
--------+------- --------+-------
(0 rows) (0 rows)
SELECT random FROM RANDOM_TBL SELECT AVG(random) FROM RANDOM_TBL
WHERE random NOT BETWEEN 80 AND 120; HAVING AVG(random) NOT BETWEEN 80 AND 120;
random avg
-------- -----
(0 rows) (0 rows)
...@@ -3,14 +3,20 @@ ...@@ -3,14 +3,20 @@
-- Test the random function -- Test the random function
-- --
-- count the number of tuples originally -- count the number of tuples originally, should be 1000
SELECT count(*) FROM onek; SELECT count(*) FROM onek;
-- select roughly 1/10 of the tuples -- pick three random rows, they shouldn't match
-- Assume that the "onek" table has 1000 tuples (SELECT unique1 AS random
-- and try to bracket the correct number so we FROM onek ORDER BY random() LIMIT 1)
-- have a regression test which can pass/fail INTERSECT
-- - thomas 1998-08-17 (SELECT unique1 AS random
FROM onek ORDER BY random() LIMIT 1)
INTERSECT
(SELECT unique1 AS random
FROM onek ORDER BY random() LIMIT 1);
-- count roughly 1/10 of the tuples
SELECT count(*) AS random INTO RANDOM_TBL SELECT count(*) AS random INTO RANDOM_TBL
FROM onek WHERE random() < 1.0/10; FROM onek WHERE random() < 1.0/10;
...@@ -19,10 +25,20 @@ INSERT INTO RANDOM_TBL (random) ...@@ -19,10 +25,20 @@ INSERT INTO RANDOM_TBL (random)
SELECT count(*) SELECT count(*)
FROM onek WHERE random() < 1.0/10; FROM onek WHERE random() < 1.0/10;
-- now test the results for randomness in the correct range -- select again, the count should be different
INSERT INTO RANDOM_TBL (random)
SELECT count(*)
FROM onek WHERE random() < 1.0/10;
-- select again, the count should be different
INSERT INTO RANDOM_TBL (random)
SELECT count(*)
FROM onek WHERE random() < 1.0/10;
-- now test that they are different counts
SELECT random, count(random) FROM RANDOM_TBL SELECT random, count(random) FROM RANDOM_TBL
GROUP BY random HAVING count(random) > 1; GROUP BY random HAVING count(random) > 3;
SELECT random FROM RANDOM_TBL SELECT AVG(random) FROM RANDOM_TBL
WHERE random NOT BETWEEN 80 AND 120; HAVING AVG(random) NOT BETWEEN 80 AND 120;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment