ecebacc98890dd849cd57dca6cf136c0b4352c7c galt Wed Feb 12 22:51:58 2020 -0800 fixing some metadata that we overlooked in cdwRenameDataset. fixed typo in help for cdwUnlockSubmittedFiles. diff --git src/hg/cirm/cdw/cdwRenameDataset/cdwRenameDataset.c src/hg/cirm/cdw/cdwRenameDataset/cdwRenameDataset.c index f085f0d..3899a6b 100644 --- src/hg/cirm/cdw/cdwRenameDataset/cdwRenameDataset.c +++ src/hg/cirm/cdw/cdwRenameDataset/cdwRenameDataset.c @@ -33,30 +33,39 @@ { if (clDry) verbose(1, "%s\n", query); else sqlUpdate(conn, query); } static void mustStrSwapOne(char *string, int sz, char *oldStr, char *newStr) /* Swap in a single string or die trying */ { int subCount = strSwapStrs(string, sz, oldStr, newStr); if (subCount != 1) errAbort("%d %s found in %s in mustStrSwapOne, must occur once", subCount, oldStr, string); } +void updateTagsField(struct sqlConnection *conn, char *table, char *field, char *oldName, char *newName) +/* Update table.tags with substituted data_set_id name. */ +{ +char query[2048]; +sqlSafef(query, sizeof(query), "update %s set tags = replace(tags,'%s=%s','%s=%s') " + "where REGEXP_INSTR(tags, '(^|&)%s=%s(&|^)') > 0;", table, field,oldName, field,newName, field,oldName); +update(conn, query); +} + void cdwRenameDataset(char *oldName, char *newName) /* cdwRenameDataset - Rename a dataset, updating cdwDataset, cdwSubmitDir.url, and cdwSubmit.url * tables. */ { /* Update entry in cdwDataset */ struct sqlConnection *conn = cdwConnectReadWrite(); char query[3*PATH_LEN]; sqlSafef(query, sizeof(query), "update cdwDataset set name='%s' where name ='%s'", newName, oldName); update(conn, query); /* Figure out submitDir that ends with the dataset name */ sqlSafef(query, sizeof(query), "select count(*) from cdwSubmitDir where url like '/%%/%s'", oldName); int dirCount = sqlQuickNum(conn, query); if (dirCount != 1) @@ -76,27 +85,32 @@ /* Update cdwSubmit.url with substituted url wherever it matches submitDir. */ struct sqlConnection *conn2 = cdwConnectReadWrite(); sqlSafef(query, sizeof(query), "select id,url from cdwSubmit where submitDirId=%d", submitDirId); struct sqlResult *sr = sqlGetResult(conn, query); char **row; while ((row = sqlNextRow(sr)) != NULL) { char *id = row[0]; char *oldUrl = row[1]; safef(newUrl, sizeof(newUrl), "%s", oldUrl); mustStrSwapOne(newUrl, sizeof(newUrl), oldName, newName); sqlSafef(query, sizeof(query), "update cdwSubmit set url='%s' where id=%s", newUrl, id); update(conn2, query); } sqlFreeResult(&sr); + +updateTagsField(conn, "cdwFile", "meta" , oldName, newName); +updateTagsField(conn, "cdwMetaTags", "meta" , oldName, newName); +updateTagsField(conn, "cdwMetaTags", "data_set_id", oldName, newName); + } int main(int argc, char *argv[]) /* Process command line. */ { optionInit(&argc, argv, options); if (argc != 3) usage(); clDry = optionExists("dry"); cdwRenameDataset(argv[1],argv[2]); return 0; }