Skip to content

Commit 020eea4

Browse files
committed
fix: correct MSSQL bracket quoting, deduplicate quote helper, restore error context in view fallback
1 parent 485c33c commit 020eea4

File tree

5 files changed

+15
-21
lines changed

5 files changed

+15
-21
lines changed

TablePro/Core/Autocomplete/CompletionEngine.swift

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,12 @@ final class CompletionEngine {
3636
dialect: SQLDialectDescriptor? = nil,
3737
statementCompletions: [CompletionEntry] = []
3838
) {
39-
self.provider = SQLCompletionProvider(schemaProvider: schemaProvider, databaseType: databaseType, dialect: dialect)
40-
if let type = databaseType {
41-
self.provider.setDatabaseType(type, dialect: dialect, statementCompletions: statementCompletions)
42-
}
39+
self.provider = SQLCompletionProvider(
40+
schemaProvider: schemaProvider,
41+
databaseType: databaseType,
42+
dialect: dialect,
43+
statementCompletions: statementCompletions
44+
)
4345
}
4446

4547
// MARK: - Public API

TablePro/Core/Autocomplete/SQLCompletionProvider.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@ final class SQLCompletionProvider {
2626

2727
// MARK: - Init
2828

29-
init(schemaProvider: SQLSchemaProvider, databaseType: DatabaseType? = nil, dialect: SQLDialectDescriptor? = nil) {
29+
init(schemaProvider: SQLSchemaProvider, databaseType: DatabaseType? = nil,
30+
dialect: SQLDialectDescriptor? = nil, statementCompletions: [CompletionEntry] = []) {
3031
self.schemaProvider = schemaProvider
3132
self.databaseType = databaseType
3233
self.cachedDialect = dialect
34+
self.cachedStatementCompletions = statementCompletions
3335
}
3436

3537
/// Update the database type for context-aware completions

TablePro/Core/Database/FilterSQLGenerator.swift

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,6 @@
88
import Foundation
99
import TableProPluginKit
1010

11-
private func quoteIdentifierFromDialect(_ dialect: SQLDialectDescriptor) -> (String) -> String {
12-
let q = dialect.identifierQuote
13-
if q == "[" {
14-
return { name in
15-
let escaped = name.replacingOccurrences(of: "]", with: "]]")
16-
return "[\(escaped)]"
17-
}
18-
}
19-
return { name in
20-
let escaped = name.replacingOccurrences(of: q, with: q + q)
21-
return "\(q)\(escaped)\(q)"
22-
}
23-
}
24-
2511
/// Generates SQL WHERE clauses from filter definitions
2612
struct FilterSQLGenerator {
2713
private let dialect: SQLDialectDescriptor

TablePro/Core/Utilities/SQL/DialectQuoteHelper.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ func quoteIdentifierFromDialect(_ dialect: SQLDialectDescriptor?) -> (String) ->
1414
guard let dialect else { return { $0 } }
1515
let q = dialect.identifierQuote
1616
if q == "[" {
17-
return { name in "[\(name.replacingOccurrences(of: "]", with: "]]"))]" }
17+
return { name in
18+
let escaped = name.replacingOccurrences(of: "]", with: "]]")
19+
return "[\(escaped)]"
20+
}
1821
}
1922
return { name in
2023
let escaped = name.replacingOccurrences(of: q, with: q + q)

TablePro/Views/Main/Extensions/MainContentCoordinator+SidebarActions.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,9 @@ extension MainContentCoordinator {
4242
WindowOpener.shared.openNativeTab(payload)
4343
} catch {
4444
let driver = DatabaseManager.shared.driver(for: self.connection.id)
45-
let fallbackSQL = driver?.editViewFallbackTemplate(viewName: viewName)
45+
let template = driver?.editViewFallbackTemplate(viewName: viewName)
4646
?? "CREATE OR REPLACE VIEW \(viewName) AS\nSELECT * FROM table_name;"
47+
let fallbackSQL = "-- Could not fetch view definition: \(error.localizedDescription)\n\(template)"
4748

4849
let payload = EditorTabPayload(
4950
connectionId: connection.id,

0 commit comments

Comments
 (0)