94041c12e043016875ebd340568bda0ccaf122f6
lrnassar
  Wed Jul 8 13:53:22 2026 -0700
Add db= to cross-CGI hgTracks/hgTrackUi/hgc links to prevent wrong-assembly errors. refs #37840

Completes the incomplete work from #26892: links from the browser to a different
CGI omitted db=, so the target CGI fell back to the cart's db (often wrong),
producing "Can't find <track> in track database <db>" errors and broken shared
links. Adds the current-assembly db to link builders across hgTracks
(chromGraphTrack, expRatioTracks, config ruler and per-track configure links,
variation), hgVai, hgFileUi, hgGtexTrackSettings, hgBlat, hgGene, hgNear, the
barChart/GTEx faceted UI (facetedBar, barChartUi, gtexUi), and the hgTrackUi
group-configure link.

diff --git src/hg/hgTracks/chromGraphTrack.c src/hg/hgTracks/chromGraphTrack.c
index a3f694a5eff..5018c3323fb 100644
--- src/hg/hgTracks/chromGraphTrack.c
+++ src/hg/hgTracks/chromGraphTrack.c
@@ -175,32 +175,32 @@
 	if (pos >= seqEnd)
 	    break;
 	}
     sqlFreeResult(&sr);
     hFreeConn(&conn);
     }
 
 /* Do map box */
 xOff = hvGfxAdjXW(hvg, xOff, width);
 
 char *encodedTrack = cgiEncode(tg->track);
 if (theImgBox && curImgTrack)
     {
     char link[512];     // FIXME: winStart/winEnd are not right when using a portal
     // winStart/winEnd added back by Galt for multi-region
-    safef(link,sizeof(link),"%s&c=%s&l=%d&r=%d&o=%d&t=%d&g=%s", hgcNameAndSettings(),
-        chromName, winStart, winEnd, winStart, winEnd, encodedTrack);
+    safef(link,sizeof(link),"%s&db=%s&c=%s&l=%d&r=%d&o=%d&t=%d&g=%s", hgcNameAndSettings(),
+        database, chromName, winStart, winEnd, winStart, winEnd, encodedTrack);
 #ifdef IMAGEv2_SHORT_MAPITEMS
     if (xOff < insideX && xOff+width > insideX)
         warn("cgDrawEither(%s) map item spanning slices. LX:%d TY:%d RX:%d BY:%d  link:[%s]",
              encodedTrack,xOff, yOff, xOff+width, yOff+height, link);
 #endif//def IMAGEv2_SHORT_MAPITEMS
     imgTrackAddMapItem(curImgTrack,link,NULL,xOff,yOff,xOff+width,yOff+height,tg->track, NULL);
     }
 else
     {
     hPrintf("<AREA SHAPE=RECT COORDS=\"%d,%d,%d,%d\" ", xOff, yOff, xOff+width,
             yOff+height);
     hPrintf("HREF=\"%s&o=%d&t=%d&g=%s&c=%s&l=%d&r=%d&db=%s&pix=%d\">\n",
             hgcNameAndSettings(), winStart, winEnd, encodedTrack, chromName, winStart, winEnd,
             database, tl.picWidth);
     }