-- Test: NOTIFY overflow handling for large payloads CREATE EXTENSION pg_reactive; -- Create a table with a large text column CREATE TABLE big_data (id serial PRIMARY KEY, payload text); -- Subscribe SELECT pgr.subscribe('overflow_q', 'SELECT id, payload FROM big_data'); subscribe ---------------------------------------------------------------------------------- {"mode": "delta", "status": "subscribed", "tables": 1, "query_id": "overflow_q"} (1 row) -- Insert a small row — should produce a normal delta notification INSERT INTO big_data (payload) VALUES ('small'); -- Check snapshot updated SELECT count(*) AS snap_rows FROM pgr."_snap_overflow_q"; snap_rows ----------- 1 (1 row) -- Insert a row with payload > 7800 bytes to trigger overflow -- generate_series produces ~8000+ bytes of JSON INSERT INTO big_data (payload) VALUES (repeat('X', 8000)); -- Snapshot should still be updated even with overflow SELECT count(*) AS snap_rows FROM pgr."_snap_overflow_q"; snap_rows ----------- 2 (1 row) -- Verify snapshot matches actual data SELECT count(*) AS diff_count FROM ( (SELECT id, payload FROM big_data) EXCEPT (SELECT id, payload FROM pgr."_snap_overflow_q") ) t; diff_count ------------ 0 (1 row) -- Cleanup SELECT pgr.unsubscribe('overflow_q'); unsubscribe ------------- t (1 row) DROP TABLE big_data; DROP EXTENSION pg_reactive;