src/utils/raSqlQuery/raSqlQuery.c 1.25

1.25 2009/12/02 19:11:54 kent
Librarifying RQL parser and interpreter.
Index: src/utils/raSqlQuery/raSqlQuery.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/utils/raSqlQuery/raSqlQuery.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -b -B -U 4 -r1.24 -r1.25
--- src/utils/raSqlQuery/raSqlQuery.c	26 Nov 2009 00:39:06 -0000	1.24
+++ src/utils/raSqlQuery/raSqlQuery.c	2 Dec 2009 19:11:54 -0000	1.25
@@ -279,8 +279,19 @@
     return recordList;
     }
 }
 
+static char *lookupField(void *record, char *key)
+/* Lookup a field in a raRecord. */
+{
+struct raRecord *ra = record;
+struct raField *field = raRecordField(ra, key);
+if (field == NULL)
+    return NULL;
+else
+    return field->val;
+}
+
 boolean rqlStatementMatch(struct rqlStatement *rql, struct raRecord *ra)
 /* Return TRUE if where clause and tableList in statement evaluates true for ra. */
 {
 if (rql->tableList != NULL)
@@ -308,9 +319,9 @@
 if (whereClause == NULL)
     return TRUE;
 else
     {
-    struct rqlEval res = rqlEvalOnRecord(whereClause, ra);
+    struct rqlEval res = rqlEvalOnRecord(whereClause, ra, lookupField);
     res = rqlEvalCoerceToBoolean(res);
     return res.val.b;
     }
 }