Buffers may be empty, in which case the query to determine the last
message ID in them returns NULL, violating the constraint for the
newly introduced column. Use 0 instead.
Closes GH-315.
FOR i IN SELECT * FROM buffer
LOOP
UPDATE buffer
- SET lastmsgid = (
+ SET lastmsgid = COALESCE((
SELECT backlog.messageid
FROM backlog
WHERE backlog.bufferid = i.bufferid
ORDER BY messageid DESC LIMIT 1
- )
+ ), 0)
WHERE buffer.bufferid = i.bufferid;
END LOOP;
RETURN;
UPDATE buffer
-SET lastmsgid = (
+SET lastmsgid = COALESCE((
SELECT messageid
FROM backlog
WHERE backlog.bufferid = buffer.bufferid
ORDER BY messageid
DESC LIMIT 1
-);
+), 0);