Skip to content

refactor: phase 2 tail — declare capabilities for 14 plugins#1121

Merged
datlechin merged 3 commits intomainfrom
refactor/phase2-tail
May 8, 2026
Merged

refactor: phase 2 tail — declare capabilities for 14 plugins#1121
datlechin merged 3 commits intomainfrom
refactor/phase2-tail

Conversation

@datlechin
Copy link
Copy Markdown
Member

Summary

Phase 2 tail. 14 plugins declare honest PluginCapabilities based on what they actually implement. Pattern proven by SQLite migration in PR #1117. NO ABI bump (additive, default impl in protocol extension).

Verification

  • currentPluginKitVersion stays 9.
  • No Info.plist TableProPluginKitVersion changed.
  • No method signatures changed.
  • No new requirements added to PluginDatabaseDriver.
  • xcodebuild Debug builds clean.
  • swiftlint clean on all 15 touched files.

Per-plugin (honest, code-verified)

SQL plugins (commit 062f32a):

Plugin Capabilities
MySQL parameterizedQueries, transactions, alterTableDDL, foreignKeyToggle, cancelQuery
PostgreSQL parameterizedQueries, transactions, alterTableDDL, multiSchema, cancelQuery, batchExecute
Redshift parameterizedQueries, transactions, multiSchema, cancelQuery, batchExecute
MSSQL parameterizedQueries, transactions, alterTableDDL, multiSchema, cancelQuery, batchExecute
Oracle transactions, alterTableDDL, multiSchema
ClickHouse parameterizedQueries, alterTableDDL, cancelQuery
DuckDB parameterizedQueries, transactions, alterTableDDL, multiSchema, cancelQuery
LibSQL parameterizedQueries, alterTableDDL, foreignKeyToggle, truncateTable, cancelQuery

NoSQL plugins (commit b6cdda3):

Plugin Capabilities
MongoDB cancelQuery
Redis transactions, truncateTable, cancelQuery
Cassandra parameterizedQueries, materializedViews, alterTableDDL

Cloud plugins (commit dee1bfb):

Plugin Capabilities
DynamoDB parameterizedQueries, cancelQuery
BigQuery alterTableDDL, truncateTable, multiSchema, cancelQuery
CloudflareD1 parameterizedQueries, alterTableDDL, foreignKeyToggle, truncateTable, cancelQuery
etcd cancelQuery

Notable judgment calls

  1. Oracle parameterizedQueries omitted — driver has no executeParameterized override, so it falls back to default substitution. Honest declaration; revisit when binding gets wired.
  2. Etcd truncateTable omittedtruncateTableStatements has stale signature (table:cascade:) that does not satisfy current protocol (table:schema:cascade:). Worth a follow-up signature fix; out of scope for additive PR.
  3. DynamoDB truncateTable omittedtruncateTableStatements explicitly returns nil.
  4. Cassandra multiSchema omitted — keyspaces exposed via fetchDatabases, not fetchSchemas. supportsSchemas is false.
  5. Postgres compaction — capabilities literal compacted to single line because file body crossed the 1100-line type_body warning threshold.
  6. No maintenance flag — Postgres has supportedMaintenanceOperations (VACUUM/ANALYZE/REINDEX/CLUSTER) but the foundation OptionSet has no maintenance capability. Not invented.

Out of scope

  • Adopting PluginProcedureFunctionSupport sub-protocol (no plugin currently has procedure/function fetch).
  • Splitting optional methods into sub-protocols (PluginAlterDDL, PluginMaintenance).
  • ABI bump to v10.

Test plan

@datlechin datlechin merged commit 6f04878 into main May 8, 2026
2 checks passed
@datlechin datlechin deleted the refactor/phase2-tail branch May 8, 2026 10:40
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