c88b8a093cac2bc72ca4b4e3ff1fc2d1aea17f55
hiram
  Sat Feb 3 13:59:52 2024 -0800
the NULL specification confused autoSql for numbers that should be zero refs #23589

diff --git src/hg/lib/asmSummary.c src/hg/lib/asmSummary.c
index 01a54fd..47f0847 100644
--- src/hg/lib/asmSummary.c
+++ src/hg/lib/asmSummary.c
@@ -1,858 +1,785 @@
 /* asmSummary.c was originally generated by the autoSql program, which also 
  * generated asmSummary.h and asmSummary.sql.  This module links the database and
  * the RAM representation of objects. */
 
 #include "common.h"
 #include "linefile.h"
 #include "dystring.h"
 #include "jksql.h"
 #include "asmSummary.h"
 
 
 
 char *asmSummaryCommaSepFieldNames = "assemblyAccession,bioproject,biosample,wgsMaster,refseqCategory,taxId,speciesTaxid,organismName,infraspecificName,isolate,versionStatus,assemblyLevel,releaseType,genomeRep,seqRelDate,asmName,asmSubmitter,gbrsPairedAsm,pairedAsmComp,ftpPath,excludedFromRefseq,relationToTypeMaterial,assemblyType,phyloGroup,genomeSize,genomeSizeUngapped,gcPercent,repliconCount,scaffoldCount,contigCount,annotationProvider,annotationName,annotationDate,totalGeneCount,proteinCodingGeneCount,nonCodingGeneCount,pubmedId";
 
 void asmSummaryStaticLoadWithNull(char **row, struct asmSummary *ret)
 /* Load a row from asmSummary table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 {
 
 ret->assemblyAccession = row[0];
 ret->bioproject = row[1];
 ret->biosample = row[2];
 ret->wgsMaster = row[3];
 ret->refseqCategory = row[4];
+ret->taxId = 0;
+ret->speciesTaxid = 0;
 if (row[5] != NULL)
     {
-    ret->taxId = needMem(sizeof(*(ret->taxId)));
-    *(ret->taxId) = sqlUnsigned(row[5]);
-    }
-else
-    {
-    ret->taxId = NULL;
+    ret->taxId = sqlUnsigned(row[5]);
     }
 if (row[6] != NULL)
     {
-    ret->speciesTaxid = needMem(sizeof(*(ret->speciesTaxid)));
-    *(ret->speciesTaxid) = sqlUnsigned(row[6]);
-    }
-else
-    {
-    ret->speciesTaxid = NULL;
+    ret->speciesTaxid = sqlUnsigned(row[6]);
     }
 ret->organismName = row[7];
 ret->infraspecificName = row[8];
 ret->isolate = row[9];
 ret->versionStatus = row[10];
 ret->assemblyLevel = row[11];
 ret->releaseType = row[12];
 ret->genomeRep = row[13];
 ret->seqRelDate = row[14];
 ret->asmName = row[15];
 ret->asmSubmitter = row[16];
 ret->gbrsPairedAsm = row[17];
 ret->pairedAsmComp = row[18];
 ret->ftpPath = row[19];
 ret->excludedFromRefseq = row[20];
 ret->relationToTypeMaterial = row[21];
 ret->assemblyType = row[22];
 ret->phyloGroup = row[23];
+ret->genomeSize = 0;
+ret->genomeSizeUngapped = 0;
+ret->gcPercent = 0.0;
+ret->repliconCount = 0;
+ret->scaffoldCount = 0;
+ret->contigCount = 0;
+ret->proteinCodingGeneCount = 0;
 if (row[24] != NULL)
     {
-    ret->genomeSize = needMem(sizeof(*(ret->genomeSize)));
-    *(ret->genomeSize) = sqlLongLong(row[24]);
-    }
-else
-    {
-    ret->genomeSize = NULL;
+    ret->genomeSize = sqlLongLong(row[24]);
     }
 if (row[25] != NULL)
     {
-    ret->genomeSizeUngapped = needMem(sizeof(*(ret->genomeSizeUngapped)));
-    *(ret->genomeSizeUngapped) = sqlLongLong(row[25]);
-    }
-else
-    {
-    ret->genomeSizeUngapped = NULL;
+    ret->genomeSizeUngapped = sqlLongLong(row[25]);
     }
 if (row[26] != NULL)
     {
-    ret->gcPercent = needMem(sizeof(float));
-    *(ret->gcPercent) = sqlFloat(row[26]);
+    ret->gcPercent = sqlFloat(row[26]);
     }
 if (row[27] != NULL)
     {
-    ret->repliconCount = needMem(sizeof(*(ret->repliconCount)));
-    *(ret->repliconCount) = sqlUnsigned(row[27]);
-    }
-else
-    {
-    ret->repliconCount = NULL;
+    ret->repliconCount = sqlUnsigned(row[27]);
     }
 if (row[28] != NULL)
     {
-    ret->scaffoldCount = needMem(sizeof(*(ret->scaffoldCount)));
-    *(ret->scaffoldCount) = sqlUnsigned(row[28]);
-    }
-else
-    {
-    ret->scaffoldCount = NULL;
+    ret->scaffoldCount = sqlUnsigned(row[28]);
     }
 if (row[29] != NULL)
     {
-    ret->contigCount = needMem(sizeof(*(ret->contigCount)));
-    *(ret->contigCount) = sqlUnsigned(row[29]);
-    }
-else
-    {
-    ret->contigCount = NULL;
+    ret->contigCount = sqlUnsigned(row[29]);
     }
 ret->annotationProvider = row[30];
 ret->annotationName = row[31];
 ret->annotationDate = row[32];
 ret->totalGeneCount = row[33];
 if (row[34] != NULL)
     {
-    ret->proteinCodingGeneCount = needMem(sizeof(*(ret->proteinCodingGeneCount)));
-    *(ret->proteinCodingGeneCount) = sqlUnsigned(row[34]);
-    }
-else
-    {
-    ret->proteinCodingGeneCount = NULL;
+    ret->proteinCodingGeneCount = sqlUnsigned(row[34]);
     }
 ret->nonCodingGeneCount = row[35];
 ret->pubmedId = row[36];
 }
 
 struct asmSummary *asmSummaryLoadByQuery(struct sqlConnection *conn, char *query)
 /* Load all asmSummary from table that satisfy the query given.  
  * Where query is of the form 'select * from example where something=something'
  * or 'select example.* from example, anotherTable where example.something = 
  * anotherTable.something'.
  * Dispose of this with asmSummaryFreeList(). */
 {
 struct asmSummary *list = NULL, *el;
 struct sqlResult *sr;
 char **row;
 
 sr = sqlGetResult(conn, query);
 while ((row = sqlNextRow(sr)) != NULL)
     {
     el = asmSummaryLoadWithNull(row);
     slAddHead(&list, el);
     }
 slReverse(&list);
 sqlFreeResult(&sr);
 return list;
 }
 
 void asmSummarySaveToDb(struct sqlConnection *conn, struct asmSummary *el, char *tableName, int updateSize)
 /* Save asmSummary as a row to the table specified by tableName. 
  * As blob fields may be arbitrary size updateSize specifies the approx size
  * of a string that would contain the entire query. Arrays of native types are
  * converted to comma separated strings and loaded as such, User defined types are
  * inserted as NULL. This function automatically escapes quoted strings for mysql. */
 {
 struct dyString *update = dyStringNew(updateSize);
 sqlDyStringPrintf(update, "insert into %s values ( '%s','%s','%s','%s','%s',%u,%u,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',%lld,%lld,%g,%u,%u,%u,'%s','%s','%s','%s',%u,'%s','%s')", 
-	tableName,  el->assemblyAccession,  el->bioproject,  el->biosample,  el->wgsMaster,  el->refseqCategory,  *(el->taxId),  *(el->speciesTaxid),  el->organismName,  el->infraspecificName,  el->isolate,  el->versionStatus,  el->assemblyLevel,  el->releaseType,  el->genomeRep,  el->seqRelDate,  el->asmName,  el->asmSubmitter,  el->gbrsPairedAsm,  el->pairedAsmComp,  el->ftpPath,  el->excludedFromRefseq,  el->relationToTypeMaterial,  el->assemblyType,  el->phyloGroup,  *(el->genomeSize),  *(el->genomeSizeUngapped),  *(el->gcPercent),  *(el->repliconCount),  *(el->scaffoldCount),  *(el->contigCount),  el->annotationProvider,  el->annotationName,  el->annotationDate,  el->totalGeneCount,  *(el->proteinCodingGeneCount),  el->nonCodingGeneCount,  el->pubmedId);
+	tableName,  el->assemblyAccession,  el->bioproject,  el->biosample,  el->wgsMaster,  el->refseqCategory,  el->taxId,  el->speciesTaxid,  el->organismName,  el->infraspecificName,  el->isolate,  el->versionStatus,  el->assemblyLevel,  el->releaseType,  el->genomeRep,  el->seqRelDate,  el->asmName,  el->asmSubmitter,  el->gbrsPairedAsm,  el->pairedAsmComp,  el->ftpPath,  el->excludedFromRefseq,  el->relationToTypeMaterial,  el->assemblyType,  el->phyloGroup,  el->genomeSize,  el->genomeSizeUngapped,  el->gcPercent,  el->repliconCount,  el->scaffoldCount,  el->contigCount,  el->annotationProvider,  el->annotationName,  el->annotationDate,  el->totalGeneCount,  el->proteinCodingGeneCount,  el->nonCodingGeneCount,  el->pubmedId);
 sqlUpdate(conn, update->string);
 dyStringFree(&update);
 }
 
 struct asmSummary *asmSummaryLoadWithNull(char **row)
 /* Load a asmSummary from row fetched with select * from asmSummary
  * from database.  Dispose of this with asmSummaryFree(). */
 {
 struct asmSummary *ret;
 
 AllocVar(ret);
 ret->assemblyAccession = cloneString(row[0]);
 ret->bioproject = cloneString(row[1]);
 ret->biosample = cloneString(row[2]);
 ret->wgsMaster = cloneString(row[3]);
 ret->refseqCategory = cloneString(row[4]);
+ret->taxId = 0;
+ret->speciesTaxid = 0;
 if (row[5] != NULL)
     {
-    ret->taxId = needMem(sizeof(*(ret->taxId)));
-    *(ret->taxId) = sqlUnsigned(row[5]);
-    }
-else
-    {
-    ret->taxId = NULL;
+    ret->taxId = sqlUnsigned(row[5]);
     }
 if (row[6] != NULL)
     {
-    ret->speciesTaxid = needMem(sizeof(*(ret->speciesTaxid)));
-    *(ret->speciesTaxid) = sqlUnsigned(row[6]);
-    }
-else
-    {
-    ret->speciesTaxid = NULL;
+    ret->speciesTaxid = sqlUnsigned(row[6]);
     }
 ret->organismName = cloneString(row[7]);
 ret->infraspecificName = cloneString(row[8]);
 ret->isolate = cloneString(row[9]);
 ret->versionStatus = cloneString(row[10]);
 ret->assemblyLevel = cloneString(row[11]);
 ret->releaseType = cloneString(row[12]);
 ret->genomeRep = cloneString(row[13]);
 ret->seqRelDate = cloneString(row[14]);
 ret->asmName = cloneString(row[15]);
 ret->asmSubmitter = cloneString(row[16]);
 ret->gbrsPairedAsm = cloneString(row[17]);
 ret->pairedAsmComp = cloneString(row[18]);
 ret->ftpPath = cloneString(row[19]);
 ret->excludedFromRefseq = cloneString(row[20]);
 ret->relationToTypeMaterial = cloneString(row[21]);
 ret->assemblyType = cloneString(row[22]);
 ret->phyloGroup = cloneString(row[23]);
+ret->genomeSize = 0;
+ret->genomeSizeUngapped = 0;
+ret->gcPercent = 0.0;
+ret->repliconCount = 0;
+ret->scaffoldCount = 0;
+ret->contigCount = 0;
+ret->proteinCodingGeneCount = 0;
 if (row[24] != NULL)
     {
-    ret->genomeSize = needMem(sizeof(*(ret->genomeSize)));
-    *(ret->genomeSize) = sqlLongLong(row[24]);
-    }
-else
-    {
-    ret->genomeSize = NULL;
+    ret->genomeSize = sqlLongLong(row[24]);
     }
 if (row[25] != NULL)
     {
-    ret->genomeSizeUngapped = needMem(sizeof(*(ret->genomeSizeUngapped)));
-    *(ret->genomeSizeUngapped) = sqlLongLong(row[25]);
-    }
-else
-    {
-    ret->genomeSizeUngapped = NULL;
+    ret->genomeSizeUngapped = sqlLongLong(row[25]);
     }
 if (row[26] != NULL)
     {
-    ret->gcPercent = needMem(sizeof(float));
-    *(ret->gcPercent) = sqlFloat(row[26]);
+    ret->gcPercent = sqlFloat(row[26]);
     }
 if (row[27] != NULL)
     {
-    ret->repliconCount = needMem(sizeof(*(ret->repliconCount)));
-    *(ret->repliconCount) = sqlUnsigned(row[27]);
-    }
-else
-    {
-    ret->repliconCount = NULL;
+    ret->repliconCount = sqlUnsigned(row[27]);
     }
 if (row[28] != NULL)
     {
-    ret->scaffoldCount = needMem(sizeof(*(ret->scaffoldCount)));
-    *(ret->scaffoldCount) = sqlUnsigned(row[28]);
-    }
-else
-    {
-    ret->scaffoldCount = NULL;
+    ret->scaffoldCount = sqlUnsigned(row[28]);
     }
 if (row[29] != NULL)
     {
-    ret->contigCount = needMem(sizeof(*(ret->contigCount)));
-    *(ret->contigCount) = sqlUnsigned(row[29]);
-    }
-else
-    {
-    ret->contigCount = NULL;
+    ret->contigCount = sqlUnsigned(row[29]);
     }
 ret->annotationProvider = cloneString(row[30]);
 ret->annotationName = cloneString(row[31]);
 ret->annotationDate = cloneString(row[32]);
 ret->totalGeneCount = cloneString(row[33]);
 if (row[34] != NULL)
     {
-    ret->proteinCodingGeneCount = needMem(sizeof(*(ret->proteinCodingGeneCount)));
-    *(ret->proteinCodingGeneCount) = sqlUnsigned(row[34]);
-    }
-else
-    {
-    ret->proteinCodingGeneCount = NULL;
+    ret->proteinCodingGeneCount = sqlUnsigned(row[34]);
     }
 ret->nonCodingGeneCount = cloneString(row[35]);
 ret->pubmedId = cloneString(row[36]);
 return ret;
 }
 
 struct asmSummary *asmSummaryLoadAll(char *fileName) 
 /* Load all asmSummary from a whitespace-separated file.
  * Dispose of this with asmSummaryFreeList(). */
 {
 struct asmSummary *list = NULL, *el;
 struct lineFile *lf = lineFileOpen(fileName, TRUE);
 char *row[37];
 
 while (lineFileRow(lf, row))
     {
     el = asmSummaryLoadWithNull(row);
     slAddHead(&list, el);
     }
 lineFileClose(&lf);
 slReverse(&list);
 return list;
 }
 
 struct asmSummary *asmSummaryLoadAllByChar(char *fileName, char chopper) 
 /* Load all asmSummary from a chopper separated file.
  * Dispose of this with asmSummaryFreeList(). */
 {
 struct asmSummary *list = NULL, *el;
 struct lineFile *lf = lineFileOpen(fileName, TRUE);
 char *row[37];
 
 while (lineFileNextCharRow(lf, chopper, row, ArraySize(row)))
     {
     el = asmSummaryLoadWithNull(row);
     slAddHead(&list, el);
     }
 lineFileClose(&lf);
 slReverse(&list);
 return list;
 }
 
 struct asmSummary *asmSummaryCommaIn(char **pS, struct asmSummary *ret)
 /* Create a asmSummary out of a comma separated string. 
  * This will fill in ret if non-null, otherwise will
  * return a new asmSummary */
 {
 char *s = *pS;
 
 if (ret == NULL)
     AllocVar(ret);
 ret->assemblyAccession = sqlStringComma(&s);
 ret->bioproject = sqlStringComma(&s);
 ret->biosample = sqlStringComma(&s);
 ret->wgsMaster = sqlStringComma(&s);
 ret->refseqCategory = sqlStringComma(&s);
-ret->taxId = needMem(sizeof(unsigned));
-*(ret->taxId) = sqlUnsignedComma(&s);
-ret->speciesTaxid = needMem(sizeof(unsigned));
-*(ret->speciesTaxid) = sqlUnsignedComma(&s);
+ret->taxId = sqlUnsignedComma(&s);
+ret->speciesTaxid = sqlUnsignedComma(&s);
 ret->organismName = sqlStringComma(&s);
 ret->infraspecificName = sqlStringComma(&s);
 ret->isolate = sqlStringComma(&s);
 ret->versionStatus = sqlStringComma(&s);
 ret->assemblyLevel = sqlStringComma(&s);
 ret->releaseType = sqlStringComma(&s);
 ret->genomeRep = sqlStringComma(&s);
 ret->seqRelDate = sqlStringComma(&s);
 ret->asmName = sqlStringComma(&s);
 ret->asmSubmitter = sqlStringComma(&s);
 ret->gbrsPairedAsm = sqlStringComma(&s);
 ret->pairedAsmComp = sqlStringComma(&s);
 ret->ftpPath = sqlStringComma(&s);
 ret->excludedFromRefseq = sqlStringComma(&s);
 ret->relationToTypeMaterial = sqlStringComma(&s);
 ret->assemblyType = sqlStringComma(&s);
 ret->phyloGroup = sqlStringComma(&s);
-ret->genomeSize = needMem(sizeof(*(ret->genomeSize)));
-*(ret->genomeSize) = sqlLongLongComma(&s);
-ret->genomeSizeUngapped = needMem(sizeof(*(ret->genomeSizeUngapped)));
-*(ret->genomeSizeUngapped) = sqlLongLongComma(&s);
-ret->gcPercent = needMem(sizeof(*(ret->gcPercent)));
-*(ret->gcPercent) = sqlFloatComma(&s);
-ret->repliconCount = needMem(sizeof(unsigned));
-*(ret->repliconCount) = sqlUnsignedComma(&s);
-ret->scaffoldCount = needMem(sizeof(unsigned));
-*(ret->scaffoldCount) = sqlUnsignedComma(&s);
-ret->contigCount = needMem(sizeof(unsigned));
-*(ret->contigCount) = sqlUnsignedComma(&s);
+ret->genomeSize = sqlLongLongComma(&s);
+ret->genomeSizeUngapped = sqlLongLongComma(&s);
+ret->gcPercent = sqlFloatComma(&s);
+ret->repliconCount = sqlUnsignedComma(&s);
+ret->scaffoldCount = sqlUnsignedComma(&s);
+ret->contigCount = sqlUnsignedComma(&s);
 ret->annotationProvider = sqlStringComma(&s);
 ret->annotationName = sqlStringComma(&s);
 ret->annotationDate = sqlStringComma(&s);
 ret->totalGeneCount = sqlStringComma(&s);
-ret->proteinCodingGeneCount = needMem(sizeof(unsigned));
-*(ret->proteinCodingGeneCount) = sqlUnsignedComma(&s);
+ret->proteinCodingGeneCount = sqlUnsignedComma(&s);
 ret->nonCodingGeneCount = sqlStringComma(&s);
 ret->pubmedId = sqlStringComma(&s);
 *pS = s;
 return ret;
 }
 
 void asmSummaryFree(struct asmSummary **pEl)
 /* Free a single dynamically allocated asmSummary such as created
  * with asmSummaryLoad(). */
 {
 struct asmSummary *el;
 
 if ((el = *pEl) == NULL) return;
 freeMem(el->assemblyAccession);
 freeMem(el->bioproject);
 freeMem(el->biosample);
 freeMem(el->wgsMaster);
 freeMem(el->refseqCategory);
 freeMem(el->organismName);
 freeMem(el->infraspecificName);
 freeMem(el->isolate);
 freeMem(el->versionStatus);
 freeMem(el->assemblyLevel);
 freeMem(el->releaseType);
 freeMem(el->genomeRep);
 freeMem(el->seqRelDate);
 freeMem(el->asmName);
 freeMem(el->asmSubmitter);
 freeMem(el->gbrsPairedAsm);
 freeMem(el->pairedAsmComp);
 freeMem(el->ftpPath);
 freeMem(el->excludedFromRefseq);
 freeMem(el->relationToTypeMaterial);
 freeMem(el->assemblyType);
 freeMem(el->phyloGroup);
 freeMem(el->annotationProvider);
 freeMem(el->annotationName);
 freeMem(el->annotationDate);
 freeMem(el->totalGeneCount);
 freeMem(el->nonCodingGeneCount);
 freeMem(el->pubmedId);
 freez(pEl);
 }
 
 void asmSummaryFreeList(struct asmSummary **pList)
 /* Free a list of dynamically allocated asmSummary's */
 {
 struct asmSummary *el, *next;
 
 for (el = *pList; el != NULL; el = next)
     {
     next = el->next;
     asmSummaryFree(&el);
     }
 *pList = NULL;
 }
 
 void asmSummaryOutput(struct asmSummary *el, FILE *f, char sep, char lastSep) 
 /* Print out asmSummary.  Separate fields with sep. Follow last field with lastSep. */
 {
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->assemblyAccession);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->bioproject);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->biosample);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->wgsMaster);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->refseqCategory);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
-fprintf(f, "%u", *(el->taxId));
+fprintf(f, "%u", el->taxId);
 fputc(sep,f);
