c3dd5de7e5d48bc68be3fc18dacf99999a3891f8
tdreszer
  Wed Mar 2 13:09:32 2011 -0800
Back out change to one function which introduced a bug
diff --git src/hg/lib/mdb.c src/hg/lib/mdb.c
index ed54543..72eb732 100644
--- src/hg/lib/mdb.c
+++ src/hg/lib/mdb.c
@@ -2988,31 +2988,31 @@
     dyStringPrintf(dyQuery,"select distinct val");
 
 dyStringPrintf(dyQuery," from %s l1 where l1.var='%s' ",tableName,var);
 
 if (!tables || !files)
     dyStringPrintf(dyQuery,"and exists (select l2.obj from %s l2 where l2.obj = l1.obj and l2.var='objType' and l2.val='%s')",
                    tableName,tables?"table":"file");
 dyStringAppend(dyQuery," order by val");
 
 retVal = sqlQuickList(conn, dyStringCannibalize(&dyQuery));
 slNameSortCase(&retVal);
 return retVal;
 }
 
 // TODO: decide to make this public or hide it away inside the one function so far that uses it.
-//static struct hash *cvHash = NULL;
+static struct hash *cvHash = NULL;
 static char *cv_file()
 // return default location of cv.ra
 {
 static char filePath[PATH_LEN];
 char *root = hCgiRoot();
 if (root == NULL || *root == 0)
     root = "/usr/local/apache/cgi-bin/"; // Make this check out sandboxes?
 //    root = "/cluster/home/tdreszer/kent/src/hg/makeDb/trackDb/cv/alpha/"; // Make this check out sandboxes?
 safef(filePath, sizeof(filePath), "%s/encode/cv.ra", root);
 if(!fileExists(filePath))
     errAbort("Error: can't locate cv.ra; %s doesn't exist\n", filePath);
 return filePath;
 }
 
 struct slPair *mdbValLabelSearch(struct sqlConnection *conn, char *var, int limit, boolean tables, boolean files)
@@ -3027,53 +3027,55 @@
 
 struct dyString *dyQuery = dyStringNew(512);
 if (limit > 0)
     dyStringPrintf(dyQuery,"select distinct LEFT(val,%d)",limit);
 else
     dyStringPrintf(dyQuery,"select distinct val");
 
 dyStringPrintf(dyQuery," from %s l1 where l1.var='%s' ",tableName,var);
 
 if (!tables || !files)
     dyStringPrintf(dyQuery,"and exists (select l2.obj from %s l2 where l2.obj = l1.obj and l2.var='objType' and l2.val='%s')",
                    tableName,tables?"table":"file");
 dyStringAppend(dyQuery," order by val");
 
 // Establish cv hash
-struct hash *varHash = mdbCvTermHash(var);
+if (cvHash == NULL)
+    cvHash = raReadAll(cgiUsualString("ra", cv_file()), "term");
 
 struct slPair *pairs = NULL, *pair;
 struct sqlResult *sr = sqlGetResult(conn, dyStringContents(dyQuery));
 dyStringFree(&dyQuery);
 char **row;
+struct hash *ra = NULL;
 while ((row = sqlNextRow(sr)) != NULL)
     {
     AllocVar(pair);
     char *name = cloneString(row[0]);
     pair = slPairNew(name,name);  // defaults the label to the metaDb.val
-    struct hash *valHash = hashFindVal(varHash,name);
-    if (valHash == NULL && sameString(var,"lab"))  // FIXME: ugly special case to be removed when metaDb is cleaned up!
+    ra = hashFindVal(cvHash,name);
+    if (ra == NULL && sameString(var,"lab"))  // FIXME: ugly special case to be removed when metaDb is cleaned up!
         {
         char *val = cloneString(name);
-        valHash = hashFindVal(varHash,strUpper(val));
-        if (valHash == NULL)
-            valHash = hashFindVal(varHash,strLower(val));
+        ra = hashFindVal(cvHash,strUpper(val));
+        if (ra == NULL)
+            ra = hashFindVal(cvHash,strLower(val));
         freeMem(val);
         }
-    if (valHash != NULL)
+    if (ra != NULL)
         {
-        char *label = hashFindVal(valHash,"label");
+        char *label = hashFindVal(ra,"label");
         if (label != NULL)
             {
             freeMem(pair->name); // Allocated when pair was created
             pair->name = strSwapChar(cloneString(label),'_',' ');  // vestigial _ meaning space
             if (limit > 0 && strlen(pair->name) > limit)
                 pair->name[limit] = '\0';
             }
         }
     slAddHead(&pairs, pair);
     }
 sqlFreeResult(&sr);
 slPairSortCase(&pairs);
 return pairs;
 }