You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Search for a value across every table in a database #3601
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.
Activity