f59ccdee6ad81274ffd827d1fed343cb6ba871a9
braney
  Mon Aug 14 14:54:58 2023 -0700
don't open SQL connection is pcrResults unless it's using a target
database (which isn't supported on hubs)

diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index 9066ff5..857b310 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -820,37 +820,39 @@
 struct linkedFeatures *lf = item;
 return pcrResultItemAccName(lf->name, lf->extra, (struct psl *)lf->original);
 }
 
 void pcrResultLoad(struct track *tg)
 /* Load locations of primer matches into linkedFeatures items. */
 {
 char *pslFileName, *primerFileName;
 struct targetDb *target;
 if (! pcrResultParseCart(database, cart, &pslFileName, &primerFileName, &target))
     return;
 
 /* Don't free psl -- used in drawing phase by baseColor code. */
 struct psl *pslList = pslLoadAll(pslFileName), *psl;
 struct linkedFeatures *itemList = NULL;
-struct sqlConnection *conn = hAllocConn(database);
+struct sqlConnection *conn = NULL;
 struct sqlResult *sr;
 for (psl = pslList; psl != NULL; psl = psl->next)
     {
     // pcr result matches to a targetDb are of the format transcript__gene
     if (stringIn("__", psl->tName))
         {
+        if (conn == NULL)
+            conn = hAllocConn(database);
         int rowOffset = hOffsetPastBin(database, chromName, target->pslTable);
         char **row;
         char query[2048];
         char *itemAcc = pcrResultItemAccession(psl->tName);
         char *itemName = pcrResultItemName(psl->tName);
         /* Query target->pslTable to get target-to-genomic mapping: */
         sqlSafef(query, sizeof(query), "select * from %s where qName = '%s'",
               target->pslTable, itemAcc);
         sr = sqlGetResult(conn, query);
         while ((row = sqlNextRow(sr)) != NULL)
             {
             struct psl *gpsl = pslLoad(row+rowOffset);
             if (sameString(gpsl->tName, chromName) && gpsl->tStart < winEnd && gpsl->tEnd > winStart)
                 {
                 struct psl *trimmed = pslTrimToQueryRange(gpsl, psl->tStart,