d983323cd2570af1cf3971763d14ef2d88c06fe4
jcasper
  Wed Feb 19 17:00:19 2025 -0800
sqlTableSize needs to support tables with more than 2B rows (rarely, but it does), refs #35262

diff --git src/hg/hgTables/rangeHistogram.c src/hg/hgTables/rangeHistogram.c
index 0e1805e6d4d..48bbeae3bed 100644
--- src/hg/hgTables/rangeHistogram.c
+++ src/hg/hgTables/rangeHistogram.c
@@ -12,30 +12,39 @@
 #include "jksql.h"
 #include "hgTables.h"
 #include "bedCart.h"
 
 
 static void printValueHistogram(char *db, char *table, char *field)
 /* Print very simple-minded text histogram. */
 {
 double maxHist = 60;
 double scale = -1.0;
 struct sqlConnection *conn = hAllocConn(db);
 struct sqlResult *sr;
 char **row;
 char query[256];
 
+#define TOO_BIG_FOR_HISTO 500000
+boolean tooBig = (sqlTableSize(conn, table) > TOO_BIG_FOR_HISTO);
+if (tooBig)
+    {
+    hPrintf("This table has too many rows for histogram view");
+    hFreeConn(&conn);
+    return;
+    }
+
 sqlSafef(query, sizeof(query),
    "select %s, count(*) as count from %s group by %s order by count desc",
    field, table, field);
 sr = sqlGetResult(conn, query);
 hTableStart();
 hPrintf("<TR>");
 hPrintf("<TH>value</TH>");
 hPrintf("<TH>count</TH>");
 hPrintf("<TH>graph</TH>");
 hPrintf("</TR>");
 while ((row = sqlNextRow(sr)) != NULL)
     {
     char *name = htmlEncode(row[0]);
     int count = atoi(row[1]);
     int starCount;