Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

- Comparisons button in the Compare & Sync toolbar, listing every saved comparison.
- Save Comparison… in the Compare & Sync toolbar and under Database > Compare.
- Select > All and Select > None in the structure results pane.
- Whole-schema index and table metadata reads on the driver protocol.
- Script that checks the SQLite whole-schema reads against the per-table ones.

### Changed

- Compare & Sync reads a whole schema in a few queries, and reads both sides at once.
- Data mode lists the tables both sides share as soon as a pair is chosen.
- Apply… builds the script when there is not one.
- Saved comparisons set both endpoints, and list whatever pair is on screen.
- Compare & Sync reopens on the source, target, mode and options it last held.
- Table collation on MySQL, previously never read.
- PluginKit ABI 20. Every registry plugin needs rebuilding before or with this release.

### Fixed

- Generated column expressions missing from MySQL's whole-schema column read.
- Generated columns missing entirely from SQLite's whole-schema column read.
- PostgreSQL index reads matching a table name in every schema rather than the one asked for.
- Unreachable hazard allowances in the Apply sheet.
- Compare & Sync toolbar naming the old pair after a saved comparison was loaded from Options.
- A failed whole-schema trigger read counting as a schema with no triggers.
- Compare & Sync publishing one pair's results after the pickers moved to another.
- Middle-click on a tab to close it. (#2595)

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion Plugins/BeancountDriverPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
<key>TableProProvidesDatabaseTypeIds</key>
<array>
<string>Beancount</string>
Expand Down
2 changes: 1 addition & 1 deletion Plugins/BigQueryDriverPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
<key>TableProMinAppVersion</key>
<string>0.42.0</string>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
</dict>
</plist>
2 changes: 1 addition & 1 deletion Plugins/CSVExportPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
<key>TableProProvidesExportFormatIds</key>
<array>
<string>csv</string>
Expand Down
2 changes: 1 addition & 1 deletion Plugins/CSVImportPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
<key>TableProProvidesImportFormatIds</key>
<array>
<string>csv</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,12 @@ extension CassandraPluginDriver {
return definition
}

/// False until the whole-schema scope is checked against a live server. This driver has no
/// per-table trigger read, so the protocol default answers with nothing and a comparison has
/// never listed its triggers; opting in here would change what is compared rather than only
/// how fast it is read.
var providesBulkTriggerFetch: Bool { false }

func fetchAllTriggers(schema: String?) async throws -> [PluginTriggerInfo] {
try await cassandraTriggerList(keyspace: resolveKeyspace(schema), table: nil)
}
Expand Down
2 changes: 1 addition & 1 deletion Plugins/CassandraDriverPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@
<key>NSPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).CassandraPlugin</string>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
</dict>
</plist>
2 changes: 1 addition & 1 deletion Plugins/ClickHouseDriverPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
<key>TableProProvidesDatabaseTypeIds</key>
<array>
<string>ClickHouse</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import Foundation
import TableProPluginKit

extension CloudflareD1PluginDriver {
var providesBulkTriggerFetch: Bool { true }

func fetchAllTriggers(schema: String?) async throws -> [PluginTriggerInfo] {
try await sqliteTriggerList(table: nil)
}
Expand Down
2 changes: 1 addition & 1 deletion Plugins/CloudflareD1DriverPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
<key>TableProMinAppVersion</key>
<string>0.42.0</string>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
</dict>
</plist>
6 changes: 6 additions & 0 deletions Plugins/DamengDriverPlugin/DamengPluginDriver+Routines.swift
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@ extension DamengPluginDriver {
return body.uppercased().hasPrefix("CREATE") ? body : "CREATE OR REPLACE \(body)"
}

/// False until the whole-schema scope is checked against a live server. This driver has no
/// per-table trigger read, so the protocol default answers with nothing and a comparison has
/// never listed its triggers; opting in here would change what is compared rather than only
/// how fast it is read.
var providesBulkTriggerFetch: Bool { false }

func fetchAllTriggers(schema: String?) async throws -> [PluginTriggerInfo] {
try await damengTriggerList(schema: schema, table: nil)
}
Expand Down
2 changes: 1 addition & 1 deletion Plugins/DamengDriverPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
<key>TableProProvidesDatabaseTypeIds</key>
<array>
<string>Dameng</string>
Expand Down
2 changes: 1 addition & 1 deletion Plugins/DuckDBDriverPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
<plist version="1.0">
<dict>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
</dict>
</plist>
2 changes: 1 addition & 1 deletion Plugins/DynamoDBDriverPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
<key>TableProMinAppVersion</key>
<string>0.42.0</string>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
</dict>
</plist>
2 changes: 1 addition & 1 deletion Plugins/ElasticsearchDriverPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
<key>TableProMinAppVersion</key>
<string>0.53.0</string>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
</dict>
</plist>
2 changes: 1 addition & 1 deletion Plugins/EtcdDriverPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
<key>TableProMinAppVersion</key>
<string>0.42.0</string>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
</dict>
</plist>
2 changes: 1 addition & 1 deletion Plugins/JSONExportPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
<key>TableProProvidesExportFormatIds</key>
<array>
<string>json</string>
Expand Down
2 changes: 1 addition & 1 deletion Plugins/JSONImportPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
<key>TableProProvidesImportFormatIds</key>
<array>
<string>json</string>
Expand Down
2 changes: 1 addition & 1 deletion Plugins/KafkaDriverPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
<key>TableProProvidesDatabaseTypeIds</key>
<array>
<string>Kafka</string>
Expand Down
2 changes: 1 addition & 1 deletion Plugins/LibSQLDriverPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
<key>TableProMinAppVersion</key>
<string>0.42.0</string>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
</dict>
</plist>
2 changes: 2 additions & 0 deletions Plugins/LibSQLDriverPlugin/LibSQLPluginDriver+Triggers.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import Foundation
import TableProPluginKit

extension LibSQLPluginDriver {
var providesBulkTriggerFetch: Bool { true }

func fetchAllTriggers(schema: String?) async throws -> [PluginTriggerInfo] {
try await sqliteTriggerList(table: nil)
}
Expand Down
2 changes: 1 addition & 1 deletion Plugins/MQLExportPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
<key>TableProProvidesExportFormatIds</key>
<array>
<string>mql</string>
Expand Down
2 changes: 1 addition & 1 deletion Plugins/MSSQLDriverPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
<plist version="1.0">
<dict>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
</dict>
</plist>
2 changes: 2 additions & 0 deletions Plugins/MSSQLDriverPlugin/MSSQLPluginDriver+Routines.swift
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ extension MSSQLPluginDriver {
return definition
}

var providesBulkTriggerFetch: Bool { true }

func fetchAllTriggers(schema: String?) async throws -> [PluginTriggerInfo] {
try await triggerList(schema: effectiveSchema(schema), table: nil)
}
Expand Down
2 changes: 1 addition & 1 deletion Plugins/MongoDBDriverPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
<plist version="1.0">
<dict>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
</dict>
</plist>
2 changes: 1 addition & 1 deletion Plugins/MySQLDriverPlugin/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>TableProPluginKitVersion</key>
<integer>19</integer>
<integer>20</integer>
<key>TableProProvidesDatabaseTypeIds</key>
<array>
<string>MySQL</string>
Expand Down
Loading
Loading