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);
}