Summary
Extension Table Browser is fail-open vs native Table Browser after #771 / #772 / #773.
- Staging attaches whenever
supportsMutations is true — no PK / schema loaded check.
ExtensionDriverSession.getTableSchema catches errors and returns an empty TableSchemaMeta. Save then builds UPDATE/DELETE WHERE from every column.
- Refresh, pagination, filter, and table switch
dispose() the staging buffer with no confirm. No UnsavedWorkRegistry.
- Success toast uses
affectedRows ?? mutations.length — a driver that omits or zeroes affectedRows still looks like a full success. No expectDmlMatchedRows.
Repro
- Open an extension table with mutations enabled, edit a cell, change page / Refresh → edits gone.
- Driver without PK or with a failing
db.getTableSchema → cells still editable; Save can update multiple rows.
Scope
- Disable staging without a real PK; treat schema load failure as unavailable (not empty PK).
- Confirm before discarding dirty edits (pagination / Refresh / table switch / Home).
- Fail Save when
affectedRows is 0 / missing, matching native DML.
Out of scope
- Native SQL-grid Execute discard (separate issue).
Summary
Extension Table Browser is fail-open vs native Table Browser after #771 / #772 / #773.
supportsMutationsis true — no PK / schema loaded check.ExtensionDriverSession.getTableSchemacatches errors and returns an emptyTableSchemaMeta. Save then builds UPDATE/DELETEWHEREfrom every column.dispose()the staging buffer with no confirm. NoUnsavedWorkRegistry.affectedRows ?? mutations.length— a driver that omits or zeroesaffectedRowsstill looks like a full success. NoexpectDmlMatchedRows.Repro
db.getTableSchema→ cells still editable; Save can update multiple rows.Scope
affectedRowsis 0 / missing, matching native DML.Out of scope