0ede364a2dcb452681933d5a3579b4f05d90a245
markd
  Sun Jul 5 15:16:27 2020 -0700
fixed bug where totalSeqSize was not stored in index, now hgBlat works

diff --git src/hg/hgBlat/hgBlat.c src/hg/hgBlat/hgBlat.c
index 1188981..7dfcbf5 100644
--- src/hg/hgBlat/hgBlat.c
+++ src/hg/hgBlat/hgBlat.c
@@ -335,65 +335,72 @@
 
 struct serverTable *findServer(char *db, boolean isTrans)
 /* Return server for given database.  Db can either be
  * database name or description. */
 {
 if (trackHubDatabase(db))
     {
     struct serverTable *hubSt = trackHubServerTable(db, isTrans);
     if (hubSt != NULL)
 	return hubSt;
     errAbort("Cannot get blat server parameters for track hub with database %s\n", db);
     }
 
 static struct serverTable st;
 struct sqlConnection *conn = hConnectCentral();
-char query[256];
+char query[512];
 struct sqlResult *sr;
 char **row;
 char dbActualName[32];
 
 /* If necessary convert database description to name. */
 sqlSafef(query, sizeof(query), "select name from dbDb where name = '%s'", db);
 if (!sqlExists(conn, query))
     {
     sqlSafef(query, sizeof(query), "select name from dbDb where description = '%s'", db);
     if (sqlQuickQuery(conn, query, dbActualName, sizeof(dbActualName)) != NULL)
         db = dbActualName;
     }
 
-/* Do a little join to get data to fit into the serverTable and grab dbDb.nibPath too. */
-sqlSafef(query, sizeof(query), "select dbDb.name,dbDb.description,blatServers.isTrans,"
-               "blatServers.host,blatServers.port,dbDb.nibPath "
-	       "from dbDb,blatServers where blatServers.isTrans = %d and "
-	       "dbDb.name = '%s' and dbDb.name = blatServers.db", 
-	       isTrans, db);
+/* Do a little join to get data to fit into the serverTable and grab
+ * dbDb.nibPath too.  check for newer dynamic flag.  sqlSafef doesn't lets us
+ * format in comma in field spec, so need to do this in two steps. */
+char queryTmpl[512];
+boolean haveDynamic = sqlColumnExists(conn, "blatServers", "dynamic");
+safef(queryTmpl, sizeof(queryTmpl), "select dbDb.name,dbDb.description,blatServers.isTrans,"
+      "blatServers.host,blatServers.port,dbDb.nibPath %s "
+      "from dbDb,blatServers where blatServers.isTrans = %%d and "
+      "dbDb.name = '%%s' and dbDb.name = blatServers.db", 
+         (haveDynamic ? ", blatServers.dynamic" : ""));
+sqlSafef(query, sizeof(query), queryTmpl, isTrans, db);
 sr = sqlGetResult(conn, query);
 if ((row = sqlNextRow(sr)) == NULL)
     {
     errAbort("Can't find a server for %s database %s.  Click "
 	     "<A HREF=\"/cgi-bin/hgBlat?%s&command=start&db=%s\">here</A> "
 	     "to reset to default database.",
 	     (isTrans ? "translated" : "DNA"), db,
 	     cartSidUrlString(cart), hDefaultDb());
     }
 st.db = cloneString(row[0]);
 st.genome = cloneString(row[1]);
 st.isTrans = atoi(row[2]);
 st.host = cloneString(row[3]);
 st.port = cloneString(row[4]);
 st.nibDir = hReplaceGbdbSeqDir(row[5], st.db);
+if (haveDynamic && atoi(row[6]))
+    st.dynGenome = cloneString(db);
 
 sqlFreeResult(&sr);
 hDisconnectCentral(&conn);
 return &st;
 }
 
 void findClosestServer(char **pDb, char **pOrg)
 /* If db doesn't have a blat server, look for the closest db (or org) that has one,
  * as hgPcr does. */
 {
 char *db = *pDb, *org = *pOrg;
 
 if (trackHubDatabase(db) && (trackHubServerTable(db, FALSE) != NULL))
     {
     *pDb = db;