7a5ae9c2c1d5519793a4bdd99cca3a911c14b68e
angie
  Fri Nov 18 16:36:51 2016 -0800
Added support for split tables to annoStreamDb since ChrisV found it was missing which broke some hgIntegrator queries in hg18 and older dbs.
refs #18397

diff --git src/hg/lib/hAnno.c src/hg/lib/hAnno.c
index 847d03f..ca724be 100644
--- src/hg/lib/hAnno.c
+++ src/hg/lib/hAnno.c
@@ -96,38 +96,42 @@
     // hg19.wgEncodeOpenChromSynthGm12878Pk.pValue has sql type "float unsigned",
     // and I'd rather pretend it's just a float than work unsigned floats into autoSql.
     if (sameString(sqlType, "float unsigned"))
 	sqlType = "float";
     char *asType = asTypeNameFromSqlType(sqlType);
     if (asType == NULL)
 	errAbort("No asTypeInfo for sql type '%s'!", field->type);
     dyStringPrintf(dy, "    %s %s;\t\"\"\n", asType, field->field);
     }
 dyStringAppend(dy, "    )\n");
 return asParseText(dy->string);
 }
 
 struct asObject *hAnnoGetAutoSqlForDbTable(char *db, char *table, struct trackDb *tdb,
                                            boolean skipBin)
-/* Get autoSql for db.dbTable from tdb and/or db.tableDescriptions;
+/* Get autoSql for db.table from optional tdb and/or db.tableDescriptions;
  * if it doesn't match columns, make one up from db.table sql fields.
  * Some subtleties are lost in translation from .as to .sql, that's why
  * we try tdb & db.tableDescriptions first.  But ultimately we need to return
  * an asObj whose columns match all fields of the table. */
 {
 struct sqlConnection *conn = hAllocConn(db);
-struct sqlFieldInfo *fieldList = sqlFieldInfoGet(conn, table);
+char maybeSplitTable[HDB_MAX_TABLE_STRING];
+if (!hFindSplitTable(db, NULL, table, maybeSplitTable, NULL))
+    errAbort("hAnnoGetAutoSqlForDbTable: can't find table (or split table) for '%s.%s'",
+             db, table);
+struct sqlFieldInfo *fieldList = sqlFieldInfoGet(conn, maybeSplitTable);
 struct asObject *asObj = NULL;
 if (tdb != NULL)
     asObj = asForTdb(conn, tdb);
 if (asObj == NULL)
     asObj = asFromTableDescriptions(conn, table);
 hFreeConn(&conn);
 if (columnsMatch(asObj, fieldList))
     return asObj;
 else
     {
     // Special case for pgSnp, which includes its bin column in autoSql...
     struct asObject *pgSnpAsO = pgSnpAsObj();
     if (columnsMatch(pgSnpAsO, fieldList))
         return pgSnpAsO;
     return asObjectFromFields(table, fieldList, skipBin);
@@ -387,24 +391,20 @@
 {
 struct asObject *asObj = getAutoSqlForType(db, chrom, tdb);
 
 if (!asObj && !isHubTrack(tdb->track))
     {
     // If none of the above, it must be a database table; deduce autoSql from sql fields.
     char *dataDb = db, *dbTable = tdb->table;
     if (isCustomTrack(tdb->track))
         {
         dbTable = trackDbSetting(tdb, "dbTableName");
         if (dbTable)
             dataDb = CUSTOM_TRASH;
         else
             return NULL;
         }
-    char maybeSplitTable[HDB_MAX_TABLE_STRING];
-    if (!hFindSplitTable(dataDb, chrom, dbTable, maybeSplitTable, NULL))
-        errAbort("hAnnoGetAutoSqlForTdb: can't find table (or split table) for '%s.%s'",
-                 dataDb, dbTable);
-    asObj = hAnnoGetAutoSqlForDbTable(dataDb, maybeSplitTable, tdb, TRUE);
+    asObj = hAnnoGetAutoSqlForDbTable(dataDb, dbTable, tdb, TRUE);
     }
 return asObj;
 }