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/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c
index cb09713e6c2..07826d0470d 100644
--- src/hg/hgTracks/simpleTracks.c
+++ src/hg/hgTracks/simpleTracks.c
@@ -6296,37 +6296,31 @@
 /* Return linked features from range of a gene prediction table after
  * we have already connected to database. */
 {
 return connectedLfFromGenePredInRangeExtra(tg, conn, table, chrom,
                                                 start, end, FALSE);
 }
 
 static void maybeLiftGenePred(struct track *tg, char *table, char *chrom, int start, int end, boolean extra)
 /* Load a bunch of genePreds, perhaps quickLifting them. */
 {
 char *liftDb = cloneString(trackDbSetting(tg->tdb, "quickLiftDb"));
 
 if (liftDb != NULL)
     {
     char *table;
-    if (isCustomTrack(tg->table))
-        {
-        liftDb = CUSTOM_TRASH;
-        table = trackDbSetting(tg->tdb, "dbTableName");
-        }
-    else
-        table = tg->table;
+    quickLiftResolveTable(tg->tdb, tg->table, &table, &liftDb);
     struct hash *chainHash = newHash(8);
     struct sqlConnection *conn = hAllocConn(liftDb);
     char *quickLiftFile = cloneString(trackDbSetting(tg->tdb, "quickLiftUrl"));
 
 // using this loader on genePred tables with less than 15 fields may be a problem.
 extern struct genePred *genePredExtLoad15(char **row);
 
     struct genePred *gpList = (struct genePred *)quickLiftSql(conn, quickLiftFile, table, chromName, winStart, winEnd,  NULL, NULL, (ItemLoader2)genePredExtLoad15, 0, chainHash);
     hFreeConn(&conn);
 
     calcLiftOverGenePreds( gpList, chainHash, 0.0, 0.0, TRUE, NULL, NULL,  TRUE, FALSE);
     struct genePred *gp = gpList;
 
     struct linkedFeatures *lfList = NULL;
     for(;gp; gp = gp->next)