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 " "here " "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;