5c9ad606d5b486c3e1360250907cae2c13869d90
braney
  Sun Mar 29 12:52:58 2026 -0700
Factor out common quickLift SQL load pattern into shared functions

Add quickLiftResolveTable() and quickLiftSqlLoadBeds() to eliminate
duplicated custom-track resolution and SQL-based quickLift loading
code across bedTrack.c, simpleTracks.c, gvfTrack.c, and hgc.c.

No redmine

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index 3ca4c1464fa..4d2d8457048 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -2049,47 +2049,41 @@
 {
 char table[HDB_MAX_TABLE_STRING];
 boolean hasBin;
 struct bed *bed;
 char query[512];
 struct sqlResult *sr;
 char **row;
 boolean firstTime = TRUE;
 
 char *liftDb = cloneString(trackDbSetting(tdb, "quickLiftDb"));
 
 char *db = database;
 char *sqlTable = tdb->table;
 if (liftDb != NULL)
     {
-    if (isCustomTrack(trackHubSkipHubName(tdb->track)))
-        {
-        liftDb = CUSTOM_TRASH;
-        sqlTable = trackDbSetting(tdb, "dbTableName");
-        }
+    quickLiftResolveTable(tdb, trackHubSkipHubName(tdb->track), &sqlTable, &liftDb);
     db = liftDb;
     }
 
 if (!hFindSplitTable(db, seqName, tdb->table, table, sizeof table, &hasBin))
     errAbort("genericBedClick track %s not found", tdb->table);
 
 if (liftDb)
     {
-    struct hash *chainHash = newHash(10);
-    char *quickLiftFile = cloneString(trackDbSetting(tdb, "quickLiftUrl"));
-    bed = (struct bed *)quickLiftSql(conn, quickLiftFile, sqlTable, seqName, winStart, winEnd,  NULL, NULL, (ItemLoader2)bedLoadN, bedSize, chainHash);
-    struct bed *liftedBeds = quickLiftBeds(bed, chainHash, FALSE);
+    struct bed *liftedBeds = quickLiftSqlLoadBeds(tdb, trackHubSkipHubName(tdb->track), liftDb,
+        seqName, winStart, winEnd, NULL, (ItemLoader2)bedLoadN, bedSize, FALSE);
     bedPrintPos(liftedBeds, bedSize, tdb);
 
     //extraFieldsPrint(tdb,sr,row,sqlCountColumns(sr));
     }
 else 
     {
     if (bedSize <= 3)
         sqlSafef(query, sizeof query, "select * from %s where chrom = '%s' and chromStart = %d", table, seqName, start);
     else
         {
         struct hTableInfo *hti = hFindTableInfoWithConn(conn, seqName, tdb->table);
         if (hti && *hti->nameField && differentString("name", hti->nameField))
             sqlSafef(query, sizeof query, "select * from %s where %s = '%s' and chrom = '%s' and chromStart = %d",
                 table, hti->nameField, item, seqName, start);
         else