c98c3de9ee7469a28f93815b873a1693231791ec
jcasper
  Tue Nov 4 21:55:36 2025 -0800
Fixing dependency on named central database/server in new UI, refs #36320

diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c
index 27f0c703f39..dcba862c95d 100644
--- src/hg/hgTrackUi/hgTrackUi.c
+++ src/hg/hgTrackUi/hgTrackUi.c
@@ -2924,32 +2924,30 @@
    *
    *    bigCompositeName_dataElementName_dataTypeName_sel=1
    *
    * And only sends unique dataElement and dataTypes, which might be
    * much smaller. The bigComposite assumes that selection of
    * dataTypes applies to all dataElements, but within the cart, these
    * are separate tracks, and each must be present to be drawn. But
    * the JS doesn't need the product {dataType} x {dataElement}, just
    * the union {datType} U {dataElement}. These are put in two arrays
    * in a JSON section of the HTML.
    */
 
   const int token_size = 64;
   const int query_buff_size = 256;
 
-  const char db[] = "hgcentral";
-  const char profile[] = "central";
   // html elements for the controls page (from singleCellMerged)
   const char pageStyle[] =
     "<style>body.cgi { background: #F0F0F0; }"
     "table.hgInside { background: #FFFFFF; }</style>";
   const char placeholderDiv[] = "<div id='metadata-placeholder'></div>\n";
   const char openJSON[] = "<script id=\"app-data\" type=\"application/json\">{";
   const char closeJSON[] = "}</script>\n";
   const char openDataTypesJSON[] = "\"dataTypes\":{";
   const char closeDataTypesJSON[] = "}";  // closing a dict
   const char openDataElementsJSON[] = "\"dataElements\":[";
   const char closeDataElementsJSON[] = "]";  // closing an array
   const char metadataTableScriptElement[] =
     "<script type='text/javascript' src='/js/bigComposite.js'></script>\n";
   // const char metaDataUrlFmt[] = "\"metadata_url\": \"%s\"";
 
@@ -2974,31 +2972,31 @@
              tdb->track);
   // optional
   const char *colorSettingsUrl =
     (const char *)hashFindVal(tdb->settingsHash, "colorSettingsUrl");
   const char *maxCheckboxes =
     (const char *)hashFindVal(tdb->settingsHash, "maxCheckboxes");
   // --- done parsing values from trackDb.settings ---
 
   const char *metaDataId = tdb->track;
 
   char queryFmt[] =
     "SELECT contents FROM sessionDb WHERE id='%d' AND sessionKey='%s';";
   char query[query_buff_size];
   sqlSafef(query, query_buff_size, queryFmt, id, sessionKey);
 
-  struct sqlConnection *conn = hAllocConnProfile((char *)profile, (char *)db);
+  struct sqlConnection *conn = hConnectCentral();
   const char *contents = sqlQuickString(conn, query);
   struct cgiParsedVars *varList = cgiParsedVarsNew((char *)contents);
 
   printf(pageStyle);       // css
   printf(placeholderDiv);  // placholder
 
   /* --- START embedded JSON data --- */
   printf(openJSON);
   printf(openDataTypesJSON);
   // find selected data types
   int not_first = 0;
   int anySelDataType = -1;  // non-neg val will be used as index and flag
   for (int i = 0; i < nDataTypes; ++i) {
     char toMatch[token_size];
     snprintf(toMatch, token_size, "_%s_sel", dataTypes[i]);
@@ -3036,31 +3034,31 @@
   if (maxCheckboxes) // only if present in trackDb.settings entry
     printf(",\"maxCheckboxes\": \"%s\"", maxCheckboxes);
   if (colorSettingsUrl) // only if present in trackDb.settings entry
     printf(",\"colorSettingsUrl\": \"%s\"", colorSettingsUrl);
   printf(",\"metadataUrl\": \"%s\"", metaDataUrl);
   printf(closeJSON);
   /* --- END embedded JSON data --- */
 
   printf(metadataTableScriptElement);
 
   // cleanup
   for (int i = 0; i < nDataTypes; ++i)
     free(dataTypes[i]);
   free(dataTypes);
   cgiParsedVarsFreeList(&varList);
-  hFreeConn(&conn);
+  hDisconnectCentral(&conn);
 }
 
 void specificUi(struct trackDb *tdb, struct trackDb *tdbList, struct customTrack *ct, boolean ajax)
 /* Draw track specific parts of UI. */
 {
 char *track = tdb->track;
 char *db = database;
 char *liftDb = cloneString(trackDbSetting(tdb, "quickLiftDb"));
 if (liftDb != NULL) 
     db = liftDb;
 // Ideally check cfgTypeFromTdb()/cfgByCfgType() first, but with all these special cases already in
 //    place, lets be cautious at this time.
 // NOTE: Developer, please try to use cfgTypeFromTdb()/cfgByCfgType().
 
 boolean boxed = trackDbSettingClosestToHomeOn(tdb, "boxedCfg");