static void gbGeneTblCommit(struct gbGeneTbl *ggt, struct sqlConnection* conn) /* commit gbGeneTbl */ { if (ggt->upd != NULL) sqlUpdaterCommit(ggt->upd, conn); if (ggt->flatUpd != NULL) sqlUpdaterCommit(ggt->flatUpd, conn); }
void gbMetaDataDbLoad(struct sqlConnection *conn) /* load the metadata changes into the database */ { struct sqlUpdater *nextUpd; /* this should never have been called if these tables not set up */ assert(imageCloneTbl != NULL); assert(seqTbl != NULL); /* seq must be first */ seqTblCommit(seqTbl, conn); seqTblFree(&seqTbl); /* unique string tables next, before mrna */ gbMDParseCommit(conn); /* image ids are loaded next */ imageCloneTblCommit(imageCloneTbl, conn); /* other metadata */ while ((nextUpd = slPopHead(&allUpdaters)) != NULL) { sqlUpdaterCommit(nextUpd, conn); sqlUpdaterFree(&nextUpd); } gbCdnaInfoUpd = NULL; refSeqStatusUpd = NULL; refSeqSummaryUpd = NULL; refLinkUpd = NULL; gbMiscDiffUpd = NULL; gbWarnUpd = NULL; /* cache unique string tables in goFaster mode */ if ((gOptions->flags & DBLOAD_GO_FASTER) == 0) gbMDParseFree(); }
void loadDelayedTables() /* If we are delaying table load, now is the time */ { struct sqlConnection* conn = hAllocConn(gDatabase); if (gPendingStatusUpdates == NULL) errAbort("no data update were found to loaded with -initialLoad"); loadMetaData(conn); loadAligns(conn); while (gPendingStatusUpdates != NULL) { struct sqlUpdater* statUpd = gPendingStatusUpdates; gPendingStatusUpdates = gPendingStatusUpdates->next; sqlUpdaterCommit(statUpd, conn); sqlUpdaterFree(&statUpd); } gbLoadedTblCommit(gLoadedTbl); hFreeConn(&conn); }
static void deleteJoin(struct sqlDeleter* sd, struct sqlConnection *conn, char* table, char* column) /* delete by creating a new table with a join */ { char query[512], newTmpTable[64], oldTmpTable[64]; if (sd->accLoader != NULL) { /* build table, free to indicate it's completed */ assert(!sd->deletesDone); sqlRemakeTable(conn, GB_DELETE_TMP, createGbDeleteTmp); sqlUpdaterCommit(sd->accLoader, conn); sqlUpdaterFree(&sd->accLoader); } sd->deletesDone = TRUE; /* remove existing tmp tables */ safef(newTmpTable, sizeof(newTmpTable), "%s_new_tmp", table); safef(oldTmpTable, sizeof(oldTmpTable), "%s_old_tmp", table); sqlDropTable(conn, newTmpTable); sqlDropTable(conn, oldTmpTable); gbSqlDupTableDef(conn, table, newTmpTable); /* do join into new table of entries not in accession table */ safef(query, sizeof(query), "INSERT INTO %s SELECT %s.* FROM %s LEFT JOIN %s " "ON (%s.%s = %s.acc) WHERE %s.acc IS NULL", newTmpTable, table, table, GB_DELETE_TMP, table, column, GB_DELETE_TMP, GB_DELETE_TMP); sqlUpdate(conn, query); /* Now swap the table into place */ safef(query, sizeof(query), "RENAME TABLE %s TO %s, %s TO %s", table, oldTmpTable, newTmpTable, table); sqlUpdate(conn, query); sqlDropTable(conn, oldTmpTable); }