diff options
author | Bibiko <bibiko@eva.mpg.de> | 2009-07-21 10:12:46 +0000 |
---|---|---|
committer | Bibiko <bibiko@eva.mpg.de> | 2009-07-21 10:12:46 +0000 |
commit | 0efe2f26810e8849035ed77ddb2e642643345dee (patch) | |
tree | 2345d2e53e8fa1f8a4a307c9ab9d9cf58bcfe288 /Source | |
parent | 77dc856cf9057f559203cedc49014afeafb08d43 (diff) | |
download | sequelpro-0efe2f26810e8849035ed77ddb2e642643345dee.tar.gz sequelpro-0efe2f26810e8849035ed77ddb2e642643345dee.tar.bz2 sequelpro-0efe2f26810e8849035ed77ddb2e642643345dee.zip |
• fixed bug if the table sorting query in Custom Query gave an error
- SP tried to select the erroneous part in customQueryView which could lead to an range exception
- now it shows a proper error message
- it suppresses column highlighting and setting of the NSSortIndicator
Diffstat (limited to 'Source')
-rw-r--r-- | Source/CustomQuery.h | 3 | ||||
-rw-r--r-- | Source/CustomQuery.m | 29 |
2 files changed, 20 insertions, 12 deletions
diff --git a/Source/CustomQuery.h b/Source/CustomQuery.h index 47be44c7..57b8ee85 100644 --- a/Source/CustomQuery.h +++ b/Source/CustomQuery.h @@ -95,7 +95,8 @@ NSArray *cqColumnDefinition; NSString *lastExecutedQuery; - BOOL tableReloadAfterEdting; + BOOL tableReloadAfterEditing; + BOOL queryIsTableSorter; BOOL isDesc; NSNumber *sortField; BOOL tempAlertWasShown; // a temp value for nightly builts diff --git a/Source/CustomQuery.m b/Source/CustomQuery.m index 2457f932..c870237c 100644 --- a/Source/CustomQuery.m +++ b/Source/CustomQuery.m @@ -75,7 +75,7 @@ // Reset queryStartPosition queryStartPosition = 0; - tableReloadAfterEdting = NO; + tableReloadAfterEditing = NO; [self performQueries:queries]; // If no error was selected reconstruct a given selection @@ -129,7 +129,7 @@ [textView insertText:@""]; [textView setSelectedRange:selectedRange]; - tableReloadAfterEdting = NO; + tableReloadAfterEditing = NO; [self performQueries:queries]; } @@ -420,7 +420,7 @@ [customQueryView scrollColumnToVisible:0]; // Remove all the columns - if(!tableReloadAfterEdting) { + if(!tableReloadAfterEditing) { theColumns = [customQueryView tableColumns]; while ([theColumns count]) { [customQueryView removeTableColumn:NSArrayObjectAtIndex(theColumns, 0)]; @@ -523,7 +523,7 @@ // if(!queriesSeparatedByDelimiter) // TODO: How to combine queries delimited by DELIMITER? usedQuery = [[NSString stringWithString:[tempQueries componentsJoinedByString:@";\n"]] retain]; - if(!tableReloadAfterEdting) + if(!tableReloadAfterEditing) lastExecutedQuery = [[tempQueries lastObject] retain]; //perform empty query if no query is given @@ -534,7 +534,7 @@ //add query to history // if(!queriesSeparatedByDelimiter) { // TODO only add to history if no “delimiter” command was used - if(!tableReloadAfterEdting) { + if(!tableReloadAfterEditing) { [queryHistoryButton insertItemWithTitle:usedQuery atIndex:1]; int maxHistoryItems = [[prefs objectForKey:@"CustomQueryMaxHistoryItems"] intValue]; @@ -549,7 +549,7 @@ } // Error checking - if ( [errors length] ) { + if ( [errors length] && !queryIsTableSorter ) { // set the error text [errorText setStringValue:errors]; // select the line x of the first error if error message contains "at line x" @@ -590,6 +590,9 @@ } + } else if ( [errors length] && queryIsTableSorter ) { + [errorText setStringValue:NSLocalizedString(@"Couldn't sort column.", @"text shown if an error occured while sorting the result table")]; + NSBeep(); } else { [errorText setStringValue:NSLocalizedString(@"There were no errors.", @"text shown when query was successfull")]; } @@ -664,7 +667,7 @@ // Add columns corresponding to the query result theColumns = [theResult fetchFieldNames]; - if(!tableReloadAfterEdting) { + if(!tableReloadAfterEditing) { for ( i = 0 ; i < [theResult numOfFields] ; i++) { theCol = [[NSTableColumn alloc] initWithIdentifier:[NSArrayObjectAtIndex(cqColumnDefinition,i) objectForKey:@"datacolumnindex"]]; [theCol setResizingMask:NSTableColumnUserResizingMask]; @@ -1398,7 +1401,7 @@ } // On success reload table data by executing the last query - tableReloadAfterEdting = YES; + tableReloadAfterEditing = YES; [self performQueries:[NSArray arrayWithObject:lastExecutedQuery]]; } else { @@ -1429,7 +1432,7 @@ if (sortField) [sortField release]; sortField = [[NSNumber alloc] initWithInt:[[tableColumn identifier] intValue]]; - + // Order by the column position number to avoid ambiguous name errors NSString* newOrder = [NSString stringWithFormat:@" ORDER BY %i %@ ", [[tableColumn identifier] intValue]+1, (isDesc)?@"DESC":@"ASC"]; @@ -1441,9 +1444,13 @@ else [queryString appendFormat:@" %@", newOrder]; - tableReloadAfterEdting = YES; + tableReloadAfterEditing = YES; + queryIsTableSorter = YES; [self performQueries:[NSArray arrayWithObject:queryString]]; - + queryIsTableSorter = NO; + + if(![[mySQLConnection getLastErrorMessage] isEqualToString:@""]) return; + //sets highlight and indicatorImage [customQueryView setHighlightedTableColumn:tableColumn]; if ( isDesc ) |