-fprintf(f, "%u", *(el->speciesTaxid));
+fprintf(f, "%u", el->speciesTaxid);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->organismName);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->infraspecificName);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->isolate);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->versionStatus);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->assemblyLevel);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->releaseType);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->genomeRep);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->seqRelDate);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->asmName);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->asmSubmitter);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->gbrsPairedAsm);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->pairedAsmComp);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->ftpPath);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->excludedFromRefseq);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->relationToTypeMaterial);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->assemblyType);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->phyloGroup);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
-fprintf(f, "%lld", *(el->genomeSize));
+fprintf(f, "%lld", el->genomeSize);
 fputc(sep,f);
-fprintf(f, "%lld", *(el->genomeSizeUngapped));
+fprintf(f, "%lld", el->genomeSizeUngapped);
 fputc(sep,f);
-fprintf(f, "%g", *(el->gcPercent));
+fprintf(f, "%g", el->gcPercent);
 fputc(sep,f);
-fprintf(f, "%u", *(el->repliconCount));
+fprintf(f, "%u", el->repliconCount);
 fputc(sep,f);
-fprintf(f, "%u", *(el->scaffoldCount));
+fprintf(f, "%u", el->scaffoldCount);
 fputc(sep,f);
-fprintf(f, "%u", *(el->contigCount));
+fprintf(f, "%u", el->contigCount);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->annotationProvider);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->annotationName);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->annotationDate);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->totalGeneCount);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
-fprintf(f, "%u", *(el->proteinCodingGeneCount));
+fprintf(f, "%u", el->proteinCodingGeneCount);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->nonCodingGeneCount);
 if (sep == ',') fputc('"',f);
 fputc(sep,f);
 if (sep == ',') fputc('"',f);
 fprintf(f, "%s", el->pubmedId);
 if (sep == ',') fputc('"',f);
 fputc(lastSep,f);
 }
 
 void asmSummaryJsonOutput(struct asmSummary *el, FILE *f) 
 /* Print out asmSummary in JSON format. */
 {
 fputc('{',f);
 fputc('"',f);
 fprintf(f,"assemblyAccession");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->assemblyAccession);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"bioproject");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->bioproject);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"biosample");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->biosample);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"wgsMaster");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->wgsMaster);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"refseqCategory");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->refseqCategory);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"taxId");
 fputc('"',f);
 fputc(':',f);
