06d7be056190c14b85e71bc12523f18ea6815b5e
markd
  Mon Dec 7 00:50:29 2020 -0800
BLAT mmap index support merge with master

diff --git src/hg/utils/tdbQuery/tdbQuery.c src/hg/utils/tdbQuery/tdbQuery.c
index 83c2979..3aac1ea 100644
--- src/hg/utils/tdbQuery/tdbQuery.c
+++ src/hg/utils/tdbQuery/tdbQuery.c
@@ -467,30 +467,34 @@
             char *words[5];
             int count = chopLine(field->val, words);
             if (count > 2)
                 errAbort("Too many words on include line at line %d of %s",
 		     tdbRecordLineIx(record), lf->fileName);
 
 	    char *relPath = words[0];
             char *subRelease = NULL;
             if (count == 2)
                 {
                 subRelease = cloneString(words[1]);
                 if (!trackDbCheckValidRelease(subRelease))
                     errAbort("Include with bad release tag %s at line %d of %s",
                         subRelease, tdbRecordLineIx(record), lf->fileName);
                 }
+            else if (releaseTag != NULL)
+                {
+                subRelease = releaseTag;
+                }
 
             if (subRelease && releaseTag && !sameString(subRelease, releaseTag))
                 errAbort("Include with release %s included from include with release %s at line "
                          "%d of %s", subRelease, releaseTag, tdbRecordLineIx(record),
                      lf->fileName);
 
             safef(includeName, sizeof(includeName), "%s%s", dir, relPath);
             if (hashLookup(circularHash, includeName))
                 {
 		errAbort("Including file %s in an infinite loop line %d of %s",
 			includeName, tdbRecordLineIx(record), lf->fileName);
 		}
 	    recurseThroughIncludes(includeName, lm, circularHash, pRecordList,
                 subRelease);
 	    }
@@ -876,31 +880,33 @@
 		         "Parent at line %d, child at line %d.",
 			 closestParent->key, parent->key, child->key, childFp->fileName,
 			 parentFp->startLineIx, childFp->startLineIx);
 	    }
 	}
     }
 }
 
 static boolean isComplex(char *name)
 /* Check to see if this is one of the filter variables that have arbitrary initial strings. */
 {
 if (startsWith("yAxisLabel.", name))
     return TRUE;
 if (startsWith("filter.", name))
     return TRUE;
-if (startsWith("filterValues", name))
+if (startsWith("filterValues.", name))
+    return TRUE;
+if (startsWith("filterValuesDefault.", name))
     return TRUE;
 if (startsWith("filterType.", name))
     return TRUE;
 if (startsWith("filterLimits.", name))
     return TRUE;
 if (startsWith("filterLabel.", name))
     return TRUE;
 if (startsWith("filterByRange.", name))
     return TRUE;
 if (startsWith("filterText.", name))
     return TRUE;
 if (endsWith(name, "Filter"))
     return TRUE;
 if (endsWith(name, "FilterValues"))
     return TRUE;