@@ -718,13 +718,9 @@ internal final class CassandraPluginDriver: PluginDatabaseDriver, @unchecked Sen
718718 }
719719
720720 func disconnect( ) {
721- let actor = connectionActor
722- let semaphore = DispatchSemaphore ( value: 0 )
723- Task {
724- await actor . close ( )
725- semaphore. signal ( )
721+ Task . detached ( priority: . utility) { [ connectionActor] in
722+ await connectionActor. close ( )
726723 }
727- semaphore. wait ( )
728724 stateLock. lock ( )
729725 _currentKeyspace = nil
730726 _cachedVersion = nil
@@ -1004,9 +1000,6 @@ internal final class CassandraPluginDriver: PluginDatabaseDriver, @unchecked Sen
10041000
10051001 func fetchTableMetadata( table: String , schema: String ? ) async throws -> PluginTableMetadata {
10061002 let ks = resolveKeyspace ( schema)
1007- let safeTable = escapeSingleQuote ( table)
1008- let safeKs = escapeSingleQuote ( ks)
1009-
10101003 // Cassandra doesn't have a cheap row count — use a bounded count
10111004 let countQuery = " SELECT COUNT(*) FROM \" \( escapeIdentifier ( ks) ) \" . \" \( escapeIdentifier ( table) ) \" LIMIT 100001 "
10121005 let countResult = try ? await execute ( query: countQuery)
@@ -1027,8 +1020,12 @@ internal final class CassandraPluginDriver: PluginDatabaseDriver, @unchecked Sen
10271020 func fetchDatabases( ) async throws -> [ String ] {
10281021 let query = " SELECT keyspace_name FROM system_schema.keyspaces "
10291022 let result = try await execute ( query: query)
1023+ let systemKeyspaces : Set < String > = [
1024+ " system " , " system_schema " , " system_auth " ,
1025+ " system_distributed " , " system_traces " , " system_virtual_schema " ,
1026+ ]
10301027 return result. rows. compactMap { $0 [ safe: 0 ] ?? nil }
1031- . filter { !$0 . hasPrefix ( " system " ) }
1028+ . filter { !systemKeyspaces . contains ( $0 ) }
10321029 . sorted ( )
10331030 }
10341031
0 commit comments