f219460db8db952415b5201ba01df99ce4999004 braney Thu Sep 10 13:46:42 2026 -0700 genark: pass the liftOver accession list as an slName list, refs #38328 genarkLiftOverDbs() took a pre-quoted SQL fragment that its callers assembled. It now takes a struct slName list and builds the query itself with sqlDyStringCreate, so no caller writes SQL text. Accessions that do not start with GC are skipped, since nothing else can match the table. hdb.c and hgConvert.c updated for the new signature. Co-Authored-By: Claude Opus 5 (1M context) diff --git src/hg/hgConvert/hgConvert.c src/hg/hgConvert/hgConvert.c index e4bbc50ba49..6372979b178 100644 --- src/hg/hgConvert/hgConvert.c +++ src/hg/hgConvert/hgConvert.c @@ -626,35 +626,31 @@ jsInline("ParallelSegments.drawCoordinateBasedSegments(line1Data, line2Data);\n"); jsInline("}\n"); jsInline("drawCustom();\n"); } #endif static void doConvert(char *fromPos) /* Actually do the conversion */ { struct dbDb *fromDb = hDbDb(trackHubSkipHubName(database)), *toDb = hDbDb(cartString(cart, HGLFT_TODB_VAR)); #ifdef NOTNOW boolean doSegments = TRUE; #endif if (fromDb == NULL) - { - char buffer[4096]; - safef(buffer, sizeof buffer, "'%s'", trackHubSkipHubName(database)); - fromDb = genarkLiftOverDbs(buffer); - } + fromDb = genarkLiftOverDb(trackHubSkipHubName(database)); if (toDb == NULL) toDb = genarkLiftOverDb(cartString(cart, HGLFT_TODB_VAR)); if (!fromDb || !toDb) errAbort("Early error - unable to find matching database records in dbDb - please contact support"); chromAliasSetup(database); cartWebStart(cart, database, "%s %s %s to %s %s", fromDb->organism, fromDb->description, fromPos, toDb->organism, toDb->description); char *fileName = liftOverChainFile(trackHubSkipHubName(fromDb->name), trackHubSkipHubName(toDb->name)); if (isEmpty(fileName)) errAbort("Unable to find a chain file from %s to %s - please contact support", fromDb->name, toDb->name); fileName = hReplaceGbdbMustDownload(fileName);