src/hg/lib/wiggleUtils.c 1.53

1.53 2009/08/24 20:34:32 braney
take out slow query to find all spans and replace with code to look for first span
Index: src/hg/lib/wiggleUtils.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/wiggleUtils.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -b -B -U 4 -r1.52 -r1.53
--- src/hg/lib/wiggleUtils.c	21 Aug 2009 21:19:36 -0000	1.52
+++ src/hg/lib/wiggleUtils.c	24 Aug 2009 20:34:32 -0000	1.53
@@ -159,11 +159,9 @@
 static struct cart *prevCart = (struct cart *) NULL;
 static struct trackDb *prevTdb = (struct trackDb *) NULL;
 static boolean prevTdbSpanList = FALSE;
 static int prevMin = -1;
-struct sqlResult *sr;
 char query[256];
-char **row;
 int minSpan = BIGNUM;
 int maxSpan = 0;
 int spanCount = 0;
 struct hash *spans = (struct hash *)NULL;  /* list of spans in this table */
@@ -231,30 +229,12 @@
     prevTdbSpanList = TRUE;
     }
 else
     {
-    /*	This is a time expensive query,
-     *	~3 to 6 seconds on large chroms full of data	*/
     safef(query, ArraySize(query),
-	"SELECT span from %s where chrom = '%s' group by span", table, chrom);
-
-    sr = sqlMustGetResult(conn,query);
-    while ((row = sqlNextRow(sr)) != NULL)
-	{   
-	char spanName[128];
-	unsigned span = sqlUnsigned(row[0]);
-
-	safef(spanName, ArraySize(spanName), "%u", span);
-	el = hashLookup(spans, spanName);
-	if ( el == NULL)
-	    {
-	    if (span > maxSpan) maxSpan = span;
-	    if (span < minSpan) minSpan = span;
-	    ++spanCount;
-	    hashAddInt(spans, spanName, span);
-	    }
-	}
-    sqlFreeResult(&sr);
+	"SELECT span from %s where chrom = '%s' limit 1", table, chrom);
+    char *tmpSpan = sqlQuickString(conn, query);
+    minSpan = sqlUnsigned(tmpSpan);
     }
 
 freeHash(&spans);
 prevMin = minSpan;