3f06ffc10df40e72dfa18a150eeca23fda6b41df
angie
  Thu Feb 8 13:42:04 2018 -0800
annoStreamDbPslPlus internally used a json config to join in CDS and sequence with the underlying PSL -- so annoStreamDbPslPlusNew did not accept an incoming config, so hgVai's RefSeq Status option was ignored.  Add jsonObjectMerge so that the config from hgVai can be merged with the internal config, and make sure that the extra columns from the internal annoStreamDb are added to annoStreamDbPslPlusNew's asObj.  We can't just use the internal annoStreamDb's asObj because the field names for CDS etc. fields would differ for refSeqAli vs ncbiRefSeq and column-matching to recognize annoStreamDbPslPlus would fail.
refs #20948

diff --git src/hg/lib/hAnno.c src/hg/lib/hAnno.c
index f7ddf0f..d8db9d7 100644
--- src/hg/lib/hAnno.c
+++ src/hg/lib/hAnno.c
@@ -347,31 +347,31 @@
     }
 else
     {
     struct annoStreamer *streamer = hAnnoStreamerFromTrackDb(assembly, selTable, tdb, chrom,
                                                              maxOutRows, config);
     boolean streamerIsGenePred = asColumnNamesMatchFirstN(streamer->asObj, genePredAsObj(), 10);
     boolean streamerIsBigGenePred = asObjectsMatch(streamer->asObj, bigGenePredAsObj());
     if (primaryIsVariants && (streamerIsGenePred || streamerIsBigGenePred))
         {
         if (streamerIsGenePred &&
             (sameString("refGene", tdb->table) || startsWith("ncbiRefSeq", tdb->table)))
             {
             // We have PSL+CDS+seq for these tracks -- pass that instead of genePred
             // to annoGratorGpVar
             streamer->close(&streamer);
-            streamer = annoStreamDbPslPlusNew(assembly, tdb->table, maxOutRows);
+            streamer = annoStreamDbPslPlusNew(assembly, tdb->table, maxOutRows, config);
             }
 	grator = annoGratorGpVarNew(streamer);
         }
     else
 	grator = annoGratorNew(streamer);
     }
 grator->setOverlapRule(grator, overlapRule);
 return grator;
 }
 
 static struct asObject *getAutoSqlForType(char *db, char *chrom, struct trackDb *tdb)
 /* Return an asObject for tdb->type if recognized as a hub or custom track type. */
 {
 struct asObject * asObj = NULL;
 if (startsWith("wig", tdb->type) || startsWithWord("bigWig", tdb->type))