3bae5ca22bf4695cff6eeb0988cc9708e1c83105 angie Mon Jul 25 12:20:15 2016 -0700 Added missing SQL 'on' keyword -- triggered by joining snp147Mult with snp147ExceptionDesc (snp147Mult is a non-huge table and exceptions is comma-separated list). diff --git src/hg/lib/annoStreamDb.c src/hg/lib/annoStreamDb.c index a550f6c..ce6b30c 100644 --- src/hg/lib/annoStreamDb.c +++ src/hg/lib/annoStreamDb.c @@ -214,31 +214,31 @@ } else { // Use both a and b of the first pair and only b of each subsequent pair appendOneTable(self, self->joinMixer->sqlRouteList->a, query); struct joinerPair *jp; for (jp = self->joinMixer->sqlRouteList; jp != NULL; jp = jp->next) { dyStringAppend(query, " left join "); appendOneTable(self, jp->b, query); char fieldA[PATH_LEN], fieldB[PATH_LEN]; joinerDtfToSqlFieldString(jp->a, self->db, fieldA, sizeof(fieldA)); joinerDtfToSqlFieldString(jp->b, self->db, fieldB, sizeof(fieldB)); struct joinerField *jfA = joinerSetFindField(jp->identifier, jp->a); if (sameOk(jfA->separator, ",")) - dyStringPrintf(query, " find_in_set(%s, %s)", fieldB, fieldA); + dyStringPrintf(query, " on find_in_set(%s, %s)", fieldB, fieldA); else dyStringPrintf(query, " on %s = %s", fieldA, fieldB); hasLeftJoin = TRUE; } } return hasLeftJoin; } // libify? static struct joinerDtf *joinerDtfCloneList(struct joinerDtf *listIn) /* Return a list with cloned items of listIn. */ { struct joinerDtf *listOut = NULL, *item; for (item = listIn; item != NULL; item = item->next) slAddHead(&listOut, joinerDtfClone(item));