diff options
-rw-r--r-- | Interfaces/English.lproj/MainMenu.xib | 9 | ||||
-rw-r--r-- | Resources/Plists/Info.plist | 4 | ||||
-rw-r--r-- | Source/SPDatabaseDocument.m | 65 |
3 files changed, 70 insertions, 8 deletions
diff --git a/Interfaces/English.lproj/MainMenu.xib b/Interfaces/English.lproj/MainMenu.xib index d77e21c2..feaa5282 100644 --- a/Interfaces/English.lproj/MainMenu.xib +++ b/Interfaces/English.lproj/MainMenu.xib @@ -1,9 +1,8 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="6751" systemVersion="13F1507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none"> +<?xml version="1.0" encoding="UTF-8"?> +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11762" systemVersion="16C67" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none"> <dependencies> <deployment identifier="macosx"/> - <development version="5100" identifier="xcode"/> - <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="6751"/> + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11762"/> </dependencies> <objects> <customObject id="-2" userLabel="File's Owner" customClass="NSApplication"> @@ -12,7 +11,7 @@ </connections> </customObject> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> - <customObject id="-3" userLabel="Application"> + <customObject id="-3" userLabel="Application" customClass="NSObject"> <connections> <outlet property="delegate" destination="213" id="1001"/> </connections> diff --git a/Resources/Plists/Info.plist b/Resources/Plists/Info.plist index 5f5b8279..63b5bff6 100644 --- a/Resources/Plists/Info.plist +++ b/Resources/Plists/Info.plist @@ -187,7 +187,7 @@ <key>FRFeedbackReporter.maxConsoleLogSize</key> <integer>10000</integer> <key>FRFeedbackReporter.targetURL</key> - <string>http://log.sequelpro.com/submit</string> + <string>https://sequelpro.com/api?action=feedback-submit</string> <key>LSApplicationCategoryType</key> <string>public.app-category.developer-tools</string> <key>LSMinimumSystemVersion</key> @@ -199,7 +199,6 @@ <key>x86_64</key> <string>10.6.0</string> </dict> - <key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> @@ -223,7 +222,6 @@ </dict> </dict> </dict> - <key>NSAppleScriptEnabled</key> <true/> <key>NSHumanReadableCopyright</key> diff --git a/Source/SPDatabaseDocument.m b/Source/SPDatabaseDocument.m index c338224b..6b61a99e 100644 --- a/Source/SPDatabaseDocument.m +++ b/Source/SPDatabaseDocument.m @@ -856,6 +856,71 @@ static int64_t SPDatabaseDocumentInstanceCounter = 0; contextInfo:SPAlterDatabaseAction]; } +- (IBAction)compareDatabase:(id)sender +{ + /* + + + This method is a basic experiment to see how long it takes to read an string compare an entire database. It works, + well, good performance and very little memory usage. + + Next we need to ask the user to select another connection (from the favourites list) and compare chunks of ~1000 rows + at a time, ordered by primary key, between the two databases, using three threads (one for each database and one for + comparisons). + + We will the write to disk every difference that has been found and open the result in FileMerge. + + In future, add the ability to write all difference to the current database. + + + */ + NSLog(@"================="); + + SPMySQLResult *showTablesQuery = [mySQLConnection queryString:@"show tables"]; + + NSArray *tableRow; + while ((tableRow = [showTablesQuery getRowAsArray]) != nil) { + @autoreleasepool { + NSString *table = tableRow[0]; + + NSLog(@"-----------------"); + NSLog(@"Scanning %@", table); + + + NSDictionary *tableStatus = [[mySQLConnection queryString:[NSString stringWithFormat:@"SHOW TABLE STATUS LIKE %@", [table tickQuotedString]]] getRowAsDictionary]; + NSInteger rowCountEstimate = [tableStatus[@"Rows"] integerValue]; + NSLog(@"Estimated row count: %li", rowCountEstimate); + + + + SPMySQLResult *tableContentsQuery = [mySQLConnection streamingQueryString:[NSString stringWithFormat:@"select * from %@", [table backtickQuotedString]] useLowMemoryBlockingStreaming:NO]; + //NSDate *lastProgressUpdate = [NSDate date]; + time_t lastProgressUpdate = time(NULL); + NSInteger rowCount = 0; + NSArray *row; + while (true) { + @autoreleasepool { + row = [tableContentsQuery getRowAsArray]; + if (!row) { + break; + } + + [row isEqualToArray:row]; // TODO: compare to the other database, instead of the same one (just doing that to test performance) + + rowCount++; + if ((time(NULL) - lastProgressUpdate) > 0) { + NSLog(@"Progress: %.1f%%", (((float)rowCount) / ((float)rowCountEstimate)) * 100); + lastProgressUpdate = time(NULL); + } + } + } + NSLog(@"Done. Actual row count: %li", rowCount); + } + } + + NSLog(@"================="); +} + #ifndef SP_CODA /* operations on whole databases */ /** * opens the copy database sheet and copies the databsae |