Skip to content

refactor(linux): finish remediation steps 31 to 39 - #3410

Merged
datlechin merged 202 commits into
linuxfrom
refactor/linux-1b
Oct 14, 2026
Merged

datlechin merged 202 commits into
linuxfrom
refactor/linux-1b

Conversation

@datlechin

Copy link
Copy Markdown
Member

Why

The rest of Steps 31 to 39 of linux/docs/plan-2026-09-14-audit-remediation.md, after #3403. Tabs did not own their fetches, DDL came from one generic builder, closing could drop unsaved work, and pending grid edits followed column positions.

Change

  • Table and structure tabs own sequenced, cancellable fetches over a shared schema catalog, and recover after a reconnect.
  • DDL is planned per engine (renames, primary keys, identity, SQL Server defaults), keeping every column attribute; a DDL conformance suite runs on all five engines.
  • Saves go through a ledger with Stop and unknown outcomes; close, disconnect and switching connection ask before losing edits or open editor transactions; tabs and drafts persist per connection.
  • Grid edits follow edit order with undo, survive a column change by name, and edit long text from its full value; SQL completion reads the catalog.

Verified

fmt, both clippy runs and every unit and widget test pass; docker suites ran per engine for DDL and saves. Each data-integrity fix has a test that failed before it.

Not in this PR

Row and DDL trackers move from thread_local registries to registries App owns, reached through handles that borrow only inside their own methods and return owned data. A row edit returns a TrackerDelta the browse tab applies to its list store, which replaces the relm4 tracker channel.
A real went through f64 before printing, so 0.1 exported as 0.10000000149011612. Array items now take their element's precision, and an inner dimension stays an array. Copy as IN clause keeps the widened double, which is what engines compare a real against.
A type the driver could not place carries the server's own text, so a citext value starting with = reached the sheet as a formula. D17 lists Other beside Text and Json.
Int and UInt went in as f64 unchecked, so a bigint past 2^53 changed. A numeric(10,2) holding 1.50 compared against the f64's 1.5 and went in as text. A real now goes in as the double its own digits name.
# Conflicts:
#	linux/crates/app/src/ui/browse_tab/mod.rs
@datlechin
datlechin merged commit b4f346c into linux Oct 14, 2026
22 checks passed
@datlechin
datlechin deleted the refactor/linux-1b branch October 14, 2026 02:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant