Index: src/hg/instinct/raToDb/raToDb.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/instinct/raToDb/raToDb.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -b -B -U 4 -r1.6 -r1.7
--- src/hg/instinct/raToDb/raToDb.c	11 Apr 2010 03:32:45 -0000	1.6
+++ src/hg/instinct/raToDb/raToDb.c	11 Apr 2010 03:46:15 -0000	1.7
@@ -325,9 +325,9 @@
 int count = sqlQuickNum(conn, query);
 
 if (count != *(ra->expCount))
     {
-    printf("  FAIL\t%s\tmaGroups count != count in data table (%d != %d)\n", 
+    printf("* FAIL\t%s\tmaGroups count != count in data table (%d != %d)\n", 
 	   ra->name, count, *(ra->expCount));
     return 0;
     }
 return 1;
@@ -336,23 +336,23 @@
 int checkClinicalData(struct raDb *ra)
 {
 if (!ra->patDb)
     {
-    printf("  FAIL\t%s\tMissing clinical db in RA file.\n", ra->name);
-    return 0;
+    printf("  WARN\t%s\tMissing clinical db in RA file.\n", ra->name);
+    return 1;
     }
 
 struct sqlConnection *conn = sqlMayConnectProfile(ra->profile, ra->patDb);
 if (!conn)
     {
-    printf("  FAIL\t%s\tClinical db '%s' doesn't exist.\n", ra->name, ra->patDb);
+    printf("* FAIL\t%s\tClinical db '%s' doesn't exist.\n", ra->name, ra->patDb);
     sqlDisconnect(&conn);
     return 0;
     }
 
 if (!sqlTableExists(conn, ra->patTable))
     {
-    printf("  FAIL\t%s\tClinical table '%s' doesn't exist.\n", ra->name, ra->patTable);
+    printf("* FAIL\t%s\tClinical table '%s' doesn't exist.\n", ra->name, ra->patTable);
     sqlDisconnect(&conn);
     return 0;
     }
 
@@ -368,23 +368,24 @@
 	sfExists = TRUE;
     }
 if (!pfExists)
     {
-    printf("  FAIL\t%s\tpatField '%s' not in table '%s'.\n", 
+    printf("* FAIL\t%s\tpatField '%s' not in table '%s'.\n", 
 	   ra->name, ra->patField, ra->patTable);
     sqlDisconnect(&conn);
     return 0;
     }
 if (!sfExists)
     {
-    printf("  FAIL\t%s\tsampleField '%s' not in table '%s'.\n", 
+    printf("* FAIL\t%s\tsampleField '%s' not in table '%s'.\n", 
 	   ra->name, ra->sampleField, ra->patTable);
     sqlDisconnect(&conn);
     return 0;
     }
 
 struct hash *raHash, *raHashList = readRaFile(ra->raFile);
 
+struct slName *missing = NULL;
 char query[512];
 for (raHash = raHashList; raHash; raHash = raHash->next)
     {
     char *name = hashMustFindVal(raHash, "name");
@@ -396,21 +397,24 @@
     char *table    = cloneString(nextWord(&queryType));
     char *keyField = cloneString(nextWord(&queryType));
     char *valField = cloneString(nextWord(&queryType));
 
+    if (slNameInList(missing, table))
+	continue;
     
     if (!sqlTableExists(conn, table))
 	{
 	printf("  WARN\t%s\tTable '%s' does not exist in clinical db '%s'.\n", 
 	       ra->name, table, ra->patDb);
+	slNameAddHead(&missing, table);
 	continue;
 	}
 
     safef(query, sizeof(query), "select %s,%s from %s limit 1", 
 	  keyField, valField, table);
     if (!sqlExists(conn, query))
 	{
-	printf("  FAIL\t%s\tvalField '%s' for feature '%s' doesn't exist.\n", 
+	printf("* FAIL\t%s\tvalField '%s' for feature '%s' doesn't exist.\n", 
 	       ra->name, valField, name);
 	sqlDisconnect(&conn);
 	return 0;
 	}
@@ -429,9 +433,9 @@
 
 struct sqlConnection *conn = hAllocConnProfile(ra->profile, genomicDb);
 if (!sqlTableExists(conn, ra->name))
     {
-    printf("  FAIL\t%s\tData table not in hg18 db (%s).\n", ra->name, ra->profile);
+    printf("* FAIL\t%s\tData table not in hg18 db (%s).\n", ra->name, ra->profile);
     hFreeConn(&conn);  // No longer need connection
     return NULL;
     }
 ra->dataType = mustGetString(raHash, "dataType");
@@ -442,9 +446,9 @@
     {
     struct microarrayGroups *maGs = maGroupingsForRa(genomicDb, ra->name);
     if (!maGs)
 	{
-	printf("  FAIL\t%s\tBad maGroups.\n", ra->name);
+	printf("* FAIL\t%s\tBad maGroups.\n", ra->name);
 	hFreeConn(&conn);  // No longer need connection
 	return NULL;
 	}
     struct maGrouping *allA = maGs->allArrays;

