src/lib/rqlParse.c 1.6
1.6 2009/12/03 20:05:24 kent
Adding lm parameter to rqlEvalOnRecord since array operation uses memory.
Index: src/lib/rqlParse.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/lib/rqlParse.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -b -B -U 4 -r1.5 -r1.6
--- src/lib/rqlParse.c 3 Dec 2009 19:26:04 -0000 1.5
+++ src/lib/rqlParse.c 3 Dec 2009 20:05:24 -0000 1.6
@@ -67,10 +67,8 @@
return "rqlOpUnaryMinusDouble";
case rqlOpArrayIx:
return "rqlOpArrayIx";
- case rqlOpSubDot:
- return "rqlSubDot";
default:
return "rqlOpUnknown";
}
@@ -279,10 +277,10 @@
return cast;
}
}
-static struct rqlParse *rqlParsePartSelect(struct tokenizer *tkz)
-/* Handle the . in this.that or the [] in this[6] */
+static struct rqlParse *rqlParseIndex(struct tokenizer *tkz)
+/* Handle the [] in this[6] */
{
struct rqlParse *collection = rqlParseAtom(tkz);
struct rqlParse *p = collection;
char *tok = tokenizerNext(tkz);
@@ -299,18 +297,8 @@
p->type = rqlTypeString;
p->children = collection;
collection->next = index;
}
-else if (tok[0] == '.')
- {
- struct rqlParse *field = rqlParseExpression(tkz);
- field = rqlParseCoerce(field, rqlTypeString);
- AllocVar(p);
- p->op = rqlOpSubDot;
- p->type = rqlTypeString;
- p->children = collection;
- collection->next = field;
- }
else
tokenizerReuse(tkz);
return p;
}
@@ -321,9 +309,9 @@
{
char *tok = tokenizerMustHaveNext(tkz);
if (tok[0] == '-')
{
- struct rqlParse *c = rqlParsePartSelect(tkz);
+ struct rqlParse *c = rqlParseIndex(tkz);
struct rqlParse *p;
AllocVar(p);
if (c->type == rqlTypeInt)
{
@@ -341,9 +329,9 @@
}
else
{
tokenizerReuse(tkz);
- return rqlParsePartSelect(tkz);
+ return rqlParseIndex(tkz);
}
}
static boolean eatMatchingTok(struct tokenizer *tkz, char *s)