d9820e81306c41e9a2093bcd2166b5543bc16bd0 chmalee Thu Mar 2 17:21:23 2023 -0800 Fix broken table browser for assemblies without a valid 'tableBrowser' setting, refs #30727 diff --git src/hg/cgilib/cartTrackDb.c src/hg/cgilib/cartTrackDb.c index 5a906e7..000d877 100644 --- src/hg/cgilib/cartTrackDb.c +++ src/hg/cgilib/cartTrackDb.c @@ -458,31 +458,35 @@ hashAdd(uniqHash, trackTable, NULL); } addTablesAccordingToTrackType(db, &nameList, uniqHash, track); if (useJoiner) { if (allJoiner == NULL) allJoiner = joinerRead("all.joiner"); struct slName *joinedList = NULL, *t; for (t = nameList; t != NULL; t = t->next) { struct joinerPair *jpList, *jp; jpList = joinerRelate(allJoiner, db, t->name, db); for (jp = jpList; jp != NULL; jp = jp->next) { struct joinerDtf *dtf = jp->b; - if (cartTrackDbIsAccessDenied(dtf->database, dtf->table)) + // If we are checking a non-assembly database like hgFixed, then + // we can't have a valid tableBrowser setting to deny the table + // anyways (because we have no tracks for that database), so don't + // bother checking unless the joined tables have the same database + if (sameString(dtf->database, db) && cartTrackDbIsAccessDenied(dtf->database, dtf->table)) continue; char buf[256]; char *s; if (sameString(dtf->database, db)) s = dtf->table; else { safef(buf, sizeof(buf), "%s.%s", dtf->database, dtf->table); s = buf; } if (!hashLookup(uniqHash, s)) { hashAdd(uniqHash, s, NULL); name = slNameNew(s); slAddHead(&joinedList, name);