-fprintf(f, "%u", *(el->taxId));
+fprintf(f, "%u", el->taxId);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"speciesTaxid");
 fputc('"',f);
 fputc(':',f);
-fprintf(f, "%u", *(el->speciesTaxid));
+fprintf(f, "%u", el->speciesTaxid);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"organismName");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->organismName);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"infraspecificName");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->infraspecificName);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"isolate");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->isolate);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"versionStatus");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->versionStatus);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"assemblyLevel");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->assemblyLevel);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"releaseType");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->releaseType);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"genomeRep");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->genomeRep);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"seqRelDate");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->seqRelDate);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"asmName");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->asmName);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"asmSubmitter");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->asmSubmitter);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"gbrsPairedAsm");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->gbrsPairedAsm);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"pairedAsmComp");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->pairedAsmComp);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"ftpPath");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->ftpPath);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"excludedFromRefseq");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->excludedFromRefseq);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"relationToTypeMaterial");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->relationToTypeMaterial);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"assemblyType");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->assemblyType);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"phyloGroup");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->phyloGroup);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"genomeSize");
 fputc('"',f);
 fputc(':',f);
-fprintf(f, "%lld", *(el->genomeSize));
+fprintf(f, "%lld", el->genomeSize);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"genomeSizeUngapped");
 fputc('"',f);
 fputc(':',f);
