Skip to content

Instantly share code, notes, and snippets.

@jonatas
Created October 8, 2021 21:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jonatas/25af7e918d5d0b53ef99032dc5b746cc to your computer and use it in GitHub Desktop.
Save jonatas/25af7e918d5d0b53ef99032dc5b746cc to your computer and use it in GitHub Desktop.
drop table batteries cascade;
CREATE TABLE batteries (t timestamp not null, batt_uid varchar, charge int);
SELECT create_hypertable('batteries', 't');
DROP FUNCTION IF EXISTS watch_charge;
CREATE OR REPLACE FUNCTION watch_charge(INOUT t timestamp, INOUT batt_uid varchar, INOUT charge int) AS
$BODY$
BEGIN
IF charge > 100 then
raise notice 'Battery % charge is too high: %', batt_uid, charge;
END IF;
END;
$BODY$
LANGUAGE plpgsql;
\timing
INSERT into batteries VALUES (now()::timestamp, 'battery-1', 90);
INSERT into batteries VALUES (now()::timestamp, 'battery-1', 91);
INSERT into batteries VALUES (now()::timestamp, 'battery-1', 98);
INSERT into batteries VALUES (now()::timestamp, 'battery-1', 99);
INSERT into batteries VALUES (now()::timestamp, 'battery-1', 100);
INSERT into batteries VALUES (now()::timestamp, 'battery-1', 101);
INSERT into batteries SELECT * FROM watch_charge(now()::timestamp, 'battery-1', 90);
INSERT into batteries SELECT * FROM watch_charge(now()::timestamp, 'battery-1', 91);
INSERT into batteries SELECT * FROM watch_charge(now()::timestamp, 'battery-1', 98);
INSERT into batteries SELECT * FROM watch_charge(now()::timestamp, 'battery-1', 99);
INSERT into batteries SELECT * FROM watch_charge(now()::timestamp, 'battery-1', 100);
INSERT into batteries SELECT * FROM watch_charge(now()::timestamp, 'battery-1', 101);
@jonatas
Copy link
Author

jonatas commented Oct 8, 2021

Timing output:

Timing is on.
INSERT 0 1
Time: 171.485 ms
INSERT 0 1
Time: 167.683 ms
INSERT 0 1
Time: 154.819 ms
INSERT 0 1
Time: 159.621 ms
INSERT 0 1
Time: 159.150 ms
INSERT 0 1
Time: 158.328 ms
INSERT 0 1
Time: 165.339 ms
INSERT 0 1
Time: 159.670 ms
INSERT 0 1
Time: 163.352 ms
INSERT 0 1
Time: 165.756 ms
INSERT 0 1
Time: 158.501 ms
psql:notify.sql:30: NOTICE:  Battery battery-1 charge is too high: 101
INSERT 0 1
Time: 158.756 ms```

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment