dd7bcd673c6cebe1517e6ab04bddc180d751cc4a angie Fri Feb 21 14:38:09 2020 -0800 cartTrackDbTablesForTrack was applying all.joiner to composite parent track (fruitless) - apply to subtrack tables. refs #25015 diff --git src/hg/lib/cartTrackDb.c src/hg/lib/cartTrackDb.c index 531fe13..a1b6e91 100644 --- src/hg/lib/cartTrackDb.c +++ src/hg/lib/cartTrackDb.c @@ -374,55 +374,60 @@ pList = slCat(pList, subList); } } freez(&trackDupe); } struct slName *cartTrackDbTablesForTrack(char *db, struct trackDb *track, boolean useJoiner) /* Return list of all tables associated with track. If useJoiner, the result can include * non-positional tables that are related to track by all.joiner. */ { static struct joiner *allJoiner = NULL; struct hash *uniqHash = newHash(8); struct slName *name, *nameList = NULL; char *trackTable = track->table; +/* suppress for parent tracks -- only the subtracks have tables */ +if (track->subtracks == NULL) + { + name = slNameNew(trackTable); + slAddHead(&nameList, name); 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, trackTable, db); + 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)) 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(&nameList, name); + slAddHead(&joinedList, name); } } - slNameSort(&nameList); } -/* suppress for parent tracks -- only the subtracks have tables */ -if (track->subtracks == NULL) - { - name = slNameNew(trackTable); - slAddHead(&nameList, name); + slNameSort(&joinedList); + nameList = slCat(nameList, joinedList); } -addTablesAccordingToTrackType(db, &nameList, uniqHash, track); hashFree(&uniqHash); return nameList; }