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