Changeset 27737
- Timestamp:
- Apr 23, 2010, 11:19:20 AM (16 years ago)
- Location:
- trunk/ippTools
- Files:
-
- 2 added
- 7 edited
-
share/warptool_listrun.sql (added)
-
share/warptool_pendingcleanupskyfile.sql (modified) (1 diff)
-
share/warptool_scmap.sql (modified) (2 diffs)
-
share/warptool_setskyfiletoupdate.sql (added)
-
share/warptool_towarped.sql (modified) (2 diffs)
-
share/warptool_warped.sql (modified) (1 diff)
-
src/warptool.c (modified) (11 diffs)
-
src/warptool.h (modified) (1 diff)
-
src/warptoolConfig.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/share/warptool_pendingcleanupskyfile.sql
r24186 r27737 10 10 USING(warp_id) 11 11 WHERE 12 ((warpRun.state = 'goto_cleaned' AND warpSkyfile.data_state = 'full') 12 ((warpRun.state = 'goto_cleaned' AND (warpSkyfile.data_state = 'full' 13 OR warpSkyfile.data_state = 'update')) 13 14 OR 14 15 (warpRun.state = 'goto_scrubbed' AND warpSkyfile.data_state != 'scrubbed') -
trunk/ippTools/share/warptool_scmap.sql
r19092 r27737 3 3 chipProcessedImfile.uri, 4 4 chipProcessedImfile.path_base as chip_path_base, 5 camProcessedExp.path_base as cam_path_base 5 camProcessedExp.path_base as cam_path_base, 6 chipProcessedImfile.chip_id, 7 chipRun.state, 8 chipProcessedImfile.data_state, 9 chipProcessedImfile.magicked, 10 rawImfile.magicked AS raw_magicked 6 11 FROM warpRun 7 12 JOIN warpSkyCellMap … … 18 23 ON chipRun.chip_id = chipProcessedImfile.chip_id 19 24 AND warpSkyCellMap.class_id = chipProcessedImfile.class_id 25 JOIN rawImfile 26 ON chipRun.exp_id = rawImfile.exp_id 27 AND chipProcessedImfile.class_id = rawImfile.class_id 20 28 WHERE 21 -- warpRun.state = 'new' 22 fakeRun.state = 'full' 23 AND camRun.state = 'full' 24 AND chipRun.state = 'full' 29 1 -
trunk/ippTools/share/warptool_towarped.sql
r27503 r27737 1 SELECT 2 warp_id, 3 warp_skyfile_id, 4 skycell_id, 5 tess_id, 6 fake_id, 7 state, 8 reduction, 9 cam_id, 10 camera, 11 exp_tag, 12 workdir, 13 magicked 14 FROM ( 1 15 SELECT DISTINCT 2 16 warpSkyCellMap.warp_id, … … 45 59 AND warpSkyCellMap.fault = 0 46 60 -- where hook 1 %s 61 -- limit hook 1 %s 62 UNION 63 SELECT 64 warpSkyCellMap.warp_id, 65 warpImfile.warp_skyfile_id, 66 warpSkyCellMap.skycell_id, 67 warpSkyCellMap.tess_id, 68 warpRun.fake_id, 69 warpRun.state, 70 warpRun.reduction, 71 camRun.cam_id, 72 rawExp.camera, 73 rawExp.exp_tag, 74 warpRun.workdir, 75 MIN(chipProcessedImfile.magicked) AS magicked 76 FROM warpRun 77 JOIN warpImfile USING(warp_id) 78 JOIN warpSkyCellMap USING(warp_id, skycell_id) 79 JOIN warpSkyfile USING(warp_id, skycell_id) 80 JOIN fakeRun USING(fake_id) 81 JOIN camRun USING(cam_id) 82 JOIN chipRun USING(chip_id) 83 JOIN rawExp USING(exp_id) 84 LEFT JOIN chipProcessedImfile USING(chip_id, class_id) 85 WHERE warpRun.state = 'update' 86 AND warpSkyfile.data_state = 'update' 87 AND warpSkyfile.fault = 0 88 AND camRun.state = 'full' 89 AND chipProcessedImfile.data_state = 'full' 90 -- if warpSkyfile was magicked previously require inputs to be magicked 91 -- this blocks processing until all the chip inputs have been destreaked 92 AND (warpSkyfile.magicked = 0 OR chipProcessedImfile.magicked >= 0) 93 -- where hook 2 %s 94 GROUP BY warp_id, skycell_id 95 HAVING COUNT(warpSkyCellMap.class_id) = COUNT(chipProcessedImfile.class_id) 96 -- limit hook 2 %s 97 ) as towarped 98 -
trunk/ippTools/share/warptool_warped.sql
r25791 r27737 21 21 JOIN rawExp 22 22 ON chipRun.exp_id = rawExp.exp_id 23 WHERE24 -- bogus test; just here so there there is a 'WHERE' stmt to append conditionals too25 -- XXX EAM : not needed: fix warptool.c26 warpRun.warp_id is NOT NULL -
trunk/ippTools/src/warptool.c
r27503 r27737 59 59 static bool importrunMode(pxConfig *config); 60 60 static bool runstateMode(pxConfig *config); 61 static bool listrunMode(pxConfig *config); 62 static bool setskyfiletoupdateMode(pxConfig *config); 61 63 62 64 static bool parseAndInsertSkyCellMap(pxConfig *config, const char *mapfile); … … 110 112 MODECASE(WARPTOOL_MODE_IMPORTRUN, importrunMode); 111 113 MODECASE(WARPTOOL_MODE_RUNSTATE, runstateMode); 114 MODECASE(WARPTOOL_MODE_LISTRUN, listrunMode); 115 MODECASE(WARPTOOL_MODE_SETSKYFILETOUPDATE, setskyfiletoupdateMode); 112 116 113 117 default: … … 916 920 917 921 // treat limit == 0 as "no limit" 922 psString limitString = psStringCopy("\n"); 918 923 if (limit) { 919 psString limitString = psDBGenerateLimitSQL(limit); 924 // We apply the limit to both sides of the UNION 925 // to avoid slow queries and to the query itself 926 // to satisfy the user's requested limit 927 psStringAppend(&limitString, psDBGenerateLimitSQL(limit)); 920 928 psStringAppend(&query, " %s", limitString); 921 psFree(limitString);922 } 923 929 } 930 931 #define TWO_WHERES 924 932 #ifdef TWO_WHERES 925 if (!p_psDBRunQueryF(config->dbh, query, whereStr, whereStr)) {933 if (!p_psDBRunQueryF(config->dbh, query, whereStr, limitString, whereStr, limitString)) { 926 934 psError(PS_ERR_UNKNOWN, false, "database error"); 927 935 psFree(query); … … 935 943 } 936 944 #endif 945 psFree(limitString); 937 946 psFree(whereStr); 938 947 psFree(query); … … 994 1003 PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false); 995 1004 PXOPT_LOOKUP_F32(good_frac, config->args, "-good_frac", false, false); 996 PXOPT_LOOKUP_S64(magicked, config->args, "- magicked", false, false);1005 PXOPT_LOOKUP_S64(magicked, config->args, "-set_magicked", false, false); 997 1006 998 1007 // default values … … 1242 1251 if (psListLength(where->list)) { 1243 1252 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1244 psStringAppend(&query, " AND%s", whereClause);1253 psStringAppend(&query, " WHERE %s", whereClause); 1245 1254 psFree(whereClause); 1246 1255 } else if (!all && !where2) { … … 1248 1257 return false; 1249 1258 } 1259 1260 if (where2) { 1261 if (psListLength(where->list)) { 1262 psStringAppend(&query, " %s", where2); 1263 } else { 1264 psStringAppend(&query, " WHERE 1 %s", where2); 1265 } 1266 } 1250 1267 psFree(where); 1251 1252 if (where2) {1253 psStringAppend(&query, " %s", where2);1254 }1255 1268 1256 1269 // treat limit == 0 as "no limit" … … 1665 1678 } 1666 1679 1667 char *set_magicked_skyfile = "";1668 char *set_magicked_run = "";1680 psString set_magicked_skyfile = psStringCopy(""); 1681 psString set_magicked_run = psStringCopy(""); 1669 1682 if (!strcmp(data_state, "full")) { 1670 set_magicked_skyfile = "\n , warpSkyfile.magicked = IF((warpSkyfile.magicked < 0 AND chipRun.magicked = 0), warpSkyfile.magicked, chipRun.magicked)"; 1671 set_magicked_run = "\n, warpRun.magicked = IF((warpRun.magicked < 0 AND chipRun.magicked = 0), warpRun.magicked, chipRun.magicked)"; 1672 1683 // magicked is only an argument for for -tofullskyfile 1684 PXOPT_LOOKUP_S64(magicked, config->args, "-set_magicked", false, false); 1685 if (magicked) { 1686 psStringAppend(&set_magicked_skyfile, "\n , warpSkyfile.magicked = %" PRId64, magicked); 1687 psStringAppend(&set_magicked_run, "\n, warpRun.magicked = %" PRId64, magicked); 1688 } 1673 1689 } else if (!strcmp(data_state, "cleaned") || !strcmp(data_state, "purged")) { 1674 set_magicked_skyfile = "\n, warpSkyfile.magicked = IF(warpSkyfile.magicked = 0, 0, -1)"; 1675 set_magicked_run = "\n, warpRun.magicked = IF(warpRun.magicked = 0, 0, -1)"; 1690 // if magicked is currently nonzero set it to -1 1691 // Set warpRun.magicked when the first skyfile is cleaned 1692 psStringAppend(&set_magicked_skyfile, "\n, warpSkyfile.magicked = IF(warpSkyfile.magicked = 0, 0, -1), warpRun.magicked = IF(warpRun.magicked = 0, 0, -1)"); 1676 1693 } 1677 1694 … … 1686 1703 } 1687 1704 psFree(query); 1705 psFree(set_magicked_skyfile); 1688 1706 1689 1707 query = pxDataGet("warptool_change_run_state.sql"); … … 1696 1714 return false; 1697 1715 } 1716 psFree(set_magicked_run); 1698 1717 1699 1718 if (!psDBCommit(config->dbh)) { … … 2026 2045 return true; 2027 2046 } 2047 2048 static bool listrunMode(pxConfig *config) 2049 { 2050 PS_ASSERT_PTR_NON_NULL(config, false); 2051 2052 psMetadata *where = psMetadataAlloc(); 2053 PXOPT_COPY_S64(config->args, where, "-warp_id", "warpRun.warp_id", "=="); 2054 PXOPT_COPY_STR(config->args, where, "-tess_id", "warpRun.tess_id", "=="); 2055 PXOPT_COPY_STR(config->args, where, "-state", "warpRun.state", "=="); 2056 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "=="); 2057 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); 2058 PXOPT_COPY_S64(config->args, where, "-fake_id", "fakeRun.fake_id", "=="); 2059 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawExp.dateobs", ">="); 2060 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawExp.dateobs", "<="); 2061 PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "LIKE"); 2062 PXOPT_COPY_S64(config->args, where, "-magicked", "warpRun.magicked", "=="); 2063 pxAddLabelSearchArgs (config, where, "-label", "warpRun.label", "LIKE"); 2064 pxAddLabelSearchArgs (config, where, "-data_group", "warpRun.data_group", "LIKE"); 2065 pxAddLabelSearchArgs (config, where, "-dist_group", "warpRun.dist_group", "LIKE"); 2066 2067 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 2068 2069 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 2070 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 2071 PXOPT_LOOKUP_BOOL(pstamp_order, config->args, "-pstamp_order", false); 2072 2073 // find all rawImfiles matching the default query 2074 psString query = pxDataGet("warptool_listrun.sql"); 2075 if (!query) { 2076 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 2077 return false; 2078 } 2079 2080 // generate where strings for arguments that require extra processing 2081 // beyond PXOPT_COPY* 2082 psString where2 = NULL; 2083 if (!pxmagicAddWhere(config, &where2, "warpRun")) { 2084 psError(psErrorCodeLast(), false, "pxMagicAddWhere failed"); 2085 return false; 2086 } 2087 if (!pxspaceAddWhere(config, &where2, "rawExp")) { 2088 psError(psErrorCodeLast(), false, "pxSpaceAddWhere failed"); 2089 return false; 2090 } 2091 2092 if (psListLength(where->list)) { 2093 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 2094 psStringAppend(&query, " WHERE %s", whereClause); 2095 psFree(whereClause); 2096 } else if (!all && !where2) { 2097 psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required"); 2098 return false; 2099 } 2100 2101 if (where2) { 2102 if (psListLength(where->list)) { 2103 psStringAppend(&query, " %s", where2); 2104 } else { 2105 psStringAppend(&query, " WHERE 1 %s", where2); 2106 } 2107 } 2108 psFree(where); 2109 2110 if (pstamp_order) { 2111 // put runs in order of exposure id with newest chip Runs first 2112 // The postage stamp parser depends on this behavior 2113 psStringAppend(&query, "\nORDER by exp_id, warp_id DESC"); 2114 } 2115 2116 2117 // treat limit == 0 as "no limit" 2118 if (limit) { 2119 psString limitString = psDBGenerateLimitSQL(limit); 2120 psStringAppend(&query, " %s", limitString); 2121 psFree(limitString); 2122 } 2123 2124 if (!p_psDBRunQuery(config->dbh, query)) { 2125 psError(PS_ERR_UNKNOWN, false, "database error"); 2126 psFree(query); 2127 return false; 2128 } 2129 psFree(query); 2130 2131 psArray *output = p_psDBFetchResult(config->dbh); 2132 if (!output) { 2133 psErrorCode err = psErrorCodeLast(); 2134 switch (err) { 2135 case PS_ERR_DB_CLIENT: 2136 psError(PXTOOLS_ERR_SYS, false, "database error"); 2137 case PS_ERR_DB_SERVER: 2138 psError(PXTOOLS_ERR_PROG, false, "database error"); 2139 default: 2140 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 2141 } 2142 2143 return false; 2144 } 2145 if (!psArrayLength(output)) { 2146 psTrace("warptool", PS_LOG_INFO, "no rows found"); 2147 psFree(output); 2148 return true; 2149 } 2150 2151 if (psArrayLength(output)) { 2152 // negative simple so the default is true 2153 if (!ippdbPrintMetadatas(stdout, output, "warpRun", !simple)) { 2154 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 2155 psFree(output); 2156 return false; 2157 } 2158 } 2159 2160 psFree(output); 2161 2162 return true; 2163 } 2164 2165 // a very specfic function to queue a cleaned warpSkyfile to be updated 2166 static bool setskyfiletoupdateMode(pxConfig *config) 2167 { 2168 PS_ASSERT_PTR_NON_NULL(config, NULL); 2169 2170 PXOPT_LOOKUP_S64(warp_id, config->args, "-warp_id", true, false); 2171 PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", false, false); 2172 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 2173 2174 psString query = pxDataGet("warptool_setskyfiletoupdate.sql"); 2175 if (!query) { 2176 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 2177 return false; 2178 } 2179 2180 psString setHook = psStringCopy(""); 2181 if (label) { 2182 psStringAppend(&setHook, "\n , warpRun.label = '%s'", label); 2183 } 2184 2185 if (skycell_id) { 2186 psStringAppend(&query, " AND (warpSkyfile.skycell_id = '%s')", skycell_id); 2187 } 2188 2189 if (!p_psDBRunQueryF(config->dbh, query, setHook, warp_id)) { 2190 psError(PS_ERR_UNKNOWN, false, "database error"); 2191 return false; 2192 } 2193 2194 psFree(setHook); 2195 psFree(query); 2196 2197 return true; 2198 } -
trunk/ippTools/src/warptool.h
r25822 r27737 55 55 WARPTOOL_MODE_IMPORTRUN, 56 56 WARPTOOL_MODE_RUNSTATE, 57 WARPTOOL_MODE_LISTRUN, 58 WARPTOOL_MODE_SETSKYFILETOUPDATE, 57 59 } warptoolMode; 58 60 -
trunk/ippTools/src/warptoolConfig.c
r27389 r27737 217 217 psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-hostname", 0, "define hostname", 0); 218 218 psMetadataAddF32(addwarpedArgs, PS_LIST_TAIL, "-good_frac", 0, "define %% of good pixels", NAN); 219 psMetadataAddS64(addwarpedArgs, PS_LIST_TAIL, "- magicked", 0, "define if this skycell has been magicked", 0);219 psMetadataAddS64(addwarpedArgs, PS_LIST_TAIL, "-set_magicked", 0, "define if this skycell has been magicked", 0); 220 220 psMetadataAddS16(addwarpedArgs, PS_LIST_TAIL, "-fault", 0, "set fault code", 0); 221 221 psMetadataAddS16(addwarpedArgs, PS_LIST_TAIL, "-quality", 0, "set quality", 0); … … 236 236 psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by warpRun label", NULL); 237 237 psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by warpRun data_group", NULL); 238 psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-dist_group", PS_META_DUPLICATE_OK, "search by warpRun dist_group", NULL); 238 239 // add magic related arguments 239 240 pxmagicAddArguments(warpedArgs); … … 244 245 psMetadataAddU64(warpedArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 245 246 psMetadataAddBool(warpedArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 247 248 // -listrun 249 psMetadata *listrunArgs = psMetadataAlloc(); 250 psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warptool ID", 0); 251 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tessellation ID", NULL); 252 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-state", 0, "search by state", NULL); 253 psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure tag", 0); 254 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exposure tag", 0); 255 psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-fake_id", 0, "search by phase 3 version of exposure tag", 0); 256 psMetadataAddTime(listrunArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 257 psMetadataAddTime(listrunArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<=)", NULL); 258 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-filter", 0, "search for exposures by filter", NULL); 259 psMetadataAddS16(listrunArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 260 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by warpRun label", NULL); 261 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by warpRun data_group", NULL); 262 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-dist_group", PS_META_DUPLICATE_OK, "search by warpRun dist_group", NULL); 263 // add magic related arguments 264 pxmagicAddArguments(listrunArgs); 265 // add arguments for spatial search 266 pxspaceAddArguments(listrunArgs); 267 268 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-pstamp_order", 0, "order results for postage stamp server", false); 269 270 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-all", 0, "search without arguments", false); 271 psMetadataAddU64(listrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 272 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 246 273 247 274 // -revertwarped … … 315 342 psMetadataAddS64(tofullskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, "warptool ID to update", 0); 316 343 psMetadataAddStr(tofullskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL); 344 psMetadataAddS64(tofullskyfileArgs, PS_LIST_TAIL, "-set_magicked", 0, "new value for magicked", 0); 317 345 318 346 // -updateskyfile … … 345 373 psMetadataAddU64(runstateArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 346 374 psMetadataAddBool(runstateArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 375 376 // -setskyfiletoupdate 377 psMetadata *setskyfiletoupdateArgs = psMetadataAlloc(); 378 psMetadataAddS64(setskyfiletoupdateArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warptool ID (required)", 0); 379 psMetadataAddStr(setskyfiletoupdateArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by tessellation ID", NULL); 380 psMetadataAddStr(setskyfiletoupdateArgs, PS_LIST_TAIL, "-set_label", 0, "new value for warpRun.label", NULL); 347 381 348 382 … … 364 398 PXOPT_ADD_MODE("-advancerun", "", WARPTOOL_MODE_ADVANCERUN, advancerunArgs); 365 399 PXOPT_ADD_MODE("-warped", "", WARPTOOL_MODE_WARPED, warpedArgs); 400 PXOPT_ADD_MODE("-listrun", "", WARPTOOL_MODE_LISTRUN, listrunArgs); 366 401 PXOPT_ADD_MODE("-runstate", "", WARPTOOL_MODE_RUNSTATE, runstateArgs); 367 402 PXOPT_ADD_MODE("-revertwarped", "", WARPTOOL_MODE_REVERTWARPED, revertwarpedArgs); … … 377 412 PXOPT_ADD_MODE("-tofullskyfile", "set skyfile as full (updated)", WARPTOOL_MODE_TOFULLSKYFILE, tofullskyfileArgs); 378 413 PXOPT_ADD_MODE("-updateskyfile", "update fault code for skyfile", WARPTOOL_MODE_UPDATESKYFILE, updateskyfileArgs); 414 PXOPT_ADD_MODE("-setskyfiletoupdate", "set cleaned skyfile to be updated", WARPTOOL_MODE_SETSKYFILETOUPDATE, setskyfiletoupdateArgs); 379 415 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", WARPTOOL_MODE_EXPORTRUN, exportrunArgs); 380 416 PXOPT_ADD_MODE("-importrun", "import run from metadata file", WARPTOOL_MODE_IMPORTRUN, importrunArgs);
Note:
See TracChangeset
for help on using the changeset viewer.