-fprintf(f, "%lld", *(el->genomeSizeUngapped));
+fprintf(f, "%lld", el->genomeSizeUngapped);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"gcPercent");
 fputc('"',f);
 fputc(':',f);
-fprintf(f, "%g", *(el->gcPercent));
+fprintf(f, "%g", el->gcPercent);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"repliconCount");
 fputc('"',f);
 fputc(':',f);
-fprintf(f, "%u", *(el->repliconCount));
+fprintf(f, "%u", el->repliconCount);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"scaffoldCount");
 fputc('"',f);
 fputc(':',f);
-fprintf(f, "%u", *(el->scaffoldCount));
+fprintf(f, "%u", el->scaffoldCount);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"contigCount");
 fputc('"',f);
 fputc(':',f);
-fprintf(f, "%u", *(el->contigCount));
+fprintf(f, "%u", el->contigCount);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"annotationProvider");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->annotationProvider);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"annotationName");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->annotationName);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"annotationDate");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->annotationDate);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"totalGeneCount");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->totalGeneCount);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"proteinCodingGeneCount");
 fputc('"',f);
 fputc(':',f);
-fprintf(f, "%u", *(el->proteinCodingGeneCount));
+fprintf(f, "%u", el->proteinCodingGeneCount);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"nonCodingGeneCount");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->nonCodingGeneCount);
 fputc('"',f);
 fputc(',',f);
 fputc('"',f);
 fprintf(f,"pubmedId");
 fputc('"',f);
 fputc(':',f);
 fputc('"',f);
 fprintf(f, "%s", el->pubmedId);
 fputc('"',f);
 fputc('}',f);
 }
 
 /* -------------------------------- End autoSql Generated Code -------------------------------- */
 
 struct asmSummary *asmSummaryFullText(struct sqlConnection *conn, char *words, long long rowLimit, long long *totalMatch)
 /* perform a FULLTEXT search on the asmSummary table with the list
  *   of words string (may be only a single word)
  * return is a list of items found up to rowLimit, or NULL if none found
  *   also returning totalMatch to understand if it is more than the rowLimit
  */
 {
 char query[4096];
 sqlSafef(query, sizeof(query), "SELECT count(*) FROM asmSummary WHERE MATCH (bioproject, biosample, organismName, isolate, asmName, asmSubmitter, annotationProvider, annotationName) AGAINST (\"%s\")", words);
 *totalMatch = (long long) sqlQuickNum(conn, query);
 sqlSafef(query, sizeof(query), "SELECT * FROM asmSummary WHERE MATCH (bioproject, biosample, organismName, isolate, asmName, asmSubmitter, annotationProvider, annotationName) AGAINST (\"%s\") LIMIT %lld", words, rowLimit);
 struct asmSummary *list = asmSummaryLoadByQuery(conn, query);
 return list;
 }