Skip to content

Commit 7202627

Browse files
authored
fix(plugin-postgresql): rename versioned capabilities to avoid PluginCapabilities collision (#1243)
1 parent 74eb1c9 commit 7202627

3 files changed

Lines changed: 12 additions & 11 deletions

File tree

Plugins/PostgreSQLDriverPlugin/PostgreSQLCapabilities.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,5 @@ struct PostgreSQLCapabilities: Sendable, Equatable {
2424

2525
var hasDatabaseICULocale: Bool { serverVersion >= 150_000 }
2626
var hasDatabaseLocale: Bool { serverVersion >= 170_000 }
27+
var hasModernICUSyntax: Bool { serverVersion >= 160_000 }
2728
}

Plugins/PostgreSQLDriverPlugin/PostgreSQLPluginDriver+Columns.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ extension PostgreSQLPluginDriver {
1010
func fetchColumns(table: String, schema: String?) async throws -> [PluginColumnInfo] {
1111
let safeSchema = escapeLiteralForColumns(currentSchema ?? "public")
1212
let safeTable = escapeLiteralForColumns(table)
13-
let caps = capabilities
13+
let caps = versionedCapabilities
1414
let identityProjection = caps.hasIdentityColumns ? "a.attidentity" : "NULL::text"
1515
let generatedProjection = caps.hasGeneratedColumns ? "a.attgenerated" : "NULL::text"
1616
let attributeJoin = (caps.hasIdentityColumns || caps.hasGeneratedColumns) ? """
@@ -60,7 +60,7 @@ extension PostgreSQLPluginDriver {
6060

6161
func fetchAllColumns(schema: String?) async throws -> [String: [PluginColumnInfo]] {
6262
let safeSchema = escapeLiteralForColumns(currentSchema ?? "public")
63-
let caps = capabilities
63+
let caps = versionedCapabilities
6464
let identityProjection = caps.hasIdentityColumns ? "a.attidentity" : "NULL::text"
6565
let generatedProjection = caps.hasGeneratedColumns ? "a.attgenerated" : "NULL::text"
6666
let attributeJoin = (caps.hasIdentityColumns || caps.hasGeneratedColumns) ? """

Plugins/PostgreSQLDriverPlugin/PostgreSQLPluginDriver.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ final class PostgreSQLPluginDriver: PluginDatabaseDriver, @unchecked Sendable {
2222
var supportsTransactions: Bool { true }
2323
var serverVersion: String? { libpqConnection?.serverVersion() }
2424
var serverVersionNumber: Int32 { libpqConnection?.serverVersionNumber() ?? 0 }
25-
var capabilities: PostgreSQLCapabilities {
25+
var versionedCapabilities: PostgreSQLCapabilities {
2626
PostgreSQLCapabilities(serverVersion: serverVersionNumber)
2727
}
2828
var parameterStyle: ParameterStyle { .dollar }
@@ -234,7 +234,7 @@ final class PostgreSQLPluginDriver: PluginDatabaseDriver, @unchecked Sendable {
234234

235235
func fetchTables(schema: String?) async throws -> [PluginTableInfo] {
236236
let schemaLiteral = escapeLiteral(schema ?? _currentSchema)
237-
let caps = capabilities
237+
let caps = versionedCapabilities
238238

239239
var unions: [String] = [
240240
"""
@@ -284,7 +284,7 @@ final class PostgreSQLPluginDriver: PluginDatabaseDriver, @unchecked Sendable {
284284

285285

286286
func fetchIndexes(table: String, schema: String?) async throws -> [PluginIndexInfo] {
287-
let columnOrdering = capabilities.hasArrayPosition
287+
let columnOrdering = versionedCapabilities.hasArrayPosition
288288
? "ORDER BY array_position(ix.indkey, a.attnum)"
289289
: "ORDER BY a.attnum"
290290
let query = """
@@ -433,7 +433,7 @@ final class PostgreSQLPluginDriver: PluginDatabaseDriver, @unchecked Sendable {
433433
func fetchTableDDL(table: String, schema: String?) async throws -> String {
434434
let safeTable = escapeLiteral(table)
435435
let quotedTable = "\"\(table.replacingOccurrences(of: "\"", with: "\"\""))\""
436-
let caps = capabilities
436+
let caps = versionedCapabilities
437437

438438
let identityClause: String = caps.hasIdentityColumns ? """
439439
CASE
@@ -672,7 +672,7 @@ final class PostgreSQLPluginDriver: PluginDatabaseDriver, @unchecked Sendable {
672672
}
673673

674674
func fetchDependentSequences(table: String, schema: String?) async throws -> [(name: String, ddl: String)] {
675-
guard capabilities.hasSequencesCatalog else { return [] }
675+
guard versionedCapabilities.hasSequencesCatalog else { return [] }
676676
let safeTable = escapeLiteral(table)
677677
let query = """
678678
SELECT s.sequencename,
@@ -720,7 +720,7 @@ final class PostgreSQLPluginDriver: PluginDatabaseDriver, @unchecked Sendable {
720720
]
721721

722722
func createDatabaseFormSpec() async throws -> PluginCreateDatabaseFormSpec? {
723-
let supportsProvider = capabilities.hasDatabaseICULocale
723+
let supportsProvider = versionedCapabilities.hasDatabaseICULocale
724724

725725
async let templateDefaultsTask = fetchTemplate1Defaults()
726726
async let collationsTask = fetchCollations()
@@ -813,7 +813,7 @@ final class PostgreSQLPluginDriver: PluginDatabaseDriver, @unchecked Sendable {
813813

814814
var sql = "CREATE DATABASE \"\(quotedName)\" ENCODING '\(encoding)'"
815815

816-
let supportsProvider = capabilities.hasDatabaseICULocale
816+
let supportsProvider = versionedCapabilities.hasDatabaseICULocale
817817
let provider = supportsProvider ? (request.values["provider"] ?? "libc") : "libc"
818818

819819
switch provider {
@@ -873,7 +873,7 @@ final class PostgreSQLPluginDriver: PluginDatabaseDriver, @unchecked Sendable {
873873
)
874874
}
875875
let escapedIcu = escapeLiteral(icuLocale)
876-
if let major = majorVersion, major >= 16 {
876+
if versionedCapabilities.hasModernICUSyntax {
877877
sql += " LOCALE_PROVIDER 'icu' LOCALE '\(escapedIcu)' TEMPLATE template0"
878878
} else {
879879
sql += " LOCALE_PROVIDER 'icu' ICU_LOCALE '\(escapedIcu)' LC_COLLATE 'C' LC_CTYPE 'C' TEMPLATE template0"
@@ -903,7 +903,7 @@ final class PostgreSQLPluginDriver: PluginDatabaseDriver, @unchecked Sendable {
903903
}
904904

905905
private func fetchTemplate1Defaults() async -> Template1Defaults? {
906-
let caps = capabilities
906+
let caps = versionedCapabilities
907907
let selectColumns: String
908908
if caps.hasDatabaseLocale {
909909
selectColumns = "datcollate, datctype, datlocprovider, datlocale"

0 commit comments

Comments
 (0)