Skip to content

Commit 988d7b1

Browse files
committed
fix: eliminate all remaining stringArrayValue usages in Redis plugin
1 parent 462d50c commit 988d7b1

2 files changed

Lines changed: 10 additions & 6 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Added
1111

12+
- Multi-select connections in Welcome window (Cmd+Click, Shift+Click) with bulk delete (⌘⌫), Move to Group, and multi-connect
13+
- Drag-and-drop connections between groups, reorder within groups, and reorder groups
1214
- ClickHouse, MSSQL, Redis, XLSX Export, MQL Export, and SQL Import now ship as built-in plugins
1315
- Large document safety caps for syntax highlighting (skip >5MB, throttle >50KB)
1416
- Lazy-load full values for LONGTEXT/MEDIUMTEXT/CLOB columns in the detail pane sidebar
1517

1618
### Fixed
1719

1820
- Detail pane showing truncated values for LONGTEXT/MEDIUMTEXT/CLOB columns, preventing correct editing
21+
- Redis hash/list/set/zset/stream views showing empty or misaligned rows when values contained binary, null, or integer types
1922

2023
## [0.23.2] - 2026-03-24
2124

Plugins/RedisDriverPlugin/RedisPluginDriver.swift

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ final class RedisPluginDriver: PluginDatabaseDriver, @unchecked Sendable {
109109

110110
case .keys(let pattern):
111111
let result = try await conn.executeCommand(["KEYS", pattern])
112-
return result.stringArrayValue?.count ?? 0
112+
return result.arrayValue?.count ?? 0
113113

114114
case .dbsize:
115115
let result = try await conn.executeCommand(["DBSIZE"])
@@ -200,7 +200,7 @@ final class RedisPluginDriver: PluginDatabaseDriver, @unchecked Sendable {
200200
// Get total database count from CONFIG GET databases
201201
let configResult = try await conn.executeCommand(["CONFIG", "GET", "databases"])
202202
var maxDatabases = 16
203-
if let array = configResult.stringArrayValue, array.count >= 2, let count = Int(array[1]) {
203+
if let array = configResult.arrayValue, array.count >= 2, let count = Int(redisReplyToString(array[1])) {
204204
maxDatabases = count
205205
}
206206

@@ -310,7 +310,7 @@ final class RedisPluginDriver: PluginDatabaseDriver, @unchecked Sendable {
310310
}
311311
let result = try await conn.executeCommand(["CONFIG", "GET", "databases"])
312312
var maxDatabases = 16
313-
if let array = result.stringArrayValue, array.count >= 2, let count = Int(array[1]) {
313+
if let array = result.arrayValue, array.count >= 2, let count = Int(redisReplyToString(array[1])) {
314314
maxDatabases = count
315315
}
316316
return (0 ..< maxDatabases).map { "db\($0)" }
@@ -627,9 +627,10 @@ private extension RedisPluginDriver {
627627

628628
case .keys(let pattern):
629629
let result = try await conn.executeCommand(["KEYS", pattern])
630-
guard let keys = result.stringArrayValue else {
630+
guard let items = result.arrayValue else {
631631
return buildEmptyKeyResult(startTime: startTime)
632632
}
633+
let keys = items.map { redisReplyToString($0) }
633634
let capped = Array(keys.prefix(PluginRowLimits.defaultMax))
634635
let keysTruncated = keys.count > PluginRowLimits.defaultMax
635636
return try await buildKeyBrowseResult(
@@ -1298,10 +1299,10 @@ private extension RedisPluginDriver {
12981299
var entryStrings: [String] = []
12991300
for entry in entries {
13001301
guard let parts = entry.arrayValue, parts.count >= 2,
1301-
let entryId = parts[0].stringValue,
13021302
let fields = parts[1].arrayValue else {
13031303
continue
13041304
}
1305+
let entryId = redisReplyToString(parts[0])
13051306
var fieldPairs: [String] = []
13061307
var j = 0
13071308
while j + 1 < fields.count {
@@ -1560,10 +1561,10 @@ private extension RedisPluginDriver {
15601561
var rows: [[String?]] = []
15611562
for entry in entries {
15621563
guard let entryParts = entry.arrayValue, entryParts.count >= 2,
1563-
let entryId = entryParts[0].stringValue,
15641564
let fields = entryParts[1].arrayValue else {
15651565
continue
15661566
}
1567+
let entryId = redisReplyToString(entryParts[0])
15671568

15681569
var fieldPairs: [String] = []
15691570
var i = 0

0 commit comments

Comments
 (0)