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,