5197ebd63b54192a79e5f001a5cb18d89822b542 chmalee Wed May 29 13:42:32 2024 -0700 Improve genbank search performance, mostly by optimizing mysql queries down from one query per findSpec result into a single query that checks all the findSpec results diff --git src/hg/lib/genePredReader.c src/hg/lib/genePredReader.c index a86de7e..5636011 100644 --- src/hg/lib/genePredReader.c +++ src/hg/lib/genePredReader.c @@ -139,40 +139,40 @@ } } gpr->queryCols++; iCol++; } gpr->numFields = optFieldsToNumFields(gpr->optFields); } struct genePredReader *genePredReaderQuery(struct sqlConnection* conn, char* table, char* where) /* Create a new genePredReader to read from the given table in the database. * If where is not null, it is added as a where clause. It will determine if * extended genePred columns are in the table. */ { -char query[1024]; +struct dyString *query = dyStringNew(0); struct genePredReader* gpr; AllocVar(gpr); gpr->table = cloneString(table); if (where != NULL) - sqlSafef(query, sizeof(query), "select * from %s where %-s", table, where); + sqlDyStringPrintf(query, "select * from %s where %-s", table, where); else - sqlSafef(query, sizeof(query), "select * from %s", table); -gpr->sr = sqlGetResult(conn, query); + sqlDyStringPrintf(query, "select * from %s", table); +gpr->sr = sqlGetResult(conn, dyStringCannibalize(&query)); buildResultFieldMap(gpr); return gpr; } struct genePredReader *genePredReaderRangeQuery(struct sqlConnection* conn, char* table, char* chrom, int start, int end, char* extraWhere) /* Create a new genePredReader to read a chrom range in a database table. If * extraWhere is not null, it is added as an additional where condition. It * will determine if extended genePred columns are in the table. */ { struct genePredReader* gpr; int rowOffset;