Skip to content

Compare two schemas on Linux #3656

Open

Description

@datlechin

Problem

The Linux app cannot compare two schemas. linux/ROADMAP.md, Backlog, Ideas lists "schema diff and data sync between connections" as not committed. The macOS app has both (features/compare-sync.mdx).

Checking that staging matches production today means opening Show CREATE TABLE for each table on both connections and reading them side by side.

Proposed solution

  • Decide whether schema diff moves from Ideas into the backlog, and record it in linux/ROADMAP.md. Data sync can stay an idea.
  • If yes, a first version:
    • Compare Schemas between two connections of the same engine, or two schemas on one connection.
    • A list of tables, columns, indexes and foreign keys that were added, removed or changed, built from the table definitions the drivers already fetch (linux/docs/adding-drivers.md, section 7, Structure changes).
    • Generate Script writes the statements that make the target match, planned by the engine's DdlDialect, so a change the engine cannot make is refused the same way the structure tab refuses it.
    • The script opens in an editor tab, previewed and never run on its own, with data loss marked as the structure review marks it.
  • Comparing across engines is out of the first version.

Done means: two PostgreSQL schemas that differ by a column and an index show both differences, and the generated script, run on the target, makes the next comparison come back empty.

Alternatives considered

Compare Show CREATE TABLE output by hand, or with a text diff tool on two dumps.

Platform

Linux

Related database type

N/A / General

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions