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;