e58fa7f310af32cf0b4e3c6037be9baf268c1ef8
braney
  Fri May 8 08:47:46 2026 -0700
Avoid SQL connect to hub assembly when looking up table info in hgTables, refs #37519

diff --git src/hg/hgTables/mainPage.c src/hg/hgTables/mainPage.c
index 7901c648c7f..371bceb36e8 100644
--- src/hg/hgTables/mainPage.c
+++ src/hg/hgTables/mainPage.c
@@ -681,32 +681,38 @@
     hPrintf("<TR><TD><DIV ID=\"track-select\">");
     selGroup = showGroupField(hgtaGroup, "change", onChangeGroupOrTrack(), conn, hAllowAllTables());
     nbSpaces(3);
     curTrack = showTrackField(selGroup, hgtaTrack, "change", onChangeGroupOrTrack(), FALSE);
     nbSpaces(3);
     hPrintf("</DIV></TD></TR>\n");
     }
 
 /* Print table line. */
     {
     hPrintf("<TR><TD><DIV ID=\"table-select\">");
     curTable = showTableField(curTrack, hgtaTable, TRUE);
     // note that fullTableToTdbHash track hash is missing many tables including knownCanonical so cannot use it. 
     if (isHubTrack(curTable) || (strchr(curTable, '.') == NULL))  /* In same database */
         {
-        hti = getHti(database, curTable, conn);
+        hti = maybeGetHti(database, curTable, conn);
+        if (hti != NULL)
             isPositional = htiIsPositional(hti);
+        else if (trackHubDatabase(database))
+            /* Hub assembly: assume positional when we can't look up table info. */
+            isPositional = TRUE;
+        else
+            errAbort("Could not find table info for table %s in db %s", curTable, database);
         }
     isLongTabix = isLongTabixTable( curTable);
     isBam = isBamTable(curTable);
     isHic = isHicTable(curTable);
     isVcf = isVcfTable(curTable, NULL);
     isWig = isWiggle(database, curTable);
     if (isBigWigTable(curTable))
         {
         isPositional = TRUE;
         isWig = TRUE;
         }
     isHalSnake = isHalTable( curTable);
     isMaf = isMafTable(database, curTrack, curTable);
     isBedGr = isBedGraph(curTable);
     isArray = isMicroarray(curTrack, curTable);