0daab9c07e1fb7b75223d61b0faa52e34d94302e braney Fri May 8 10:31:34 2026 -0700 Block hgTables output for QuickLift tracks and hide QuickLift groups, refs #37519 QuickLift remaps tracks from another assembly on the fly for display, but the underlying bigBed data is in the source assembly's coordinates, so output queries against the destination assembly's region return no results (or, with a whole-genome query, dump source-assembly data with source coordinates). Detect quickLiftUrl on the selected track and errAbort from doTopSubmit and doSummaryStats with a clear message. Also filter groups whose label starts with "QuickLift" out of the Group dropdown in hgTables, and clear the cart's group var if it was pointing at a QuickLift group. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> diff --git src/hg/hgTables/hgTables.h src/hg/hgTables/hgTables.h index 84414daf2ed..661de7c4b1c 100644 --- src/hg/hgTables/hgTables.h +++ src/hg/hgTables/hgTables.h @@ -141,30 +141,36 @@ char *getRegionName(); /* Get a name for selected region. Don't free this. */ boolean fullGenomeRegion(); /* Return TRUE if region is full genome. */ boolean isNoGenomeDisabled(char *db, char *table); /* Return TRUE if table (or a track with which it is associated) has 'tableBrowser noGenome' * and region is genome. */ void checkNoGenomeDisabled(char *db, char *table); /* Before producing output, make sure that the URL hasn't been hacked to make a * genome-wide query on a noGenome table. */ +void checkNoQuickLift(struct trackDb *track); +/* Before producing output, make sure the track isn't being remapped via + * QuickLift -- the underlying data is in the source assembly's coordinates, + * so output queries against the destination assembly's region won't make + * sense. */ + struct sqlResult *regionQuery(struct sqlConnection *conn, char *table, char *fields, struct region *region, boolean isPositional, char *extraWhere); /* Construct and execute query for table on region. */ void dbOverrideFromTable(char buf[256], char **pDb, char **pTable); /* If *pTable includes database, overrider *pDb with it, using * buf to hold string. */ struct grp *findSelectedGroup(struct grp *groupList, char *cgiVar); /* Find user-selected group if possible. If not then * go to various levels of defaults. */ struct trackDb *findSelectedTrack(struct trackDb *trackList, struct grp *group, char *varName);