src/utils/raSqlQuery/rqlParse.c 1.5

1.5 2009/11/22 02:45:33 kent
Letting 'select count(*)' be a synonym for 'count'
Index: src/utils/raSqlQuery/rqlParse.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/utils/raSqlQuery/rqlParse.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -b -B -U 4 -r1.4 -r1.5
--- src/utils/raSqlQuery/rqlParse.c	22 Nov 2009 02:11:09 -0000	1.4
+++ src/utils/raSqlQuery/rqlParse.c	22 Nov 2009 02:45:33 -0000	1.5
@@ -534,8 +534,28 @@
     {
     struct dyString *buf = dyStringNew(0);
     struct slName *list = NULL;
     char *tok = rqlParseFieldSpec(tkz, buf);
+    /* Look for count(*) as special case. */
+    boolean countOnly = FALSE;
+    if (sameString(tok, "count"))
+        {
+	char *paren = tokenizerNext(tkz);
+	if (paren[0] == '(')
+	    {
+	    skipOverRequired(tkz, "*");
+	    skipOverRequired(tkz, ")");
+	    countOnly = TRUE;
+	    freez(&rql->command);
+	    rql->command = cloneString("count");
+	    }
+	else
+	    {
+	    tokenizerReuse(tkz);
+	    }
+	}
+    if (!countOnly)
+	{
     list = slNameNew(tok);
     for (;;)
 	{
 	/* Parse out comma-separated field list. */
@@ -548,8 +568,9 @@
 	slNameAddHead(&list, rqlParseFieldSpec(tkz, buf));
 	}
     slReverse(&list);
     rql->fieldList = list;
+	}
     dyStringFree(&buf);
     }
 else if (sameString(rql->command, "count"))
     {