Compare commits
1
Commits
develop
...
3c0b2b2ae5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c0b2b2ae5 |
@@ -0,0 +1,8 @@
|
|||||||
|
# Phase 10 — Live export progress
|
||||||
|
|
||||||
|
- Updates export progress while each streamed table is being written, rather than only after the table completes.
|
||||||
|
- Displays current-table row count, expected row count, and total exported rows.
|
||||||
|
- Throttles UI updates to every 500 rows (and at the last row) to reduce overhead.
|
||||||
|
- Retains Phase 9's single-result streaming, InnoDB snapshot, row count verification and SHA-256 sidecars.
|
||||||
|
|
||||||
|
Limitations: Large individual values remain constrained by MySQL packet sizes. Progress updates are best effort and may be delayed by networking. Export consistency excludes concurrent DDL and non-InnoDB data. This source has not been built with Xcode or tested against a live server.
|
||||||
@@ -1569,6 +1569,9 @@ struct WorkbenchDatabaseTransferView: View {
|
|||||||
@State private var database = ""
|
@State private var database = ""
|
||||||
@State private var isWorking = false
|
@State private var isWorking = false
|
||||||
@State private var progress = 0.0
|
@State private var progress = 0.0
|
||||||
|
@State private var transferredRows: Int64 = 0
|
||||||
|
@State private var currentTableRows: Int64 = 0
|
||||||
|
@State private var currentTableExpected: Int64 = 0
|
||||||
@State private var status = "Ready"
|
@State private var status = "Ready"
|
||||||
@State private var operationTask: Task<Void, Never>?
|
@State private var operationTask: Task<Void, Never>?
|
||||||
@State private var showingImportConfirmation = false
|
@State private var showingImportConfirmation = false
|
||||||
@@ -1707,6 +1710,12 @@ struct WorkbenchDatabaseTransferView: View {
|
|||||||
.font(.caption)
|
.font(.caption)
|
||||||
.foregroundStyle(.secondary)
|
.foregroundStyle(.secondary)
|
||||||
.textSelection(.enabled)
|
.textSelection(.enabled)
|
||||||
|
if isWorking && selectedMode == 0 && currentTableExpected > 0 {
|
||||||
|
ProgressView(value: Double(currentTableRows), total: Double(currentTableExpected))
|
||||||
|
Text("Current table: \(currentTableRows.formatted()) / \(currentTableExpected.formatted()) rows · Total exported: \(transferredRows.formatted())")
|
||||||
|
.font(.caption.monospacedDigit())
|
||||||
|
.foregroundStyle(.secondary)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1975,6 +1984,9 @@ struct WorkbenchDatabaseTransferView: View {
|
|||||||
exportSession = dedicatedProfile
|
exportSession = dedicatedProfile
|
||||||
isWorking = true
|
isWorking = true
|
||||||
progress = 0
|
progress = 0
|
||||||
|
transferredRows = 0
|
||||||
|
currentTableRows = 0
|
||||||
|
currentTableExpected = 0
|
||||||
let tables = availableTables.filter { selectedTables.contains($0) }
|
let tables = availableTables.filter { selectedTables.contains($0) }
|
||||||
let tempURL = url.deletingLastPathComponent().appendingPathComponent(".\(UUID().uuidString).sql.tmp")
|
let tempURL = url.deletingLastPathComponent().appendingPathComponent(".\(UUID().uuidString).sql.tmp")
|
||||||
var handle: FileHandle?
|
var handle: FileHandle?
|
||||||
@@ -2090,12 +2102,18 @@ struct WorkbenchDatabaseTransferView: View {
|
|||||||
let expectedCount = Int64(countText) else {
|
let expectedCount = Int64(countText) else {
|
||||||
throw WorkbenchTransferError.message("Cannot count rows in \(table)")
|
throw WorkbenchTransferError.message("Cannot count rows in \(table)")
|
||||||
}
|
}
|
||||||
|
currentTableRows = 0
|
||||||
|
currentTableExpected = expectedCount
|
||||||
try write("-- Streamed snapshot: \(expectedCount) rows; order: \(usableIndex ?? "server scan")\n")
|
try write("-- Streamed snapshot: \(expectedCount) rows; order: \(usableIndex ?? "server scan")\n")
|
||||||
let select = "SELECT CONCAT('(', CONCAT_WS(',', \(expressions)), ')') FROM \(qualified)" +
|
let select = "SELECT CONCAT('(', CONCAT_WS(',', \(expressions)), ')') FROM \(qualified)" +
|
||||||
(orderBy.map { " ORDER BY " + $0 } ?? "")
|
(orderBy.map { " ORDER BY " + $0 } ?? "")
|
||||||
let outputHandle = handle!
|
let outputHandle = handle!
|
||||||
let prefix = Data("INSERT INTO \(qualified) (\(names)) VALUES ".utf8)
|
let prefix = Data("INSERT INTO \(qualified) (\(names)) VALUES ".utf8)
|
||||||
let suffix = Data(";\n".utf8)
|
let suffix = Data(";\n".utf8)
|
||||||
|
let completedBeforeTable = transferredRows
|
||||||
|
let completedTables = index
|
||||||
|
let totalUnits = max(tables.count + views.count, 1)
|
||||||
|
var streamedInTable: Int64 = 0
|
||||||
let written = try await NativeMySQLRunner.stream(
|
let written = try await NativeMySQLRunner.stream(
|
||||||
profile: dedicatedProfile,
|
profile: dedicatedProfile,
|
||||||
database: database,
|
database: database,
|
||||||
@@ -2105,7 +2123,21 @@ struct WorkbenchDatabaseTransferView: View {
|
|||||||
try outputHandle.write(contentsOf: prefix)
|
try outputHandle.write(contentsOf: prefix)
|
||||||
try outputHandle.write(contentsOf: Data(literal.utf8))
|
try outputHandle.write(contentsOf: Data(literal.utf8))
|
||||||
try outputHandle.write(contentsOf: suffix)
|
try outputHandle.write(contentsOf: suffix)
|
||||||
|
streamedInTable += 1
|
||||||
|
if streamedInTable % 500 == 0 || streamedInTable == expectedCount {
|
||||||
|
let completed = streamedInTable
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
currentTableRows = completed
|
||||||
|
transferredRows = completedBeforeTable + completed
|
||||||
|
progress = (Double(completedTables) +
|
||||||
|
Double(completed) / Double(max(expectedCount, 1))) /
|
||||||
|
Double(totalUnits)
|
||||||
|
status = "Exporting \(table): \(completed.formatted()) / \(expectedCount.formatted()) rows"
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
currentTableRows = written
|
||||||
|
transferredRows = completedBeforeTable + written
|
||||||
guard written == expectedCount else {
|
guard written == expectedCount else {
|
||||||
throw WorkbenchTransferError.message(
|
throw WorkbenchTransferError.message(
|
||||||
"Table \(table): expected \(expectedCount) rows, streamed \(written). Backup discarded."
|
"Table \(table): expected \(expectedCount) rows, streamed \(written). Backup discarded."
|
||||||
@@ -2113,6 +2145,8 @@ struct WorkbenchDatabaseTransferView: View {
|
|||||||
}
|
}
|
||||||
status = "Exported \(table): \(written) rows"
|
status = "Exported \(table): \(written) rows"
|
||||||
}
|
}
|
||||||
|
currentTableExpected = 0
|
||||||
|
currentTableRows = 0
|
||||||
progress = Double(index + 1) / Double(max(tables.count + views.count, 1))
|
progress = Double(index + 1) / Double(max(tables.count + views.count, 1))
|
||||||
}
|
}
|
||||||
// Views are exported after base tables so dependencies exist on restore.
|
// Views are exported after base tables so dependencies exist on restore.
|
||||||
@@ -2199,7 +2233,7 @@ struct WorkbenchDatabaseTransferView: View {
|
|||||||
do {
|
do {
|
||||||
try WorkbenchBackupIntegrity.createSidecar(for: url)
|
try WorkbenchBackupIntegrity.createSidecar(for: url)
|
||||||
progress = 1
|
progress = 1
|
||||||
status = "Export complete and SHA-256 verified: \(tables.count) tables, \(views.count) views"
|
status = "Export complete and SHA-256 verified: \(tables.count) tables, \(views.count) views, \(transferredRows.formatted()) rows"
|
||||||
} catch {
|
} catch {
|
||||||
progress = 1
|
progress = 1
|
||||||
status = "SQL export complete, but checksum creation failed: \(error.localizedDescription)"
|
status = "SQL export complete, but checksum creation failed: \(error.localizedDescription)"
|
||||||
|
|||||||
BIN
Binary file not shown.
+49
-41
@@ -327,7 +327,7 @@
|
|||||||
"key": "Import SQL into %@?",
|
"key": "Import SQL into %@?",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 13,
|
"startingColumn": 13,
|
||||||
"startingLine": 1780
|
"startingLine": 1789
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -335,7 +335,7 @@
|
|||||||
"key": "Operation",
|
"key": "Operation",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 20,
|
"startingColumn": 20,
|
||||||
"startingLine": 1600
|
"startingLine": 1603
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -343,7 +343,7 @@
|
|||||||
"key": "Data Export",
|
"key": "Data Export",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 22,
|
"startingColumn": 22,
|
||||||
"startingLine": 1601
|
"startingLine": 1604
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -351,7 +351,7 @@
|
|||||||
"key": "Data Import / Restore",
|
"key": "Data Import / Restore",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 22,
|
"startingColumn": 22,
|
||||||
"startingLine": 1602
|
"startingLine": 1605
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -359,7 +359,7 @@
|
|||||||
"key": "MySQL Connection",
|
"key": "MySQL Connection",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 26,
|
"startingColumn": 26,
|
||||||
"startingLine": 1609
|
"startingLine": 1612
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -367,7 +367,7 @@
|
|||||||
"key": "Export Options",
|
"key": "Export Options",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 30,
|
"startingColumn": 30,
|
||||||
"startingLine": 1633
|
"startingLine": 1636
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -375,7 +375,7 @@
|
|||||||
"key": "Import Options",
|
"key": "Import Options",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 30,
|
"startingColumn": 30,
|
||||||
"startingLine": 1689
|
"startingLine": 1692
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -383,7 +383,7 @@
|
|||||||
"key": "Progress",
|
"key": "Progress",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 26,
|
"startingColumn": 26,
|
||||||
"startingLine": 1701
|
"startingLine": 1704
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -391,7 +391,7 @@
|
|||||||
"key": "Connection",
|
"key": "Connection",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 36,
|
"startingColumn": 36,
|
||||||
"startingLine": 1611
|
"startingLine": 1614
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -399,7 +399,7 @@
|
|||||||
"key": "Database",
|
"key": "Database",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 28,
|
"startingColumn": 28,
|
||||||
"startingLine": 1615
|
"startingLine": 1618
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -407,7 +407,7 @@
|
|||||||
"key": "Select Database",
|
"key": "Select Database",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 30,
|
"startingColumn": 30,
|
||||||
"startingLine": 1616
|
"startingLine": 1619
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -415,7 +415,7 @@
|
|||||||
"key": "Refresh Databases",
|
"key": "Refresh Databases",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 32,
|
"startingColumn": 32,
|
||||||
"startingLine": 1624
|
"startingLine": 1627
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -423,7 +423,7 @@
|
|||||||
"key": "No tables found. Select a database or refresh the list.",
|
"key": "No tables found. Select a database or refresh the list.",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 34,
|
"startingColumn": 34,
|
||||||
"startingLine": 1655
|
"startingLine": 1658
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -431,7 +431,7 @@
|
|||||||
"key": "InnoDB data is exported using a consistent snapshot and a single streamed query per table. Tables without unique indexes are supported.",
|
"key": "InnoDB data is exported using a consistent snapshot and a single streamed query per table. Tables without unique indexes are supported.",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 30,
|
"startingColumn": 30,
|
||||||
"startingLine": 1684
|
"startingLine": 1687
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -439,7 +439,7 @@
|
|||||||
"key": "Table structure",
|
"key": "Table structure",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 32,
|
"startingColumn": 32,
|
||||||
"startingLine": 1635
|
"startingLine": 1638
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -447,7 +447,7 @@
|
|||||||
"key": "Table data",
|
"key": "Table data",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 32,
|
"startingColumn": 32,
|
||||||
"startingLine": 1636
|
"startingLine": 1639
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -455,7 +455,7 @@
|
|||||||
"key": "Add DROP TABLE IF EXISTS",
|
"key": "Add DROP TABLE IF EXISTS",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 32,
|
"startingColumn": 32,
|
||||||
"startingLine": 1637
|
"startingLine": 1640
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -463,7 +463,7 @@
|
|||||||
"key": "Include views (definitions)",
|
"key": "Include views (definitions)",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 32,
|
"startingColumn": 32,
|
||||||
"startingLine": 1639
|
"startingLine": 1642
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -471,7 +471,7 @@
|
|||||||
"key": "Include triggers",
|
"key": "Include triggers",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 32,
|
"startingColumn": 32,
|
||||||
"startingLine": 1641
|
"startingLine": 1644
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -479,7 +479,7 @@
|
|||||||
"key": "Include stored procedures and functions",
|
"key": "Include stored procedures and functions",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 32,
|
"startingColumn": 32,
|
||||||
"startingLine": 1643
|
"startingLine": 1646
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -487,7 +487,7 @@
|
|||||||
"key": "Loading tables…",
|
"key": "Loading tables…",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 57,
|
"startingColumn": 57,
|
||||||
"startingLine": 1653
|
"startingLine": 1656
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -495,7 +495,7 @@
|
|||||||
"key": "Tables (%lld selected)",
|
"key": "Tables (%lld selected)",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 34,
|
"startingColumn": 34,
|
||||||
"startingLine": 1646
|
"startingLine": 1649
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -503,7 +503,7 @@
|
|||||||
"key": "All",
|
"key": "All",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 36,
|
"startingColumn": 36,
|
||||||
"startingLine": 1648
|
"startingLine": 1651
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -511,7 +511,7 @@
|
|||||||
"key": "None",
|
"key": "None",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 36,
|
"startingColumn": 36,
|
||||||
"startingLine": 1649
|
"startingLine": 1652
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -519,7 +519,7 @@
|
|||||||
"key": "Refresh",
|
"key": "Refresh",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 36,
|
"startingColumn": 36,
|
||||||
"startingLine": 1650
|
"startingLine": 1653
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -527,7 +527,7 @@
|
|||||||
"key": "Views (%lld selected)",
|
"key": "Views (%lld selected)",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 38,
|
"startingColumn": 38,
|
||||||
"startingLine": 1669
|
"startingLine": 1672
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -535,7 +535,7 @@
|
|||||||
"key": "All",
|
"key": "All",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 40,
|
"startingColumn": 40,
|
||||||
"startingLine": 1671
|
"startingLine": 1674
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -543,7 +543,7 @@
|
|||||||
"key": "None",
|
"key": "None",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 40,
|
"startingColumn": 40,
|
||||||
"startingLine": 1672
|
"startingLine": 1675
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -551,7 +551,7 @@
|
|||||||
"key": "Import SQL statements into the selected database.",
|
"key": "Import SQL statements into the selected database.",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 30,
|
"startingColumn": 30,
|
||||||
"startingLine": 1691
|
"startingLine": 1694
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -559,7 +559,15 @@
|
|||||||
"key": "Supports MySQL DELIMITER directives, triggers and stored routines. Import is not transactional; use a verified backup before restoring.",
|
"key": "Supports MySQL DELIMITER directives, triggers and stored routines. Import is not transactional; use a verified backup before restoring.",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 30,
|
"startingColumn": 30,
|
||||||
"startingLine": 1694
|
"startingLine": 1697
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"comment": "",
|
||||||
|
"key": "Current table: %@ / %@ rows · Total exported: %@",
|
||||||
|
"location": {
|
||||||
|
"startingColumn": 30,
|
||||||
|
"startingLine": 1715
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -567,7 +575,7 @@
|
|||||||
"key": "Close",
|
"key": "Close",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 24,
|
"startingColumn": 24,
|
||||||
"startingLine": 1720
|
"startingLine": 1729
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -575,7 +583,7 @@
|
|||||||
"key": "Verify Backup…",
|
"key": "Verify Backup…",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 28,
|
"startingColumn": 28,
|
||||||
"startingLine": 1728
|
"startingLine": 1737
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -583,7 +591,7 @@
|
|||||||
"key": "Verify an SQL file against its SHA-256 checksum sidecar",
|
"key": "Verify an SQL file against its SHA-256 checksum sidecar",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 27,
|
"startingColumn": 27,
|
||||||
"startingLine": 1731
|
"startingLine": 1740
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -591,7 +599,7 @@
|
|||||||
"key": "Cancel",
|
"key": "Cancel",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 28,
|
"startingColumn": 28,
|
||||||
"startingLine": 1735
|
"startingLine": 1744
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -599,7 +607,7 @@
|
|||||||
"key": "Export SQL…",
|
"key": "Export SQL…",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 31,
|
"startingColumn": 31,
|
||||||
"startingLine": 1742
|
"startingLine": 1751
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -607,7 +615,7 @@
|
|||||||
"key": "Import SQL…",
|
"key": "Import SQL…",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 31,
|
"startingColumn": 31,
|
||||||
"startingLine": 1743
|
"startingLine": 1752
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -615,7 +623,7 @@
|
|||||||
"key": "Import SQL",
|
"key": "Import SQL",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 20,
|
"startingColumn": 20,
|
||||||
"startingLine": 1783
|
"startingLine": 1792
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -623,7 +631,7 @@
|
|||||||
"key": "Cancel",
|
"key": "Cancel",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 20,
|
"startingColumn": 20,
|
||||||
"startingLine": 1791
|
"startingLine": 1800
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -631,7 +639,7 @@
|
|||||||
"key": "SQL files can modify or delete existing database objects and data. Ensure you have a backup before continuing.",
|
"key": "SQL files can modify or delete existing database objects and data. Ensure you have a backup before continuing.",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 17,
|
"startingColumn": 17,
|
||||||
"startingLine": 1796
|
"startingLine": 1805
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -639,7 +647,7 @@
|
|||||||
"key": "Database Import / Export",
|
"key": "Database Import / Export",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 22,
|
"startingColumn": 22,
|
||||||
"startingLine": 1808
|
"startingLine": 1817
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -647,7 +655,7 @@
|
|||||||
"key": "Built-in native MySQL database tools",
|
"key": "Built-in native MySQL database tools",
|
||||||
"location": {
|
"location": {
|
||||||
"startingColumn": 22,
|
"startingColumn": 22,
|
||||||
"startingLine": 1811
|
"startingLine": 1820
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
@@ -15,3 +15,4 @@
|
|||||||
/Volumes/Developer/Applications/WorkbenchReplacement/build/Build/Products/Debug/WorkbenchReplacement.app
|
/Volumes/Developer/Applications/WorkbenchReplacement/build/Build/Products/Debug/WorkbenchReplacement.app
|
||||||
/Volumes/Developer/Applications/WorkbenchReplacement/build/Build/Products/Debug/WorkbenchReplacement.app
|
/Volumes/Developer/Applications/WorkbenchReplacement/build/Build/Products/Debug/WorkbenchReplacement.app
|
||||||
/Volumes/Developer/Applications/WorkbenchReplacement/build/Build/Products/Debug/WorkbenchReplacement.app
|
/Volumes/Developer/Applications/WorkbenchReplacement/build/Build/Products/Debug/WorkbenchReplacement.app
|
||||||
|
/Volumes/Developer/Applications/WorkbenchReplacement/build/Build/Products/Debug/WorkbenchReplacement.app
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
+1
-1
@@ -19,7 +19,7 @@
|
|||||||
<dict>
|
<dict>
|
||||||
<key>cdhash</key>
|
<key>cdhash</key>
|
||||||
<data>
|
<data>
|
||||||
lD7vQzFdLMorMrk09F1ArmxtEu4=
|
6S/w6SxP3rEIpQZE9rYcyy4Jl84=
|
||||||
</data>
|
</data>
|
||||||
<key>requirement</key>
|
<key>requirement</key>
|
||||||
<string>identifier "WorkbenchReplacement.debug" and anchor apple generic and certificate leaf[subject.CN] = "Apple Development: Mark Gregory (FLBRJ3BYDD)" and certificate 1[field.1.2.840.113635.100.6.2.1] /* exists */</string>
|
<string>identifier "WorkbenchReplacement.debug" and anchor apple generic and certificate leaf[subject.CN] = "Apple Development: Mark Gregory (FLBRJ3BYDD)" and certificate 1[field.1.2.840.113635.100.6.2.1] /* exists */</string>
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
@@ -6,48 +6,6 @@
|
|||||||
<integer>13</integer>
|
<integer>13</integer>
|
||||||
<key>logs</key>
|
<key>logs</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>32E9EC2D-B9B8-4CD2-8B3D-CD693A4CBD97</key>
|
|
||||||
<dict>
|
|
||||||
<key>className</key>
|
|
||||||
<string>IDECommandLineBuildLog</string>
|
|
||||||
<key>documentTypeString</key>
|
|
||||||
<string><nil></string>
|
|
||||||
<key>domainType</key>
|
|
||||||
<string>Xcode.IDEActivityLogDomainType.BuildLog</string>
|
|
||||||
<key>fileName</key>
|
|
||||||
<string>32E9EC2D-B9B8-4CD2-8B3D-CD693A4CBD97.xcactivitylog</string>
|
|
||||||
<key>hasPrimaryLog</key>
|
|
||||||
<true/>
|
|
||||||
<key>primaryObservable</key>
|
|
||||||
<dict>
|
|
||||||
<key>highLevelStatus</key>
|
|
||||||
<string>S</string>
|
|
||||||
<key>totalNumberOfAnalyzerIssues</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
<key>totalNumberOfErrors</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
<key>totalNumberOfTestFailures</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
<key>totalNumberOfWarnings</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
</dict>
|
|
||||||
<key>schemeIdentifier-containerName</key>
|
|
||||||
<string>WorkbenchReplacement project</string>
|
|
||||||
<key>schemeIdentifier-schemeName</key>
|
|
||||||
<string>WorkbenchReplacement</string>
|
|
||||||
<key>schemeIdentifier-sharedScheme</key>
|
|
||||||
<integer>1</integer>
|
|
||||||
<key>signature</key>
|
|
||||||
<string>Building project WorkbenchReplacement with scheme WorkbenchReplacement and configuration Debug</string>
|
|
||||||
<key>timeStartedRecording</key>
|
|
||||||
<real>813876968.59599304</real>
|
|
||||||
<key>timeStoppedRecording</key>
|
|
||||||
<real>813876981.606776</real>
|
|
||||||
<key>title</key>
|
|
||||||
<string>Building project WorkbenchReplacement with scheme WorkbenchReplacement and configuration Debug</string>
|
|
||||||
<key>uniqueIdentifier</key>
|
|
||||||
<string>32E9EC2D-B9B8-4CD2-8B3D-CD693A4CBD97</string>
|
|
||||||
</dict>
|
|
||||||
<key>68955E3A-0B2E-4614-AC89-290DCD28B6D0</key>
|
<key>68955E3A-0B2E-4614-AC89-290DCD28B6D0</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>className</key>
|
<key>className</key>
|
||||||
@@ -90,7 +48,7 @@
|
|||||||
<key>uniqueIdentifier</key>
|
<key>uniqueIdentifier</key>
|
||||||
<string>68955E3A-0B2E-4614-AC89-290DCD28B6D0</string>
|
<string>68955E3A-0B2E-4614-AC89-290DCD28B6D0</string>
|
||||||
</dict>
|
</dict>
|
||||||
<key>921D995A-6441-4831-9E4E-3283B2F38B89</key>
|
<key>B2C949DC-0503-4157-BC15-F74641625B50</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>className</key>
|
<key>className</key>
|
||||||
<string>IDECommandLineBuildLog</string>
|
<string>IDECommandLineBuildLog</string>
|
||||||
@@ -99,7 +57,7 @@
|
|||||||
<key>domainType</key>
|
<key>domainType</key>
|
||||||
<string>Xcode.IDEActivityLogDomainType.BuildLog</string>
|
<string>Xcode.IDEActivityLogDomainType.BuildLog</string>
|
||||||
<key>fileName</key>
|
<key>fileName</key>
|
||||||
<string>921D995A-6441-4831-9E4E-3283B2F38B89.xcactivitylog</string>
|
<string>B2C949DC-0503-4157-BC15-F74641625B50.xcactivitylog</string>
|
||||||
<key>hasPrimaryLog</key>
|
<key>hasPrimaryLog</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>primaryObservable</key>
|
<key>primaryObservable</key>
|
||||||
@@ -124,13 +82,13 @@
|
|||||||
<key>signature</key>
|
<key>signature</key>
|
||||||
<string>Building project WorkbenchReplacement with scheme WorkbenchReplacement and configuration Debug</string>
|
<string>Building project WorkbenchReplacement with scheme WorkbenchReplacement and configuration Debug</string>
|
||||||
<key>timeStartedRecording</key>
|
<key>timeStartedRecording</key>
|
||||||
<real>813877067.82482302</real>
|
<real>813877672.07052696</real>
|
||||||
<key>timeStoppedRecording</key>
|
<key>timeStoppedRecording</key>
|
||||||
<real>813877081.68267095</real>
|
<real>813877685.02004802</real>
|
||||||
<key>title</key>
|
<key>title</key>
|
||||||
<string>Building project WorkbenchReplacement with scheme WorkbenchReplacement and configuration Debug</string>
|
<string>Building project WorkbenchReplacement with scheme WorkbenchReplacement and configuration Debug</string>
|
||||||
<key>uniqueIdentifier</key>
|
<key>uniqueIdentifier</key>
|
||||||
<string>921D995A-6441-4831-9E4E-3283B2F38B89</string>
|
<string>B2C949DC-0503-4157-BC15-F74641625B50</string>
|
||||||
</dict>
|
</dict>
|
||||||
<key>EB994874-BDA8-4BAC-BAF2-6EB6F20E2468</key>
|
<key>EB994874-BDA8-4BAC-BAF2-6EB6F20E2468</key>
|
||||||
<dict>
|
<dict>
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
1792184713.510244: Module build session file for module cache at Path(str: "/Volumes/Developer/Applications/WorkbenchReplacement/build/ModuleCache.noindex")
|
1792184872.486644: Module build session file for module cache at Path(str: "/Volumes/Developer/Applications/WorkbenchReplacement/build/ModuleCache.noindex")
|
||||||
|
|||||||
BIN
Binary file not shown.
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>LastAccessedDate</key>
|
<key>LastAccessedDate</key>
|
||||||
<date>2026-10-16T21:05:13Z</date>
|
<date>2026-10-16T21:07:52Z</date>
|
||||||
<key>WorkspacePath</key>
|
<key>WorkspacePath</key>
|
||||||
<string>/Volumes/Developer/Applications/WorkbenchReplacement/WorkbenchReplacement.xcodeproj</string>
|
<string>/Volumes/Developer/Applications/WorkbenchReplacement/WorkbenchReplacement.xcodeproj</string>
|
||||||
</dict>
|
</dict>
|
||||||
|
|||||||
Reference in New Issue
Block a user