src/hg/utils/tdbQuery/tdbQuery.c 1.17
1.17 2009/12/05 03:52:19 kent
When you do a -check also does check of query.
Index: src/hg/utils/tdbQuery/tdbQuery.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/utils/tdbQuery/tdbQuery.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -b -B -U 4 -r1.16 -r1.17
--- src/hg/utils/tdbQuery/tdbQuery.c 5 Dec 2009 02:45:48 -0000 1.16
+++ src/hg/utils/tdbQuery/tdbQuery.c 5 Dec 2009 03:52:19 -0000 1.17
@@ -128,15 +128,28 @@
}
return FALSE;
}
-static void doChecks(struct tdbRecord *recordList, struct lm *lm)
+static void doChecks(struct tdbRecord *recordList, struct rqlStatement *rql, struct lm *lm)
/* Do additional checks. */
{
/* Do checks that tags are all legitimate and with correct types. */
char tagTypeFile[PATH_LEN];
safef(tagTypeFile, sizeof(tagTypeFile), "%s/%s", clRoot, "tagTypes.tab");
struct hash *tagTypeHash = readTagTypeHash(tagTypeFile);
+struct slName *field;
+for (field = rql->fieldList; field != NULL; field = field->next)
+ {
+ if (!hashLookup(tagTypeHash, field->name))
+ errAbort("Field %s in query doesn't exist in %s.", field->name, tagTypeFile);
+ }
+struct slName *var;
+for (var = rql->whereVarList; var != NULL; var = var->next)
+ {
+ if (!hashLookup(tagTypeHash, var->name))
+ errAbort("Tag %s doesn't exist. Maybe you meant '%s'?\nMaybe %s is hosed?.",
+ var->name, var->name, tagTypeFile);
+ }
struct tdbRecord *record;
for (record = recordList; record != NULL; record = record->next)
{
struct tdbField *typeField = tdbRecordField(record, "type");
@@ -921,9 +934,9 @@
overridePrioritiesAndVisibilities(recordList, p, lm);
if (clCheck)
- doChecks(recordList, lm);
+ doChecks(recordList, rql, lm);
struct tdbRecord *record;
boolean doSelect = sameString(rql->command, "select");
for (record = recordList; record != NULL; record = record->next)