d6864c715f90b3ec37e81db09597adc478efd942
max
  Fri Sep 21 11:28:04 2012 -0700
changes after code review, #9122
diff --git src/hg/lib/jksql.c src/hg/lib/jksql.c
index c401f38..51e55fc 100644
--- src/hg/lib/jksql.c
+++ src/hg/lib/jksql.c
@@ -1063,30 +1063,40 @@
 }
 
 boolean sqlTableExists(struct sqlConnection *sc, char *table)
 /* Return TRUE if a table exists. */
 {
 char query[256];
 struct sqlResult *sr;
 
 safef(query, sizeof(query), "SELECT 1 FROM %s LIMIT 0", table);
 if ((sr = sqlUseOrStore(sc,query,mysql_use_result, FALSE)) == NULL)
     return FALSE;
 sqlFreeResult(&sr);
 return TRUE;
 }
 
+bool sqlColumnExists(struct sqlConnection *conn, char *tableName, char *column)
+/* return TRUE if column exists in table. tableName can contain sql wildcards  */
+{
+    char query[1024];
+    safef(query, 1024, "SHOW COLUMNS FROM `%s` LIKE '%s'", tableName, column);
+    char buf[1024];
+    char *ret = sqlQuickQuery(conn, query, buf, 1024);
+    return (ret!=NULL);
+}
+
 int sqlTableSizeIfExists(struct sqlConnection *sc, char *table)
 /* Return row count if a table exists, -1 if it doesn't. */
 {
 char query[256];
 struct sqlResult *sr;
 char **row = 0;
 int ret = 0;
 
 safef(query, sizeof(query), "select count(*) from %s", table);
 if ((sr = sqlUseOrStore(sc,query,mysql_use_result, FALSE)) == NULL)
     return -1;
 row = sqlNextRow(sr);
 if (row != NULL && row[0] != NULL)
     ret = atoi(row[0]);
 sqlFreeResult(&sr);