From: Neil T. <nt...@us...> - 2006-08-30 21:26:56
|
Update of /cvsroot/pgsqlformac/pgCocoaDB In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15828 Modified Files: ChangeLog ExplorerModel.m Schema.h Schema.m Log Message: Fix constraints, columns, triggers. Index: Schema.m =================================================================== RCS file: /cvsroot/pgsqlformac/pgCocoaDB/Schema.m,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** Schema.m 30 Aug 2006 15:48:49 -0000 1.20 --- Schema.m 30 Aug 2006 21:26:54 -0000 1.21 *************** *** 87,95 **** } ! -(RecordSet *)getConstraintNamesFromSchema:(NSString *)schemaName fromTableName:(NSString *) tableName { ! // TODO ! return nil; } --- 87,109 ---- } ! /* ! select n.nspname, c.conname, t.relname, c.contype ! from pg_constraint c, pg_namespace n, pg_class t ! where c.connamespace = n.oid ! AND t.oid = c.conrelid; ! */ -(RecordSet *)getConstraintNamesFromSchema:(NSString *)schemaName fromTableName:(NSString *) tableName { ! NSString * sql; ! ! sql = [NSString stringWithFormat:@"SELECT c.conname \ ! FROM pg_constraint c, pg_namespace n, pg_class t \ ! WHERE n.nspname = '%@' AND t.relname = '%@' AND n.oid = c.connamespace AND t.oid = c.conrelid;", schemaName, tableName ]; ! ! #if PGCOCOA_LOG_SQL ! NSLog(sql); ! #endif ! ! return [connection execQueryLogInfoLogSQL:sql];; } *************** *** 263,272 **** sqlFormat = @"SELECT format_type(a.atttypid, a.atttypmod) AS \"type\", \ CASE \ ! WHEN a.attnotnull = TRUE THEN ' NOT NULL' \ ! ELSE NULL \ END as \"notnull\", \ CASE \ ! WHEN a.atthasdef = '1' THEN ' DEFAULT ' || cast(pg_catalog.pg_get_expr(d.adbin, attrelid) AS varchar(100)) \ ! ELSE NULL \ END as \"default\" \ FROM ((pg_class c FULL OUTER JOIN pg_attribute a ON a.attrelid = c.oid) \ --- 277,286 ---- sqlFormat = @"SELECT format_type(a.atttypid, a.atttypmod) AS \"type\", \ CASE \ ! WHEN a.attnotnull = TRUE THEN ' NOT NULL ' \ ! ELSE ' ' \ END as \"notnull\", \ CASE \ ! WHEN a.atthasdef = TRUE THEN 'DEFAULT ' || cast(pg_catalog.pg_get_expr(d.adbin, attrelid) AS varchar(200)) \ ! ELSE ' ' \ END as \"default\" \ FROM ((pg_class c FULL OUTER JOIN pg_attribute a ON a.attrelid = c.oid) \ *************** *** 359,362 **** --- 373,407 ---- // generate SQL + /* + select pg_get_constraintdef(c.oid, false) + from pg_constraint c, pg_namespace n, pg_class t + where c.connamespace = n.oid + AND t.oid = c.conrelid; + */ + -(NSString *)getConstraintSQLFromSchema:(NSString *)schemaName fromTable:(NSString *)tableName fromConstraint:(NSString *)constraintName pretty:(int)pretty; + { + NSString *sql; + RecordSet * results; + + // TODO pretty print? + sql = [NSString stringWithFormat:@"SELECT pg_get_constraintdef(c.oid, false) \ + FROM pg_constraint c, pg_namespace n, pg_class t \ + WHERE n.nspname = '%@' AND t.relname = '%@' AND c.conname = '%@' AND n.oid = c.connamespace AND t.oid = c.conrelid;", schemaName, tableName, constraintName ]; + + #if PGCOCOA_LOG_SQL + NSLog(sql); + #endif + + results = [connection execQueryNoLog:sql]; + if ([results count] == 1) + { + sql = [[NSString alloc] initWithFormat:@"%@\n", [[[[results itemAtIndex: 0] fields] itemAtIndex:0] value]]; + [sql autorelease]; + return sql; + } + return nil; + } + + -(NSString *)getFunctionSQLFromSchema:(NSString *)schemaName fromFunctionName: (NSString *) functionName pretty:(int)pretty { *************** *** 390,393 **** --- 435,439 ---- FROM pg_catalog.pg_proc p, pg_catalog.pg_namespace n \ WHERE n.oid = p.pronamespace AND p.proname = '%@' AND n.nspname = '%@'", functionName, schemaName]; + #if PGCOCOA_LOG_SQL NSLog(sql); *************** *** 612,617 **** } ! -(NSString *)getTriggerSQLFromSchema:(NSString *)schemaName fromTriggerName:(NSString *)triggerName { NSString * sql; --- 658,669 ---- } + /* + select pg_get_triggerdef(tr.oid) + from pg_trigger tr, pg_namespace n, pg_class ta + where ta.relnamespace = n.oid + AND ta.oid = tr.tgrelid; + */ ! -(NSString *)getTriggerSQLFromSchema:(NSString *)schemaName fromTableName:(NSString*)tableName fromTriggerName:(NSString *)triggerName { NSString * sql; *************** *** 619,626 **** // TODO handle schema ! sql = [NSString stringWithFormat:@"%s%@%s", ! "SELECT pg_catalog.pg_get_triggerdef(t.oid) \ ! FROM pg_catalog.pg_trigger t \ ! WHERE t.tgname = ", triggerName]; #if PGCOCOA_LOG_SQL NSLog(sql); --- 671,677 ---- // TODO handle schema ! sql = [NSString stringWithFormat:@"SELECT pg_get_triggerdef(tr.oid) \ ! FROM pg_trigger tr, pg_namespace n, pg_class ta \ ! WHERE n.nspname = '%@' AND ta.relname = '%@' AND tr.tgname = '%@' AND n.oid = ta.relnamespace AND ta.oid = tr.tgrelid;", schemaName, tableName, triggerName ]; #if PGCOCOA_LOG_SQL NSLog(sql); Index: ChangeLog =================================================================== RCS file: /cvsroot/pgsqlformac/pgCocoaDB/ChangeLog,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** ChangeLog 30 Aug 2006 15:48:49 -0000 1.18 --- ChangeLog 30 Aug 2006 21:26:54 -0000 1.19 *************** *** 1,2 **** --- 1,11 ---- + 2006-08-30 10:48 ntiffin + + * ChangeLog, Connection.h, Connection.m, DataSource.h, Database.h, + Databases.h, ExplorerModel.h, ExplorerModel.m, ExplorerNode.h, + Field.h, Fields.h, PGCocoaDB.h, Record.h, RecordSet.h, Schema.h, + Schema.m, Table.h, UnitTest-Info.plist, + UnitTest/pgCocoaDBSchemaTest.h, UnitTest/pgCocoaDBSchemaTest.m: + Restructure for schema threaded processing. + 2006-08-26 07:25 ntiffin Index: ExplorerModel.m =================================================================== RCS file: /cvsroot/pgsqlformac/pgCocoaDB/ExplorerModel.m,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** ExplorerModel.m 30 Aug 2006 15:48:49 -0000 1.13 --- ExplorerModel.m 30 Aug 2006 21:26:54 -0000 1.14 *************** *** 69,73 **** ExplorerNode * newNode; NSString * columnName; - NSString * columnInfoString; int i; ExplorerNode *titleNode; --- 69,72 ---- *************** *** 96,100 **** if (columnInfoSet != nil) { ! columnInfoString = [[[[columnInfoSet itemAtIndex: 0] fields] itemAtIndex:0] value]; //NSLog(@"Processing %@ - %@ - %@ - %@", schemaName, tableName, columnName, columnInfoString); //NSLog(@"results count = %d", [results count]); --- 95,105 ---- if (columnInfoSet != nil) { ! int ii; ! NSMutableString *columnInfoString= [[NSMutableString alloc] init]; ! // interate to find NOT NULL and DEFAULT ! for (ii = 0; ii < [[[columnInfoSet itemAtIndex: 0] fields] count]; ii++) ! { ! [columnInfoString appendString:[[[[columnInfoSet itemAtIndex: 0] fields] itemAtIndex:ii] value]]; ! } //NSLog(@"Processing %@ - %@ - %@ - %@", schemaName, tableName, columnName, columnInfoString); //NSLog(@"results count = %d", [results count]); *************** *** 106,109 **** --- 111,115 ---- [newNode setBaseSchema:schemaName]; [titleNode addChild:newNode]; + [columnInfoString autorelease]; } [newNode release]; *************** *** 167,171 **** [newNode setBaseTable:tableName]; [newNode setBaseSchema:schemaName]; ! //[newNode setDisplayColumn2:[schema getTriggerSQLFromSchema:schemaName fromTriggerName:triggerName]]; [titleNode addChild:newNode]; --- 173,177 ---- [newNode setBaseTable:tableName]; [newNode setBaseSchema:schemaName]; ! [newNode setDisplayColumn2:[schema getTriggerSQLFromSchema:schemaName fromTableName:tableName fromTriggerName:triggerName]]; [titleNode addChild:newNode]; *************** *** 198,207 **** [newNode setExplorerType:@"Constraint Name"]; [newNode setParent:titleNode]; ! [newNode setDisplayColumn2:@""]; [newNode setBaseTable:tableName]; [newNode setBaseSchema:schemaName]; [titleNode addChild:newNode]; ! //TODO get constraints info ! [newNode release]; } --- 204,213 ---- [newNode setExplorerType:@"Constraint Name"]; [newNode setParent:titleNode]; ! [newNode setDisplayColumn2:[schema getConstraintSQLFromSchema:schemaName fromTable:tableName fromConstraint:constraintName pretty:0]]; [newNode setBaseTable:tableName]; [newNode setBaseSchema:schemaName]; [titleNode addChild:newNode]; ! //TODO get constraints info? ! [newNode release]; } Index: Schema.h =================================================================== RCS file: /cvsroot/pgsqlformac/pgCocoaDB/Schema.h,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** Schema.h 30 Aug 2006 15:48:49 -0000 1.12 --- Schema.h 30 Aug 2006 21:26:54 -0000 1.13 *************** *** 30,38 **** // generate SQL -(NSString *)getFunctionSQLFromSchema:(NSString *)schemaName fromFunctionName: (NSString *) functionName pretty:(int)pretty; -(NSString *)getIndexSQLFromSchema:(NSString *)schemaName fromTableName:(NSString *) tableName fromIndexName:(NSString *) indexName; -(NSString *)getRuleSQLFromSchema:(NSString *)schemaName fromRuleName:(NSString *)ruleName pretty:(int)pretty; -(NSString *)getTableSQLFromSchema:(NSString *)schemaName fromTableName:(NSString *) tableName pretty:(int)pretty; ! -(NSString *)getTriggerSQLFromSchema:(NSString *)schemaName fromTriggerName:(NSString *)triggerName; -(NSString *)getViewSQLFromSchema:(NSString *)schemaName fromView:(NSString *)viewName pretty:(int)pretty; --- 30,39 ---- // generate SQL + -(NSString *)getConstraintSQLFromSchema:(NSString *)schemaName fromTable:(NSString *)tableName fromConstraint:(NSString *)constraintName pretty:(int)pretty; -(NSString *)getFunctionSQLFromSchema:(NSString *)schemaName fromFunctionName: (NSString *) functionName pretty:(int)pretty; -(NSString *)getIndexSQLFromSchema:(NSString *)schemaName fromTableName:(NSString *) tableName fromIndexName:(NSString *) indexName; -(NSString *)getRuleSQLFromSchema:(NSString *)schemaName fromRuleName:(NSString *)ruleName pretty:(int)pretty; -(NSString *)getTableSQLFromSchema:(NSString *)schemaName fromTableName:(NSString *) tableName pretty:(int)pretty; ! -(NSString *)getTriggerSQLFromSchema:(NSString *)schemaName fromTableName:(NSString*)tableName fromTriggerName:(NSString *)triggerName; -(NSString *)getViewSQLFromSchema:(NSString *)schemaName fromView:(NSString *)viewName pretty:(int)pretty; |