0b9c2a6f9930555f65104385a9edcb00147a5bc6
braney
  Mon Feb 3 09:31:56 2025 -0800
add support for quikLifting mySQL beds.

diff --git src/hg/lib/hubConnect.c src/hg/lib/hubConnect.c
index dbfe6bd813c..16ed80748ca 100644
--- src/hg/lib/hubConnect.c
+++ src/hg/lib/hubConnect.c
@@ -463,42 +463,43 @@
 return p;
 }
 
 
 void hubConnectAddDescription(char *database, struct trackDb *tdb)
 /* Fetch tdb->track's html description (or nearest ancestor's non-empty description)
  * and store in tdb->html. */
 {
 unsigned hubId = hubIdFromTrackName(tdb->track);
 struct hubConnectStatus *hub = hubFromId(hubId);
 struct trackHubGenome *hubGenome = trackHubFindGenome(hub->trackHub, database);
 trackHubPolishTrackNames(hub->trackHub, tdb);
 trackHubAddDescription(hubGenome->trackDbFile, tdb);
 }
 
-static void assignQuickLift(struct trackDb *tdbList, char *quickLiftChain)
+static void assignQuickLift(struct trackDb *tdbList, char *quickLiftChain, char *db)
 /* step through a trackDb list and assign a quickLift chain to each track */
 {
 if (tdbList == NULL)
     return;
 
 struct trackDb *tdb;
 for(tdb = tdbList; tdb; tdb = tdb->next)
     {
-    assignQuickLift(tdb->subtracks, quickLiftChain);
+    assignQuickLift(tdb->subtracks, quickLiftChain, db);
 
     hashAdd(tdb->settingsHash, "quickLiftUrl", quickLiftChain);
+    hashAdd(tdb->settingsHash, "quickLiftDb", db);
     }
 }
 
 // a string to define trackDb for quickLift chain
 static char *chainTdbString = 
     "shortLabel chain to %s\n"
     "longLabel chain to %s\n"
     "type bigChain %s\n"
     "chainType reverse\n"
     "bigDataUrl %s\n";
 
 static struct trackDb *makeQuickLiftChainTdb(struct trackHubGenome *hubGenome,  struct hubConnectStatus *hub)
 // make a trackDb entry for a quickLift chain
 {
 struct trackDb *tdb;
@@ -508,31 +509,31 @@
 char buffer[4096];
 safef(buffer, sizeof buffer, "hub_%d_quickLiftChain", hub->id);
 tdb->table = tdb->track = cloneString(buffer);
 safef(buffer, sizeof buffer, chainTdbString, hubGenome->quickLiftDb, hubGenome->quickLiftDb, hubGenome->quickLiftDb, hubGenome->quickLiftChain);
 tdb->settings = cloneString(buffer);
 tdb->settingsHash = trackDbSettingsFromString(tdb, buffer);
 trackDbFieldsFromSettings(tdb);
 tdb->visibility = tvDense;
 
 return tdb;
 }
 
 static struct trackDb *fixForQuickLift(struct trackDb *tdbList, struct trackHubGenome *hubGenome, struct hubConnectStatus *hub)
 // assign a quickLift chain to the tdbList and make a trackDb entry for the chain. 
 {
-assignQuickLift(tdbList, hubGenome->quickLiftChain);
+assignQuickLift(tdbList, hubGenome->quickLiftChain, hub->trackHub->defaultDb);
 
 struct trackDb *quickLiftTdb = makeQuickLiftChainTdb(hubGenome, hub);
 quickLiftTdb->grp = tdbList->grp;
 slAddHead(&tdbList, quickLiftTdb);
 
 return tdbList;
 }
 
 struct trackDb *hubConnectAddHubForTrackAndFindTdb( char *database, 
     char *trackName, struct trackDb **pTdbList, struct hash *trackHash)
 /* Go find hub for trackName (which will begin with hub_), and load the tracks
  * for it, appending to end of list and adding to trackHash.  Return the
  * trackDb associated with trackName. This will also fill in the html fields,
  * but just for that track and it's parents. */ 
 {