Summary
Table Browser _connectAndLoad always acquires readWrite (“for custom SQL and REFRESH”). Browse SELECT * … LIMIT n OFFSET m has no ORDER BY, so pages skip/duplicate. COUNT(*) is a sequential scan on large heaps and shares the 30s queryTimeout that forceCloses the pooled socket.
Scope
- Default browse session:
PgSessionMode.readOnly (Save / REFRESH / custom SQL may upgrade — see shared-socket issue).
- When a PK exists,
ORDER BY those columns for stable pages.
- Do not require a blocking
COUNT(*) before first paint: estimate (reltuples) or count asynchronously; timeout must not kill the browse socket.
Out of scope
- Changing default page size (200).
Summary
Table Browser
_connectAndLoadalways acquiresreadWrite(“for custom SQL and REFRESH”). BrowseSELECT * … LIMIT n OFFSET mhas no ORDER BY, so pages skip/duplicate.COUNT(*)is a sequential scan on large heaps and shares the 30squeryTimeoutthatforceCloses the pooled socket.Scope
PgSessionMode.readOnly(Save / REFRESH / custom SQL may upgrade — see shared-socket issue).ORDER BYthose columns for stable pages.COUNT(*)before first paint: estimate (reltuples) or count asynchronously; timeout must not kill the browse socket.Out of scope