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;