void gbMetaDataDeleteFromIdTables(struct sqlConnection *conn, struct dbLoadOptions* options, struct sqlDeleter* deleter) /* delete sequence from metadata tables with ids. These are always * deleted and rebuilt even for modification */ { gOptions = options; setGeneTblFlags(conn, options); sqlDeleterDel(deleter, conn, IMAGE_CLONE_TBL, "acc"); sqlDeleterDel(deleter, conn, "gbMiscDiff", "acc"); sqlDeleterDel(deleter, conn, "gbWarn", "acc"); }
static void deleteFromGeneTbls(struct sqlConnection *conn, struct gbSelect* select, struct sqlDeleter* deleter) /* delete accession from gene tables. Used when metaData has changed, but * sequence has not changed. */ { if (select->release->srcDb == GB_REFSEQ) { if (select->orgCats & GB_NATIVE) { sqlDeleterDel(deleter, conn, REF_GENE_TBL, "name"); sqlDeleterDel(deleter, conn, REF_FLAT_TBL, "name"); } if (select->orgCats & GB_XENO) { sqlDeleterDel(deleter, conn, XENO_REF_GENE_TBL, "name"); sqlDeleterDel(deleter, conn, XENO_REF_FLAT_TBL, "name"); } } else { if (haveMgc) { sqlDeleterDel(deleter, conn, MGC_GENES_TBL, "name"); sqlDeleterDel(deleter, conn, MGC_FULL_MRNA_TBL, "qName"); } if (haveOrfeome) { sqlDeleterDel(deleter, conn, ORFEOME_GENES_TBL, "name"); sqlDeleterDel(deleter, conn, ORFEOME_MRNA_TBL, "qName"); } } }
static void removeGenBankMrna(char *db, struct sqlConnection *conn, struct gbSelect* select, struct sqlDeleter* deleter) /* delete all genbank mRNA alignments */ { if (select->orgCats & GB_NATIVE) { struct slName* chrom; char table[64]; sqlDropTable(conn, ALL_MRNA_TBL); sqlDeleterDel(deleter, conn, MRNA_ORIENTINFO_TBL, "name"); for (chrom = getChromNames(db); chrom != NULL; chrom = chrom->next) { safef(table, sizeof(table), "%s_mrna", chrom->name); sqlDropTable(conn, table); } if (haveMgc) sqlDropTable(conn, MGC_FULL_MRNA_TBL); if (haveOrfeome) sqlDropTable(conn, ORFEOME_MRNA_TBL); } if (select->orgCats & GB_XENO) { sqlDropTable(conn, XENO_MRNA_TBL); } }
static void refSeqPepClean(struct sqlConnection *conn) /* Delete all refseq peptides that are in gbSeq but no longer * referenced by refLink. */ { char query[1024]; struct sqlResult* sr; char **row; struct sqlDeleter* deleter; /* don't do anything if we don't have the refLink table. This can * happen if refSeq was enabled after the initial load */ if (!sqlTableExists(conn, "refLink")) return; deleter = sqlDeleterNew(gTmpDir, (gbVerbose >= 4)); /* Use a join to get list of acc, which proved reasonable fastly because * the the list is small */ sqlSafef(query, sizeof(query), "SELECT acc FROM gbSeq LEFT JOIN refLink ON (refLink.protAcc = gbSeq.acc) " "WHERE (acc LIKE 'NP_%%') AND (refLink.protAcc IS NULL)"); sr = sqlGetResult(conn, query); while ((row = sqlNextRow(sr)) != NULL) sqlDeleterAddAcc(deleter, row[0]); sqlFreeResult(&sr); sqlDeleterDel(deleter, conn, SEQ_TBL, "acc"); sqlDeleterFree(&deleter); }
static void deleteGenBankChromAligns(char *db, struct sqlConnection *conn, struct sqlDeleter* deleter, unsigned type, char *typeStr) /* delete outdated genbank alignments from per-chrom tables. */ { struct slName* chrom; char table[64]; for (chrom = getChromNames(db); chrom != NULL; chrom = chrom->next) { safef(table, sizeof(table), "%s_%s", chrom->name, typeStr); sqlDeleterDel(deleter, conn, table, "qName"); if (type == GB_EST) { safef(table, sizeof(table), "%s_intronEst", chrom->name); sqlDeleterDel(deleter, conn, table, "qName"); } } }
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"); }
static void deleteRefSeqAligns(struct sqlConnection *conn, struct sqlDeleter* deleter) /* delete outdated refseq alignments from the database. */ { sqlDeleterDel(deleter, conn, REFSEQ_ALI_TBL, "qName"); sqlDeleterDel(deleter, conn, REF_GENE_TBL, "name"); sqlDeleterDel(deleter, conn, REF_FLAT_TBL, "name"); sqlDeleterDel(deleter, conn, XENO_REFSEQ_ALI_TBL, "qName"); sqlDeleterDel(deleter, conn, XENO_REF_GENE_TBL, "name"); sqlDeleterDel(deleter, conn, XENO_REF_FLAT_TBL, "name"); sqlDeleterDel(deleter, conn, "mrnaOrientInfo", "name"); }
static void removeRefSeq(struct sqlConnection *conn, struct gbSelect* select, struct sqlDeleter* deleter) /* delete all refseq alignments */ { if (select->orgCats & GB_NATIVE) { sqlDropTable(conn, REFSEQ_ALI_TBL); sqlDeleterDel(deleter, conn, MRNA_ORIENTINFO_TBL, "name"); } if (select->orgCats & GB_XENO) { sqlDropTable(conn, XENO_REFSEQ_ALI_TBL); } }
void gbMetaDataDeleteFromTables(struct sqlConnection *conn, struct dbLoadOptions* options, unsigned srcDb, struct sqlDeleter* deleter) /* delete sequence from metadata tables */ { gOptions = options; setGeneTblFlags(conn, options); if (srcDb == GB_REFSEQ) { sqlDeleterDel(deleter, conn, "refSeqStatus", "mrnaAcc"); sqlDeleterDel(deleter, conn, "refSeqSummary", "mrnaAcc"); sqlDeleterDel(deleter, conn, "refLink", "mrnaAcc"); } sqlDeleterDel(deleter, conn, "gbMiscDiff", "acc"); sqlDeleterDel(deleter, conn, "gbWarn", "acc"); sqlDeleterDel(deleter, conn, IMAGE_CLONE_TBL, "acc"); sqlDeleterDel(deleter, conn, "gbCdnaInfo", "acc"); sqlDeleterDel(deleter, conn, "gbSeq", "acc"); /* seq must be last */ sqlDeleterDel(deleter, conn, SEQ_TBL, "acc"); }
static void makeRepairs(struct brokenRefPepTbl *brpTbl, struct sqlConnection *conn, struct extFileTbl* extFileTbl, boolean dryRun) /* make repairs once data is collected */ { static char *tmpDir = "/var/tmp"; struct hashCookie cookie; struct hashEl *hel; int repairCnt = 0; int dropCnt = 0; struct seqTbl* seqTbl = seqTblNew(conn, tmpDir, (gbVerbose > 3)); struct sqlDeleter* seqTblDeleter = sqlDeleterNew(tmpDir, (gbVerbose > 3)); cookie = hashFirst(brpTbl->protAccHash); while ((hel = hashNext(&cookie)) != NULL) { struct brokenRefPep *brp = hel->val; if ((brp->mrnaAcc != NULL) && (brp->newFaOff >= 0)) { refPepRepairOne(conn, brp, seqTbl, extFileTbl, dryRun); repairCnt++; } else { refPepDropOne(conn, brp, seqTblDeleter, dryRun); dropCnt++; } } if (dryRun) { gbVerbMsg(1, "%s: would have repaired %d refseq protein gbExtFile entries", sqlGetDatabase(conn), repairCnt); gbVerbMsg(1, "%s: would have dropped %d refseq protein gbExtFile entries", sqlGetDatabase(conn), dropCnt); } else { seqTblCommit(seqTbl, conn); gbVerbMsg(1, "%s: repaired %d refseq protein gbExtFile entries", sqlGetDatabase(conn), repairCnt); sqlDeleterDel(seqTblDeleter, conn, SEQ_TBL, "acc"); gbVerbMsg(1, "%s: dropped %d refseq protein gbExtFile entries", sqlGetDatabase(conn), dropCnt); } }
void removeForReload(struct gbSelect* select, struct sqlConnection* conn, char* tmpDir) /* delete all in selected categories. This is faster than deleting * individually */ { struct sqlDeleter * deleter; if (select->type & GB_EST) errAbort("-reload doesn't handle ESTs (it would be very, very slow)," " use -drop instead"); deleter = gbBuildStateReloadDeleter(conn, select, tmpDir); if (deleter != NULL) { gbAlignRemove(gDatabase, conn, &gOptions, select, deleter); gbMetaDataRemove(conn, &gOptions, select, deleter); sqlDeleterDel(deleter, conn, "gbStatus", "acc"); } sqlDeleterFree(&deleter); }
static void deleteGenBankAligns(char *db, struct sqlConnection *conn, struct sqlDeleter* deleter, unsigned type, struct dbLoadOptions* options) /* delete outdated genbank alignments from the database. */ { char table[64]; char* typeStr = ((type == GB_MRNA) ? "mrna" : "est"); char *xenoTable = ((type == GB_MRNA) ? XENO_MRNA_TBL : XENO_EST_TBL); safef(table, sizeof(table), "all_%s", typeStr); sqlDeleterDel(deleter, conn, table, "qName"); if (options->flags & DBLOAD_PER_CHROM_ALIGN) deleteGenBankChromAligns(db, conn, deleter, type, typeStr); else { if (type == GB_EST) sqlDeleterDel(deleter, conn, INTRON_EST_TBL, "qName"); } sqlDeleterDel(deleter, conn, xenoTable, "qName"); safef(table, sizeof(table), "%sOrientInfo", typeStr); sqlDeleterDel(deleter, conn, table, "name"); if (haveMgc) { sqlDeleterDel(deleter, conn, MGC_FULL_MRNA_TBL, "qName"); sqlDeleterDel(deleter, conn, MGC_GENES_TBL, "name"); } if (haveOrfeome) { sqlDeleterDel(deleter, conn, ORFEOME_MRNA_TBL, "qName"); sqlDeleterDel(deleter, conn, ORFEOME_GENES_TBL, "name"); } }