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) <noreply@anthropic.com>

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);