static void deleteFromTables(char *db, struct sqlConnection *conn, struct sqlDeleter* deleter, unsigned srcDb, struct dbLoadOptions* options) /* deleted acc in a sqlDeleter from all tables. */ { /* order is important here */ gbAlignDataDeleteFromTables(db, conn, srcDb, GB_MRNA, deleter, options); gbAlignDataDeleteFromTables(db, conn, srcDb, GB_EST, deleter, options); gbMetaDataDeleteFromIdTables(conn, options, deleter); gbMetaDataDeleteFromTables(conn, options, srcDb, deleter); sqlDeleterDel(deleter, conn, "gbStatus", "acc"); }
void gbMetaDataRemove(struct sqlConnection *conn, struct dbLoadOptions* options, struct gbSelect* select, struct sqlDeleter* deleter) /* remove metaData from all entries in the select categories. * Used when reloading. */ { gOptions = options; setGeneTblFlags(conn, options); if (partitionMayHaveGeneTbls(select)) deleteFromGeneTbls(conn, select, deleter); gbMetaDataDeleteFromTables(conn, options, select->release->srcDb, deleter); }
void gbMetaDataDeleteOutdated(struct sqlConnection *conn, struct gbSelect* select, struct gbStatusTbl* statusTbl, struct dbLoadOptions* options, char *tmpDir) /* Delete outdated metadata. Also delete genePred table entries for genes * where metadata changed but sequence has not. These will have the genePred * records reloaded.*/ { setGeneTblFlags(conn, options); struct sqlDeleter* deleter = sqlDeleterNew(tmpDir, (gbVerbose >= 4)); struct sqlDeleter* geneTblDeleter = NULL; struct sqlDeleter* derivedTblDeleter = NULL; if (partitionMayHaveGeneTbls(select)) geneTblDeleter = sqlDeleterNew(tmpDir, (gbVerbose >= 4)); if (select->type == GB_MRNA) derivedTblDeleter = sqlDeleterNew(tmpDir, (gbVerbose >= 4)); struct gbStatus* status; gSrcDb = select->release->srcDb; gOptions = options; strcpy(gTmpDir, tmpDir); /* Delete any meta modified from id tables */ for (status = statusTbl->seqChgList; status != NULL; status = status->next) { if (status->stateChg & GB_META_CHG) sqlDeleterAddAcc(deleter, status->acc); } for (status = statusTbl->metaChgList; status != NULL; status = status->next) { assert(!(status->stateChg&GB_SEQ_CHG)); if (status->stateChg&GB_META_CHG) sqlDeleterAddAcc(deleter, status->acc); else if (status->stateChg&GB_REBUILD_DERIVED) sqlDeleterAddAcc(derivedTblDeleter, status->acc); if (geneTblDeleter != NULL) { // need to just try, since we can set the status->isMgcFull // flag until we are reading the ra. sqlDeleterAddAcc(geneTblDeleter, status->acc); } } for (status = statusTbl->deleteList; status != NULL; status = status->next) sqlDeleterAddAcc(deleter, status->acc); for (status = statusTbl->orphanList; status != NULL; status = status->next) sqlDeleterAddAcc(deleter, status->acc); gbMetaDataDeleteFromIdTables(conn, options, deleter); sqlDeleterFree(&deleter); /* remove deleted and orphans from metadata. */ deleter = sqlDeleterNew(tmpDir, (gbVerbose >= 4)); for (status = statusTbl->deleteList; status != NULL; status = status->next) sqlDeleterAddAcc(deleter, status->acc); for (status = statusTbl->orphanList; status != NULL; status = status->next) sqlDeleterAddAcc(deleter, status->acc); // must do gene tbls before other tables if (geneTblDeleter != NULL) deleteFromGeneTbls(conn, select, geneTblDeleter); gbMetaDataDeleteFromTables(conn, options, select->release->srcDb, deleter); sqlDeleterFree(&deleter); sqlDeleterFree(&geneTblDeleter); sqlDeleterFree(&derivedTblDeleter); /* If we are cleaning up the ext table, we need to get rid of any * refseq peptides in gbSeq that are no longer referenced. We don't * do it other times as these are not reachable directly. */ if ((select->release->srcDb == GB_REFSEQ) && (gOptions->flags & DBLOAD_EXT_FILE_UPDATE)) refSeqPepClean(conn); }