aboutsummaryrefslogtreecommitdiffstats
path: root/Source/TableDump.m
diff options
context:
space:
mode:
authorrowanbeentje <rowan@beent.je>2009-03-28 02:33:59 +0000
committerrowanbeentje <rowan@beent.je>2009-03-28 02:33:59 +0000
commit7869b1fb325a9f761dc896b2be5b84be8b4d8f74 (patch)
treef51c26038641d9838abdc5c488b9b30c9c8ebe2c /Source/TableDump.m
parent808a76c28f2346befc38a7b6e744987b2bedace1 (diff)
downloadsequelpro-7869b1fb325a9f761dc896b2be5b84be8b4d8f74.tar.gz
sequelpro-7869b1fb325a9f761dc896b2be5b84be8b4d8f74.tar.bz2
sequelpro-7869b1fb325a9f761dc896b2be5b84be8b4d8f74.zip
- The status tab now no longer crashes when viewing Views. (Resolves Issue #212)
- SQL dump now correctly exports the CREATE ALGORITHM statement for views, and no longer attempts to output data for views. Databases with views can now be exported/imported without errors.
Diffstat (limited to 'Source/TableDump.m')
-rw-r--r--Source/TableDump.m47
1 files changed, 29 insertions, 18 deletions
diff --git a/Source/TableDump.m b/Source/TableDump.m
index c1532b23..d3e7ffef 100644
--- a/Source/TableDump.m
+++ b/Source/TableDump.m
@@ -753,7 +753,7 @@
*/
- (BOOL)dumpSelectedTablesAsSqlToFileHandle:(NSFileHandle *)fileHandle
{
- int i,j,t,rowCount, colCount, progressBarWidth, lastProgressValue, queryLength;
+ int i,j,t,rowCount, colCount, progressBarWidth, lastProgressValue, queryLength, tableType;
CMMCPResult *queryResult;
NSString *tableName, *tableColumnTypeGrouping;
NSArray *fieldNames;
@@ -766,7 +766,7 @@
NSDictionary *tableDetails;
NSMutableArray *tableColumnNumericStatus;
NSStringEncoding connectionEncoding = [mySQLConnection encoding];
- id createTableSyntax;
+ id createTableSyntax = nil;
// Reset the interface
[errorsView setString:@""];
@@ -823,27 +823,38 @@
[fileHandle writeData:[[NSString stringWithFormat:@"DROP TABLE IF EXISTS %@;\n\n", [tableName backtickQuotedString]]
dataUsingEncoding:connectionEncoding]];
- // Add the create syntax for the table if specified in the export dialog
- if ( [addCreateTableSwitch state] == NSOnState ) {
- queryResult = [mySQLConnection queryString:[NSString stringWithFormat:@"SHOW CREATE TABLE %@", [tableName backtickQuotedString]]];
- if ( [queryResult numOfRows] ) {
- createTableSyntax = [[queryResult fetchRowAsDictionary] objectForKey:@"Create Table"];
- if ( [createTableSyntax isKindOfClass:[NSData class]] ) {
- createTableSyntax = [[[NSString alloc] initWithData:createTableSyntax encoding:connectionEncoding] autorelease];
- }
- [fileHandle writeData:[createTableSyntax dataUsingEncoding:connectionEncoding]];
- [fileHandle writeData:[[NSString stringWithString:@";\n\n"] dataUsingEncoding:connectionEncoding]];
+
+ // Determine whether this table is a table or a view via the create table command, and keep the create table syntax
+ queryResult = [mySQLConnection queryString:[NSString stringWithFormat:@"SHOW CREATE TABLE %@", [tableName backtickQuotedString]]];
+ if ( [queryResult numOfRows] ) {
+ tableDetails = [[NSDictionary alloc] initWithDictionary:[queryResult fetchRowAsDictionary]];
+ if ([tableDetails objectForKey:@"Create View"]) {
+ createTableSyntax = [[[tableDetails objectForKey:@"Create View"] copy] autorelease];
+ tableType = SP_TABLETYPE_VIEW;
+ } else {
+ createTableSyntax = [[[tableDetails objectForKey:@"Create Table"] copy] autorelease];
+ tableType = SP_TABLETYPE_TABLE;
}
- if ( ![[mySQLConnection getLastErrorMessage] isEqualToString:@""] ) {
- [errors appendString:[NSString stringWithFormat:@"%@\n", [mySQLConnection getLastErrorMessage]]];
- if ( [addErrorsSwitch state] == NSOnState ) {
- [fileHandle writeData:[[NSString stringWithFormat:@"# Error: %@\n", [mySQLConnection getLastErrorMessage]] dataUsingEncoding:connectionEncoding]];
- }
+ [tableDetails release];
+ }
+ if ( ![[mySQLConnection getLastErrorMessage] isEqualToString:@""] ) {
+ [errors appendString:[NSString stringWithFormat:@"%@\n", [mySQLConnection getLastErrorMessage]]];
+ if ( [addErrorsSwitch state] == NSOnState ) {
+ [fileHandle writeData:[[NSString stringWithFormat:@"# Error: %@\n", [mySQLConnection getLastErrorMessage]] dataUsingEncoding:connectionEncoding]];
+ }
+ }
+
+ // Add the create syntax for the table if specified in the export dialog
+ if ( [addCreateTableSwitch state] == NSOnState && createTableSyntax) {
+ if ( [createTableSyntax isKindOfClass:[NSData class]] ) {
+ createTableSyntax = [[[NSString alloc] initWithData:createTableSyntax encoding:connectionEncoding] autorelease];
}
+ [fileHandle writeData:[createTableSyntax dataUsingEncoding:connectionEncoding]];
+ [fileHandle writeData:[[NSString stringWithString:@";\n\n"] dataUsingEncoding:connectionEncoding]];
}
// Add the table content if required
- if ( [addTableContentSwitch state] == NSOnState ) {
+ if ( [addTableContentSwitch state] == NSOnState && tableType == SP_TABLETYPE_TABLE ) {
queryResult = [mySQLConnection queryString:[NSString stringWithFormat:@"SELECT * FROM %@", [tableName backtickQuotedString]]];
fieldNames = [queryResult fetchFieldNames];
rowCount = [queryResult numOfRows];