- Timestamp:
- May 3, 2010, 8:50:52 AM (16 years ago)
- Location:
- branches/simtest_nebulous_branches
- Files:
-
- 3 edited
-
. (modified) (1 prop)
-
ippTools/src (modified) (1 prop)
-
ippTools/src/warptool.c (modified) (38 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/simtest_nebulous_branches
- Property svn:mergeinfo changed
-
branches/simtest_nebulous_branches/ippTools/src
- Property svn:ignore
-
old new 1 *.la 2 *.lo 1 3 .deps 2 4 .gdb_history … … 4 6 Makefile 5 7 Makefile.in 8 addtool 9 caltool 10 camtool 11 chiptool 6 12 config.h 7 13 config.h.in 8 stamp-h1 9 *.la 10 *.lo 14 detselect 15 dettool 16 difftool 17 disttool 18 dqstatstool 19 faketool 20 flatcorr 21 guidetool 22 magicdstool 23 magictool 24 pstamptool 25 pubtool 26 pxadmin 27 pxdata.c 28 pxinject 11 29 pxtoolsErrorCodes.c 12 30 pxtoolsErrorCodes.h 13 pxadmin14 pxinject15 pztool16 31 pzgetexp 17 32 pzgetimfiles 33 pztool 34 receivetool 18 35 regtool 19 guidetool 20 chiptool 21 camtool 36 stacktool 37 stamp-h1 22 38 warptool 23 difftool24 stacktool25 faketool26 dettool27 detselect28 pxdata.c29 magictool30 magicdstool31 caltool32 flatcorr33 pstamptool34 disttool35 receivetool36 37 pubtool
-
- Property svn:ignore
-
branches/simtest_nebulous_branches/ippTools/src/warptool.c
r24956 r27840 53 53 static bool tocleanedskyfileMode(pxConfig *config); 54 54 static bool topurgedskyfileMode(pxConfig *config); 55 static bool toscrubbedskyfileMode(pxConfig *config); 55 56 static bool tofullskyfileMode(pxConfig *config); 56 57 static bool updateskyfileMode(pxConfig *config); 57 58 static bool exportrunMode(pxConfig *config); 58 59 static bool importrunMode(pxConfig *config); 60 static bool runstateMode(pxConfig *config); 61 static bool listrunMode(pxConfig *config); 62 static bool setskyfiletoupdateMode(pxConfig *config); 59 63 60 64 static bool parseAndInsertSkyCellMap(pxConfig *config, const char *mapfile); … … 102 106 MODECASE(WARPTOOL_MODE_TOCLEANEDSKYFILE, tocleanedskyfileMode); 103 107 MODECASE(WARPTOOL_MODE_TOPURGEDSKYFILE, topurgedskyfileMode); 108 MODECASE(WARPTOOL_MODE_TOSCRUBBEDSKYFILE, toscrubbedskyfileMode); 104 109 MODECASE(WARPTOOL_MODE_TOFULLSKYFILE, tofullskyfileMode); 105 110 MODECASE(WARPTOOL_MODE_UPDATESKYFILE, updateskyfileMode); 106 111 MODECASE(WARPTOOL_MODE_EXPORTRUN, exportrunMode); 107 112 MODECASE(WARPTOOL_MODE_IMPORTRUN, importrunMode); 113 MODECASE(WARPTOOL_MODE_RUNSTATE, runstateMode); 114 MODECASE(WARPTOOL_MODE_LISTRUN, listrunMode); 115 MODECASE(WARPTOOL_MODE_SETSKYFILETOUPDATE, setskyfiletoupdateMode); 108 116 109 117 default: … … 137 145 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); // required 138 146 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 147 PXOPT_LOOKUP_STR(data_group, config->args, "-data_group", false, false); 148 PXOPT_LOOKUP_STR(dist_group, config->args, "-dist_group", false, false); 149 PXOPT_LOOKUP_STR(note, config->args, "-note", false, false); 139 150 PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false); 140 151 PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", true, false); // required (no default TESS) … … 158 169 "dirty", // workdir_state 159 170 label, 171 data_group ? data_group : label, 172 dist_group, 160 173 dvodb, 161 174 tess_id, … … 163 176 end_stage, 164 177 registered, 165 0 // magicked 178 0, // magicked 179 note 166 180 ); 167 181 if (!warpRun) { … … 237 251 PXOPT_COPY_F32(config->args, where, "-sun_angle_max", "rawExp.sun_angle", "<"); 238 252 PXOPT_COPY_STR(config->args, where, "-reduction", "fakeRun.reduction", "=="); 239 pxAddLabelSearchArgs (config, where, "-label", "fakeRun.label", "==");253 pxAddLabelSearchArgs (config, where, "-label", "fakeRun.label", "=="); // define using fake label 240 254 241 255 if (!psListLength(where->list) && 242 256 !psMetadataLookupBool(NULL, config->args, "-all")) { 243 257 psFree(where); 244 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");258 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 245 259 return false; 246 260 } … … 249 263 PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", false, false); 250 264 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 265 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 266 PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false); 251 267 PXOPT_LOOKUP_STR(dvodb, config->args, "-set_dvodb", false, false); 252 268 PXOPT_LOOKUP_STR(tess_id, config->args, "-set_tess_id", false, false); 253 269 PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false); 254 270 PXOPT_LOOKUP_STR(end_stage, config->args, "-set_end_stage", false, false); 271 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 255 272 256 273 PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false); … … 266 283 psString query = pxDataGet("warptool_definebyquery.sql"); 267 284 if (!query) { 268 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");285 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 269 286 psFree(where); 270 287 return false; … … 338 355 workdir ? workdir : row->workdir, 339 356 label ? label : row->label, 357 data_group ? data_group: row->data_group, 358 dist_group ? dist_group: row->dist_group, 340 359 dvodb ? dvodb : row->dvodb, 341 360 tess_id ? tess_id : row->tess_id, 342 361 reduction ? reduction : row->reduction, 343 end_stage ? end_stage : row->end_stage)) 362 end_stage ? end_stage : row->end_stage, 363 note)) 344 364 { 345 365 psError(PS_ERR_UNKNOWN, false, "failed to trying to queue fake_id: %" PRId64, row->fake_id); … … 367 387 PXOPT_COPY_S64(config->args, where, "-warp_id", "warpRun.warp_id", "=="); 368 388 PXOPT_COPY_STR(config->args, where, "-reduction", "warpRun.reduction", "=="); 369 PXOPT_COPY_STR(config->args, where, "-label", "warpRun.label", "==");370 389 PXOPT_COPY_STR(config->args, where, "-state", "warpRun.state", "=="); 371 372 if (!psListLength(where->list) 373 && !psMetadataLookupBool(NULL, config->args, "-all")) { 390 PXOPT_COPY_STR(config->args, where, "-data_group","warpRun.data_group","=="); 391 PXOPT_COPY_STR(config->args, where, "-dist_group","warpRun.dist_group","=="); 392 pxAddLabelSearchArgs(config, where, "-label", "warpRun.label", "=="); 393 394 PXOPT_COPY_TIME(config->args, where, "-registered_begin", "warpRun.registered", ">="); 395 PXOPT_COPY_TIME(config->args, where, "-registered_end", "warpRun.registered", "<"); 396 397 PXOPT_LOOKUP_BOOL(destreaked, config->args, "-destreaked", false); 398 if (destreaked) { 399 psMetadataAddS64(where, PS_LIST_TAIL, "warpRun.magicked", PS_META_DUPLICATE_OK, ">", 0); 400 } 401 402 if (!psListLength(where->list)) { 374 403 psFree(where); 375 where = NULL; 376 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); 377 return false; 378 } 379 380 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 381 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 382 383 if ((!state) && (!label)) { 384 psError(PXTOOLS_ERR_DATA, false, "parameters (-state or -label) are required"); 385 psFree(where); 386 return false; 387 } 388 389 if (state) { 390 // set warpRun.state to state 391 if (!pxwarpRunSetStateByQuery(config, where, state)) { 392 psFree(where); 393 return false; 394 } 395 } 396 397 if (label) { 398 // set chipRun.label to label 399 if (!pxwarpRunSetLabelByQuery(config, where, label)) { 400 psFree(where); 401 return false; 402 } 403 } 404 404 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 405 return false; 406 } 407 408 psString query = psStringCopy("UPDATE warpRun JOIN warpSkyfile USING(warp_id) JOIN fakeRun USING(fake_id) JOIN camRun USING(cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id)"); 409 410 // pxUpdateRun gets parameters from config->args and updates 411 bool result = pxUpdateRun(config, where, &query, "warpRun", "warp_id", "warpSkyfile", true); 412 413 psFree(query); 405 414 psFree(where); 406 415 407 return true; 408 } 409 416 return result; 417 } 410 418 411 419 static bool expMode(pxConfig *config) … … 423 431 psString query = pxDataGet("warptool_exp.sql"); 424 432 if (!query) { 425 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");433 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 426 434 return false; 427 435 } … … 497 505 psString query = pxDataGet("warptool_imfile.sql"); 498 506 if (!query) { 499 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");507 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 500 508 return false; 501 509 } … … 571 579 psString query = pxDataGet("warptool_tooverlap.sql"); 572 580 if (!query) { 573 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");581 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 574 582 return false; 575 583 } … … 680 688 PXOPT_COPY_STR(config->args, where, "-skycell_id", "warpSkyCellMap.skycell_id", "=="); 681 689 PXOPT_COPY_STR(config->args, where, "-tess_id", "warpSkyCellMap.tess_id", "=="); 682 // PXOPT_COPY_STR(config->args, where, "-label", "warpRun.label", "==");683 690 pxAddLabelSearchArgs (config, where, "-label", "warpRun.label", "=="); 684 691 PXOPT_COPY_S16(config->args, where, "-fault", "warpSkyCellMap.fault", "=="); … … 687 694 && !psMetadataLookupBool(NULL, config->args, "-all")) { 688 695 psFree(where); 689 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");696 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 690 697 return false; 691 698 } … … 695 702 psString query = pxDataGet("warptool_revertoverlap.sql"); 696 703 if (!query) { 697 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");704 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 698 705 if (!psDBRollback(config->dbh)) { 699 706 psError(PS_ERR_UNKNOWN, false, "database error"); … … 827 834 psString query = pxDataGet("warptool_scmap.sql"); 828 835 if (!query) { 829 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");836 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 830 837 return false; 831 838 } … … 900 907 psString query = pxDataGet("warptool_towarped.sql"); 901 908 if (!query) { 902 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 903 return false; 904 } 905 909 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 910 return false; 911 } 912 913 psString whereStr = psStringCopy(""); 906 914 if (psListLength(where->list)) { 907 915 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 908 psStringAppend(& query, "AND %s", whereClause);916 psStringAppend(&whereStr, "\n AND %s", whereClause); 909 917 psFree(whereClause); 910 918 } … … 912 920 913 921 // treat limit == 0 as "no limit" 922 psString limitString = psStringCopy("\n"); 914 923 if (limit) { 915 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, "%s", psDBGenerateLimitSQL(limit)); 916 928 psStringAppend(&query, " %s", limitString); 917 psFree(limitString); 918 } 919 920 if (!p_psDBRunQuery(config->dbh, query)) { 929 } 930 931 #define TWO_WHERES 932 #ifdef TWO_WHERES 933 if (!p_psDBRunQueryF(config->dbh, query, whereStr, limitString, whereStr, limitString)) { 921 934 psError(PS_ERR_UNKNOWN, false, "database error"); 922 935 psFree(query); 923 936 return false; 924 937 } 938 #else 939 if (!p_psDBRunQueryF(config->dbh, query, whereStr)) { 940 psError(PS_ERR_UNKNOWN, false, "database error"); 941 psFree(query); 942 return false; 943 } 944 #endif 945 psFree(limitString); 946 psFree(whereStr); 925 947 psFree(query); 926 948 … … 981 1003 PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false); 982 1004 PXOPT_LOOKUP_F32(good_frac, config->args, "-good_frac", false, false); 983 PXOPT_LOOKUP_S64(magicked, config->args, "- magicked", false, false);1005 PXOPT_LOOKUP_S64(magicked, config->args, "-set_magicked", false, false); 984 1006 985 1007 // default values … … 1044 1066 psString query = pxDataGet("warptool_finished_run_select.sql"); 1045 1067 if (!query) { 1046 psError(PXTOOLS_ERR_ DATA, false, "failed to retrieve SQL statement");1068 psError(PXTOOLS_ERR_SYS, false, "failed to retrieve SQL statement"); 1047 1069 return false; 1048 1070 } … … 1120 1142 psString query = pxDataGet("warptool_finished_run_select.sql"); 1121 1143 if (!query) { 1122 psError(PXTOOLS_ERR_ DATA, false, "failed to retrieve SQL statement");1144 psError(PXTOOLS_ERR_SYS, false, "failed to retrieve SQL statement"); 1123 1145 return false; 1124 1146 } … … 1196 1218 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); 1197 1219 PXOPT_COPY_S64(config->args, where, "-fake_id", "fakeRun.fake_id", "=="); 1220 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawExp.dateobs", ">="); 1221 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawExp.dateobs", "<="); 1222 PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "LIKE"); 1223 PXOPT_COPY_S64(config->args, where, "-magicked", "warpSkyfile.magicked", "=="); 1224 pxAddLabelSearchArgs (config, where, "-label", "warpRun.label", "LIKE"); 1225 pxAddLabelSearchArgs (config, where, "-data_group", "warpRun.data_group", "LIKE"); 1226 1227 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 1198 1228 1199 1229 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); … … 1203 1233 psString query = pxDataGet("warptool_warped.sql"); 1204 1234 if (!query) { 1205 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1235 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1236 return false; 1237 } 1238 1239 // generate where strings for arguments that require extra processing 1240 // beyond PXOPT_COPY* 1241 psString where2 = NULL; 1242 if (!pxmagicAddWhere(config, &where2, "warpSkyfile")) { 1243 psError(psErrorCodeLast(), false, "pxMagicAddWhere failed"); 1244 return false; 1245 } 1246 if (!pxspaceAddWhere(config, &where2, "rawExp")) { 1247 psError(psErrorCodeLast(), false, "pxSpaceAddWhere failed"); 1206 1248 return false; 1207 1249 } … … 1209 1251 if (psListLength(where->list)) { 1210 1252 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1211 psStringAppend(&query, " AND%s", whereClause);1253 psStringAppend(&query, " WHERE %s", whereClause); 1212 1254 psFree(whereClause); 1255 } else if (!all && !where2) { 1256 psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required"); 1257 return false; 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 } 1213 1266 } 1214 1267 psFree(where); … … 1272 1325 PXOPT_COPY_STR(config->args, where, "-tess_id", "warpSkyfile.tess_id", "=="); 1273 1326 PXOPT_COPY_STR(config->args, where, "-reduction", "rawExp.reduction", "=="); 1274 // PXOPT_COPY_STR(config->args, where, "-label", "warpRun.label", "==");1275 1327 pxAddLabelSearchArgs (config, where, "-label", "warpRun.label", "=="); 1276 PXOPT_COPY_S16(config->args, where, "-fault", "warpSkyfile.fault", "==");1328 PXOPT_COPY_S16(config->args, where, "-fault", "warpSkyfile.fault", "=="); 1277 1329 1278 1330 if (!psListLength(where->list) 1279 1331 && !psMetadataLookupBool(NULL, config->args, "-all")) { 1280 1332 psFree(where); 1281 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); 1282 return false; 1283 } 1284 1285 if (!psDBTransaction(config->dbh)) { 1286 psError(PS_ERR_UNKNOWN, false, "database error"); 1287 psFree(where); 1288 return false; 1289 } 1290 1291 // Delete product 1292 int numDeleted; // Number deleted 1293 { 1294 psString query = pxDataGet("warptool_revertwarped_delete.sql"); 1295 if (!query) { 1296 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1297 if (!psDBRollback(config->dbh)) { 1298 psError(PS_ERR_UNKNOWN, false, "database error"); 1299 } 1300 return false; 1301 } 1302 1303 if (psListLength(where->list)) { 1304 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1305 psStringAppend(&query, " AND %s", whereClause); 1306 psFree(whereClause); 1307 } 1308 1309 if (!p_psDBRunQuery(config->dbh, query)) { 1310 psError(PS_ERR_UNKNOWN, false, "database error"); 1311 psFree(query); 1312 if (!psDBRollback(config->dbh)) { 1313 psError(PS_ERR_UNKNOWN, false, "database error"); 1314 } 1315 return false; 1316 } 1333 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1334 return false; 1335 } 1336 1337 psString query = pxDataGet("warptool_revertwarped_delete.sql"); 1338 if (!query) { 1339 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1340 return false; 1341 } 1342 psString query_updated = pxDataGet("warptool_revertwarped_updated.sql"); 1343 if (!query_updated) { 1344 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1345 return false; 1346 } 1347 1348 if (psListLength(where->list)) { 1349 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1350 psStringAppend(&query, " AND %s", whereClause); 1351 psStringAppend(&query_updated, " AND %s", whereClause); 1352 psFree(whereClause); 1353 } 1354 psFree(where); 1355 1356 if (!p_psDBRunQuery(config->dbh, query)) { 1357 psError(PS_ERR_UNKNOWN, false, "database error"); 1317 1358 psFree(query); 1318 1319 numDeleted = psDBAffectedRows(config->dbh); 1320 } 1359 return false; 1360 } 1361 psFree(query); 1362 1363 int numDeleted = psDBAffectedRows(config->dbh); 1321 1364 1322 1365 psLogMsg("warptool", PS_LOG_INFO, "Deleted %d warpSkyfiles", numDeleted); 1323 1366 1324 psFree(where); 1325 1326 if (!psDBCommit(config->dbh)) { 1327 psError(PS_ERR_UNKNOWN, false, "database error"); 1328 return false; 1329 } 1367 // fix any faulted warpSkyfiles in data_state 'update' 1368 1369 if (!p_psDBRunQuery(config->dbh, query_updated)) { 1370 psError(PS_ERR_UNKNOWN, false, "database error"); 1371 psFree(query_updated); 1372 return false; 1373 } 1374 psFree(query_updated); 1375 1376 int numUpdated = psDBAffectedRows(config->dbh); 1377 1378 psLogMsg("warptool", PS_LOG_INFO, "Updated %d warpSkyfiles", numUpdated); 1330 1379 1331 1380 return true; … … 1414 1463 psString query = pxDataGet("warptool_pendingcleanuprun.sql"); 1415 1464 if (!query) { 1416 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1465 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1417 1466 return false; 1418 1467 } … … 1477 1526 psString query = pxDataGet("warptool_pendingcleanupskyfile.sql"); 1478 1527 if (!query) { 1479 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1528 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1480 1529 return false; 1481 1530 } … … 1538 1587 psString query = pxDataGet("warptool_donecleanup.sql"); 1539 1588 if (!query) { 1540 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1589 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1541 1590 return false; 1542 1591 } … … 1626 1675 } 1627 1676 1628 // note only updates if warpRun.state = run_state 1629 // XXX note that we have removed this constraint for now 1630 if (!p_psDBRunQueryF(config->dbh, query, data_state, warp_id, skycell_id)) { 1677 psString set_magicked_skyfile = psStringCopy(""); 1678 psString set_magicked_run = psStringCopy(""); 1679 if (!strcmp(data_state, "full")) { 1680 // magicked is only an argument for for -tofullskyfile 1681 PXOPT_LOOKUP_S64(magicked, config->args, "-set_magicked", false, false); 1682 if (magicked) { 1683 psStringAppend(&set_magicked_skyfile, "\n , warpSkyfile.magicked = %" PRId64, magicked); 1684 psStringAppend(&set_magicked_run, "\n, warpRun.magicked = %" PRId64, magicked); 1685 } 1686 } else if (!strcmp(data_state, "cleaned") || !strcmp(data_state, "purged")) { 1687 // if magicked is currently nonzero set it to -1 1688 // Set warpRun.magicked when the first skyfile is cleaned 1689 psStringAppend(&set_magicked_skyfile, "\n, warpSkyfile.magicked = IF(warpSkyfile.magicked = 0, 0, -1), warpRun.magicked = IF(warpRun.magicked = 0, 0, -1)"); 1690 } 1691 1692 if (!p_psDBRunQueryF(config->dbh, query, data_state, set_magicked_skyfile, warp_id, skycell_id)) { 1631 1693 psError(PS_ERR_UNKNOWN, false, "database error"); 1632 1694 // rollback … … 1638 1700 } 1639 1701 psFree(query); 1702 psFree(set_magicked_skyfile); 1640 1703 1641 1704 query = pxDataGet("warptool_change_run_state.sql"); 1642 if (!p_psDBRunQueryF(config->dbh, query, data_state, warp_id, data_state)) {1705 if (!p_psDBRunQueryF(config->dbh, query, data_state, set_magicked_run, warp_id, data_state)) { 1643 1706 // rollback 1644 1707 if (!psDBRollback(config->dbh)) { … … 1648 1711 return false; 1649 1712 } 1713 psFree(set_magicked_run); 1650 1714 1651 1715 if (!psDBCommit(config->dbh)) { … … 1667 1731 { 1668 1732 return change_skyfile_data_state(config, "purged", "goto_purged"); 1733 } 1734 static bool toscrubbedskyfileMode(pxConfig *config) 1735 { 1736 return change_skyfile_data_state(config, "scrubbed", "goto_scrubbed"); 1669 1737 } 1670 1738 … … 1677 1745 PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", true, false); 1678 1746 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 1679 1680 psString query = pxDataGet("warptool_updateskyfile.sql"); 1681 1682 if (!p_psDBRunQueryF(config->dbh, query, fault, warp_id, skycell_id)) { 1683 psError(PS_ERR_UNKNOWN, false, "database error"); 1684 return false; 1685 } 1686 psFree(query); 1747 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 1748 1749 if (!state) { 1750 psString query = pxDataGet("warptool_updateskyfile.sql"); 1751 1752 if (!p_psDBRunQueryF(config->dbh, query, fault, warp_id, skycell_id)) { 1753 psError(PS_ERR_UNKNOWN, false, "database error"); 1754 return false; 1755 } 1756 psFree(query); 1757 } 1758 else { 1759 if (strcmp(state,"error_cleaned") == 0) { 1760 change_skyfile_data_state(config,"error_cleaned","goto_cleaned"); 1761 } 1762 else if (strcmp(state, "error_scrubbed") == 0) { 1763 change_skyfile_data_state(config,"error_scrubbed","goto_scrubbed"); 1764 } 1765 else if (strcmp(state, "error_purged") == 0) { 1766 change_skyfile_data_state(config,"error_purged","goto_purged"); 1767 } 1768 else { 1769 psError(PS_ERR_UNKNOWN, false, "unhandled state given"); 1770 return(false); 1771 } 1772 } 1687 1773 1688 1774 return true; … … 1709 1795 } 1710 1796 1797 if (!pxExportVersion(config, f)) { 1798 psError(PS_ERR_UNKNOWN, false, "failed to write dbversion output file"); 1799 return false; 1800 } 1711 1801 psMetadata *where = psMetadataAlloc(); 1712 1802 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); … … 1724 1814 psString query = pxDataGet(tables[i].sqlFilename); 1725 1815 if (!query) { 1726 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1816 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1727 1817 return false; 1728 1818 } … … 1801 1891 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 1802 1892 1803 fprintf (stdout, "---- input ----\n"); 1893 #ifdef notdef 1894 fprintf (stderr, "---- input ----\n"); 1804 1895 psMetadataPrint (stderr, input, 1); 1896 #endif 1897 1898 if (!pxCheckImportVersion(config, input)) { 1899 psError(PS_ERR_UNKNOWN, false, "pxCheckImportVersion failed"); 1900 return false; 1901 } 1805 1902 1806 1903 psMetadataItem *item = psMetadataLookup (input, "warpRun"); … … 1865 1962 return true; 1866 1963 } 1964 1965 static bool runstateMode(pxConfig *config) 1966 { 1967 PS_ASSERT_PTR_NON_NULL(config, false); 1968 1969 psMetadata *where = psMetadataAlloc(); 1970 PXOPT_COPY_S64(config->args, where, "-warp_id", "warpRun.warp_id", "=="); 1971 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "=="); 1972 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); 1973 pxAddLabelSearchArgs (config, where, "-label", "warpRun.label", "LIKE"); 1974 1975 // PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 1976 PXOPT_LOOKUP_BOOL(no_magic, config->args, "-no_magic", false); 1977 1978 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1979 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1980 1981 psString query = pxDataGet("warptool_runstate.sql"); 1982 if (!query) { 1983 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1984 return false; 1985 } 1986 1987 if (psListLength(where->list)) { 1988 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1989 psStringAppend(&query, " WHERE %s", whereClause); 1990 psFree(whereClause); 1991 } else { 1992 psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required"); 1993 return false; 1994 } 1995 psFree(where); 1996 1997 // treat limit == 0 as "no limit" 1998 if (limit) { 1999 psString limitString = psDBGenerateLimitSQL(limit); 2000 psStringAppend(&query, " %s", limitString); 2001 psFree(limitString); 2002 } 2003 2004 if (!p_psDBRunQuery(config->dbh, query)) { 2005 psError(PS_ERR_UNKNOWN, false, "database error"); 2006 psFree(query); 2007 return false; 2008 } 2009 psFree(query); 2010 2011 psArray *output = p_psDBFetchResult(config->dbh); 2012 if (!output) { 2013 psErrorCode err = psErrorCodeLast(); 2014 switch (err) { 2015 case PS_ERR_DB_CLIENT: 2016 psError(PXTOOLS_ERR_SYS, false, "database error"); 2017 case PS_ERR_DB_SERVER: 2018 psError(PXTOOLS_ERR_PROG, false, "database error"); 2019 default: 2020 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 2021 } 2022 2023 return false; 2024 } 2025 if (!psArrayLength(output)) { 2026 psTrace("warptool", PS_LOG_INFO, "no rows found"); 2027 psFree(output); 2028 return true; 2029 } 2030 2031 if (psArrayLength(output)) { 2032 // negative simple so the default is true 2033 if (!ippdbPrintMetadatas(stdout, output, "warpRunState", !simple)) { 2034 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 2035 psFree(output); 2036 return false; 2037 } 2038 } 2039 2040 psFree(output); 2041 2042 return true; 2043 } 2044 2045 static bool listrunMode(pxConfig *config) 2046 { 2047 PS_ASSERT_PTR_NON_NULL(config, false); 2048 2049 psMetadata *where = psMetadataAlloc(); 2050 PXOPT_COPY_S64(config->args, where, "-warp_id", "warpRun.warp_id", "=="); 2051 PXOPT_COPY_STR(config->args, where, "-tess_id", "warpRun.tess_id", "=="); 2052 PXOPT_COPY_STR(config->args, where, "-state", "warpRun.state", "=="); 2053 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "=="); 2054 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); 2055 PXOPT_COPY_S64(config->args, where, "-fake_id", "fakeRun.fake_id", "=="); 2056 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawExp.dateobs", ">="); 2057 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawExp.dateobs", "<="); 2058 PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "LIKE"); 2059 PXOPT_COPY_S64(config->args, where, "-magicked", "warpRun.magicked", "=="); 2060 pxAddLabelSearchArgs (config, where, "-label", "warpRun.label", "LIKE"); 2061 pxAddLabelSearchArgs (config, where, "-data_group", "warpRun.data_group", "LIKE"); 2062 pxAddLabelSearchArgs (config, where, "-dist_group", "warpRun.dist_group", "LIKE"); 2063 2064 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 2065 2066 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 2067 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 2068 PXOPT_LOOKUP_BOOL(pstamp_order, config->args, "-pstamp_order", false); 2069 2070 // find all rawImfiles matching the default query 2071 psString query = pxDataGet("warptool_listrun.sql"); 2072 if (!query) { 2073 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 2074 return false; 2075 } 2076 2077 // generate where strings for arguments that require extra processing 2078 // beyond PXOPT_COPY* 2079 psString where2 = NULL; 2080 if (!pxmagicAddWhere(config, &where2, "warpRun")) { 2081 psError(psErrorCodeLast(), false, "pxMagicAddWhere failed"); 2082 return false; 2083 } 2084 if (!pxspaceAddWhere(config, &where2, "rawExp")) { 2085 psError(psErrorCodeLast(), false, "pxSpaceAddWhere failed"); 2086 return false; 2087 } 2088 2089 if (psListLength(where->list)) { 2090 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 2091 psStringAppend(&query, " WHERE %s", whereClause); 2092 psFree(whereClause); 2093 } else if (!all && !where2) { 2094 psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required"); 2095 return false; 2096 } 2097 2098 if (where2) { 2099 if (psListLength(where->list)) { 2100 psStringAppend(&query, " %s", where2); 2101 } else { 2102 psStringAppend(&query, " WHERE 1 %s", where2); 2103 } 2104 } 2105 psFree(where); 2106 2107 if (pstamp_order) { 2108 // put runs in order of exposure id with newest chip Runs first 2109 // The postage stamp parser depends on this behavior 2110 psStringAppend(&query, "\nORDER by exp_id, warp_id DESC"); 2111 } 2112 2113 2114 // treat limit == 0 as "no limit" 2115 if (limit) { 2116 psString limitString = psDBGenerateLimitSQL(limit); 2117 psStringAppend(&query, " %s", limitString); 2118 psFree(limitString); 2119 } 2120 2121 if (!p_psDBRunQuery(config->dbh, query)) { 2122 psError(PS_ERR_UNKNOWN, false, "database error"); 2123 psFree(query); 2124 return false; 2125 } 2126 psFree(query); 2127 2128 psArray *output = p_psDBFetchResult(config->dbh); 2129 if (!output) { 2130 psErrorCode err = psErrorCodeLast(); 2131 switch (err) { 2132 case PS_ERR_DB_CLIENT: 2133 psError(PXTOOLS_ERR_SYS, false, "database error"); 2134 case PS_ERR_DB_SERVER: 2135 psError(PXTOOLS_ERR_PROG, false, "database error"); 2136 default: 2137 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 2138 } 2139 2140 return false; 2141 } 2142 if (!psArrayLength(output)) { 2143 psTrace("warptool", PS_LOG_INFO, "no rows found"); 2144 psFree(output); 2145 return true; 2146 } 2147 2148 if (psArrayLength(output)) { 2149 // negative simple so the default is true 2150 if (!ippdbPrintMetadatas(stdout, output, "warpRun", !simple)) { 2151 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 2152 psFree(output); 2153 return false; 2154 } 2155 } 2156 2157 psFree(output); 2158 2159 return true; 2160 } 2161 2162 // a very specfic function to queue a cleaned warpSkyfile to be updated 2163 static bool setskyfiletoupdateMode(pxConfig *config) 2164 { 2165 PS_ASSERT_PTR_NON_NULL(config, NULL); 2166 2167 PXOPT_LOOKUP_S64(warp_id, config->args, "-warp_id", true, false); 2168 PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", false, false); 2169 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 2170 2171 psString query = pxDataGet("warptool_setskyfiletoupdate.sql"); 2172 if (!query) { 2173 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 2174 return false; 2175 } 2176 2177 psString setHook = psStringCopy(""); 2178 if (label) { 2179 psStringAppend(&setHook, "\n , warpRun.label = '%s'", label); 2180 } 2181 2182 if (skycell_id) { 2183 psStringAppend(&query, " AND (warpSkyfile.skycell_id = '%s')", skycell_id); 2184 } 2185 2186 if (!p_psDBRunQueryF(config->dbh, query, setHook, warp_id)) { 2187 psError(PS_ERR_UNKNOWN, false, "database error"); 2188 return false; 2189 } 2190 2191 psFree(setHook); 2192 psFree(query); 2193 2194 return true; 2195 }
Note:
See TracChangeset
for help on using the changeset viewer.
