0f2b15b55316a468c710d89d7078ac6aa95a2bc8 angie Mon Jun 24 09:02:45 2013 -0700 Fixing problems with the way hgTables and hgVai handled failed position searches.fixes #10964, refs #6152 diff --git src/hg/hgTables/hgTables.c src/hg/hgTables/hgTables.c index 2623b45..a67832e 100644 --- src/hg/hgTables/hgTables.c +++ src/hg/hgTables/hgTables.c @@ -1558,31 +1558,31 @@ } hPrintf("</A><BR>\n"); ++count; } lmCleanup(&lm); } if (count == 0) hPrintf(NO_RESULTS); htmlClose(); } void doLookupPosition(struct sqlConnection *conn) /* Handle lookup button press. The work has actually * already been done, so just call main page. */ { -doMainPage(conn); +doMainPage(conn, FALSE); } /* Remove any meta data variables from the cart. (Copied from above!) */ void removeMetaData() { cartRemove(cart, "hgta_metaStatus"); cartRemove(cart, "hgta_metaVersion"); cartRemove(cart, "hgta_metaDatabases"); cartRemove(cart, "hgta_metaTables"); } void doMetaData(struct sqlConnection *conn) /* Get meta data for a database. */ { puts("Content-Type:text/plain\n"); @@ -1769,31 +1769,31 @@ if (cartVarExists(cart, hgtaDoValueHistogram)) { doValueHistogram(cartString(cart, hgtaDoValueHistogram)); } else { errAbort("Sorry, currently only the \"View Table Schema\" function of the Table Browser is available on this server."); } } } } else if (cartVarExists(cart, hgtaDoTest)) doTest(); else if (cartVarExists(cart, hgtaDoMainPage)) - doMainPage(conn); + doMainPage(conn, FALSE); else if (cartVarExists(cart, hgtaDoSchema)) doSchema(conn); else if (cartVarExists(cart, hgtaDoTopSubmit)) doTopSubmit(conn); else if (cartVarExists(cart, hgtaDoSummaryStats)) doSummaryStats(conn); else if (cartVarExists(cart, hgtaDoIntersectPage)) doIntersectPage(conn); else if (cartVarExists(cart, hgtaDoPalOut)) doGenePredPal(conn); else if (cartVarExists(cart, hgtaDoPal)) doOutPalOptions( conn); else if (cartVarExists(cart, hgtaDoClearIntersect)) doClearIntersect(conn); else if (cartVarExists(cart, hgtaDoIntersectMore)) @@ -1877,32 +1877,33 @@ else if (cartVarExists(cart, hgtaDoSubtrackMergePage)) doSubtrackMergePage(conn); else if (cartVarExists(cart, hgtaDoLookupPosition)) doLookupPosition(conn); else if (cartVarExists(cart, hgtaDoSetUserRegions)) doSetUserRegions(conn); else if (cartVarExists(cart, hgtaDoSubmitUserRegions)) doSubmitUserRegions(conn); else if (cartVarExists(cart, hgtaDoClearSetUserRegionsText)) doClearSetUserRegionsText(conn); else if (cartVarExists(cart, hgtaDoClearUserRegions)) doClearUserRegions(conn); else if (cartVarExists(cart, hgtaDoMetaData)) doMetaData(conn); else /* Default - put up initial page. */ - doMainPage(conn); + doMainPage(conn, FALSE); cartRemovePrefix(cart, hgtaDo); +hFreeConn(&conn); } char *excludeVars[] = {"Submit", "submit", NULL}; static void rAddTablesToHash(struct trackDb *tdbList, struct hash *hash) /* Add tracks in list to hash, keyed by tdb->table*/ { struct trackDb *tdb; for (tdb = tdbList; tdb != NULL; tdb = tdb->next) { hashAdd(hash, tdb->table, tdb); if (tdb->subtracks) rAddTablesToHash(tdb->subtracks, hash); } } @@ -1960,40 +1961,47 @@ * take care of headers instead of using a fixed cart*Shell(). */ cart = cartAndCookieNoContent(hUserCookie(), excludeVars, oldVars); /* Set up global variables. */ allJoiner = joinerRead("all.joiner"); getDbGenomeClade(cart, &database, &genome, &clade, oldVars); freezeName = hFreezeFromDb(database); int timeout = cartUsualInt(cart, "udcTimeout", 300); if (udcCacheTimeout() < timeout) udcSetCacheTimeout(timeout); #if ((defined USE_BAM || defined USE_TABIX) && defined KNETFILE_HOOKS) knetUdcInstall(); #endif//def (USE_BAM || USE_TABIX) && KNETFILE_HOOKS -if (lookupPosition()) - { /* Init track and group lists and figure out what page to put up. */ initGroupsTracksTables(); - +if (lookupPosition()) + { if (cartUsualBoolean(cart, hgtaDoGreatOutput, FALSE)) doGetGreatOutput(dispatch); else dispatch(); } +else + { + struct sqlConnection *conn = NULL; + if (!trackHubDatabase(database)) + conn = curTrack ? hAllocConnTrack(database, curTrack) : hAllocConn(database); + doMainPage(conn, TRUE); + hFreeConn(&conn); + } /* Save variables. */ cartCheckout(&cart); } int main(int argc, char *argv[]) /* Process command line. */ { long enteredMainTime = clock1000(); pushCarefulMemHandler(LIMIT_2or6GB); htmlPushEarlyHandlers(); /* Make errors legible during initialization. */ cgiSpoof(&argc, argv); hgTables(); textOutClose(&compressPipeline);