aboutsummaryrefslogtreecommitdiffstats
path: root/Source/CustomQuery.m
diff options
context:
space:
mode:
authorrowanbeentje <rowan@beent.je>2010-03-22 23:07:03 +0000
committerrowanbeentje <rowan@beent.je>2010-03-22 23:07:03 +0000
commit9892a96b80073686b0dd1205d4f859b10d32336f (patch)
treef4f4caaa72f5983dfc23a1f686603b61baf0374c /Source/CustomQuery.m
parent6728ccd128a5320256ac51c0a617f0c76b331ea7 (diff)
downloadsequelpro-9892a96b80073686b0dd1205d4f859b10d32336f.tar.gz
sequelpro-9892a96b80073686b0dd1205d4f859b10d32336f.tar.bz2
sequelpro-9892a96b80073686b0dd1205d4f859b10d32336f.zip
- Simplify table source table setup and make thread safe. This should address http://log.sequelpro.com/view/43 , http://log.sequelpro.com/view/46
- Improve keepalive timer interaction - this should address http://log.sequelpro.com/view/74 and http://log.sequelpro.com/view/71 - Further thread safety improvements to Custom Query, Table Document, and the history controller
Diffstat (limited to 'Source/CustomQuery.m')
-rw-r--r--Source/CustomQuery.m27
1 files changed, 14 insertions, 13 deletions
diff --git a/Source/CustomQuery.m b/Source/CustomQuery.m
index 57d47b7b..f359f9d1 100644
--- a/Source/CustomQuery.m
+++ b/Source/CustomQuery.m
@@ -43,6 +43,7 @@
#import "SPEncodingPopupAccessory.h"
#import "SPDataStorage.h"
#import "SPAlertSheets.h"
+#import "SPMainThreadTrampoline.h"
@implementation CustomQuery
@@ -506,14 +507,14 @@
// Reset the current table view as necessary to avoid redraw and reload issues.
// Restore the view position to the top left to be within the results for all datasets.
if(editedRow == -1) {
- [customQueryView scrollRowToVisible:0];
- [customQueryView scrollColumnToVisible:0];
+ [[customQueryView onMainThread] scrollRowToVisible:0];
+ [[customQueryView onMainThread] scrollColumnToVisible:0];
}
// Remove all the columns if not reloading the table
if(!reloadingExistingResult) {
if (cqColumnDefinition) [cqColumnDefinition release], cqColumnDefinition = nil;
- [self performSelectorOnMainThread:@selector(updateTableView) withObject:nil waitUntilDone:YES];
+ [[self onMainThread] updateTableView];
}
// Disable automatic query retries on failure for the custom queries
@@ -535,7 +536,7 @@
if (i > 0) {
NSString *taskString = [NSString stringWithFormat:NSLocalizedString(@"Running query %ld of %lu...", @"Running multiple queries string"), (long)(i+1), (unsigned long)queryCount];
[tableDocumentInstance setTaskDescription:taskString];
- [errorText setStringValue:taskString];
+ [[errorText onMainThread] setStringValue:taskString];
}
NSString *query = [NSArrayObjectAtIndex(queries, i) stringByTrimmingCharactersInSet:whitespaceAndNewlineSet];
@@ -561,7 +562,7 @@
cqColumnDefinition = [[streamingResult fetchResultFieldsStructure] retain];
if(!reloadingExistingResult) {
- [self performSelectorOnMainThread:@selector(updateTableView) withObject:nil waitUntilDone:YES];
+ [[self onMainThread] updateTableView];
}
[self processResultIntoDataStorage:streamingResult];
@@ -601,7 +602,7 @@
[errors appendString:[NSString stringWithFormat:NSLocalizedString(@"[ERROR in query %ld] %@\n", @"error text when multiple custom query failed"),
(long)(i+1),
errorString]];
- [errorText setStringValue:errors];
+ [[errorText onMainThread] setStringValue:errors];
// ask the user to continue after detecting an error
if (![mySQLConnection queryCancelled]) {
@@ -612,7 +613,7 @@
[alert setMessageText:NSLocalizedString(@"MySQL Error", @"mysql error message")];
[alert setInformativeText:[mySQLConnection getLastErrorMessage]];
[alert setAlertStyle:NSWarningAlertStyle];
- NSInteger choice = [alert runModal];
+ NSInteger choice = [[alert onMainThread] runModal];
switch (choice){
case NSAlertFirstButtonReturn:
suppressErrorSheet = YES;
@@ -687,24 +688,24 @@
// Set up the status string
if ( [mySQLConnection queryCancelled] ) {
if (totalQueriesRun > 1) {
- [affectedRowsText setStringValue:[NSString stringWithFormat:NSLocalizedString(@"Cancelled in query %ld, after %@", @"text showing multiple queries were cancelled"),
+ [[affectedRowsText onMainThread] setStringValue:[NSString stringWithFormat:NSLocalizedString(@"Cancelled in query %ld, after %@", @"text showing multiple queries were cancelled"),
(long)totalQueriesRun,
[NSString stringForTimeInterval:executionTime]
]];
} else {
- [affectedRowsText setStringValue:[NSString stringWithFormat:NSLocalizedString(@"Cancelled after %@", @"text showing a query was cancelled"),
+ [[affectedRowsText onMainThread] setStringValue:[NSString stringWithFormat:NSLocalizedString(@"Cancelled after %@", @"text showing a query was cancelled"),
[NSString stringForTimeInterval:executionTime]
]];
}
} else if ( totalQueriesRun > 1 ) {
if (totalAffectedRows==1) {
- [affectedRowsText setStringValue:[NSString stringWithFormat:NSLocalizedString(@"1 row affected in total, by %ld queries taking %@", @"text showing one row has been affected by multiple queries"),
+ [[affectedRowsText onMainThread] setStringValue:[NSString stringWithFormat:NSLocalizedString(@"1 row affected in total, by %ld queries taking %@", @"text showing one row has been affected by multiple queries"),
(long)totalQueriesRun,
[NSString stringForTimeInterval:executionTime]
]];
} else {
- [affectedRowsText setStringValue:[NSString stringWithFormat:NSLocalizedString(@"%ld rows affected in total, by %ld queries taking %@", @"text showing how many rows have been affected by multiple queries"),
+ [[affectedRowsText onMainThread] setStringValue:[NSString stringWithFormat:NSLocalizedString(@"%ld rows affected in total, by %ld queries taking %@", @"text showing how many rows have been affected by multiple queries"),
(long)totalAffectedRows,
(long)totalQueriesRun,
[NSString stringForTimeInterval:executionTime]
@@ -713,11 +714,11 @@
}
} else {
if (totalAffectedRows==1) {
- [affectedRowsText setStringValue:[NSString stringWithFormat:NSLocalizedString(@"1 row affected, taking %@", @"text showing one row has been affected by a single query"),
+ [[affectedRowsText onMainThread] setStringValue:[NSString stringWithFormat:NSLocalizedString(@"1 row affected, taking %@", @"text showing one row has been affected by a single query"),
[NSString stringForTimeInterval:executionTime]
]];
} else {
- [affectedRowsText setStringValue:[NSString stringWithFormat:NSLocalizedString(@"%ld rows affected, taking %@", @"text showing how many rows have been affected by a single query"),
+ [[affectedRowsText onMainThread] setStringValue:[NSString stringWithFormat:NSLocalizedString(@"%ld rows affected, taking %@", @"text showing how many rows have been affected by a single query"),
(long)totalAffectedRows,
[NSString stringForTimeInterval:executionTime]
]];