1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
/* Run tests as unprivileged user */
SET ROLE TO periods_unprivileged_user;
CREATE TABLE preds (s integer, e integer);
SELECT periods.add_period('preds', 'p', 's', 'e');
INSERT INTO preds (s, e) VALUES (100, 200);
ANALYZE preds;
/* Ensure the functions are inlined. */
EXPLAIN (COSTS OFF) SELECT * FROM preds WHERE periods.contains(s, e, 100);
EXPLAIN (COSTS OFF) SELECT * FROM preds WHERE periods.contains(s, e, 100, 200);
EXPLAIN (COSTS OFF) SELECT * FROM preds WHERE periods.equals(s, e, 100, 200);
EXPLAIN (COSTS OFF) SELECT * FROM preds WHERE periods.overlaps(s, e, 100, 200);
EXPLAIN (COSTS OFF) SELECT * FROM preds WHERE periods.precedes(s, e, 100, 200);
EXPLAIN (COSTS OFF) SELECT * FROM preds WHERE periods.succeeds(s, e, 100, 200);
EXPLAIN (COSTS OFF) SELECT * FROM preds WHERE periods.immediately_precedes(s, e, 100, 200);
EXPLAIN (COSTS OFF) SELECT * FROM preds WHERE periods.immediately_succeeds(s, e, 100, 200);
/* Now make sure they work! */
SELECT * FROM preds WHERE periods.contains(s, e, 0);
SELECT * FROM preds WHERE periods.contains(s, e, 150);
SELECT * FROM preds WHERE periods.contains(s, e, 300);
SELECT * FROM preds WHERE periods.contains(s, e, 0, 50);
SELECT * FROM preds WHERE periods.contains(s, e, 50, 100);
SELECT * FROM preds WHERE periods.contains(s, e, 100, 150);
SELECT * FROM preds WHERE periods.contains(s, e, 150, 200);
SELECT * FROM preds WHERE periods.contains(s, e, 200, 250);
SELECT * FROM preds WHERE periods.contains(s, e, 250, 300);
SELECT * FROM preds WHERE periods.contains(s, e, 125, 175);
SELECT * FROM preds WHERE periods.contains(s, e, 0, 300);
SELECT * FROM preds WHERE periods.equals(s, e, 0, 100);
SELECT * FROM preds WHERE periods.equals(s, e, 100, 200);
SELECT * FROM preds WHERE periods.equals(s, e, 200, 300);
SELECT * FROM preds WHERE periods.overlaps(s, e, 0, 50);
SELECT * FROM preds WHERE periods.overlaps(s, e, 50, 100);
SELECT * FROM preds WHERE periods.overlaps(s, e, 100, 150);
SELECT * FROM preds WHERE periods.overlaps(s, e, 150, 200);
SELECT * FROM preds WHERE periods.overlaps(s, e, 200, 250);
SELECT * FROM preds WHERE periods.overlaps(s, e, 250, 300);
SELECT * FROM preds WHERE periods.overlaps(s, e, 125, 175);
SELECT * FROM preds WHERE periods.overlaps(s, e, 0, 300);
SELECT * FROM preds WHERE periods.precedes(s, e, 0, 50);
SELECT * FROM preds WHERE periods.precedes(s, e, 50, 100);
SELECT * FROM preds WHERE periods.precedes(s, e, 100, 150);
SELECT * FROM preds WHERE periods.precedes(s, e, 150, 200);
SELECT * FROM preds WHERE periods.precedes(s, e, 200, 250);
SELECT * FROM preds WHERE periods.precedes(s, e, 250, 300);
SELECT * FROM preds WHERE periods.precedes(s, e, 125, 175);
SELECT * FROM preds WHERE periods.precedes(s, e, 0, 300);
SELECT * FROM preds WHERE periods.succeeds(s, e, 0, 50);
SELECT * FROM preds WHERE periods.succeeds(s, e, 50, 100);
SELECT * FROM preds WHERE periods.succeeds(s, e, 100, 150);
SELECT * FROM preds WHERE periods.succeeds(s, e, 150, 200);
SELECT * FROM preds WHERE periods.succeeds(s, e, 200, 250);
SELECT * FROM preds WHERE periods.succeeds(s, e, 250, 300);
SELECT * FROM preds WHERE periods.succeeds(s, e, 125, 175);
SELECT * FROM preds WHERE periods.succeeds(s, e, 0, 300);
SELECT * FROM preds WHERE periods.immediately_precedes(s, e, 0, 50);
SELECT * FROM preds WHERE periods.immediately_precedes(s, e, 50, 100);
SELECT * FROM preds WHERE periods.immediately_precedes(s, e, 100, 150);
SELECT * FROM preds WHERE periods.immediately_precedes(s, e, 150, 200);
SELECT * FROM preds WHERE periods.immediately_precedes(s, e, 200, 250);
SELECT * FROM preds WHERE periods.immediately_precedes(s, e, 250, 300);
SELECT * FROM preds WHERE periods.immediately_precedes(s, e, 125, 175);
SELECT * FROM preds WHERE periods.immediately_precedes(s, e, 0, 300);
SELECT * FROM preds WHERE periods.immediately_succeeds(s, e, 0, 50);
SELECT * FROM preds WHERE periods.immediately_succeeds(s, e, 50, 100);
SELECT * FROM preds WHERE periods.immediately_succeeds(s, e, 100, 150);
SELECT * FROM preds WHERE periods.immediately_succeeds(s, e, 150, 200);
SELECT * FROM preds WHERE periods.immediately_succeeds(s, e, 200, 250);
SELECT * FROM preds WHERE periods.immediately_succeeds(s, e, 250, 300);
SELECT * FROM preds WHERE periods.immediately_succeeds(s, e, 125, 175);
SELECT * FROM preds WHERE periods.immediately_succeeds(s, e, 0, 300);
DROP TABLE preds;
|