Summary
Pool key is id::database::readWrite. QueryaSwitchingBody keeps home (SQL workspace) mounted under the table view. Table Browser also acquires readWrite (even for SELECT *). When the tree database matches the SQL session DB, both hold the same TCP session.
A leftover BEGIN, SET search_path / SET ROLE, temp table, or forceClose on statement timeout from the SQL tab is visible to Table Browser COUNT(*) / Save. The “open transaction” dialog only fires Overview↔SQL, not tree→table.
Scope
- Table Browser browse on PgSessionMode.readOnly; Save / REFRESH MATERIALIZED VIEW / custom SQL on readWrite (or a dedicated key).
- SQL editor must not share that read-write entry with the grid (separate pool key or do not keep an RW lease while the table is focused).
- Timeout forceClose must not kill the other surface’s session.
- Warn (or refuse) opening a table while the SQL tab has an open transaction on the same database.
Out of scope
- Multi-statement Save (# previous issue).
- Tree catalog already uses readOnly — leave it.
Reactions are currently unavailable
Summary
Pool key is id::database::readWrite. QueryaSwitchingBody keeps home (SQL workspace) mounted under the table view. Table Browser also acquires readWrite (even for SELECT *). When the tree database matches the SQL session DB, both hold the same TCP session.
A leftover BEGIN, SET search_path / SET ROLE, temp table, or forceClose on statement timeout from the SQL tab is visible to Table Browser COUNT(*) / Save. The “open transaction” dialog only fires Overview↔SQL, not tree→table.
Scope
Out of scope