Skip to content

Search for a value across every table in a database #3601

Closed

Description

@datlechin

Problem

There is no way to ask which tables hold a given value, such as an email address, an order number or a UUID.

  • Open Quickly matches object names only (features/open-quickly.mdx), and the MCP search_schema tool matches table and column names, not data (developers/mcp-tools.mdx:97).
  • The filter bar works on one table at a time. Its Any Column default only preselects the first column (apple/TablePro/Core/Storage/FilterSettingsStorage.swift:30); it does not search every column.
  • The only search over every column is Search All Columns in the Data Files window (features/data-files.mdx:48), which reads a file, not a database.

So tracing a value through a schema means writing one query per table by hand. In #95 a user asked for a search feature; their screenshot shows a per-column search form for one table. This issue covers the step past one table.

Proposed solution

  • A Search Database command, from the Database menu and from the sidebar context menu on a database or schema.
  • A sheet with the search text, a match mode (contains, exact, starts with), a case-sensitive option, and the scope: the whole database, chosen schemas, or chosen tables.
  • Text columns are searched by default. Number, date and UUID columns join only when the text parses as that type. Binary and BLOB columns are skipped unless ticked.
  • One read-only SELECT per table, with identifiers quoted and LIKE wildcards escaped for the engine, the value bound as a parameter where the driver allows, a row cap per table, and the connection's query timeout.
  • Progress reads as tables done out of the total, and Cancel stops the run at the next table.
  • Results grouped by table: the matching columns and the row count. Opening a result opens the table in a tab filtered to those rows.

Done when: a search over a database of 50 tables lists every table and column holding the value, can be cancelled midway, and each result opens the matching rows.

Alternatives considered

Write a SELECT ... WHERE col LIKE '%value%' for each table by hand, or dump the database and search the dump file.

Platform

macOS

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