src/hg/lib/hdb.c 1.412

1.412 2009/08/31 20:00:36 markd
switch more sqlTableExists to hTableExists
Index: src/hg/lib/hdb.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/hdb.c,v
retrieving revision 1.411
retrieving revision 1.412
diff -b -B -U 4 -r1.411 -r1.412
--- src/hg/lib/hdb.c	31 Aug 2009 19:10:49 -0000	1.411
+++ src/hg/lib/hdb.c	31 Aug 2009 20:00:36 -0000	1.412
@@ -234,9 +234,9 @@
 struct hashEl *hel;
 
 while ((hel = hashNext(&cook)) != NULL)
     {
-    if (sqlTableExists(conn, hel->name))
+    if (hTableExists(sqlGetDatabase(conn), hel->name))
 	{
 	struct slName *name = newSlName(hel->name);
 	slAddHead(&list, name);
 	}
@@ -454,9 +454,9 @@
 hel = hashStore(hash, db);
 if (hel->val == NULL)
     {
     struct sqlConnection *conn = hAllocConn(db);
-    if (sqlTableExists(conn, "chromInfo"))
+    if (hTableExists(db, "chromInfo"))
 	hel->val = sqlQuickString(conn, "select chrom from chromInfo limit 1");
     hFreeConn(&conn);
     }
 return hel->val;
@@ -774,9 +774,22 @@
 
 boolean hTableExists(char *db, char *table)
 /* Return TRUE if a table exists in db. */
 {
+// prevent recursive calls; this way function that might be called by both this function and 
+// other places can use hTableExists.
+static boolean building = FALSE;
+if (building)
+    {
+    struct sqlConnection *conn = hAllocConn(db);    
+    boolean exists = sqlTableExists(conn, table);
+    hFreeConn(&conn);
+    return exists;
+    }
+building = TRUE;
 struct hash *hash = tableListGetDbHash(db);
+building = FALSE;
+
 struct slName *tableNames = NULL, *tbl = NULL;
 char trackName[HDB_MAX_TABLE_STRING];
 char chrom[HDB_MAX_CHROM_STRING];
 if (hashFindVal(hash, "chromInfo"))
@@ -2264,8 +2277,9 @@
 
 static boolean hGotCladeConn(struct sqlConnection *conn)
 /* Return TRUE if central db contains clade info tables. */
 {
+char *db = sqlGetDatabase(conn);
 return (sqlTableExists(conn, "clade") && sqlTableExists(conn, "genomeClade"));
 }
 
 boolean hGotClade()
@@ -3300,9 +3314,9 @@
 {
 char *tbl;
 boolean exists;
 struct sqlConnection *conn = hAllocConnProfileTbl(db, tblSpec, &tbl);
-if ((exists = sqlTableExists(conn, tbl)))
+if ((exists = hTableExists(db, tbl)))
     {
     struct trackDb *oneTable = trackDbLoadWhere(conn, tbl, where), *oneRow;
     while ((oneRow = slPopHead(&oneTable)) != NULL)
         {
@@ -3651,9 +3665,9 @@
 {
 struct slName *tdb, *tdbs = hTrackDbList();
 for (tdb = tdbs; tdb != NULL; tdb = tdb->next)
     {
-    if (sqlTableExists(conn, tdb->name))
+    if (hTableExists(sqlGetDatabase(conn), tdb->name))
         {
         slFreeList(&tdbs);
         return loadTrackDbForTrack(conn, trackName);
         }
@@ -4334,9 +4348,9 @@
 
 for (table = tables; table != NULL; table = table->next)
     {
     struct grp *oneTable = NULL;
-    if (sqlTableExists(conn, table->name))
+    if (hTableExists(sqlGetDatabase(conn), table->name))
 	{
 	safef(query, sizeof(query), "select * from %s", table->name);
 	oneTable = grpLoadByQuery(conn, query);
 	}