9fa9d885584e6f007336ff740b1aad5621eb19fd
angie
  Fri Sep 11 15:56:17 2015 -0700
If the current table doesn't have hti, getIdField tries to get hti for
the current track -- except that's a problem when the track is a composite
track yet has a type for which we expect to have a bigDataFileOrUrl.
So if the current track is a composite, don't try.
Test case: Table Browser, hg19, group = Variation, track = 1000G Ph3 Accsbl;
before fix, page fails trying to query the non-existent table for composite.

diff --git src/hg/hgTables/hgTables.c src/hg/hgTables/hgTables.c
index 618d734..a4c2e6c 100644
--- src/hg/hgTables/hgTables.c
+++ src/hg/hgTables/hgTables.c
@@ -900,31 +900,31 @@
 {
 return isCustomTrack(hti->rootName) || hti->isPos;
 #ifdef OLD
     ((hti->startField[0] && hti->endField[0]) &&
 	(hti->chromField[0] || sameString(hti->rootName, "gl")));
 #endif /* OLD */
 }
 
 char *getIdField(char *db, struct trackDb *track, char *table,
 	struct hTableInfo *hti)
 /* Get ID field for table, or NULL if none.  FreeMem result when done */
 {
 char *idField = NULL;
 if (hti != NULL && hti->nameField[0] != 0)
     idField = cloneString(hti->nameField);
-else if (track != NULL)
+else if (track != NULL && !tdbIsComposite(track))
     {
     struct hTableInfo *trackHti = maybeGetHtiOnDb(db, track->table);
     if (trackHti != NULL && isCustomTrack(table))
         idField = cloneString(trackHti->nameField);
     else if (hti != NULL && trackHti != NULL && trackHti->nameField[0] != 0)
         {
         struct joinerPair *jp, *jpList;
         jpList = joinerRelate(allJoiner, db, track->table);
         for (jp = jpList; jp != NULL; jp = jp->next)
             {
             if (sameString(jp->a->field, trackHti->nameField))
                 {
                 if ( sameString(jp->b->database, db)
                 && sameString(jp->b->table, table) )
                     {