Skip to content

feat(ios): add full-text search in data browser#657

Merged
datlechin merged 3 commits intomainfrom
feat/ios-data-search
Apr 11, 2026
Merged

feat(ios): add full-text search in data browser#657
datlechin merged 3 commits intomainfrom
feat/ios-data-search

Conversation

@datlechin
Copy link
Copy Markdown
Collaborator

Summary

  • Add server-side full-text search across all columns in the iOS data browser
  • Generates CAST(col AS CHAR/TEXT) LIKE '%term%' per column with dialect-aware escaping (MySQL CHAR, PostgreSQL TEXT, SQLite bare column)
  • Search ANDs with existing column filters: WHERE (search clauses) AND (filter clauses)
  • Integrates with pagination — both data and COUNT queries include the search clause
  • Uses native .searchable modifier with on-submit trigger (no debounce)
  • Hidden for Redis connections (no SQL)
  • Shows ContentUnavailableView.search for empty search results

Test plan

  • Open a MySQL/PostgreSQL/SQLite table, search for a value — verify results match
  • Search for a numeric value — verify CAST finds it in non-text columns
  • Search with special characters (%, _, ') — verify escaping works
  • Combine search with column filters — verify AND composition
  • Paginate through search results — verify correct counts
  • Clear search bar — verify full data reloads
  • Open a Redis connection — verify search bar is hidden

- Fix stale rows[index] crash in context menu/swipe closures (use captured row value)
- Add CAST for MSSQL (NVARCHAR(MAX)) and ClickHouse (toString), default CAST(AS TEXT)
- Filter BLOB/BYTEA/BINARY columns from search (produce garbage results)
- Cancel previous search task before starting new one
- Use ILIKE for PostgreSQL case-insensitive search
- Add VoiceOver accessibility to RowCard and toolbar buttons
- Keep bottom toolbar visible during active search/filter with empty results
@datlechin datlechin merged commit f210139 into main Apr 11, 2026
2 checks passed
@datlechin datlechin deleted the feat/ios-data-search branch April 11, 2026 10:04
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