4df6642beeb0cde7fb2570c6900315d8fa216056 tdreszer Wed Mar 9 12:39:35 2011 -0800 Fix a couple of small bugs I just introduced to track/file searches diff --git src/hg/lib/mdb.c src/hg/lib/mdb.c index 61c1ef7..ee6b2e2 100644 --- src/hg/lib/mdb.c +++ src/hg/lib/mdb.c @@ -2877,30 +2877,32 @@ verbose(3, "rows (vars) returned: %d\n",slCount(mdb)); struct mdbObj *mdbObjs = mdbObjsLoadFromMemory(&mdb,TRUE); return mdbObjs; } struct mdbObj *mdbObjRepeatedSearch(struct sqlConnection *conn,struct slPair *varValPairs,boolean tables,boolean files) // Search the metaDb table for objs by var,val pairs. Uses mdbCvSearchMethod() if available. // This method will use mdbObjsQueryByVars() { struct slPair *onePair; struct dyString *dyTerms = dyStringNew(256); // Build list of terms as "var1=val1 var2=val2a,val2b,val2c var3=%val3%" for(onePair = varValPairs; onePair != NULL; onePair = onePair->next) { + if (isEmpty(((char *)(onePair->val)))) // NOTE: All the commas are needed to get the macro to do the right thing + continue; enum mdbCvSearchable searchBy = mdbCvSearchMethod(onePair->name); if (searchBy == cvsSearchBySingleSelect || searchBy == cvsSearchByMultiSelect) // multiSelect val will be filled with a comma delimited list dyStringPrintf(dyTerms,"%s=%s ",onePair->name,(char *)onePair->val); else if (searchBy == cvsSearchByFreeText) // If select is by free text then like dyStringPrintf(dyTerms,"%s=%%%s%% ",onePair->name,(char *)onePair->val); else if (searchBy == cvsSearchByDateRange || searchBy == cvsSearchByIntegerRange) { // TO BE IMPLEMENTED // Requires new mdbObjSearch API and more than one (char *)onePair->val warn("mdb search by date is not yet implemented."); } } // Be sure to include table or file in selections if (tables) dyStringAppend(dyTerms,"objType=table ");