7c459941c1e589297e0014bf7957599f70836096 hiram Thu Apr 4 11:08:18 2019 -0700 moving some SQL functions to jksql.c from hgTables refs #18869 #23233 diff --git src/hg/hgTables/hgTables.c src/hg/hgTables/hgTables.c index 2cf93db..c9db65a 100644 --- src/hg/hgTables/hgTables.c +++ src/hg/hgTables/hgTables.c @@ -684,86 +684,30 @@ return startsWith("set", type); } boolean isSqlNumType(char *type) /* Return TRUE if it is a numerical SQL type. */ { return strstr(type, "int") || strstr(type, "float") || strstr(type, "double"); } boolean isSqlIntType(char *type) /* Return TRUE if it is an integer SQL type. */ { return (strstr(type, "int") != NULL); } -struct sqlFieldType *sqlFieldTypeNew(char *name, char *type) -/* Create a new sqlFieldType */ -{ -struct sqlFieldType *ft; -AllocVar(ft); -ft->name = cloneString(name); -ft->type = cloneString(type); -return ft; -} - -void sqlFieldTypeFree(struct sqlFieldType **pFt) -/* Free resources used by sqlFieldType */ -{ -struct sqlFieldType *ft = *pFt; -if (ft != NULL) - { - freeMem(ft->name); - freeMem(ft->type); - freez(pFt); - } -} - -void sqlFieldTypeFreeList(struct sqlFieldType **pList) -/* Free a list of dynamically allocated sqlFieldType's */ -{ -struct sqlFieldType *el, *next; - -for (el = *pList; el != NULL; el = next) - { - next = el->next; - sqlFieldTypeFree(&el); - } -*pList = NULL; -} - -struct sqlFieldType *sqlListFieldsAndTypes(struct sqlConnection *conn, char *table) -/* Get list of fields including their names and types. The type currently is just - * a MySQL type string. */ -{ -struct sqlFieldType *ft, *list = NULL; -char query[512]; -struct sqlResult *sr; -char **row; -sqlSafef(query, sizeof(query), "describe %s", table); -sr = sqlGetResult(conn, query); -while ((row = sqlNextRow(sr)) != NULL) - { - ft = sqlFieldTypeNew(row[0], row[1]); - slAddHead(&list, ft); - } -sqlFreeResult(&sr); -slReverse(&list); -return list; -} - - static struct trackDb *findTrackInGroup(char *name, struct trackDb *trackList, struct grp *group) /* Find named track that is in group (NULL for any group). * Return NULL if can't find it. */ { struct trackDb *track; if (group != NULL && sameString(group->name, "all")) group = NULL; for (track = trackList; track != NULL; track = track->next) { if (sameString(name, track->track) && (group == NULL || sameString(group->name, track->grp))) return track; if (track->subtracks) {