35da6d0448c90196c627302cc1c33dc0e38bb74c kent Wed Jul 10 11:44:46 2019 -0700 Tightening up sql query to find dataset so that it doesn't mess up having both 2019yeoRna and yeoRna. diff --git src/hg/cirm/cdw/cdwRenameDataset/cdwRenameDataset.c src/hg/cirm/cdw/cdwRenameDataset/cdwRenameDataset.c index 2e9fd87..115537f 100644 --- src/hg/cirm/cdw/cdwRenameDataset/cdwRenameDataset.c +++ src/hg/cirm/cdw/cdwRenameDataset/cdwRenameDataset.c @@ -45,35 +45,35 @@ errAbort("%d %s found in %s in mustStrSwapOne, must occur once", subCount, oldStr, string); } 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); +sqlSafef(query, sizeof(query), "select count(*) from cdwSubmitDir where url like '/%%/%s'", oldName); int dirCount = sqlQuickNum(conn, query); if (dirCount != 1) errAbort("Got %d cdwSubmitDir URLs ending in /%s, expecting 1", dirCount, oldName); -sqlSafef(query, sizeof(query), "select id from cdwSubmitDir where url like '/%%%s'", oldName); +sqlSafef(query, sizeof(query), "select id from cdwSubmitDir where url like '/%%/%s'", oldName); int submitDirId = sqlQuickNum(conn, query); /* Update cdwSubmitDir.url with substituted url. */ sqlSafef(query, sizeof(query), "select url from cdwSubmitDir where id=%d", submitDirId); char *oldSubmitUrl = sqlQuickString(conn, query); char newUrl[2*PATH_LEN]; safef(newUrl, sizeof(newUrl), "%s", oldSubmitUrl); mustStrSwapOne(newUrl, sizeof(newUrl), oldName, newName); sqlSafef(query, sizeof(query), "update cdwSubmitDir set url='%s' where id=%d", newUrl, submitDirId); update(conn, query); /* 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);