DuckDB driver for the Linux app · Issue #3645 · TableProApp/TablePro · GitHub
Skip to content

DuckDB driver for the Linux app #3645

Open

Description

@datlechin

Problem

The Linux app opens SQLite files but not DuckDB files (linux/README.md, Status). The macOS and iOS apps open both.

linux/ROADMAP.md, Backlog, More engines lists DuckDB with the client, the duckdb crate from the DuckDB project, and no condition.

DuckDB would be the second file engine, and the app still assumes there is only one: the picker's file subtitle and opening a file from Files look for the driver id sqlite (linux/docs/adding-drivers.md, Capabilities, endpoint row, naming is_sqlite in crates/app/src/services/saved_connection_object.rs and file_driver in crates/app/src/ui/session_window/resolve_file_identity.rs).

Proposed solution

  • A crates/drivers/duckdb crate with endpoint: File.
  • Replace the sqlite id checks with a file-engine capability, so the picker, Open With and Locate work for both engines.
  • Register DuckDB's MIME type for Open With in the desktop entry, next to application/vnd.sqlite3, if the shared MIME database has one.
  • Open read-only or read-write as SQLite does, including the question for a file on a network or FUSE filesystem.
  • Stop a running query with DuckDB's interrupt, as the contract requires.
  • Decide between linking a system libduckdb and the crate's bundled build, and check the choice against the PPA and COPR builds, which run offline from the vendor tarball (ADR 0018).
  • Leave extension installs out of the first version: DuckDB downloads extensions from the network, and linux/README.md, Privacy, says the app makes no requests of its own.
  • The conformance suites, a value corpus for DuckDB types (HUGEINT, LIST, STRUCT, MAP, intervals), and a page in linux/docs/drivers/.

Done means: a .duckdb file opens from the picker and from Files, a table pages and edits, and the adding-drivers.md checklist is complete.

Alternatives considered

No response

Platform

Linux

Related database type

DuckDB

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