Changeset 27838 for branches/tap_branches/ippTools/src
- Timestamp:
- May 3, 2010, 8:41:49 AM (16 years ago)
- Location:
- branches/tap_branches
- Files:
-
- 72 edited
- 8 copied
-
. (modified) (1 prop)
-
ippTools/src (modified) (1 prop)
-
ippTools/src/Makefile.am (modified) (5 diffs)
-
ippTools/src/addtool.c (modified) (18 diffs)
-
ippTools/src/addtoolConfig.c (modified) (4 diffs)
-
ippTools/src/caltoolConfig.c (modified) (1 diff)
-
ippTools/src/camtool.c (modified) (30 diffs)
-
ippTools/src/camtoolConfig.c (modified) (3 diffs)
-
ippTools/src/chiptool.c (modified) (40 diffs)
-
ippTools/src/chiptool.h (modified) (3 diffs)
-
ippTools/src/chiptoolConfig.c (modified) (10 diffs)
-
ippTools/src/detselect.c (modified) (2 diffs)
-
ippTools/src/dettool.c (modified) (49 diffs)
-
ippTools/src/dettool.h (modified) (5 diffs)
-
ippTools/src/dettoolConfig.c (modified) (26 diffs)
-
ippTools/src/dettool_correction.c (modified) (5 diffs)
-
ippTools/src/dettool_detrunsummary.c (modified) (6 diffs)
-
ippTools/src/dettool_normalizedexp.c (modified) (6 diffs)
-
ippTools/src/dettool_normalizedimfile.c (modified) (5 diffs)
-
ippTools/src/dettool_normalizedstat.c (modified) (5 diffs)
-
ippTools/src/dettool_processedexp.c (modified) (6 diffs)
-
ippTools/src/dettool_processedimfile.c (modified) (7 diffs)
-
ippTools/src/dettool_residexp.c (modified) (7 diffs)
-
ippTools/src/dettool_residimfile.c (modified) (6 diffs)
-
ippTools/src/dettool_stack.c (modified) (5 diffs)
-
ippTools/src/difftool.c (modified) (68 diffs)
-
ippTools/src/difftool.h (modified) (2 diffs)
-
ippTools/src/difftoolConfig.c (modified) (13 diffs)
-
ippTools/src/disttool.c (modified) (54 diffs)
-
ippTools/src/disttool.h (modified) (2 diffs)
-
ippTools/src/disttoolConfig.c (modified) (12 diffs)
-
ippTools/src/dqstatstool.c (copied) (copied from trunk/ippTools/src/dqstatstool.c )
-
ippTools/src/dqstatstool.h (copied) (copied from trunk/ippTools/src/dqstatstool.h )
-
ippTools/src/dqstatstoolConfig.c (copied) (copied from trunk/ippTools/src/dqstatstoolConfig.c )
-
ippTools/src/faketool.c (modified) (18 diffs)
-
ippTools/src/faketoolConfig.c (modified) (2 diffs)
-
ippTools/src/flatcorr.c (modified) (29 diffs)
-
ippTools/src/flatcorrConfig.c (modified) (3 diffs)
-
ippTools/src/magicdstool.c (modified) (40 diffs)
-
ippTools/src/magicdstool.h (modified) (2 diffs)
-
ippTools/src/magicdstoolConfig.c (modified) (6 diffs)
-
ippTools/src/magictool.c (modified) (19 diffs)
-
ippTools/src/magictoolConfig.c (modified) (3 diffs)
-
ippTools/src/pstamptool.c (modified) (40 diffs)
-
ippTools/src/pstamptool.h (modified) (1 diff)
-
ippTools/src/pstamptoolConfig.c (modified) (11 diffs)
-
ippTools/src/pubtool.c (modified) (7 diffs)
-
ippTools/src/pubtool.h (modified) (1 diff)
-
ippTools/src/pubtoolConfig.c (modified) (4 diffs)
-
ippTools/src/pxadd.c (modified) (3 diffs)
-
ippTools/src/pxadmin.c (modified) (5 diffs)
-
ippTools/src/pxcam.c (modified) (5 diffs)
-
ippTools/src/pxcam.h (modified) (1 diff)
-
ippTools/src/pxchip.c (modified) (6 diffs)
-
ippTools/src/pxchip.h (modified) (1 diff)
-
ippTools/src/pxdqstats.c (copied) (copied from trunk/ippTools/src/pxdqstats.c )
-
ippTools/src/pxdqstats.h (copied) (copied from trunk/ippTools/src/pxdqstats.h )
-
ippTools/src/pxerrors.c (modified) (1 diff)
-
ippTools/src/pxfake.c (modified) (1 diff)
-
ippTools/src/pxmagic.c (modified) (3 diffs)
-
ippTools/src/pxregister.c (modified) (1 diff)
-
ippTools/src/pxregister.h (modified) (1 diff)
-
ippTools/src/pxtools.c (modified) (11 diffs)
-
ippTools/src/pxtools.h (modified) (1 diff)
-
ippTools/src/pxtoolsErrorCodes.dat (modified) (1 diff)
-
ippTools/src/pztool.c (modified) (9 diffs)
-
ippTools/src/pztoolConfig.c (modified) (1 diff)
-
ippTools/src/receivetool.c (modified) (12 diffs)
-
ippTools/src/receivetoolConfig.c (modified) (2 diffs)
-
ippTools/src/regtool.c (modified) (31 diffs)
-
ippTools/src/regtool.h (modified) (1 diff)
-
ippTools/src/regtoolConfig.c (modified) (10 diffs)
-
ippTools/src/stacktool.c (modified) (21 diffs)
-
ippTools/src/stacktoolConfig.c (modified) (5 diffs)
-
ippTools/src/staticskytool.c (copied) (copied from trunk/ippTools/src/staticskytool.c )
-
ippTools/src/staticskytool.h (copied) (copied from trunk/ippTools/src/staticskytool.h )
-
ippTools/src/staticskytoolConfig.c (copied) (copied from trunk/ippTools/src/staticskytoolConfig.c )
-
ippTools/src/warptool.c (modified) (35 diffs)
-
ippTools/src/warptool.h (modified) (1 diff)
-
ippTools/src/warptoolConfig.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/tap_branches
- Property svn:mergeinfo changed
-
branches/tap_branches/ippTools/src
- Property svn:ignore
-
old new 16 16 difftool 17 17 disttool 18 dqstatstool 18 19 faketool 19 20 flatcorr
-
- Property svn:ignore
-
branches/tap_branches/ippTools/src/Makefile.am
r25773 r27838 9 9 disttool \ 10 10 flatcorr \ 11 dqstatstool \ 11 12 magictool \ 12 13 magicdstool \ … … 32 33 pxdata.h \ 33 34 pxfake.h \ 35 pxdqstats.h 34 36 pxmagic.h \ 35 37 pxregister.h \ … … 52 54 flatcorr.h \ 53 55 faketool.h \ 56 dqstatstool.h \ 54 57 magictool.h \ 55 58 magicdstool.h \ … … 77 80 pxfake.c \ 78 81 pxfault.c \ 82 pxdqstats.c \ 79 83 pxmagic.c \ 80 84 pxregister.c \ … … 142 146 faketool.c \ 143 147 faketoolConfig.c 148 149 dqstatstool_CFLAGS = $(PSLIB_CFLAGS) $(PSMODULES_CFLAGS) $(IPPDB_CFLAGS) 150 dqstatstool_LDADD = $(PSLIB_LIBS) $(PSMODULES_LIBS) $(IPPDB_LIBS) libpxtools.la 151 dqstatstool_SOURCES = \ 152 dqstatstool.c \ 153 dqstatstoolConfig.c 144 154 145 155 magictool_CFLAGS = $(PSLIB_CFLAGS) $(PSMODULES_CFLAGS) $(IPPDB_CFLAGS) -
branches/tap_branches/ippTools/src/addtool.c
r25840 r27838 98 98 pxcamGetSearchArgs (config, where); 99 99 PXOPT_COPY_S64(config->args, where, "-cam_id", "camRun.cam_id", "=="); 100 pxAddLabelSearchArgs (config, where, "-label", "camRun.label", "=="); 100 pxAddLabelSearchArgs (config, where, "-label", "camRun.label", "=="); // define using camRun label 101 pxAddLabelSearchArgs (config, where, "-data_group","camRun.data_group", "=="); // define using camRun label 101 102 PXOPT_COPY_STR(config->args, where, "-reduction", "camRun.reduction", "=="); 102 103 103 if (!psListLength(where->list) && 104 !psMetadataLookupBool(NULL, config->args, "-all")) { 104 if (!psListLength(where->list)) { 105 105 psFree(where); 106 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");106 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 107 107 return false; 108 108 } … … 115 115 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 116 116 PXOPT_LOOKUP_BOOL(image_only, config->args, "-image_only", false); 117 PXOPT_LOOKUP_BOOL(destreaked, config->args, "-destreaked", false); 117 118 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 118 119 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 119 120 120 121 // find the cam_id of all the exposures that we want to queue up. 121 psString query = pxDataGet("addtool_find_cam_id.sql");122 if (! query) {123 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");122 psString bare_query = pxDataGet("addtool_find_cam_id.sql"); 123 if (!bare_query) { 124 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 124 125 psFree(where); 125 126 return false; 126 127 } 128 129 // prevent queueing an addRun if a given exposure has already been added to 130 // the given dvo database 131 psString dvodb_string = NULL; 132 if (dvodb) { 133 // user supplied dvodb 134 psStringAppend(&dvodb_string, "(previous_dvodb = '%s')", dvodb); 135 } else { 136 // inherit dvodb from camRun, avoid matching NULL 137 psStringAppend(&dvodb_string, "(camRun.dvodb IS NOT NULL AND previous_dvodb = camRun.dvodb)"); 138 } 139 // Take the bare query and add the dvodb selector 140 psString query = NULL; 141 psStringAppend(&query, bare_query, dvodb_string); 142 psFree(dvodb_string); 143 psFree(bare_query); 127 144 128 145 // use psDBGenerateWhereConditionSQL because the SQL ends in a WHERE … … 131 148 psStringAppend(&query, " AND %s", whereClause); 132 149 psFree(whereClause); 150 } else { 151 psError(PS_ERR_UNKNOWN, true, "search parameters are required"); 152 return false; 133 153 } 134 154 psFree(where); 155 156 if (destreaked) { 157 psStringAppend(&query, " AND (camRun.magicked > 0)"); 158 } 135 159 136 160 if (!p_psDBRunQuery(config->dbh, query)) { … … 214 238 // queue the exp 215 239 if (!pxaddQueueByCamID(config, 216 row->cam_id,217 workdir ? workdir : row->workdir,218 reduction ? reduction : row->reduction,219 label ? label : row->label,220 data_group ? data_group : (label ? label : row->label),221 dvodb ? dvodb : row->dvodb,240 row->cam_id, 241 workdir ? workdir : row->workdir, 242 reduction ? reduction : row->reduction, 243 label ? label : row->label, 244 data_group ? data_group : (row->data_group ? row->data_group : (label ? label : row->label)), 245 dvodb ? dvodb : row->dvodb, 222 246 note ? note : NULL, 223 image_only247 image_only 224 248 )) { 225 249 if (!psDBRollback(config->dbh)) { … … 256 280 PXOPT_COPY_STR(config->args, where, "-state", "addRun.state", "=="); 257 281 PXOPT_COPY_STR(config->args, where, "-reduction", "addRun.reduction", "=="); 282 PXOPT_COPY_STR(config->args, where, "-dvodb", "addRun.dvodb", "=="); 258 283 259 284 if (!psListLength(where->list)) { 260 285 psFree(where); 261 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");286 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 262 287 return false; 263 288 } … … 266 291 267 292 // pxUpdateRun gets parameters from config->args and runs the update query 268 bool result = pxUpdateRun(config, where, &query, "addRun", false); 293 bool result = pxUpdateRun(config, where, &query, "addRun", "add_id", 294 "addProcessedExp", false); 269 295 270 296 psFree(query); … … 272 298 273 299 return result; 274 275 276 #ifdef notdef277 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false);278 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false);279 280 if ((!state) && (!label)) {281 psError(PXTOOLS_ERR_DATA, false, "parameters are required");282 psFree(where);283 return false;284 }285 286 if (state) {287 // set addRun.state to state288 if (!pxaddRunSetStateByQuery(config, where, state)) {289 psFree(where);290 return false;291 }292 }293 294 if (label) {295 // set addRun.label to label296 if (!pxaddRunSetLabelByQuery(config, where, label)) {297 psFree(where);298 return false;299 }300 }301 302 psFree(where);303 304 return true;305 #endif306 300 } 307 301 … … 322 316 psString query = pxDataGet("addtool_find_pendingexp.sql"); 323 317 if (!query) { 324 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");318 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 325 319 return false; 326 320 } … … 388 382 psString query = pxDataGet("addtool_find_pendingexp.sql"); 389 383 if (!query) { 390 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");384 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 391 385 return false; 392 386 } … … 430 424 dtime_addstar, 431 425 path_base, 432 fault426 fault 433 427 ); 434 428 … … 482 476 !psMetadataLookupBool(NULL, config->args, "-all")) { 483 477 psFree(where); 484 psError(PXTOOLS_ERR_ DATA, false, "search parameters (or -all) are required");478 psError(PXTOOLS_ERR_CONFIG, false, "search parameters (or -all) are required"); 485 479 return false; 486 480 } … … 488 482 psString query = pxDataGet("addtool_find_processedexp.sql"); 489 483 if (!query) { 490 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");484 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 491 485 return false; 492 486 } … … 496 490 psStringAppend(&query, " WHERE %s", whereClause); 497 491 psFree(whereClause); 498 } 492 } 499 493 500 494 // we either add AND (condition) or WHERE (condition): … … 502 496 // list only faulted rows 503 497 psStringAppend(&query, " %s", " AND addProcessedExp.fault != 0"); 504 } 498 } 505 499 if (where->list && !faulted) { 506 500 // don't list faulted rows … … 510 504 // list only faulted rows 511 505 psStringAppend(&query, " %s", " WHERE addProcessedExp.fault != 0"); 512 } 506 } 513 507 if (!where->list && !faulted) { 514 508 // don't list faulted rows … … 571 565 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { 572 566 psFree(where); 573 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");567 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 574 568 return false; 575 569 } … … 584 578 psString query = pxDataGet("addtool_reset_faulted_runs.sql"); 585 579 if (!query) { 586 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");580 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 587 581 psFree(where); 588 582 return false; … … 616 610 psError(PS_ERR_UNKNOWN, false, "database error"); 617 611 } 618 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");612 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 619 613 psFree(where); 620 614 return false; -
branches/tap_branches/ippTools/src/addtoolConfig.c
r25835 r27838 42 42 config->modules = pmConfigRead(&argc, argv, NULL); 43 43 if (!config->modules) { 44 psError( PS_ERR_UNKNOWN, false, "Can't find site configuration");44 psError(psErrorCodeLast(), false, "Can't find site configuration"); 45 45 psFree(config); 46 46 return NULL; … … 52 52 pxcamSetSearchArgs(definebyqueryArgs); 53 53 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by camRun label", NULL); 54 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by camRun data_group", NULL); 54 55 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-reduction", 0, "search by camRun reduction class", NULL); 56 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-destreaked", 0, "only queue destreaked runs", false); 55 57 56 58 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir", NULL); … … 65 67 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define new dist_group", NULL); 66 68 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_note", 0, "define new note", NULL); 67 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false);68 69 69 70 // -updaterun … … 72 73 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-cam_id", 0, "search by cam_id", 0); 73 74 pxcamSetSearchArgs(updaterunArgs); 74 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "search by addRun label", NULL);75 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "search by addRun state", NULL);75 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "search by addRun label", NULL); 76 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "search by addRun state", NULL); 76 77 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-reduction", 0, "search by addRun reduction class", NULL); 78 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-dvodb", 0, "search by dvodb", NULL); 77 79 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 78 80 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "set state", NULL); 79 81 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_label", 0, "set label", NULL); 82 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dvodb", 0, "set dvodb", NULL); 80 83 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_data_group", 0, "define new data_group", NULL); 81 84 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define new dist_group", NULL); -
branches/tap_branches/ippTools/src/caltoolConfig.c
r18561 r27838 38 38 config->modules = pmConfigRead(&argc, argv, NULL); 39 39 if (!config->modules) { 40 psError( PS_ERR_UNKNOWN, false, "Can't find site configuration");40 psError(psErrorCodeLast(), false, "Can't find site configuration"); 41 41 psFree(config); 42 42 return NULL; -
branches/tap_branches/ippTools/src/camtool.c
r25851 r27838 109 109 psMetadata *where = psMetadataAlloc(); 110 110 pxcamGetSearchArgs (config, where); 111 pxAddLabelSearchArgs (config, where, "-label", "c amRun.label", "==");112 PXOPT_COPY_STR(config->args, where, "-reduction", "c amRun.reduction", "==");111 pxAddLabelSearchArgs (config, where, "-label", "chipRun.label", "=="); // define using chipRun label 112 PXOPT_COPY_STR(config->args, where, "-reduction", "chipRun.reduction", "=="); 113 113 114 114 if (!psListLength(where->list) && 115 115 !psMetadataLookupBool(NULL, config->args, "-all")) { 116 116 psFree(where); 117 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");117 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 118 118 return false; 119 119 } … … 133 133 psString query = pxDataGet("camtool_find_chip_id.sql"); 134 134 if (!query) { 135 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");135 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 136 136 psFree(where); 137 137 return false; … … 184 184 bool status; 185 185 char *end_stage = psMetadataLookupStr(&status, md, "end_stage"); 186 if (end_stage && strcasecmp(end_stage, "warp")) continue;186 if (end_stage && strcasecmp(end_stage, "warp")) continue; 187 187 188 188 char *raw_tess_id = psMetadataLookupStr(&status, md, "tess_id"); 189 if (raw_tess_id || tess_id) continue;189 if (raw_tess_id || tess_id) continue; 190 190 191 191 char *label = psMetadataLookupStr(&status, md, "label"); … … 193 193 194 194 if (!status) { 195 psError(PS_ERR_UNKNOWN, false, "cannot queue analysis to WARP without a defined tess id: label: %s, exp_id %" PRId64, label, exp_id);195 psError(PS_ERR_UNKNOWN, false, "cannot queue analysis to WARP without a defined tess id: label: %s, exp_id %" PRId64, label, exp_id); 196 196 psFree(output); 197 197 return false; … … 199 199 } 200 200 201 // loop over our list of c amRun rows201 // loop over our list of chipRun rows 202 202 for (long i = 0; i < psArrayLength(output); i++) { 203 203 psMetadata *md = output->data[i]; 204 204 205 c amRunRow *row = camRunObjectFromMetadata(md);205 chipRunRow *row = chipRunObjectFromMetadata(md); 206 206 if (!row) { 207 psError(PS_ERR_UNKNOWN, false, "failed to convert metadata into c amRun");207 psError(PS_ERR_UNKNOWN, false, "failed to convert metadata into chipRun"); 208 208 psFree(output); 209 209 return false; … … 222 222 tess_id ? tess_id : row->tess_id, 223 223 end_stage ? end_stage : row->end_stage, 224 row->magicked, 224 225 note 225 226 )) { … … 254 255 PXOPT_COPY_S64(config->args, where, "-cam_id", "camRun.cam_id", "=="); 255 256 PXOPT_COPY_STR(config->args, where, "-label", "camRun.label", "=="); 257 PXOPT_COPY_STR(config->args, where, "-data_group","camRun.data_group", "=="); 256 258 PXOPT_COPY_STR(config->args, where, "-state", "camRun.state", "=="); 257 259 PXOPT_COPY_STR(config->args, where, "-reduction", "camRun.reduction", "=="); … … 259 261 if (!psListLength(where->list)) { 260 262 psFree(where); 261 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");263 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 262 264 return false; 263 265 } … … 265 267 266 268 // pxUpdateRun gets parameters from config->args and updates 267 bool result = pxUpdateRun(config, where, &query, "camRun", true);269 bool result = pxUpdateRun(config, where, &query, "camRun", "cam_id", "camProcessedExp", true); 268 270 if (!result) { 269 psError( PXTOOLS_ERR_DATA, false, "pxUpdateRun failed");271 psError(psErrorCodeLast(), false, "pxUpdateRun failed"); 270 272 } 271 273 … … 292 294 psString query = pxDataGet("camtool_find_pendingexp.sql"); 293 295 if (!query) { 294 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");296 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 295 297 return false; 296 298 } … … 357 359 psString query = pxDataGet("camtool_find_pendingimfile.sql"); 358 360 if (!query) { 359 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");361 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 360 362 return false; 361 363 } … … 479 481 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 480 482 PXOPT_LOOKUP_S16(quality, config->args, "-quality", false, false); 481 482 PXOPT_LOOKUP_S64(magicked, config->args, "-magicked", false, false); 483 484 // Get this from the chipRun 485 // PXOPT_LOOKUP_S64(magicked, config->args, "-magicked", false, false); 483 486 484 487 // generate restrictions … … 488 491 psString query = pxDataGet("camtool_find_pendingexp.sql"); 489 492 if (!query) { 490 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");493 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 491 494 return false; 492 495 } … … 523 526 return false; 524 527 } 528 529 bool status; 530 psS64 chip_magicked = psMetadataLookupS64(&status, output->data[0], "chip_magicked"); 525 531 526 532 camRunRow *pendingRow = camRunObjectFromMetadata(output->data[0]); … … 603 609 } 604 610 605 // since there is only one exp per 'new' set camRun.state = 'full' 606 if (!pxcamRunSetState(config, row->cam_id, "full", magicked)) { 607 psError(PS_ERR_UNKNOWN, false, "failed to change camRun.state for cam_id: %" PRId64, row->cam_id); 608 psFree(row); 609 psFree(pendingRow); 610 return false; 611 } 612 613 // NULL for end_stage means go as far as possible 614 // EAM : skip here if fault != 0 615 // Also, we can run fake even if tess_id is not defined 616 if (fault || (pendingRow->end_stage && psStrcasestr(pendingRow->end_stage, "cam"))) { 611 if (fault) { 617 612 psFree(row); 618 613 psFree(pendingRow); … … 623 618 return true; 624 619 } 620 // else continue on... 621 622 // since there is only one exp per 'new' set camRun.state = 'full' 623 // propagate magicked state from chipRun 624 if (!pxcamRunSetState(config, row->cam_id, "full", chip_magicked)) { 625 psError(PS_ERR_UNKNOWN, false, "failed to change camRun.state for cam_id: %" PRId64, row->cam_id); 626 psFree(row); 627 psFree(pendingRow); 628 return false; 629 } 625 630 psFree(row); 626 // else continue on... 631 632 // EAM: NULL for end_stage means go as far as possible 633 // Also, we can run fake even if tess_id is not defined 634 if (pendingRow->end_stage && psStrcasestr(pendingRow->end_stage, "cam")) { 635 psFree(pendingRow); 636 if (!psDBCommit(config->dbh)) { 637 psError(PS_ERR_UNKNOWN, false, "database error"); 638 return false; 639 } 640 return true; 641 } 627 642 628 643 if (!pxfakeQueueByCamID(config, … … 666 681 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 667 682 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 683 PXOPT_LOOKUP_BOOL(pstamp_order, config->args, "-pstamp_order", false); 668 684 669 685 // generate restrictions … … 672 688 PXOPT_COPY_S64(config->args, where, "-cam_id", "camRun.cam_id", "=="); 673 689 pxAddLabelSearchArgs (config, where, "-label", "camRun.label", "=="); 690 pxAddLabelSearchArgs (config, where, "-data_group", "camRun.data_group", "LIKE"); 674 691 PXOPT_COPY_STR(config->args, where, "-reduction", "camRun.reduction", "=="); 675 692 676 if (!psListLength(where->list) && 693 psString where2 = NULL; 694 if (!pxspaceAddWhere(config, &where2, "rawExp")) { 695 psError(psErrorCodeLast(), false, "pxSpaceAddWhere failed"); 696 return false; 697 } 698 if (!pxmagicAddWhere(config, &where2, "chipRun")) { 699 psError(psErrorCodeLast(), false, "pxSpaceAddWhere failed"); 700 return false; 701 } 702 if (!psListLength(where->list) && !where2 && 677 703 !psMetadataLookupBool(NULL, config->args, "-all")) { 678 704 psFree(where); 679 psError(PXTOOLS_ERR_ DATA, false, "search parameters (or -all) are required");705 psError(PXTOOLS_ERR_CONFIG, false, "search parameters (or -all) are required"); 680 706 return false; 681 707 } … … 683 709 psString query = pxDataGet("camtool_find_processedexp.sql"); 684 710 if (!query) { 685 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");711 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 686 712 return false; 687 713 } … … 691 717 psStringAppend(&query, " WHERE %s", whereClause); 692 718 psFree(whereClause); 693 } 719 } 694 720 695 721 // we either add AND (condition) or WHERE (condition): … … 697 723 // list only faulted rows 698 724 psStringAppend(&query, " %s", " AND camProcessedExp.fault != 0"); 699 } 725 } 700 726 if (where->list && !faulted) { 701 727 // don't list faulted rows … … 705 731 // list only faulted rows 706 732 psStringAppend(&query, " %s", " WHERE camProcessedExp.fault != 0"); 707 } 733 } 708 734 if (!where->list && !faulted) { 709 735 // don't list faulted rows … … 711 737 } 712 738 psFree(where); 713 714 // order by cam_id so that the postage stamp parser can easliy find the 'latest' astrometry 715 psStringAppend(&query, " ORDER BY cam_id"); 739 if (where2) { 740 psStringAppend(&query, " %s", where2); 741 psFree(where2); 742 } 743 744 745 if (pstamp_order) { 746 // put runs in order of exposure id with newest chip Runs first 747 // The postage stamp parser depends on this behavior 748 psStringAppend(&query, " ORDER BY exp_id, cam_id DESC"); 749 } 716 750 717 751 // treat limit == 0 as "no limit" … … 766 800 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { 767 801 psFree(where); 768 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");802 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 769 803 return false; 770 804 } … … 779 813 psString query = pxDataGet("camtool_reset_faulted_runs.sql"); 780 814 if (!query) { 781 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");815 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 782 816 psFree(where); 783 817 return false; … … 811 845 psError(PS_ERR_UNKNOWN, false, "database error"); 812 846 } 813 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");847 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 814 848 psFree(where); 815 849 return false; … … 951 985 psString query = pxDataGet("camtool_pendingcleanuprun.sql"); 952 986 if (!query) { 953 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");987 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 954 988 return false; 955 989 } … … 1016 1050 psString query = pxDataGet("camtool_pendingcleanupexp.sql"); 1017 1051 if (!query) { 1018 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1052 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1019 1053 return false; 1020 1054 } … … 1077 1111 psString query = pxDataGet("camtool_donecleanup.sql"); 1078 1112 if (!query) { 1079 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1113 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1080 1114 return false; 1081 1115 } … … 1163 1197 psString query = pxDataGet(tables[i].sqlFilename); 1164 1198 if (!query) { 1165 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1199 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1166 1200 return false; 1167 1201 } -
branches/tap_branches/ippTools/src/camtoolConfig.c
r25835 r27838 42 42 config->modules = pmConfigRead(&argc, argv, NULL); 43 43 if (!config->modules) { 44 psError( PS_ERR_UNKNOWN, false, "Can't find site configuration");44 psError(psErrorCodeLast(), false, "Can't find site configuration"); 45 45 psFree(config); 46 46 return NULL; … … 73 73 pxcamSetSearchArgs(updaterunArgs); 74 74 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-cam_id", 0, "search by cam_id", 0); 75 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "search by camRun label", NULL); 76 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "search by camRun state", NULL); 75 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "search by camRun label", NULL); 76 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-data_group", 0, "search by camRun data_group", NULL); 77 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "search by camRun state", NULL); 77 78 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-reduction", 0, "search by camRun reduction class", NULL); 78 79 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); … … 178 179 psMetadataAddS64(processedexpArgs, PS_LIST_TAIL, "-cam_id", 0, "search by cam_id", 0); 179 180 psMetadataAddStr(processedexpArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by camRun label", NULL); 181 psMetadataAddStr(processedexpArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by camRun data_group (LIKE comparison)", NULL); 180 182 psMetadataAddStr(processedexpArgs, PS_LIST_TAIL, "-reduction",0, "search by camRun reduction class", NULL); 183 pxspaceAddArguments(processedexpArgs); 184 pxmagicAddArguments(processedexpArgs); 185 186 psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-pstamp_order", 0, "order the results for the postage stamp server", false); 181 187 182 188 psMetadataAddU64(processedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); -
branches/tap_branches/ippTools/src/chiptool.c
r25851 r27838 36 36 37 37 static bool definebyqueryMode(pxConfig *config); 38 static bool definecopyMode(pxConfig *config); 38 39 static bool updaterunMode(pxConfig *config); 39 40 static bool pendingimfileMode(pxConfig *config); … … 58 59 static bool importrunMode(pxConfig *config); 59 60 static bool runstateMode(pxConfig *config); 61 static bool setimfiletoupdateMode(pxConfig *config); 62 static bool listrunMode(pxConfig *config); 60 63 61 64 # define MODECASE(caseName, func) \ … … 77 80 switch (config->mode) { 78 81 MODECASE(CHIPTOOL_MODE_DEFINEBYQUERY, definebyqueryMode); 82 MODECASE(CHIPTOOL_MODE_DEFINECOPY, definecopyMode); 79 83 MODECASE(CHIPTOOL_MODE_UPDATERUN, updaterunMode); 80 84 MODECASE(CHIPTOOL_MODE_PENDINGIMFILE, pendingimfileMode); … … 95 99 MODECASE(CHIPTOOL_MODE_TOFULLIMFILE, tofullimfileMode); 96 100 MODECASE(CHIPTOOL_MODE_TOPURGEDIMFILE, topurgedimfileMode); 97 MODECASE(CHIPTOOL_MODE_TOSCRUBBEDIMFILE, toscrubbedimfileMode);101 MODECASE(CHIPTOOL_MODE_TOSCRUBBEDIMFILE, toscrubbedimfileMode); 98 102 MODECASE(CHIPTOOL_MODE_EXPORTRUN, exportrunMode); 99 103 MODECASE(CHIPTOOL_MODE_IMPORTRUN, importrunMode); 100 104 MODECASE(CHIPTOOL_MODE_RUNSTATE, runstateMode); 105 MODECASE(CHIPTOOL_MODE_SETIMFILETOUPDATE, setimfiletoupdateMode); 106 MODECASE(CHIPTOOL_MODE_LISTRUN, listrunMode); 101 107 default: 102 108 psAbort("invalid option (this should not happen)"); … … 120 126 } 121 127 128 // Queue exposures for chip processing 129 static bool queue_exposures(pxConfig *config, // Configuration 130 const psArray *exps, // Exposures information 131 const char *workdir, // Working directory, or NULL to inherit 132 const char *label, // Label, or NULL to inherit 133 const char *data_group, // Data group, or NULL to inherit 134 const char *dist_group, // Distribution group, or NULL to inherit 135 const char *reduction, // Reduction class, or NULL to inherit 136 const char *expgroup, // Exposure group 137 const char *dvodb, // DVO database, or NULL to inherit 138 const char *tess_id, // Tessellation identifier, or NULL to inherit 139 const char *end_stage, // End stage, or NULL to inherit 140 const char *note // Note 141 ) 142 { 143 // start a transaction so we don't end up with an exp without any associted 144 // imfiles 145 if (!psDBTransaction(config->dbh)) { 146 psError(PS_ERR_UNKNOWN, false, "database error"); 147 return false; 148 } 149 150 // if end_stage is warp (or NULL), check for valid tess_id 151 for (long i = 0; i < psArrayLength(exps); i++) { 152 psMetadata *md = exps->data[i]; 153 154 bool status; 155 char *end_stage = psMetadataLookupStr(&status, md, "end_stage"); 156 if (end_stage && strcasecmp(end_stage, "warp")) continue; 157 158 char *raw_tess_id = psMetadataLookupStr(&status, md, "tess_id"); 159 if (raw_tess_id || tess_id) continue; 160 161 char *label = psMetadataLookupStr(&status, md, "label"); 162 psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id"); 163 164 if (!status) { 165 psError(PS_ERR_UNKNOWN, false, 166 "cannot queue analysis to WARP without a defined tess id: label: %s, exp_id %" PRId64, 167 label, exp_id); 168 return false; 169 } 170 } 171 172 173 # define GET_VALUE(PTYPE,CTYPE,VALUE,NAME) \ 174 PTYPE VALUE; \ 175 { \ 176 bool status; \ 177 VALUE = psMetadataLookup##CTYPE(&status, md, NAME); \ 178 if (!status) { \ 179 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for %s", NAME); \ 180 return false; \ 181 } \ 182 } 183 184 // loop over our list of exp_ids 185 for (long i = 0; i < psArrayLength(exps); i++) { 186 psMetadata *md = exps->data[i]; 187 188 rawExpRow *row = rawExpObjectFromMetadata(md); 189 if (!row) { 190 psError(PS_ERR_UNKNOWN, false, "failed to convert metadata into chipRun"); 191 return false; 192 } 193 194 GET_VALUE (psS64, S64, exp_id, "exp_id"); 195 GET_VALUE (psString, Str, raw_workdir, "workdir"); 196 GET_VALUE (psString, Str, raw_label, "label"); 197 GET_VALUE (psString, Str, raw_reduction, "reduction"); 198 // GET_VALUE (psString, Str, raw_expgroup, "expgroup"); 199 GET_VALUE (psString, Str, raw_dvodb, "dvodb"); 200 GET_VALUE (psString, Str, raw_tess_id, "tess_id"); 201 GET_VALUE (psString, Str, raw_end_stage, "end_stage"); 202 203 if (!row->exp_id) { 204 psError(PS_ERR_UNKNOWN, false, "failed to find value for exp_id"); 205 return false; 206 } 207 208 // queue the exp 209 if (!pxchipQueueByExpTag(config, 210 exp_id, 211 workdir ? workdir : raw_workdir, 212 label ? label : raw_label, 213 data_group ? data_group : (label ? label : raw_label), 214 dist_group, 215 reduction ? reduction : raw_reduction, 216 // expgroup ? expgroup : raw_expgroup, 217 // XXX how does expgroup get defined? 218 expgroup, 219 dvodb ? dvodb : raw_dvodb, 220 tess_id ? tess_id : raw_tess_id, 221 end_stage ? end_stage : raw_end_stage, 222 note 223 )) { 224 if (!psDBRollback(config->dbh)) { 225 psError(PS_ERR_UNKNOWN, false, "database error"); 226 } 227 psError(PS_ERR_UNKNOWN, false, 228 "failed to trying to queue exp_id: %" PRId64, exp_id); 229 return false; 230 } 231 } 232 233 if (!psDBCommit(config->dbh)) { 234 psError(PS_ERR_UNKNOWN, false, "database error"); 235 return false; 236 } 237 238 return true; 239 } 122 240 123 241 static bool definebyqueryMode(pxConfig *config) … … 129 247 psMetadata *where = psMetadataAlloc(); 130 248 pxchipGetSearchArgs (config, where); // rawExp only 131 pxAddLabelSearchArgs (config, where, "-label", "newExp.label", "LIKE"); 249 pxAddLabelSearchArgs (config, where, "-label", "newExp.label", "LIKE"); // define using newExp label 132 250 133 251 // psListLength(where->list) is at least 1 because exp_type defaults to "object" … … 135 253 if ((psListLength(where->list) <= 1) && !psMetadataLookupBool(NULL, config->args, "-all")) { 136 254 psFree(where); 137 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");255 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 138 256 return false; 139 257 } … … 157 275 psString query = pxDataGet("chiptool_find_rawexp.sql"); 158 276 if (!query) { 159 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");277 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 160 278 psFree(where); 161 279 return false; … … 197 315 } 198 316 199 // start a transaction so we don't end up with an exp without any associted 200 // imfiles 201 if (!psDBTransaction(config->dbh)) { 202 psError(PS_ERR_UNKNOWN, false, "database error"); 203 psFree(output); 204 return false; 205 } 206 207 // if end_stage is warp (or NULL), check for valid tess_id 208 for (long i = 0; i < psArrayLength(output); i++) { 209 psMetadata *md = output->data[i]; 210 211 bool status; 212 char *end_stage = psMetadataLookupStr(&status, md, "end_stage"); 213 if (end_stage && strcasecmp(end_stage, "warp")) continue; 214 215 char *raw_tess_id = psMetadataLookupStr(&status, md, "tess_id"); 216 if (raw_tess_id || tess_id) continue; 217 218 char *label = psMetadataLookupStr(&status, md, "label"); 219 psS64 exp_id = psMetadataLookupS64(&status, md, "exp_id"); 220 221 if (!status) { 222 psError(PS_ERR_UNKNOWN, false, "cannot queue analysis to WARP without a defined tess id: label: %s, exp_id %" PRId64, label, exp_id); 317 if (!queue_exposures(config, output, workdir, label, data_group, dist_group, reduction, expgroup, 318 dvodb, tess_id, end_stage, note)) { 319 psError(psErrorCodeLast(), false, "Unable to queue exposures for chip."); 320 psFree(output); 321 return false; 322 } 323 psFree(output); 324 325 return true; 326 } 327 328 static bool definecopyMode(pxConfig *config) 329 { 330 PS_ASSERT_PTR_NON_NULL(config, NULL); 331 332 PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", false, false); 333 334 psMetadata *where = psMetadataAlloc(); 335 pxchipGetSearchArgs (config, where); // rawExp only 336 pxAddLabelSearchArgs (config, where, "-label", "chipOld.label", "LIKE"); 337 338 // psListLength(where->list) is at least 1 because exp_type defaults to "object" 339 // so we require a list longer than 1 entry 340 if ((psListLength(where->list) <= 1) && !psMetadataLookupBool(NULL, config->args, "-all")) { 341 psFree(where); 342 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 343 return false; 344 } 345 346 PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", true, false); 347 PXOPT_LOOKUP_STR(label, config->args, "-set_label", true, false); 348 PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false); 349 PXOPT_LOOKUP_STR(expgroup, config->args, "-set_expgroup", false, false); 350 PXOPT_LOOKUP_STR(dvodb, config->args, "-set_dvodb", false, false); 351 PXOPT_LOOKUP_STR(tess_id, config->args, "-set_tess_id", false, false); 352 PXOPT_LOOKUP_STR(end_stage, config->args, "-set_end_stage", false, false); 353 PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false); 354 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 355 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 356 357 // default 358 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 359 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 360 361 // find the exp_id of all the exposures that we want to queue up. 362 psString query = pxDataGet("chiptool_definecopy.sql"); 363 if (!query) { 364 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 365 psFree(where); 366 return false; 367 } 368 369 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 370 psStringAppend(&query, " AND %s", whereClause); 371 372 psFree(whereClause); 373 psFree(where); 374 375 if (!p_psDBRunQueryF(config->dbh, query, label)) { 376 psError(PS_ERR_UNKNOWN, false, "database error"); 377 psFree(query); 378 return false; 379 } 380 psFree(query); 381 382 psArray *output = p_psDBFetchResult(config->dbh); 383 if (!output) { 384 psError(PS_ERR_UNKNOWN, false, "database error"); 385 return false; 386 } 387 if (!psArrayLength(output)) { 388 psTrace("chiptool", PS_LOG_INFO, "no rows found"); 389 psFree(output); 390 return true; 391 } 392 393 if (pretend) { 394 // negative simple so the default is true 395 if (!ippdbPrintMetadatas(stdout, output, "rawExp", !simple)) { 396 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 223 397 psFree(output); 224 398 return false; 225 399 } 226 } 227 228 229 # define GET_VALUE(PTYPE,CTYPE,VALUE,NAME) \ 230 PTYPE VALUE; \ 231 { bool status; \ 232 VALUE = psMetadataLookup##CTYPE(&status, md, NAME); \ 233 if (!status) { \ 234 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for %s", NAME); \ 235 psFree(output); \ 236 return false; \ 237 } } 238 239 // loop over our list of exp_ids 240 for (long i = 0; i < psArrayLength(output); i++) { 241 psMetadata *md = output->data[i]; 242 243 rawExpRow *row = rawExpObjectFromMetadata(md); 244 if (!row) { 245 psError(PS_ERR_UNKNOWN, false, "failed to convert metadata into chipRun"); 246 psFree(output); 247 return false; 248 } 249 250 GET_VALUE (psS64, S64, exp_id, "exp_id"); 251 GET_VALUE (psString, Str, raw_workdir, "workdir"); 252 GET_VALUE (psString, Str, raw_label, "label"); 253 GET_VALUE (psString, Str, raw_reduction, "reduction"); 254 // GET_VALUE (psString, Str, raw_expgroup, "expgroup"); 255 GET_VALUE (psString, Str, raw_dvodb, "dvodb"); 256 GET_VALUE (psString, Str, raw_tess_id, "tess_id"); 257 GET_VALUE (psString, Str, raw_end_stage, "end_stage"); 258 259 if (!row->exp_id) { 260 psError(PS_ERR_UNKNOWN, false, "failed to find value for exp_id"); 261 psFree(output); 262 return false; 263 } 264 265 // queue the exp 266 if (!pxchipQueueByExpTag(config, 267 exp_id, 268 workdir ? workdir : raw_workdir, 269 label ? label : raw_label, 270 data_group ? data_group : (label ? label : raw_label), 271 dist_group, 272 reduction ? reduction : raw_reduction, 273 // expgroup ? expgroup : raw_expgroup, 274 // XXX how does expgroup get defined? 275 expgroup, 276 dvodb ? dvodb : raw_dvodb, 277 tess_id ? tess_id : raw_tess_id, 278 end_stage ? end_stage : raw_end_stage, 279 note 280 )) { 281 if (!psDBRollback(config->dbh)) { 282 psError(PS_ERR_UNKNOWN, false, "database error"); 283 } 284 psError(PS_ERR_UNKNOWN, false, 285 "failed to trying to queue exp_id: %" PRId64, exp_id); 286 psFree(output); 287 return false; 288 } 400 psFree(output); 401 return true; 402 } 403 404 if (!queue_exposures(config, output, workdir, label, data_group, dist_group, reduction, expgroup, 405 dvodb, tess_id, end_stage, note)) { 406 psError(psErrorCodeLast(), false, "Unable to queue exposures for chip."); 407 psFree(output); 408 return false; 289 409 } 290 410 psFree(output); 291 292 if (!psDBCommit(config->dbh)) {293 psError(PS_ERR_UNKNOWN, false, "database error");294 return false;295 }296 411 297 412 return true; … … 314 429 if (!psListLength(where->list)) { 315 430 psFree(where); 316 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");317 return false; 318 } 319 psString query = psStringCopy("UPDATE chipRun JOIN rawExp USING(exp_id) ");431 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 432 return false; 433 } 434 psString query = psStringCopy("UPDATE chipRun JOIN rawExp USING(exp_id) -- join hook %s\n"); 320 435 321 436 // pxUpdateRun gets parameters from config->args and updates 322 bool result = pxUpdateRun(config, where, &query, "chipRun", true);437 bool result = pxUpdateRun(config, where, &query, "chipRun", "chip_id", "chipProcessedImfile", true); 323 438 if (!result) { 324 psError( PXTOOLS_ERR_DATA, false, "pxUpdateRun failed");439 psError(psErrorCodeLast(), false, "pxUpdateRun failed"); 325 440 } 326 441 … … 346 461 psString query = pxDataGet("chiptool_pendingimfile.sql"); 347 462 if (!query) { 348 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");463 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 349 464 return false; 350 465 } … … 586 701 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 587 702 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 703 PXOPT_LOOKUP_BOOL(allfiles, config->args, "-allfiles", false); 704 if (allfiles) { 705 faulted = false; 706 } 588 707 589 708 psMetadata *where = psMetadataAlloc(); … … 594 713 PXOPT_COPY_STR(config->args, where, "-reduction", "chipRun.reduction", "=="); 595 714 pxAddLabelSearchArgs (config, where, "-label", "chipRun.label", "LIKE"); 715 pxAddLabelSearchArgs (config, where, "-data_group", "chipRun.data_group", "LIKE"); 596 716 PXOPT_COPY_S64(config->args, where, "-magicked", "chipProcessedImfile.magicked", "=="); 597 717 … … 600 720 // add cuts on ra and decl if supplied 601 721 if (!pxspaceAddWhere(config, &where2, "rawExp")) { 602 psError( PXTOOLS_ERR_DATA, false, "pxSpaceAddWhere failed");722 psError(psErrorCodeLast(), false, "pxSpaceAddWhere failed"); 603 723 return false; 604 724 } … … 606 726 psString query = pxDataGet("chiptool_processedimfile.sql"); 607 727 if (!query) { 608 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");728 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 609 729 return false; 610 730 } … … 612 732 if (psListLength(where->list)) { 613 733 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 614 psStringAppend(&query, " WHERE %s ", whereClause);734 psStringAppend(&query, " WHERE %s %s", whereClause, where2 ? where2 : ""); 615 735 psFree(whereClause); 616 736 } else if (psMetadataLookupBool(NULL, config->args, "-all") || (faulted || where2)) { … … 618 738 } else { 619 739 psFree(where); 620 psError(PXTOOLS_ERR_ DATA, false, "search parameters (or -all) are required");740 psError(PXTOOLS_ERR_CONFIG, false, "search parameters (or -all) are required"); 621 741 return false; 622 742 } … … 626 746 // list only faulted rows 627 747 psStringAppend(&query, " %s", "AND chipProcessedImfile.fault != 0"); 628 } else {748 } else if (!allfiles) { 629 749 // don't list faulted rows 630 750 psStringAppend(&query, " %s", "AND chipProcessedImfile.fault = 0"); … … 683 803 && !psMetadataLookupBool(NULL, config->args, "-all")) { 684 804 psFree(where); 685 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");805 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 686 806 return false; 687 807 } … … 689 809 psString query = pxDataGet("chiptool_revertprocessedimfile.sql"); 690 810 if (!query) { 691 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 811 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 812 psFree(where); 813 return false; 814 } 815 psString query_update = pxDataGet("chiptool_revertupdatedimfile.sql"); 816 if (!query) { 817 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 692 818 psFree(where); 693 819 return false; … … 697 823 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 698 824 psStringAppend(&query, " AND %s", whereClause); 825 psStringAppend(&query_update, " AND %s", whereClause); 699 826 psFree(whereClause); 700 827 } … … 708 835 } 709 836 psFree(query); 837 if (!p_psDBRunQuery(config->dbh, query_update)) { 838 psError(PS_ERR_UNKNOWN, false, "database error"); 839 psFree(query_update); 840 return false; 841 } 842 psFree(query_update); 710 843 711 844 return true; … … 720 853 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 721 854 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, NULL); 722 855 if (psListLength(where->list) == 0) { 856 psError(PS_ERR_UNKNOWN, true, "search parameters are required"); 857 return false; 858 } 859 723 860 if (!state) { 724 861 PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false); 725 862 726 863 if (!pxSetFaultCode(config->dbh, "chipProcessedImfile", where, fault)) { 727 864 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); … … 732 869 else { 733 870 if (!pxchipProcessedImfileSetStateByQuery(config,where,state)) { 734 psError(PS_ERR_UNKNOWN, false, "failed to set chipProcessedImfile state");735 return(false);871 psError(PS_ERR_UNKNOWN, false, "failed to set chipProcessedImfile state"); 872 return(false); 736 873 } 737 874 } 738 875 739 876 740 877 return true; 741 878 } … … 839 976 psString query = pxDataGet("chiptool_unmasked.sql"); 840 977 if (!query) { 841 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");978 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 842 979 return false; 843 980 } … … 917 1054 psString query = pxDataGet("chiptool_pendingcleanuprun.sql"); 918 1055 if (!query) { 919 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1056 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 920 1057 return false; 921 1058 } … … 981 1118 psString query = pxDataGet("chiptool_pendingcleanupimfile.sql"); 982 1119 if (!query) { 983 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1120 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 984 1121 return false; 985 1122 } … … 1042 1179 psString query = pxDataGet("chiptool_donecleanup.sql"); 1043 1180 if (!query) { 1044 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1181 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1045 1182 return false; 1046 1183 } … … 1100 1237 // make sure that the state string is valid 1101 1238 if (!pxIsValidState(state)) { 1102 psError(PXTOOLS_ERR_ DATA, false, "%s is not a valid state", state);1239 psError(PXTOOLS_ERR_CONFIG, false, "%s is not a valid state", state); 1103 1240 return false; 1104 1241 } … … 1113 1250 psString query = pxDataGet("chiptool_run.sql"); 1114 1251 if (!query) { 1115 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1252 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1116 1253 return false; 1117 1254 } … … 1175 1312 psString query = pxDataGet("chiptool_completely_processed_exp.sql"); 1176 1313 if (!query) { 1177 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1314 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1178 1315 return false; 1179 1316 } … … 1254 1391 chipRun->tess_id, 1255 1392 chipRun->end_stage, 1393 chipRun->magicked, 1256 1394 NULL // note does not propagate 1257 1395 )) { … … 1295 1433 } 1296 1434 1297 psString set_magic = ""; 1435 psString set_magicked_imfile = psStringCopy(""); 1436 psString set_magicked_run = psStringCopy(""); 1298 1437 if (!strcmp(data_state, "full")) { 1299 // copy the magicked state from the input to the output when transitioning to full state 1300 set_magic = "\n , chipProcessedImfile.magicked = rawImfile.magicked"; 1301 } 1302 1303 // note only updates if chipRun.state = run_state 1304 // XXX note that we have removed this constraint for now 1305 if (!p_psDBRunQueryF(config->dbh, query, data_state, set_magic, chip_id, class_id)) { 1438 // if (chipProcessedImfile.magicked < 0 and rawImfile.magicked = 0) leave magicked unchanged. This will 1439 // block warp processing until destreaking has been done 1440 // otherwise copy magicked from the rawImfile 1441 // Same thing for chipRun/rawExp 1442 psStringAppend(&set_magicked_imfile, "\n , chipProcessedImfile.magicked = IF((chipProcessedImfile.magicked < 0" 1443 " AND rawImfile.magicked = 0), chipProcessedImfile.magicked, rawImfile.magicked)"); 1444 psStringAppend(&set_magicked_run, "\n , chipRun.magicked = IF((chipRun.magicked < 0 AND rawExp.magicked = 0), " 1445 " chipRun.magicked, rawExp.magicked)"); 1446 1447 } else if (!strcmp(data_state, "cleaned") || !strcmp(data_state, "purged")) { 1448 // if magicked is non-zero set it to -1 1449 // Once one imfile has been cleaned, the chipRun is no longer 'magicked' 1450 psStringAppend(&set_magicked_imfile, "\n, chipProcessedImfile.magicked = IF(chipProcessedImfile.magicked = 0, 0, -1)," 1451 " chipRun.magicked = IF(chipRun.magicked = 0, 0, -1)"); 1452 } 1453 1454 if (!p_psDBRunQueryF(config->dbh, query, data_state, set_magicked_imfile, chip_id, class_id)) { 1306 1455 psFree(query); 1307 1456 psError(PS_ERR_UNKNOWN, false, "database error"); … … 1314 1463 } 1315 1464 psFree(query); 1465 psFree(set_magicked_imfile); 1466 psFree(set_magicked_run); 1316 1467 if (psDBAffectedRows(config->dbh) < 1) { 1317 1468 psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row"); … … 1320 1471 1321 1472 query = pxDataGet("chiptool_change_exp_state.sql"); 1322 if (!p_psDBRunQueryF(config->dbh, query, data_state, chip_id, data_state)) {1473 if (!p_psDBRunQueryF(config->dbh, query, data_state, set_magicked_run, chip_id, data_state)) { 1323 1474 psFree(query); 1324 1475 // rollback … … 1395 1546 psString query = pxDataGet(tables[i].sqlFilename); 1396 1547 if (!query) { 1397 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1548 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1398 1549 return false; 1399 1550 } … … 1431 1582 1432 1583 if (clean) { 1433 bool success = true; 1584 bool success = true; 1434 1585 if (!strcmp(tables[i].tableName, "chipRun")) { 1435 1586 success = pxSetStateCleaned("chipRun", "state", output); … … 1535 1686 psString query = pxDataGet("chiptool_runstate.sql"); 1536 1687 if (!query) { 1537 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1688 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1538 1689 return false; 1539 1690 } … … 1544 1695 psFree(whereClause); 1545 1696 } else { 1546 psError(PXTOOLS_ERR_ DATA, true, "search parameters or -all are required");1697 psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required"); 1547 1698 return false; 1548 1699 } … … 1596 1747 return true; 1597 1748 } 1749 1750 // a very specfic function to queue a cleaned chipProcessedImfile to be updated 1751 static bool setimfiletoupdateMode(pxConfig *config) 1752 { 1753 PS_ASSERT_PTR_NON_NULL(config, NULL); 1754 1755 PXOPT_LOOKUP_S64(chip_id, config->args, "-chip_id", true, false); 1756 PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", false, false); 1757 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 1758 1759 psString query = pxDataGet("chiptool_setimfiletoupdate.sql"); 1760 if (!query) { 1761 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1762 return false; 1763 } 1764 1765 psString setHook = psStringCopy(""); 1766 if (label) { 1767 psStringAppend(&setHook, "\n , chipRun.label = '%s'", label); 1768 } 1769 1770 if (class_id) { 1771 psStringAppend(&query, " AND (chipProcessedImfile.class_id = '%s')", class_id); 1772 } 1773 1774 if (!p_psDBRunQueryF(config->dbh, query, setHook, chip_id)) { 1775 psError(PS_ERR_UNKNOWN, false, "database error"); 1776 return false; 1777 } 1778 1779 psFree(setHook); 1780 psFree(query); 1781 1782 return true; 1783 } 1784 1785 static bool listrunMode(pxConfig *config) 1786 { 1787 PS_ASSERT_PTR_NON_NULL(config, NULL); 1788 1789 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1790 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1791 PXOPT_LOOKUP_BOOL(pstamp_order, config->args, "-pstamp_order", false); 1792 1793 psMetadata *where = psMetadataAlloc(); 1794 pxchipGetSearchArgs (config, where); // chipRun, chipProcessedImfile, rawExp 1795 PXOPT_COPY_S64(config->args, where, "-chip_id", "chipRun.chip_id", "=="); 1796 PXOPT_COPY_STR(config->args, where, "-reduction", "chipRun.reduction", "=="); 1797 PXOPT_COPY_STR(config->args, where, "-state", "chipRun.state", "=="); 1798 pxAddLabelSearchArgs (config, where, "-label", "chipRun.label", "LIKE"); 1799 pxAddLabelSearchArgs (config, where, "-data_group", "chipRun.data_group", "LIKE"); 1800 pxAddLabelSearchArgs (config, where, "-dist_group", "chipRun.dist_group", "LIKE"); 1801 PXOPT_COPY_S64(config->args, where, "-magicked", "chipRun.magicked", "=="); 1802 1803 psString where2 = NULL; 1804 pxmagicAddWhere(config, &where2, "chipRun"); 1805 // add cuts on ra and decl if supplied 1806 if (!pxspaceAddWhere(config, &where2, "rawExp")) { 1807 psError(psErrorCodeLast(), false, "pxSpaceAddWhere failed"); 1808 return false; 1809 } 1810 1811 psString query = pxDataGet("chiptool_listrun.sql"); 1812 if (!query) { 1813 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1814 return false; 1815 } 1816 1817 if (psListLength(where->list)) { 1818 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1819 psStringAppend(&query, " WHERE %s %s", whereClause, where2 ? where2 : ""); 1820 psFree(whereClause); 1821 } else if (psMetadataLookupBool(NULL, config->args, "-all") || where2) { 1822 psStringAppend(&query, " WHERE chipRun.chip_id IS NOT NULL %s", where2 ? where2 : ""); 1823 } else { 1824 psFree(where); 1825 psError(PXTOOLS_ERR_CONFIG, false, "search parameters (or -all) are required"); 1826 return false; 1827 } 1828 psFree(where); 1829 1830 if (pstamp_order) { 1831 // put runs in order of exposure id with newest chip Runs first 1832 // The postage stamp parser depends on this behavior 1833 psStringAppend(&query, "\nORDER by exp_id, chip_id DESC"); 1834 } 1835 1836 // treat limit == 0 as "no limit" 1837 if (limit) { 1838 psString limitString = psDBGenerateLimitSQL(limit); 1839 psStringAppend(&query, " %s", limitString); 1840 psFree(limitString); 1841 } 1842 1843 if (!p_psDBRunQuery(config->dbh, query)) { 1844 psError(PS_ERR_UNKNOWN, false, "database error"); 1845 psFree(query); 1846 return false; 1847 } 1848 psFree(query); 1849 1850 psArray *output = p_psDBFetchResult(config->dbh); 1851 if (!output) { 1852 psError(PS_ERR_UNKNOWN, false, "database error"); 1853 return false; 1854 } 1855 if (!psArrayLength(output)) { 1856 psTrace("chiptool", PS_LOG_INFO, "no rows found"); 1857 psFree(output); 1858 return true; 1859 } 1860 1861 // negative simple so the default is true 1862 if (!ippdbPrintMetadatas(stdout, output, "chipRun", !simple)) { 1863 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1864 psFree(output); 1865 return false; 1866 } 1867 1868 psFree(output); 1869 1870 return true; 1871 } -
branches/tap_branches/ippTools/src/chiptool.h
r25822 r27838 26 26 CHIPTOOL_MODE_NONE = 0x0, 27 27 CHIPTOOL_MODE_DEFINEBYQUERY, 28 CHIPTOOL_MODE_DEFINECOPY, 28 29 CHIPTOOL_MODE_UPDATERUN, 29 30 CHIPTOOL_MODE_PENDINGIMFILE, … … 32 33 CHIPTOOL_MODE_REVERTPROCESSEDIMFILE, 33 34 CHIPTOOL_MODE_UPDATEPROCESSEDIMFILE, 35 CHIPTOOL_MODE_SETIMFILETOUPDATE, 34 36 CHIPTOOL_MODE_ADVANCEEXP, 35 37 CHIPTOOL_MODE_BLOCK, … … 48 50 CHIPTOOL_MODE_EXPORTRUN, 49 51 CHIPTOOL_MODE_IMPORTRUN, 50 CHIPTOOL_MODE_RUNSTATE 52 CHIPTOOL_MODE_RUNSTATE, 53 CHIPTOOL_MODE_LISTRUN 51 54 } chiptoolMode; 52 55 -
branches/tap_branches/ippTools/src/chiptoolConfig.c
r25835 r27838 39 39 config->modules = pmConfigRead(&argc, argv, NULL); 40 40 if (! config->modules) { 41 psError( PS_ERR_UNKNOWN, false, "Can't find site configuration");41 psError(psErrorCodeLast(), false, "Can't find site configuration"); 42 42 psFree(config); 43 43 return NULL; … … 63 63 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend", 0, "do not actually modify the database", false); 64 64 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 65 66 // -definecopy 67 psMetadata *definecopyArgs = psMetadataAlloc(); 68 pxchipSetSearchArgs (definecopyArgs); 69 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by rawExp label (LIKE comparison)", NULL); 70 71 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-exp_type", PS_META_REPLACE, "search by exp_type", "object"); 72 73 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir (required)", NULL); 74 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_label", 0, "define label (required)", NULL); 75 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction class", NULL); 76 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_expgroup", 0, "define exposure group", NULL); 77 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_dvodb", 0, "define DVO db", NULL); 78 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_tess_id", 0, "define tessellation identifier", NULL); 79 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_end_stage", 0, "define end stage", NULL); 80 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data group", NULL); 81 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define distribution group", NULL); 82 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 83 psMetadataAddBool(definecopyArgs, PS_LIST_TAIL, "-pretend", 0, "do not actually modify the database", false); 84 psMetadataAddBool(definecopyArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 65 85 66 86 // -updaterun … … 77 97 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "set dist group", NULL); 78 98 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_note", 0, "set note", NULL); 99 100 // -setimfiletoupdate 101 psMetadata *setimfiletoupdateArgs = psMetadataAlloc(); 102 psMetadataAddS64(setimfiletoupdateArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip ID (required)", 0); 103 psMetadataAddStr(setimfiletoupdateArgs, PS_LIST_TAIL, "-class_id", 0, "search by class_id (required)", NULL); 104 psMetadataAddStr(setimfiletoupdateArgs, PS_LIST_TAIL, "-set_label", 0,"new value for label", NULL); 79 105 80 106 // -pendingimfile … … 154 180 psMetadataAddS16(addprocessedimfileArgs, PS_LIST_TAIL, "-fault", 0, "set fault code", 0); 155 181 psMetadataAddS16(addprocessedimfileArgs, PS_LIST_TAIL, "-quality", 0, "set quality", 0); 156 psMetadataAdd Bool(addprocessedimfileArgs, PS_LIST_TAIL, "-magicked", 0, "define magicked status", false);182 psMetadataAddS64(addprocessedimfileArgs, PS_LIST_TAIL, "-magicked", 0, "define magicked status", 0); 157 183 158 184 // -processedimfile … … 164 190 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-reduction", 0, "search by reduction class", NULL); 165 191 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by chipRun label (LIKE comparison)", NULL); 192 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by chipRun data_group (LIKE comparison)", NULL); 166 193 pxmagicAddArguments(processedimfileArgs); 167 194 … … 169 196 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-all", 0, "list everything without search terms", false); 170 197 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 198 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-allfiles", 0, "only all matching imfiles regardless of fault status", false); 171 199 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 172 200 … … 189 217 psMetadataAddS16(updateprocessedimfileArgs, PS_LIST_TAIL, "-fault", 0, "set fault code (required)", 0); 190 218 psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-set_state", 0, "set state", NULL); 219 220 // -processedExp 221 psMetadata *listrunArgs = psMetadataAlloc(); 222 pxchipSetSearchArgs(listrunArgs); 223 psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip ID", 0); 224 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-reduction", 0, "search by reduction class", NULL); 225 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by chipRun label (LIKE comparison)", NULL); 226 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-state", 0, "search by chipRun state", NULL); 227 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by chipRun data_group (LIKE comparison)", NULL); 228 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-dist_group", PS_META_DUPLICATE_OK, "search by chipRun dist_group (LIKE comparison)", NULL); 229 pxmagicAddArguments(listrunArgs); 230 231 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-pstamp_order", 0, "order results for postage stamp server", false); 232 psMetadataAddU64(listrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 233 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-all", 0, "list everything without search terms", false); 234 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 235 pxspaceAddArguments(listrunArgs); 236 191 237 // -block 192 238 psMetadata *blockArgs = psMetadataAlloc(); … … 292 338 293 339 PXOPT_ADD_MODE("-definebyquery", "create runs from raw exposures", CHIPTOOL_MODE_DEFINEBYQUERY, definebyqueryArgs); 340 PXOPT_ADD_MODE("-definecopy", "create copy runs", CHIPTOOL_MODE_DEFINECOPY, definecopyArgs); 294 341 PXOPT_ADD_MODE("-updaterun", "change chip run properties", CHIPTOOL_MODE_UPDATERUN, updaterunArgs); 342 PXOPT_ADD_MODE("-setimfiletoupdate", "set imfile state to update", CHIPTOOL_MODE_SETIMFILETOUPDATE, setimfiletoupdateArgs); 295 343 PXOPT_ADD_MODE("-pendingimfile", "show pending imfiles", CHIPTOOL_MODE_PENDINGIMFILE, pendingimfileArgs); 296 344 PXOPT_ADD_MODE("-addprocessedimfile", "add a processed imfile", CHIPTOOL_MODE_ADDPROCESSEDIMFILE, addprocessedimfileArgs); … … 299 347 PXOPT_ADD_MODE("-revertprocessedimfile","undo a processed imfile", CHIPTOOL_MODE_REVERTPROCESSEDIMFILE,revertprocessedimfileArgs); 300 348 PXOPT_ADD_MODE("-runstate", "list the states of chip run", CHIPTOOL_MODE_RUNSTATE, runstateArgs); 349 PXOPT_ADD_MODE("-listrun", "list chipRuns", CHIPTOOL_MODE_LISTRUN, listrunArgs); 301 350 PXOPT_ADD_MODE("-advanceexp", "advance completed exposures", CHIPTOOL_MODE_ADVANCEEXP, advanceexpArgs); 302 351 PXOPT_ADD_MODE("-block", "set a label block", CHIPTOOL_MODE_BLOCK, blockArgs); … … 317 366 318 367 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { 319 psError(PS_ERR_UNKNOWN, true, "option parsing failed");368 psError(PS_ERR_UNKNOWN, false, "option parsing failed"); 320 369 psFree(argSets); 321 370 psFree(modes); -
branches/tap_branches/ippTools/src/detselect.c
r23998 r27838 135 135 psString query = pxDataGet("detselect_search.sql"); 136 136 if (!query) { 137 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 138 return false; 139 } 140 141 // use psDBGenerateWhereConditionalSQL with AND ... because the SQL ends in a WHERE 142 if (where && psListLength(where->list)) { 143 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 144 psStringAppend(&query, " AND %s", whereClause); 145 psFree(whereClause); 146 } 147 psFree(where); 148 149 // we choose the single detrend image which matches all criteria and has 150 // the latest insertion date 151 152 // unless explicitly specified by the user, list all possible matches 153 if (!unlimit) { 154 psStringAppend(&query, " ORDER BY registered DESC LIMIT 1"); 155 } 156 157 if (!p_psDBRunQuery(config->dbh, query)) { 158 psError(PS_ERR_UNKNOWN, false, "database error"); 159 psFree(query); 160 return false; 161 } 162 psFree(query); 163 164 psArray *output = p_psDBFetchResult(config->dbh); 165 if (!output) { 166 psError(PS_ERR_UNKNOWN, false, "database error"); 167 return false; 168 } 169 if (!psArrayLength(output)) { 170 // XXX check psError here 171 psError(PS_ERR_UNKNOWN, false, "no detrend exposures found"); 172 psFree(output); 173 return true; 174 } 175 176 // negate simple so the default is true 177 if (!ippdbPrintMetadatas(stdout, output, "detExp", !simple)) { 178 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 179 psFree(output); 180 return false; 181 } 182 183 psFree(output); 184 185 return true; 186 } 187 188 static bool selectMode(pxConfig *config) 189 { 190 PS_ASSERT_PTR_NON_NULL(config, false); 191 192 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 193 194 psMetadata *where = psMetadataAlloc(); 195 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 196 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 197 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 198 199 psString query = pxDataGet("detselect_select.sql"); 200 if (!query) { 201 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 137 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 202 138 return false; 203 139 } … … 211 147 psFree(where); 212 148 149 // we choose the single detrend image which matches all criteria and has 150 // the latest insertion date 151 152 // unless explicitly specified by the user, list all possible matches 153 if (!unlimit) { 154 psStringAppend(&query, " ORDER BY registered DESC LIMIT 1"); 155 } 156 157 if (!p_psDBRunQuery(config->dbh, query)) { 158 psError(PS_ERR_UNKNOWN, false, "database error"); 159 psFree(query); 160 return false; 161 } 162 psFree(query); 163 164 psArray *output = p_psDBFetchResult(config->dbh); 165 if (!output) { 166 psError(PS_ERR_UNKNOWN, false, "database error"); 167 return false; 168 } 169 if (!psArrayLength(output)) { 170 // XXX check psError here 171 psError(PS_ERR_UNKNOWN, false, "no detrend exposures found"); 172 psFree(output); 173 return true; 174 } 175 176 // negate simple so the default is true 177 if (!ippdbPrintMetadatas(stdout, output, "detExp", !simple)) { 178 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 179 psFree(output); 180 return false; 181 } 182 183 psFree(output); 184 185 return true; 186 } 187 188 static bool selectMode(pxConfig *config) 189 { 190 PS_ASSERT_PTR_NON_NULL(config, false); 191 192 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 193 194 psMetadata *where = psMetadataAlloc(); 195 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 196 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 197 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 198 199 psString query = pxDataGet("detselect_select.sql"); 200 if (!query) { 201 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 202 return false; 203 } 204 205 // use psDBGenerateWhereConditionalSQL with AND ... because the SQL ends in a WHERE 206 if (where && psListLength(where->list)) { 207 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 208 psStringAppend(&query, " AND %s", whereClause); 209 psFree(whereClause); 210 } 211 psFree(where); 212 213 213 if (!p_psDBRunQuery(config->dbh, query)) { 214 214 psError(PS_ERR_UNKNOWN, false, "database error"); -
branches/tap_branches/ippTools/src/dettool.c
r25324 r27838 94 94 MODECASE(DETTOOL_MODE_PENDINGCLEANUP_PROCESSEDEXP, pendingcleanup_processedexpMode); 95 95 MODECASE(DETTOOL_MODE_DONECLEANUP_PROCESSEDEXP, donecleanup_processedexpMode); 96 MODECASE(DETTOOL_MODE_UPDATESTATE_PROCESSED, updatestateprocessedMode); 96 97 // stacked 97 98 MODECASE(DETTOOL_MODE_TOSTACKED, tostackedMode); … … 142 143 MODECASE(DETTOOL_MODE_PENDINGCLEANUP_RESIDEXP, pendingcleanup_residexpMode); 143 144 MODECASE(DETTOOL_MODE_DONECLEANUP_RESIDEXP, donecleanup_residexpMode); 145 MODECASE(DETTOOL_MODE_UPDATESTATE_RESID, updatestateresidMode); 144 146 // detrunsummary 145 147 MODECASE(DETTOOL_MODE_TODETRUNSUMMARY, todetrunsummaryMode); … … 150 152 MODECASE(DETTOOL_MODE_UPDATEDETRUN, updatedetrunMode); 151 153 MODECASE(DETTOOL_MODE_RERUN, rerunMode); 152 MODECASE(DETTOOL_MODE_PENDINGCLEANUP_DETRUNSUMMARY, pendingcleanup_detrunsummaryMode);154 MODECASE(DETTOOL_MODE_PENDINGCLEANUP_DETRUNSUMMARY, pendingcleanup_detrunsummaryMode); 153 155 // register 154 156 MODECASE(DETTOOL_MODE_REGISTER_DETREND, register_detrendMode); … … 185 187 psString query = pxDataGet("dettool_pending.sql"); 186 188 if (!query) { 187 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");188 return false; 189 } 190 189 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 190 return false; 191 } 192 191 193 psMetadata *where = psMetadataAlloc(); 192 194 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); … … 258 260 psError(PS_ERR_UNKNOWN, false, "verify mode requires both -ref_det_id and -ref_iter"); 259 261 return false; 260 } 262 } 261 263 if (strcmp(mode, "verify") && ((ref_det_id != 0) || (ref_iter != -1))) { 262 264 psError(PS_ERR_UNKNOWN, false, "master mode cannot have -ref_det_id or -ref_iter set"); 263 265 return false; 264 } 265 266 } 267 266 268 PXOPT_LOOKUP_STR(camera, config->args, "-inst", false, false); 267 269 PXOPT_LOOKUP_STR(telescope, config->args, "-telescope", false, false); … … 308 310 psMetadataItem *mItem = NULL; 309 311 while ((mItem = psListGetAndIncrement(iter))) { 310 psS64 exp_id = mItem->data.S64;312 psS64 exp_id = mItem->data.S64; 311 313 if (!psMetadataAddS64(where, PS_LIST_TAIL, "exp_id", PS_META_DUPLICATE_OK, "==", exp_id)) { 312 314 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id"); … … 317 319 } 318 320 psFree(iter); 319 } 321 } 320 322 if (item->type == PS_DATA_S64) { 321 psS64 exp_id = item->data.S64;322 if (!psMetadataAddS64(where, PS_LIST_TAIL, "exp_id", PS_META_DUPLICATE_OK, "==", exp_id)) {323 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");324 psFree(where);325 return false;326 }327 } 323 psS64 exp_id = item->data.S64; 324 if (!psMetadataAddS64(where, PS_LIST_TAIL, "exp_id", PS_META_DUPLICATE_OK, "==", exp_id)) { 325 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id"); 326 psFree(where); 327 return false; 328 } 329 } 328 330 329 331 if (psListLength(where->list) < 1) { … … 505 507 psError(PS_ERR_UNKNOWN, false, "verify mode requires both -ref_det_id and -ref_iter"); 506 508 return false; 507 } 509 } 508 510 if (strcmp(mode, "verify") && ((ref_det_id != 0) || (ref_iter != -1))) { 509 511 psError(PS_ERR_UNKNOWN, false, "master mode cannot have -ref_det_id or -ref_iter set"); 510 512 return false; 511 } 513 } 512 514 513 515 PXOPT_LOOKUP_STR(filelevel, config->args, "-filelevel", false, false); … … 550 552 PXOPT_COPY_F32(config->args, where, "-select_airmass_max", "airmass", "<="); 551 553 PXOPT_COPY_F32(config->args, where, "-select_sat_pixel_frac_max", "sat_pixel_frac", "<="); 554 PXOPT_COPY_F32(config->args, where, "-select_sat_pixel_frac_min", "sat_pixel_frac", ">="); 552 555 PXOPT_COPY_F32(config->args, where, "-select_exp_time_min", "exp_time", ">="); 553 556 PXOPT_COPY_F32(config->args, where, "-select_exp_time_max", "exp_time", "<="); … … 673 676 label, 674 677 ref_det_id, 675 ref_iter678 ref_iter 676 679 ); 677 680 psS64 det_id = psDBLastInsertID(config->dbh); … … 742 745 { 743 746 PS_ASSERT_PTR_NON_NULL(config, false); 744 747 745 748 // XXX this mode is not well-tested: probably need to specify iteration here 746 749 PXOPT_LOOKUP_S64(det_id, config->args, "-det_id", true, false); // required … … 759 762 psError(PS_ERR_UNKNOWN, false, "verify mode requires both -ref_det_id and -ref_iter"); 760 763 return false; 761 } 764 } 762 765 if (strcmp(mode, "verify") && ((ref_det_id != 0) || (ref_iter != -1))) { 763 766 psError(PS_ERR_UNKNOWN, false, "master mode cannot have -ref_det_id or -ref_iter set"); 764 767 return false; 765 } 768 } 766 769 767 770 // the new detRun may have different values for these limits: … … 817 820 818 821 if (iteration < 0) { 819 iteration = detRun->iteration;822 iteration = detRun->iteration; 820 823 } 821 824 … … 977 980 psString query = pxDataGet("dettool_definebydetrun.sql"); 978 981 if (!query) { 979 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");982 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 980 983 return false; 981 984 } … … 989 992 990 993 if (only_accepted) { 991 psStringAppend(&query, " AND accept = 1");994 psStringAppend(&query, " AND accept = 1"); 992 995 } 993 996 … … 1068 1071 psString query = pxDataGet("dettool_runs.sql"); 1069 1072 if (!query) { 1070 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1073 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1071 1074 return false; 1072 1075 } … … 1138 1141 psString query = pxDataGet("dettool_childlessrun.sql"); 1139 1142 if (!query) { 1140 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1143 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1141 1144 psFree(where); 1142 1145 return false; … … 1212 1215 psString query = pxDataGet("dettool_input.sql"); 1213 1216 if (!query) { 1214 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1217 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1215 1218 psFree(where); 1216 1219 return false; … … 1264 1267 psString query = pxDataGet("dettool_raw.sql"); 1265 1268 if (!query) { 1266 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1269 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1267 1270 return false; 1268 1271 } … … 1338 1341 } 1339 1342 1340 // used by updatedetrunMode 1343 // used by updatedetrunMode 1341 1344 bool startNewIteration(pxConfig *config, psS64 det_id) 1342 1345 { … … 1345 1348 psString query = pxDataGet("dettool_start_new_iteration.sql"); 1346 1349 if (!query) { 1347 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1350 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1348 1351 return false; 1349 1352 } … … 1564 1567 } 1565 1568 detInputExpRow *newInputExp = detInputExpRowAlloc( 1566 det_id,1569 det_id, 1567 1570 newIteration, 1568 1571 inputExp->exp_id, … … 1662 1665 solang_max, 1663 1666 label, 1664 ref_det_id,1665 ref_iter1667 ref_det_id, 1668 ref_iter 1666 1669 )) { 1667 1670 psError(PS_ERR_UNKNOWN, false, "database error"); … … 1713 1716 { 1714 1717 PS_ASSERT_PTR_NON_NULL(config, false); 1715 1718 1716 1719 PXOPT_LOOKUP_S64(det_id, config->args, "-det_id", true, false); // required 1717 1720 PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false); // required … … 1728 1731 1729 1732 if (!detRegisteredImfileInsert(config->dbh, 1730 det_id,1731 0, // the iteration is fixed at 01732 class_id,1733 uri,1734 bg,1735 bg_stdev,1736 bg_mean_stdev,1737 user_1,1738 user_2,1739 user_3,1740 user_4,1741 user_5,1742 path_base,1743 "full", 1744 0 // fault code1745 )) {1733 det_id, 1734 0, // the iteration is fixed at 0 1735 class_id, 1736 uri, 1737 bg, 1738 bg_stdev, 1739 bg_mean_stdev, 1740 user_1, 1741 user_2, 1742 user_3, 1743 user_4, 1744 user_5, 1745 path_base, 1746 "full", 1747 0 // fault code 1748 )) { 1746 1749 psError(PS_ERR_UNKNOWN, false, "database error"); 1747 1750 return false; … … 1858 1861 1859 1862 1860 bool setProcessedImfileDataState(pxConfig *config, ps S64 det_id, psS64 exp_id, const char *class_id, const char *data_state)1863 bool setProcessedImfileDataState(pxConfig *config, psMetadata *where, const char *data_state) 1861 1864 { 1862 1865 PS_ASSERT_PTR_NON_NULL(config, false); 1866 PS_ASSERT_PTR_NON_NULL(where, false); 1863 1867 PS_ASSERT_PTR_NON_NULL(data_state, false); 1864 PS_ASSERT_PTR_NON_NULL(class_id, false);1865 1868 1866 1869 if (!isValidDataState (data_state)) return false; 1867 1868 char *query = "UPDATE detProcessedImfile SET data_state = '%s'" 1869 " WHERE det_id = %" PRId64 1870 " AND exp_id = %" PRId64 1871 " AND class_id = '%s'"; 1872 if (!p_psDBRunQueryF(config->dbh, query, data_state, det_id, exp_id, class_id)) { 1873 psError(PS_ERR_UNKNOWN, false, 1874 "failed to change state for det_id %" PRId64 ", exp_id %" PRId64 ", class_id %s", 1875 det_id, exp_id, class_id); 1876 return false; 1877 } 1878 1879 return true; 1880 } 1881 1882 bool setProcessedExpDataState(pxConfig *config, psS64 det_id, psS64 exp_id, const char *data_state) 1870 1871 psString query = psStringCopy("UPDATE detProcessedImfile SET data_state = '%s'"); 1872 if (where && psListLength(where->list) > 0) { 1873 psString whereClause = psDBGenerateWhereSQL(where,NULL); 1874 psStringAppend(&query," %s",whereClause); 1875 psFree(whereClause); 1876 } else { 1877 psError(PS_ERR_UNKNOWN, true, "search parameters are required"); 1878 return(false); 1879 } 1880 1881 if (!p_psDBRunQueryF(config->dbh, query, data_state)) { 1882 psFree(query); 1883 psError(PS_ERR_UNKNOWN, false, "database error"); 1884 return(false); 1885 } 1886 psFree(query); 1887 return(true); 1888 } 1889 1890 bool setProcessedExpDataState(pxConfig *config, psMetadata *where, const char *data_state) 1883 1891 { 1884 1892 PS_ASSERT_PTR_NON_NULL(config, false); 1893 PS_ASSERT_PTR_NON_NULL(where, false); 1885 1894 PS_ASSERT_PTR_NON_NULL(data_state, false); 1886 1895 1887 1896 if (!isValidDataState (data_state)) return false; 1888 1897 1889 char *query = "UPDATE detProcessedExp SET data_state = '%s'" 1890 " WHERE det_id = %" PRId64 1891 " AND exp_id = %" PRId64; 1892 if (!p_psDBRunQueryF(config->dbh, query, data_state, det_id, exp_id)) { 1893 psError(PS_ERR_UNKNOWN, false, 1894 "failed to change state for det_id %" PRId64 ", exp_id %" PRId64, 1895 det_id, exp_id); 1896 return false; 1897 } 1898 1899 return true; 1900 } 1901 1902 1898 psString query = psStringCopy("UPDATE detProcessedExp SET data_state = '%s'"); 1899 if (where && psListLength(where->list) > 0) { 1900 psString whereClause = psDBGenerateWhereSQL(where,NULL); 1901 psStringAppend(&query," %s",whereClause); 1902 psFree(whereClause); 1903 } else { 1904 psError(PS_ERR_UNKNOWN, true, "search parameters are required"); 1905 return(false); 1906 } 1907 1908 if (!p_psDBRunQueryF(config->dbh, query, data_state)) { 1909 psFree(query); 1910 psError(PS_ERR_UNKNOWN, false, "database error"); 1911 return(false); 1912 } 1913 psFree(query); 1914 return(true); 1915 } 1916 1917 bool setResidImfileDataState(pxConfig *config, psMetadata *where, const char *data_state) 1918 { 1919 PS_ASSERT_PTR_NON_NULL(config, false); 1920 PS_ASSERT_PTR_NON_NULL(where,false); 1921 PS_ASSERT_PTR_NON_NULL(data_state, false); 1922 1923 if (!isValidDataState (data_state)) return false; 1924 1925 psString query = psStringCopy("UPDATE detResidImfile SET data_state = '%s'"); 1926 if (where && psListLength(where->list) > 0) { 1927 psString whereClause = psDBGenerateWhereSQL(where,NULL); 1928 psStringAppend(&query," %s",whereClause); 1929 psFree(whereClause); 1930 } else { 1931 psError(PS_ERR_UNKNOWN, true, "search parameters are required"); 1932 return(false); 1933 } 1934 1935 if (!p_psDBRunQueryF(config->dbh, query, data_state)) { 1936 psFree(query); 1937 psError(PS_ERR_UNKNOWN, false, "database error"); 1938 return(false); 1939 } 1940 psFree(query); 1941 return(true); 1942 } 1943 // This function apparently not used anymore. 1944 bool setResidExpDataState(pxConfig *config, psMetadata *where, const char *data_state) 1945 { 1946 PS_ASSERT_PTR_NON_NULL(config, false); 1947 PS_ASSERT_PTR_NON_NULL(where,false); 1948 PS_ASSERT_PTR_NON_NULL(data_state, false); 1949 1950 if (!isValidDataState (data_state)) return false; 1951 1952 psString query = psStringCopy("UPDATE detResidExp SET data_state = '%s'"); 1953 if (where && psListLength(where->list) > 0) { 1954 psString whereClause = psDBGenerateWhereSQL(where,NULL); 1955 psStringAppend(&query," %s",whereClause); 1956 psFree(whereClause); 1957 } else { 1958 psError(PS_ERR_UNKNOWN, true, "search parameters are required"); 1959 return(false); 1960 } 1961 1962 if (!p_psDBRunQueryF(config->dbh, query, data_state)) { 1963 psFree(query); 1964 psError(PS_ERR_UNKNOWN, false, "database error"); 1965 return(false); 1966 } 1967 psFree(query); 1968 return(true); 1969 } 1970 1971 // Not yet updated for cleaning 1903 1972 bool setStackedImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *class_id, const char *data_state) 1904 1973 { … … 1910 1979 1911 1980 char *query = "UPDATE detStackedImfile SET data_state = '%s'" 1912 " WHERE det_id = %" PRId641913 " AND iteration = %" PRId321914 " AND class_id = '%s'";1981 " WHERE det_id = %" PRId64 1982 " AND iteration = %" PRId32 1983 " AND class_id = '%s'"; 1915 1984 if (!p_psDBRunQueryF(config->dbh, query, data_state, det_id, iteration, class_id)) { 1916 1985 psError(PS_ERR_UNKNOWN, false, 1917 "failed to change state for det_id %" PRId64 ", iteration %" PRId32 "class_id %s", 1918 det_id, iteration, class_id);1986 "failed to change state for det_id %" PRId64 ", iteration %" PRId32 "class_id %s", 1987 det_id, iteration, class_id); 1919 1988 return false; 1920 1989 } … … 1932 2001 1933 2002 char *query = "UPDATE detNormalizedStatImfile SET data_state = '%s'" 1934 " WHERE det_id = %" PRId641935 " AND iteration = %" PRId321936 " AND class_id = '%s'";2003 " WHERE det_id = %" PRId64 2004 " AND iteration = %" PRId32 2005 " AND class_id = '%s'"; 1937 2006 /* fprintf(stderr,"DETTOOL SAYS: %s\n",query); */ 1938 2007 if (!p_psDBRunQueryF(config->dbh, query, data_state, det_id, iteration,class_id)) { 1939 2008 psError(PS_ERR_UNKNOWN, false, 1940 "failed to change state for det_id %" PRId64 ", iteration %" PRId32, 1941 det_id, iteration);2009 "failed to change state for det_id %" PRId64 ", iteration %" PRId32, 2010 det_id, iteration); 1942 2011 return false; 1943 2012 } … … 1955 2024 1956 2025 char *query = "UPDATE detNormalizedImfile SET data_state = '%s'" 1957 " WHERE det_id = %" PRId641958 " AND iteration = %" PRId321959 " AND class_id = '%s'";2026 " WHERE det_id = %" PRId64 2027 " AND iteration = %" PRId32 2028 " AND class_id = '%s'"; 1960 2029 if (!p_psDBRunQueryF(config->dbh, query, data_state, det_id, iteration, class_id)) { 1961 2030 psError(PS_ERR_UNKNOWN, false, 1962 "failed to change state for det_id %" PRId64 ", iteration %" PRId32 " class %s", 1963 det_id, iteration, class_id);2031 "failed to change state for det_id %" PRId64 ", iteration %" PRId32 " class %s", 2032 det_id, iteration, class_id); 1964 2033 return false; 1965 2034 } … … 1976 2045 1977 2046 char *query = "UPDATE detNormalizedExp SET data_state = '%s'" 1978 " WHERE det_id = %" PRId641979 " AND iteration = %" PRId32;2047 " WHERE det_id = %" PRId64 2048 " AND iteration = %" PRId32; 1980 2049 if (!p_psDBRunQueryF(config->dbh, query, data_state, det_id, iteration)) { 1981 2050 psError(PS_ERR_UNKNOWN, false, 1982 "failed to change state for det_id %" PRId64 ", iteration %" PRId32, 1983 det_id, iteration);2051 "failed to change state for det_id %" PRId64 ", iteration %" PRId32, 2052 det_id, iteration); 1984 2053 return false; 1985 2054 } … … 1987 2056 return true; 1988 2057 } 1989 1990 bool setResidImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, psS64 exp_id, const char *class_id, const char *data_state) 1991 { 1992 PS_ASSERT_PTR_NON_NULL(config, false); 1993 PS_ASSERT_PTR_NON_NULL(data_state, false); 1994 PS_ASSERT_PTR_NON_NULL(class_id, false); 1995 1996 if (!isValidDataState (data_state)) return false; 1997 1998 char *query = "UPDATE detResidImfile SET data_state = '%s'" 1999 " WHERE det_id = %" PRId64 2000 " AND iteration = %" PRId32 2001 " AND exp_id = %" PRId64 2002 " AND class_id = '%s'"; 2003 if (!p_psDBRunQueryF(config->dbh, query, data_state, det_id, iteration, exp_id, class_id)) { 2004 psError(PS_ERR_UNKNOWN, false, 2005 "failed to change state for det_id %" PRId64 ", iteration %" PRId32 ", exp_id %" PRId64 ", class_id %s", 2006 det_id, iteration, exp_id, class_id); 2007 return false; 2008 } 2009 2010 return true; 2011 } 2012 2013 bool setResidExpDataState(pxConfig *config, psS64 det_id, psS32 iteration, psS64 exp_id, const char *data_state) 2014 { 2015 PS_ASSERT_PTR_NON_NULL(config, false); 2016 PS_ASSERT_PTR_NON_NULL(data_state, false); 2017 2018 if (!isValidDataState (data_state)) return false; 2019 2020 char *query = "UPDATE detResidExp SET data_state = '%s'" 2021 " WHERE det_id = %" PRId64 2022 " AND iteration = %" PRId32 2023 " AND exp_id = %" PRId64; 2024 if (!p_psDBRunQueryF(config->dbh, query, data_state, det_id, iteration, exp_id)) { 2025 psError(PS_ERR_UNKNOWN, false, 2026 "failed to change state for det_id %" PRId64 ", iteration %" PRId32 ", exp_id %" PRId64, 2027 det_id, iteration, exp_id); 2028 return false; 2029 } 2030 2031 return true; 2032 } 2058 // End not yet modified for cleanup. 2033 2059 2034 2060 bool exportrunMode(pxConfig *config) … … 2038 2064 char sqlFilename[80]; 2039 2065 } ExportTable; 2040 2066 2041 2067 int numExportTables = 12; 2042 2068 … … 2074 2100 psString query = pxDataGet(tables[i].sqlFilename); 2075 2101 if (!query) { 2076 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");2102 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 2077 2103 return false; 2078 2104 } … … 2116 2142 } 2117 2143 psFree(output); 2118 2144 2119 2145 } 2120 2146 … … 2127 2153 { 2128 2154 unsigned int nFail; 2129 2155 2130 2156 int numImportTables = 11; 2131 2157 2132 2158 char tables[11] [80] = {"detInputExp", "detNormalizedExp", 2133 2159 "detNormalizedImfile", "detNormalizedStatImfile", "detProcessedExp", … … 2136 2162 2137 2163 PS_ASSERT_PTR_NON_NULL(config, NULL); 2138 2164 2139 2165 PXOPT_LOOKUP_STR(infile, config->args, "-infile", true, false); 2140 2166 … … 2143 2169 fprintf (stdout, "---- input ----\n"); 2144 2170 psMetadataPrint (stderr, input, 1); 2145 2171 2146 2172 psMetadataItem *item = psMetadataLookup (input, "detRun"); 2147 2173 psAssert (item, "entry not in input?"); … … 2153 2179 detRunRow *detRun = detRunObjectFromMetadata (entry->data.md); 2154 2180 detRunInsertObject (config->dbh, detRun); 2155 2181 2156 2182 // fprintf (stdout, "---- det run ----\n"); 2157 2183 // psMetadataPrint (stderr, entry->data.md, 1); … … 2161 2187 psAssert (item, "entry not in input?"); 2162 2188 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 2163 2189 2164 2190 switch (i) { 2165 2191 case 0: … … 2175 2201 } 2176 2202 break; 2177 2203 2178 2204 case 1: 2179 2205 for (int i = 0; i < item->data.list->n; i++) { … … 2188 2214 } 2189 2215 break; 2190 2216 2191 2217 case 2: 2192 2218 for (int i = 0; i < item->data.list->n; i++) { … … 2201 2227 } 2202 2228 break; 2203 2229 2204 2230 case 3: 2205 2231 for (int i = 0; i < item->data.list->n; i++) { … … 2214 2240 } 2215 2241 break; 2216 2242 2217 2243 case 4: 2218 2244 for (int i = 0; i < item->data.list->n; i++) { … … 2227 2253 } 2228 2254 break; 2229 2255 2230 2256 case 5: 2231 2257 for (int i = 0; i < item->data.list->n; i++) { … … 2240 2266 } 2241 2267 break; 2242 2268 2243 2269 case 6: 2244 2270 for (int i = 0; i < item->data.list->n; i++) { … … 2253 2279 } 2254 2280 break; 2255 2281 2256 2282 case 7: 2257 2283 for (int i = 0; i < item->data.list->n; i++) { … … 2266 2292 } 2267 2293 break; 2268 2294 2269 2295 case 8: 2270 2296 for (int i = 0; i < item->data.list->n; i++) { … … 2279 2305 } 2280 2306 break; 2281 2307 2282 2308 case 9: 2283 2309 for (int i = 0; i < item->data.list->n; i++) { … … 2292 2318 } 2293 2319 break; 2294 2320 2295 2321 case 10: 2296 2322 for (int i = 0; i < item->data.list->n; i++) { -
branches/tap_branches/ippTools/src/dettool.h
r25324 r27838 57 57 DETTOOL_MODE_PENDINGCLEANUP_PROCESSEDEXP, 58 58 DETTOOL_MODE_DONECLEANUP_PROCESSEDEXP, 59 DETTOOL_MODE_UPDATESTATE_PROCESSED, 59 60 60 61 DETTOOL_MODE_TOSTACKED, … … 105 106 DETTOOL_MODE_PENDINGCLEANUP_RESIDEXP, 106 107 DETTOOL_MODE_DONECLEANUP_RESIDEXP, 108 DETTOOL_MODE_UPDATESTATE_RESID, 107 109 108 110 DETTOOL_MODE_TODETRUNSUMMARY, … … 149 151 bool pendingcleanup_processedexpMode(pxConfig *config); 150 152 bool donecleanup_processedexpMode(pxConfig *config); 153 bool updatestateprocessedMode(pxConfig *config); 151 154 152 155 // stackedimfile … … 203 206 bool pendingcleanup_residexpMode(pxConfig *config); 204 207 bool donecleanup_residexpMode(pxConfig *config); 208 bool updatestateresidMode(pxConfig *config); 205 209 206 210 // detrunsummary … … 220 224 221 225 // functions to set the 'data_state' for stages 222 bool setProcessedImfileDataState(pxConfig *config, psS64 det_id, psS64 exp_id, const char *class_id, const char *data_state); 223 bool setProcessedExpDataState(pxConfig *config, psS64 det_id, psS64 exp_id, const char *data_state); 226 bool setProcessedImfileDataState(pxConfig *config, psMetadata *where, const char *data_state); 227 bool setProcessedExpDataState(pxConfig *config, psMetadata *where, const char *data_state); 228 bool setResidImfileDataState(pxConfig *config, psMetadata *where, const char *data_state); 229 bool setResidExpDataState(pxConfig *config, psMetadata *where, const char *data_state); 230 224 231 bool setStackedImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *class_id, const char *data_state); 225 232 bool setNormStatImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *class_id, const char *data_state); 226 233 bool setNormImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *class_id, const char *data_state); 227 234 bool setNormExpDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *data_state); 228 bool setResidImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, psS64 exp_id, const char *class_id, const char *data_state);229 bool setResidExpDataState(pxConfig *config, psS64 det_id, psS32 iteration, psS64 exp_id, const char *data_state);230 235 231 236 #endif // DETTOOL_H -
branches/tap_branches/ippTools/src/dettoolConfig.c
r25324 r27838 31 31 config->modules = pmConfigRead(&argc, argv, NULL); 32 32 if (!config->modules) { 33 psError( PS_ERR_UNKNOWN, false, "Can't find site configuration");33 psError(psErrorCodeLast(), false, "Can't find site configuration"); 34 34 psFree(config); 35 35 return NULL; … … 117 117 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_airmass_max", 0, "define max airmass", NAN); 118 118 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_sat_pixel_frac_max", 0, "define max fraction of saturated pixels", NAN); 119 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_sat_pixel_frac_min", 0, "define min fraction of saturated pixels", NAN); 119 120 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_exp_time_min", 0, "define min exposure time", NAN); 120 121 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_exp_time_max", 0, "define max exposure time", NAN); … … 305 306 // -updateprocessedimfile 306 307 psMetadata *updateprocessedimfileArgs = psMetadataAlloc(); 307 psMetadataAddS64(updateprocessedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);308 psMetadataAddS64(updateprocessedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 308 309 psMetadataAddS64(updateprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 309 310 psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); … … 314 315 psMetadataAddBool(pendingcleanup_processedimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 315 316 psMetadataAddU64(pendingcleanup_processedimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 316 psMetadataAddS64(pendingcleanup_processedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);317 psMetadataAddS64(pendingcleanup_processedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 317 318 psMetadataAddS64(pendingcleanup_processedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 318 319 psMetadataAddStr(pendingcleanup_processedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); … … 322 323 psMetadataAddBool(donecleanup_processedimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 323 324 psMetadataAddU64(donecleanup_processedimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 324 psMetadataAddS64(donecleanup_processedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);325 psMetadataAddS64(donecleanup_processedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 325 326 psMetadataAddS64(donecleanup_processedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 326 327 psMetadataAddStr(donecleanup_processedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); … … 366 367 // -updateprocessedexp 367 368 psMetadata *updateprocessedexpArgs = psMetadataAlloc(); 368 psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);369 psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 369 370 psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 370 371 psMetadataAddStr(updateprocessedexpArgs, PS_LIST_TAIL, "-data_state", 0, "set state", NULL); … … 374 375 psMetadataAddBool(pendingcleanup_processedexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 375 376 psMetadataAddU64(pendingcleanup_processedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 376 psMetadataAddS64(pendingcleanup_processedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);377 psMetadataAddS64(pendingcleanup_processedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 377 378 psMetadataAddS64(pendingcleanup_processedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 378 379 … … 381 382 psMetadataAddBool(donecleanup_processedexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 382 383 psMetadataAddU64(donecleanup_processedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 383 psMetadataAddS64(donecleanup_processedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);384 psMetadataAddS64(donecleanup_processedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 384 385 psMetadataAddS64(donecleanup_processedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 386 387 // -updatestate_processed 388 psMetadata *updatestateprocessedArgs = psMetadataAlloc(); 389 psMetadataAddS64(updatestateprocessedArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 390 psMetadataAddS64(updatestateprocessedArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 391 psMetadataAddStr(updatestateprocessedArgs, PS_LIST_TAIL, "-data_state", 0, "set state", NULL); 385 392 386 393 // -tostacked … … 425 432 // -updatestacked 426 433 psMetadata *updatestackedArgs = psMetadataAlloc(); 427 psMetadataAddS64(updatestackedArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);434 psMetadataAddS64(updatestackedArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 428 435 psMetadataAddS32(updatestackedArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 429 436 psMetadataAddStr(updatestackedArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); … … 434 441 psMetadataAddBool(pendingcleanup_stackedArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 435 442 psMetadataAddU64(pendingcleanup_stackedArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 436 psMetadataAddS64(pendingcleanup_stackedArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);443 psMetadataAddS64(pendingcleanup_stackedArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 437 444 psMetadataAddS32(pendingcleanup_stackedArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 438 445 psMetadataAddStr(pendingcleanup_stackedArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); … … 442 449 psMetadataAddBool(donecleanup_stackedArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 443 450 psMetadataAddU64(donecleanup_stackedArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 444 psMetadataAddS64(donecleanup_stackedArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);451 psMetadataAddS64(donecleanup_stackedArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 445 452 psMetadataAddS32(donecleanup_stackedArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 446 453 psMetadataAddStr(donecleanup_stackedArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); … … 477 484 // -updatenormalizedstat 478 485 psMetadata *updatenormalizedstatArgs = psMetadataAlloc(); 479 psMetadataAddS64(updatenormalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);486 psMetadataAddS64(updatenormalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 480 487 psMetadataAddS32(updatenormalizedstatArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 481 488 psMetadataAddStr(updatenormalizedstatArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); … … 486 493 psMetadataAddBool(pendingcleanup_normalizedstatArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 487 494 psMetadataAddU64(pendingcleanup_normalizedstatArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 488 psMetadataAddS64(pendingcleanup_normalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);495 psMetadataAddS64(pendingcleanup_normalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 489 496 psMetadataAddS32(pendingcleanup_normalizedstatArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 490 497 psMetadataAddStr(pendingcleanup_normalizedstatArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); … … 494 501 psMetadataAddBool(donecleanup_normalizedstatArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 495 502 psMetadataAddU64(donecleanup_normalizedstatArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 496 psMetadataAddS64(donecleanup_normalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);503 psMetadataAddS64(donecleanup_normalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 497 504 psMetadataAddS32(donecleanup_normalizedstatArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 498 505 psMetadataAddStr(donecleanup_normalizedstatArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); … … 539 546 // -updatenormalizedimfile 540 547 psMetadata *updatenormalizedimfileArgs = psMetadataAlloc(); 541 psMetadataAddS64(updatenormalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);548 psMetadataAddS64(updatenormalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 542 549 psMetadataAddS32(updatenormalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 543 550 psMetadataAddStr(updatenormalizedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); … … 548 555 psMetadataAddBool(pendingcleanup_normalizedimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 549 556 psMetadataAddU64(pendingcleanup_normalizedimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 550 psMetadataAddS64(pendingcleanup_normalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);557 psMetadataAddS64(pendingcleanup_normalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 551 558 psMetadataAddS32(pendingcleanup_normalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 552 559 psMetadataAddStr(pendingcleanup_normalizedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); … … 556 563 psMetadataAddBool(donecleanup_normalizedimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 557 564 psMetadataAddU64(donecleanup_normalizedimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 558 psMetadataAddS64(donecleanup_normalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);565 psMetadataAddS64(donecleanup_normalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 559 566 psMetadataAddS32(donecleanup_normalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 560 567 psMetadataAddStr(donecleanup_normalizedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); … … 598 605 // -updatenormalizedexp 599 606 psMetadata *updatenormalizedexpArgs = psMetadataAlloc(); 600 psMetadataAddS64(updatenormalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);607 psMetadataAddS64(updatenormalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 601 608 psMetadataAddS32(updatenormalizedexpArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 602 609 psMetadataAddStr(updatenormalizedexpArgs, PS_LIST_TAIL, "-data_state", 0, "set state", NULL); … … 606 613 psMetadataAddBool(pendingcleanup_normalizedexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 607 614 psMetadataAddU64(pendingcleanup_normalizedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 608 psMetadataAddS64(pendingcleanup_normalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);615 psMetadataAddS64(pendingcleanup_normalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 609 616 psMetadataAddS32(pendingcleanup_normalizedexpArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 610 617 … … 613 620 psMetadataAddBool(donecleanup_normalizedexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 614 621 psMetadataAddU64(donecleanup_normalizedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 615 psMetadataAddS64(donecleanup_normalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);622 psMetadataAddS64(donecleanup_normalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 616 623 psMetadataAddS32(donecleanup_normalizedexpArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 617 624 … … 676 683 // -updateresidimfile 677 684 psMetadata *updateresidimfileArgs = psMetadataAlloc(); 678 psMetadataAddS64(updateresidimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);685 psMetadataAddS64(updateresidimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 679 686 psMetadataAddS32(updateresidimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 680 687 psMetadataAddS64(updateresidimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); … … 686 693 psMetadataAddBool(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 687 694 psMetadataAddU64(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 688 psMetadataAddS64(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);695 psMetadataAddS64(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 689 696 psMetadataAddS32(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 690 697 psMetadataAddS64(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); … … 695 702 psMetadataAddBool(donecleanup_residimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 696 703 psMetadataAddU64(donecleanup_residimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 697 psMetadataAddS64(donecleanup_residimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chipID", 0);704 psMetadataAddS64(donecleanup_residimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 698 705 psMetadataAddS32(donecleanup_residimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 699 706 psMetadataAddS64(donecleanup_residimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); … … 778 785 psMetadataAddS32(donecleanup_residexpArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 779 786 psMetadataAddS64(donecleanup_residexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by detrend ID", 0); 787 788 // -updatestate_resid 789 psMetadata *updatestateresidArgs = psMetadataAlloc(); 790 psMetadataAddS64(updatestateresidArgs, PS_LIST_TAIL, "-det_id", 0, "search by det ID", 0); 791 psMetadataAddS64(updatestateresidArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 792 psMetadataAddStr(updatestateresidArgs, PS_LIST_TAIL, "-data_state", 0, "set state", NULL); 780 793 781 794 // -todetrunsummary … … 924 937 PXOPT_ADD_MODE("-pendingcleanup_processedexp", "", DETTOOL_MODE_PENDINGCLEANUP_PROCESSEDEXP, pendingcleanup_processedexpArgs); 925 938 PXOPT_ADD_MODE("-donecleanup_processedexp", "", DETTOOL_MODE_DONECLEANUP_PROCESSEDEXP, donecleanup_processedexpArgs); 939 PXOPT_ADD_MODE("-updatestate_processed", "", DETTOOL_MODE_UPDATESTATE_PROCESSED, updatestateprocessedArgs); 926 940 927 941 PXOPT_ADD_MODE("-tostacked", "", DETTOOL_MODE_TOSTACKED, tostackedArgs); … … 972 986 PXOPT_ADD_MODE("-pendingcleanup_residexp", "", DETTOOL_MODE_PENDINGCLEANUP_RESIDEXP, pendingcleanup_residexpArgs); 973 987 PXOPT_ADD_MODE("-donecleanup_residexp", "", DETTOOL_MODE_DONECLEANUP_RESIDEXP, donecleanup_residexpArgs); 988 PXOPT_ADD_MODE("-updatestate_resid", "", DETTOOL_MODE_UPDATESTATE_RESID, updatestateresidArgs); 974 989 975 990 PXOPT_ADD_MODE("-todetrunsummary", "", DETTOOL_MODE_TODETRUNSUMMARY, todetrunsummaryArgs); -
branches/tap_branches/ippTools/src/dettool_correction.c
r20377 r27838 34 34 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 35 35 36 // build the needed where 36 // build the needed where 37 37 psMetadata *where = psMetadataAlloc(); 38 38 psMetadataAddS64(where, PS_LIST_TAIL, "det_id", 0, "==", ref_det_id); … … 88 88 detRun->solang_max, 89 89 use_label, 90 detRun->det_id, // ref_det_id91 detRun->iteration // ref_iter90 detRun->det_id, // ref_det_id 91 detRun->iteration // ref_iter 92 92 ); 93 93 psFree(runs); … … 140 140 psString query = pxDataGet("dettool_tocorrectimfile.sql"); 141 141 if (!query) { 142 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");142 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 143 143 return false; 144 144 } 145 145 146 146 if (psListLength(where->list)) { 147 // NOTE the SQL uses an intermediate table 'det1' for this query148 psString whereClause = psDBGenerateWhereConditionSQL(where, "det1"); 147 // NOTE the SQL uses an intermediate table 'det1' for this query 148 psString whereClause = psDBGenerateWhereConditionSQL(where, "det1"); 149 149 psStringAppend(&query, " AND %s", whereClause); 150 150 psFree(whereClause); … … 198 198 psString query = pxDataGet("dettool_tocorrectexp.sql"); 199 199 if (!query) { 200 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");200 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 201 201 return false; 202 202 } … … 248 248 return false; 249 249 } 250 250 251 251 // automatically stop completed 'correct' detRuns 252 252 psString query = pxDataGet("dettool_stop_completed_correct_runs.sql"); 253 253 if (!query) { 254 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");254 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 255 255 return false; 256 256 } -
branches/tap_branches/ippTools/src/dettool_detrunsummary.c
r25324 r27838 35 35 psString query = pxDataGet("dettool_todetrunsummary.sql"); 36 36 if (!query) { 37 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");37 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 38 38 return false; 39 39 } … … 135 135 psString query = pxDataGet("dettool_find_completed_runs.sql"); 136 136 if (!query) { 137 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");137 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 138 138 return false; 139 139 } … … 241 241 psString query = pxDataGet("dettool_detrunsummary.sql"); 242 242 if (!query) { 243 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");243 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 244 244 psFree(where); 245 245 return false; … … 310 310 psString query = pxDataGet("dettool_revertdetrunsummary.sql"); 311 311 if (!query) { 312 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");312 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 313 313 return false; 314 314 } … … 348 348 psString query = pxDataGet("dettool_pendingcleanup_detrunsummary.sql"); 349 349 if (!query) { 350 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");350 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 351 351 return(false); 352 352 } 353 353 354 354 if (psListLength(where->list)) { 355 355 psString whereClause = psDBGenerateWhereConditionSQL(where, "detRunSummary"); … … 429 429 430 430 /* if (!isValidDataState(data_state)) return false; */ 431 432 433 431 432 433 434 434 char *query_detRunSummary = "UPDATE detRunSummary SET data_state = '%s'" 435 " WHERE det_id = %" PRId64436 " AND iteration = %" PRId32;435 " WHERE det_id = %" PRId64 436 " AND iteration = %" PRId32; 437 437 if (!p_psDBRunQueryF(config->dbh, query_detRunSummary, data_state, det_id,iteration)) { 438 psError(PS_ERR_UNKNOWN, false,439 "failed to change state for det_id %" PRId64 ", iteration %" PRId32, det_id,iteration);440 return false;438 psError(PS_ERR_UNKNOWN, false, 439 "failed to change state for det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 440 return false; 441 441 } 442 442 443 443 /* This check allows the one update to flag everything for cleanup. The check for full is only temporary while I test for bugs. */ 444 444 if ((!strncmp(data_state,"goto_",5) 445 //|| (!strcmp(data_state,"full"))446 //|| (!strcmp(data_state,"cleaned"))447 )){448 char *query_detProcessedImfile = "UPDATE detProcessedImfile SET data_state = '%s'"449 " WHERE det_id = %" PRId64;450 if (!p_psDBRunQueryF(config->dbh, query_detProcessedImfile,data_state,det_id)) {451 psError(PS_ERR_UNKNOWN, false,452 "failed to change state for detProcessedImfile det_id %" PRId64 ", iteration %" PRId32, det_id,iteration);453 return(false);454 }455 456 char *query_detProcessedExp = "UPDATE detProcessedExp SET data_state = '%s'"457 " WHERE det_id = %" PRId64;458 if (!p_psDBRunQueryF(config->dbh, query_detProcessedExp,data_state,det_id)) {459 psError(PS_ERR_UNKNOWN, false,460 "failed to change state for detProcessedExp det_id %" PRId64 ", iteration %" PRId32, det_id,iteration);461 return(false);462 }463 464 char *query_detNormalizedImfile = "UPDATE detNormalizedImfile SET data_state = '%s'"465 " WHERE det_id = %" PRId64466 " AND iteration = %" PRId32;467 if (!p_psDBRunQueryF(config->dbh, query_detNormalizedImfile,data_state,det_id,iteration)) {468 psError(PS_ERR_UNKNOWN, false,469 "failed to change state for detNormalizedImfile det_id %" PRId64 ", iteration %" PRId32, det_id,iteration);470 return(false);471 }472 473 char *query_detNormalizedStatImfile = "UPDATE detNormalizedStatImfile SET data_state = '%s'"474 " WHERE det_id = %" PRId64475 " AND iteration = %" PRId32;476 if (!p_psDBRunQueryF(config->dbh, query_detNormalizedStatImfile,data_state,det_id,iteration)) {477 psError(PS_ERR_UNKNOWN, false,478 "failed to change state for detNormalizedStatImfile det_id %" PRId64 ", iteration %" PRId32, det_id,iteration);479 return(false);480 }481 482 char *query_detNormalizedExp = "UPDATE detNormalizedExp SET data_state = '%s'"483 " WHERE det_id = %" PRId64484 " AND iteration = %" PRId32;485 if (!p_psDBRunQueryF(config->dbh, query_detNormalizedExp,data_state,det_id,iteration)) {486 psError(PS_ERR_UNKNOWN, false,487 "failed to change state for detNormalizedExp det_id %" PRId64 ", iteration %" PRId32, det_id,iteration);488 return(false);489 }490 491 char *query_detResidImfile = "UPDATE detResidImfile SET data_state = '%s'"492 " WHERE det_id = %" PRId64493 " AND iteration = %" PRId32;494 if (!p_psDBRunQueryF(config->dbh, query_detResidImfile,data_state,det_id,iteration)) {495 psError(PS_ERR_UNKNOWN, false,496 "failed to change state for detResidImfile det_id %" PRId64 ", iteration %" PRId32, det_id,iteration);497 return(false);498 }499 500 char *query_detResidExp = "UPDATE detResidExp SET data_state = '%s'"501 " WHERE det_id = %" PRId64502 " AND iteration = %" PRId32;503 if (!p_psDBRunQueryF(config->dbh, query_detResidExp,data_state,det_id,iteration)) {504 psError(PS_ERR_UNKNOWN, false,505 "failed to change state for detResidExp det_id %" PRId64 ", iteration %" PRId32, det_id,iteration);506 return(false);507 }508 509 char *query_detStackedImfile = "UPDATE detStackedImfile SET data_state = '%s'"510 " WHERE det_id = %" PRId64511 " AND iteration = %" PRId32;512 if (!p_psDBRunQueryF(config->dbh, query_detStackedImfile,data_state,det_id,iteration)) {513 psError(PS_ERR_UNKNOWN, false,514 "failed to change state for detStackedImfile det_id %" PRId64 ", iteration %" PRId32, det_id,iteration);515 return(false);516 }445 // || (!strcmp(data_state,"full")) 446 // || (!strcmp(data_state,"cleaned")) 447 )) { 448 char *query_detProcessedImfile = "UPDATE detProcessedImfile SET data_state = '%s'" 449 " WHERE det_id = %" PRId64; 450 if (!p_psDBRunQueryF(config->dbh, query_detProcessedImfile,data_state,det_id)) { 451 psError(PS_ERR_UNKNOWN, false, 452 "failed to change state for detProcessedImfile det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 453 return(false); 454 } 455 456 char *query_detProcessedExp = "UPDATE detProcessedExp SET data_state = '%s'" 457 " WHERE det_id = %" PRId64; 458 if (!p_psDBRunQueryF(config->dbh, query_detProcessedExp,data_state,det_id)) { 459 psError(PS_ERR_UNKNOWN, false, 460 "failed to change state for detProcessedExp det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 461 return(false); 462 } 463 464 char *query_detNormalizedImfile = "UPDATE detNormalizedImfile SET data_state = '%s'" 465 " WHERE det_id = %" PRId64 466 " AND iteration = %" PRId32; 467 if (!p_psDBRunQueryF(config->dbh, query_detNormalizedImfile,data_state,det_id,iteration)) { 468 psError(PS_ERR_UNKNOWN, false, 469 "failed to change state for detNormalizedImfile det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 470 return(false); 471 } 472 473 char *query_detNormalizedStatImfile = "UPDATE detNormalizedStatImfile SET data_state = '%s'" 474 " WHERE det_id = %" PRId64 475 " AND iteration = %" PRId32; 476 if (!p_psDBRunQueryF(config->dbh, query_detNormalizedStatImfile,data_state,det_id,iteration)) { 477 psError(PS_ERR_UNKNOWN, false, 478 "failed to change state for detNormalizedStatImfile det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 479 return(false); 480 } 481 482 char *query_detNormalizedExp = "UPDATE detNormalizedExp SET data_state = '%s'" 483 " WHERE det_id = %" PRId64 484 " AND iteration = %" PRId32; 485 if (!p_psDBRunQueryF(config->dbh, query_detNormalizedExp,data_state,det_id,iteration)) { 486 psError(PS_ERR_UNKNOWN, false, 487 "failed to change state for detNormalizedExp det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 488 return(false); 489 } 490 491 char *query_detResidImfile = "UPDATE detResidImfile SET data_state = '%s'" 492 " WHERE det_id = %" PRId64 493 " AND iteration = %" PRId32; 494 if (!p_psDBRunQueryF(config->dbh, query_detResidImfile,data_state,det_id,iteration)) { 495 psError(PS_ERR_UNKNOWN, false, 496 "failed to change state for detResidImfile det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 497 return(false); 498 } 499 500 char *query_detResidExp = "UPDATE detResidExp SET data_state = '%s'" 501 " WHERE det_id = %" PRId64 502 " AND iteration = %" PRId32; 503 if (!p_psDBRunQueryF(config->dbh, query_detResidExp,data_state,det_id,iteration)) { 504 psError(PS_ERR_UNKNOWN, false, 505 "failed to change state for detResidExp det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 506 return(false); 507 } 508 509 char *query_detStackedImfile = "UPDATE detStackedImfile SET data_state = '%s'" 510 " WHERE det_id = %" PRId64 511 " AND iteration = %" PRId32; 512 if (!p_psDBRunQueryF(config->dbh, query_detStackedImfile,data_state,det_id,iteration)) { 513 psError(PS_ERR_UNKNOWN, false, 514 "failed to change state for detStackedImfile det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 515 return(false); 516 } 517 517 } 518 518 /* End if */ 519 519 520 520 } 521 521 -
branches/tap_branches/ippTools/src/dettool_normalizedexp.c
r23688 r27838 29 29 psString query = pxDataGet("dettool_tonormalizedexp.sql"); 30 30 if (!query) { 31 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");31 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 32 32 return false; 33 33 } … … 89 89 psString query = pxDataGet("dettool_tonormalizedexp.sql"); 90 90 if (!query) { 91 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");91 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 92 92 return false; 93 93 } … … 156 156 psString query = pxDataGet("dettool_normalizedexp.sql"); 157 157 if (!query) { 158 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");158 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 159 159 return false; 160 160 } … … 225 225 psString query = pxDataGet("dettool_revertnormalizedexp.sql"); 226 226 if (!query) { 227 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");227 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 228 228 return false; 229 229 } … … 278 278 psString query = pxDataGet("dettool_pendingcleanup_normalizedexp.sql"); 279 279 if (!query) { 280 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");280 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 281 281 return false; 282 282 } … … 340 340 psString query = pxDataGet("dettool_donecleanup_normalizedexp.sql"); 341 341 if (!query) { 342 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");342 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 343 343 return false; 344 344 } -
branches/tap_branches/ippTools/src/dettool_normalizedimfile.c
r23688 r27838 30 30 psString query = pxDataGet("dettool_tonormalize.sql"); 31 31 if (!query) { 32 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");32 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 33 33 return false; 34 34 } … … 137 137 psString query = pxDataGet("dettool_normalizedimfile.sql"); 138 138 if (!query) { 139 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");139 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 140 140 return false; 141 141 } … … 205 205 psString query = pxDataGet("dettool_revertnormalizedimfile.sql"); 206 206 if (!query) { 207 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");207 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 208 208 return false; 209 209 } … … 260 260 psString query = pxDataGet("dettool_pendingcleanup_normalizedimfile.sql"); 261 261 if (!query) { 262 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");262 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 263 263 return false; 264 264 } … … 323 323 psString query = pxDataGet("dettool_donecleanup_normalizedimfile.sql"); 324 324 if (!query) { 325 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");325 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 326 326 return false; 327 327 } -
branches/tap_branches/ippTools/src/dettool_normalizedstat.c
r23688 r27838 29 29 psString query = pxDataGet("dettool_tonormalizedstat.sql"); 30 30 if (!query) { 31 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");31 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 32 32 return false; 33 33 } … … 117 117 psString query = pxDataGet("dettool_normalizedstat.sql"); 118 118 if (!query) { 119 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");119 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 120 120 return false; 121 121 } … … 185 185 psString query = pxDataGet("dettool_revertnormalizedstat.sql"); 186 186 if (!query) { 187 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");187 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 188 188 return false; 189 189 } … … 240 240 psString query = pxDataGet("dettool_pendingcleanup_normalizedstat.sql"); 241 241 if (!query) { 242 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");242 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 243 243 return false; 244 244 } … … 303 303 psString query = pxDataGet("dettool_donecleanup_normalizedstat.sql"); 304 304 if (!query) { 305 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");305 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 306 306 return false; 307 307 } -
branches/tap_branches/ippTools/src/dettool_processedexp.c
r23688 r27838 29 29 psString query = pxDataGet("dettool_toprocessedexp.sql"); 30 30 if (!query) { 31 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");31 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 32 32 return false; 33 33 } … … 101 101 psString query = pxDataGet("dettool_addprocessedexp.sql"); 102 102 if (!query) { 103 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");103 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 104 104 return false; 105 105 } … … 235 235 psString query = pxDataGet("dettool_revertprocessedexp.sql"); 236 236 if (!query) { 237 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");237 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 238 238 return false; 239 239 } … … 266 266 267 267 PXOPT_LOOKUP_S64(det_id, config->args, "-det_id", true, false); 268 PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", true, false);269 268 PXOPT_LOOKUP_STR(data_state, config->args, "-data_state", true, false); 270 if (!setProcessedExpDataState(config, det_id, exp_id, data_state)) { 271 return false; 272 } 273 return true; 269 270 psMetadata *where = psMetadataAlloc(); 271 272 PXOPT_COPY_S64(config->args,where,"-det_id","det_id","=="); 273 PXOPT_COPY_S64(config->args,where,"-exp_id","exp_id","=="); 274 275 if (!setProcessedExpDataState(config, where, data_state)) { 276 return false; 277 } 278 psFree(where); 279 return true; 280 } 281 282 bool updatestateprocessedMode(pxConfig *config) { 283 PS_ASSERT_PTR_NON_NULL(config, NULL); 284 PXOPT_LOOKUP_S64(det_id,config->args, "-det_id",true,false); 285 PXOPT_LOOKUP_STR(data_state,config->args, "-data_state", true, false); 286 287 psMetadata *where = psMetadataAlloc(); 288 289 PXOPT_COPY_S64(config->args,where,"-det_id","det_id","=="); 290 PXOPT_COPY_S64(config->args,where,"-exp_id","exp_id","=="); 291 292 if (!setProcessedExpDataState(config,where,data_state)) { 293 return(false); 294 } 295 if (!setProcessedImfileDataState(config,where,data_state)) { 296 return(false); 297 } 298 psFree(where); 299 return(true); 274 300 } 275 301 … … 287 313 psString query = pxDataGet("dettool_pendingcleanup_processedexp.sql"); 288 314 if (!query) { 289 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");315 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 290 316 return false; 291 317 } … … 349 375 psString query = pxDataGet("dettool_donecleanup_processedexp.sql"); 350 376 if (!query) { 351 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");377 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 352 378 return false; 353 379 } -
branches/tap_branches/ippTools/src/dettool_processedimfile.c
r25324 r27838 34 34 psString query = pxDataGet("dettool_toprocessedimfile.sql"); 35 35 if (!query) { 36 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");36 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 37 37 return false; 38 38 } … … 180 180 psString query = pxDataGet("dettool_processedimfile.sql"); 181 181 if (!query) { 182 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");182 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 183 183 psFree(where); 184 184 return false; … … 267 267 psString query = pxDataGet("dettool_revertprocessedimfile.sql"); 268 268 if (!query) { 269 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");269 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 270 270 return false; 271 271 } … … 298 298 299 299 PXOPT_LOOKUP_S64(det_id, config->args, "-det_id", true, false); 300 PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", true, false);301 PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false);302 300 PXOPT_LOOKUP_STR(data_state, config->args, "-data_state", true, false); 303 301 304 if (!setProcessedImfileDataState(config, det_id, exp_id, class_id, data_state)) { 305 return false; 306 } 302 psMetadata *where = psMetadataAlloc(); 303 304 PXOPT_COPY_S64(config->args,where,"-det_id", "det_id","=="); 305 PXOPT_COPY_S64(config->args,where,"-exp_id", "exp_id","=="); 306 PXOPT_COPY_STR(config->args,where,"-class_id","class_id","=="); 307 308 if (!setProcessedImfileDataState(config, where, data_state)) { 309 return false; 310 } 311 psFree(where); 307 312 return true; 308 313 } … … 322 327 psString query = pxDataGet("dettool_pendingcleanup_processedimfile.sql"); 323 328 if (!query) { 324 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");329 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 325 330 return false; 326 331 } … … 351 356 if (!output) { 352 357 psError(PS_ERR_UNKNOWN, false, "database error"); 353 /* fprintf(stderr,"WTF !output?\n"); */358 /* fprintf(stderr,"WTF !output?\n"); */ 354 359 return false; 355 360 } 356 361 if (!psArrayLength(output)) { 357 362 psTrace("dettool", PS_LOG_INFO, "no rows found"); 358 /* fprintf(stderr,"WTF no rows??\n"); */363 /* fprintf(stderr,"WTF no rows??\n"); */ 359 364 psFree(output); 360 365 return true; … … 392 397 psString query = pxDataGet("dettool_donecleanup_processedimfile.sql"); 393 398 if (!query) { 394 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");399 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 395 400 return false; 396 401 } -
branches/tap_branches/ippTools/src/dettool_residexp.c
r23688 r27838 35 35 psString query = pxDataGet("dettool_toresidexp.sql"); 36 36 if (!query) { 37 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");37 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 38 38 return false; 39 39 } … … 119 119 psString query = pxDataGet("dettool_toresidexp.sql"); 120 120 if (!query) { 121 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");121 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 122 122 return false; 123 123 } … … 202 202 psString query = pxDataGet("dettool_residexp.sql"); 203 203 if (!query) { 204 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");204 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 205 205 return false; 206 206 } … … 277 277 psString query = pxDataGet("dettool_revertresidexp.sql"); 278 278 if (!query) { 279 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");279 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 280 280 return false; 281 281 } … … 353 353 } 354 354 355 bool updatestateresidMode(pxConfig *config) { 356 PS_ASSERT_PTR_NON_NULL(config, NULL); 357 PXOPT_LOOKUP_S64(det_id,config->args, "-det_id",true,false); 358 PXOPT_LOOKUP_STR(data_state,config->args, "-data_state", true, false); 359 360 psMetadata *where = psMetadataAlloc(); 361 362 PXOPT_COPY_S64(config->args,where,"-det_id","det_id","=="); 363 PXOPT_COPY_S64(config->args,where,"-exp_id","exp_id","=="); 364 365 if (!setResidExpDataState(config,where,data_state)) { 366 return(false); 367 } 368 if (!setResidImfileDataState(config,where,data_state)) { 369 return(false); 370 } 371 psFree(where); 372 return(true); 373 } 374 355 375 bool pendingcleanup_residexpMode(pxConfig *config) 356 376 { … … 367 387 psString query = pxDataGet("dettool_pendingcleanup_residexp.sql"); 368 388 if (!query) { 369 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");389 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 370 390 return false; 371 391 } … … 430 450 psString query = pxDataGet("dettool_donecleanup_residexp.sql"); 431 451 if (!query) { 432 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");452 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 433 453 return false; 434 454 } -
branches/tap_branches/ippTools/src/dettool_residimfile.c
r23688 r27838 29 29 psString query = pxDataGet("dettool_toresidimfile.sql"); 30 30 if (!query) { 31 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");31 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 32 32 return false; 33 33 } … … 165 165 psString query = pxDataGet("dettool_residimfile.sql"); 166 166 if (!query) { 167 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");167 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 168 168 return false; 169 169 } … … 253 253 psString query = pxDataGet("dettool_revertresidimfile.sql"); 254 254 if (!query) { 255 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");255 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 256 256 return false; 257 257 } … … 284 284 285 285 PXOPT_LOOKUP_S64(det_id, config->args, "-det_id", true, false); 286 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", true, false);287 PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", true, false);288 PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false);289 286 PXOPT_LOOKUP_STR(data_state, config->args, "-data_state", true, false); 290 if (!setResidImfileDataState(config, det_id, iteration, exp_id, class_id, data_state)) { 287 288 psMetadata *where = psMetadataAlloc(); 289 290 PXOPT_COPY_S64(config->args,where,"-det_id","det_id","=="); 291 PXOPT_COPY_S32(config->args,where,"-iteration", "iteration","=="); 292 PXOPT_COPY_S64(config->args,where,"-exp_id","exp_id","=="); 293 PXOPT_COPY_STR(config->args,where,"-class_id","class_id","=="); 294 295 if (!setResidImfileDataState(config, where, data_state)) { 291 296 return false; 292 297 } … … 309 314 psString query = pxDataGet("dettool_pendingcleanup_residimfile.sql"); 310 315 if (!query) { 311 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");316 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 312 317 return false; 313 318 } … … 373 378 psString query = pxDataGet("dettool_donecleanup_residimfile.sql"); 374 379 if (!query) { 375 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");380 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 376 381 return false; 377 382 } -
branches/tap_branches/ippTools/src/dettool_stack.c
r23688 r27838 31 31 psString query = pxDataGet("dettool_tostacked.sql"); 32 32 if (!query) { 33 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");33 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 34 34 return false; 35 35 } … … 220 220 psString query = pxDataGet("dettool_stacked.sql"); 221 221 if (!query) { 222 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");222 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 223 223 psFree(where); 224 224 return false; … … 290 290 psString query = pxDataGet("dettool_revertstacked.sql"); 291 291 if (!query) { 292 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");292 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 293 293 return false; 294 294 } … … 345 345 psString query = pxDataGet("dettool_pendingcleanup_stacked.sql"); 346 346 if (!query) { 347 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");347 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 348 348 return false; 349 349 } … … 408 408 psString query = pxDataGet("dettool_donecleanup_stacked.sql"); 409 409 if (!query) { 410 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");410 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 411 411 return false; 412 412 } -
branches/tap_branches/ippTools/src/difftool.c
r25851 r27838 43 43 static bool definewarpstackMode(pxConfig *config); 44 44 static bool definewarpwarpMode(pxConfig *config); 45 static bool definestackstackMode(pxConfig *config); 45 46 static bool pendingcleanuprunMode(pxConfig *config); 46 47 static bool pendingcleanupskyfileMode(pxConfig *config); … … 55 56 static bool topurgedskyfileMode(pxConfig *config); 56 57 static bool toscrubbedskyfileMode(pxConfig *config); 58 static bool tofullskyfileMode(pxConfig *config); 59 static bool listrunMode(pxConfig *config); 60 static bool setskyfiletoupdateMode(pxConfig *config); 57 61 58 62 … … 88 92 MODECASE(DIFFTOOL_MODE_DEFINEWARPSTACK, definewarpstackMode); 89 93 MODECASE(DIFFTOOL_MODE_DEFINEWARPWARP, definewarpwarpMode); 94 MODECASE(DIFFTOOL_MODE_DEFINESTACKSTACK, definestackstackMode); 90 95 MODECASE(DIFFTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunMode); 91 96 MODECASE(DIFFTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileMode); … … 94 99 MODECASE(DIFFTOOL_MODE_EXPORTRUN, exportrunMode); 95 100 MODECASE(DIFFTOOL_MODE_IMPORTRUN, importrunMode); 96 MODECASE(DIFFTOOL_MODE_TOCLEANEDSKYFILE, tocleanedskyfileMode); 97 MODECASE(DIFFTOOL_MODE_TOPURGEDSKYFILE, topurgedskyfileMode); 98 MODECASE(DIFFTOOL_MODE_TOSCRUBBEDSKYFILE, toscrubbedskyfileMode); 101 MODECASE(DIFFTOOL_MODE_TOCLEANEDSKYFILE, tocleanedskyfileMode); 102 MODECASE(DIFFTOOL_MODE_TOPURGEDSKYFILE, topurgedskyfileMode); 103 MODECASE(DIFFTOOL_MODE_TOSCRUBBEDSKYFILE, toscrubbedskyfileMode); 104 MODECASE(DIFFTOOL_MODE_TOFULLSKYFILE, tofullskyfileMode); 105 MODECASE(DIFFTOOL_MODE_LISTRUN, listrunMode); 106 MODECASE(DIFFTOOL_MODE_SETSKYFILETOUPDATE, setskyfiletoupdateMode); 99 107 100 108 default: … … 132 140 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 133 141 PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false); 134 PXOPT_LOOKUP_STR(reduction, config->args, "-rset_eduction", false, false); 142 PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false); 143 PXOPT_LOOKUP_S16(diff_mode, config->args, "-set_diff_mode", false, false); 135 144 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 136 145 … … 153 162 exposure, 154 163 false, 164 diff_mode, 155 165 note 156 166 ); … … 186 196 psMetadata *where = psMetadataAlloc(); 187 197 188 PXOPT_COPY_S64(config->args, where, "-diff_id", " stack_id", "==");198 PXOPT_COPY_S64(config->args, where, "-diff_id", "diff_id", "=="); 189 199 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 200 PXOPT_COPY_STR(config->args, where, "-data_group","data_group", "=="); 190 201 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 191 202 if (!psListLength(where->list)) { 192 203 psFree(where); 193 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");204 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 194 205 return false; 195 206 } … … 198 209 199 210 // pxUpdateRun gets parameters from config->args and updates 200 bool result = pxUpdateRun(config, where, &query, "diffRun", true);211 bool result = pxUpdateRun(config, where, &query, "diffRun", "diff_id", "diffSkyfile", true); 201 212 202 213 psFree(query); … … 204 215 205 216 return result; 206 207 #ifdef notdef208 // required options209 PXOPT_LOOKUP_S64(diff_id, config->args, "-diff_id", false, false);210 PXOPT_LOOKUP_STR(state, config->args, "-state", true, false);211 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false);212 213 // Copy of my hacky work around from stacktool.c214 if ((state)&&(diff_id)) {215 // set detRun.state to state216 return setdiffRunState(config, diff_id, state, false);217 }218 219 if ((state)&&(label)) {220 return setdiffRunStateByLabel(config, label, state);221 }222 223 psError(PS_ERR_UNKNOWN, false, "Required options not found.");224 225 return false;226 #endif227 217 } 228 218 … … 379 369 psString query = pxDataGet("difftool_inputskyfile.sql"); 380 370 if (!query) { 381 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");382 return false; 383 } 384 385 psString whereClause = NULL;371 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 372 return false; 373 } 374 375 psString whereClause = psStringCopy(""); 386 376 if (psListLength(where->list)) { 387 377 whereClause = psDBGenerateWhereConditionSQL(where, NULL); 388 psStringPrepend(&whereClause, "\n AND");378 psStringPrepend(&whereClause, "\n WHERE "); 389 379 } 390 380 psFree(where); 391 381 392 382 // Add condition to get only templates or only inputs 383 psString templateClause = psStringCopy(""); 393 384 { 394 psString templateClause = NULL;395 385 if (template) { 396 psStringAppend(&templateClause, " %s", " template != 0");386 psStringAppend(&templateClause, "\n WHERE %s", " template != 0"); 397 387 } else if (input) { 398 psStringAppend(&templateClause, " %s", " template = 0"); 399 } 400 if (templateClause) { 401 psStringAppend(&whereClause, "\n AND %s", templateClause); 402 } 403 psFree(templateClause); 388 psStringAppend(&templateClause, "\n WHERE %s", " template = 0"); 389 } 404 390 } 405 391 … … 412 398 } 413 399 414 if (!p_psDBRunQueryF(config->dbh, query, whereClause, whereClause, whereClause, whereClause)) { 415 psError(PS_ERR_UNKNOWN, false, "database error"); 400 if (!p_psDBRunQueryF(config->dbh, query, whereClause, whereClause, whereClause, whereClause, templateClause)) { 401 psError(PS_ERR_UNKNOWN, false, "database error"); 402 psFree(templateClause); 416 403 psFree(whereClause); 417 404 psFree(query); 418 405 return false; 419 406 } 407 psFree(templateClause); 420 408 psFree(whereClause); 421 409 psFree(query); … … 469 457 psString query = pxDataGet("difftool_todiffskyfile.sql"); 470 458 if (!query) { 471 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");459 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 472 460 return false; 473 461 } … … 626 614 psString query = pxDataGet("difftool_completed_runs.sql"); 627 615 if (!query) { 628 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");616 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 629 617 return false; 630 618 } … … 717 705 PXOPT_COPY_S64(config->args, where, "-magicked", "diffSkyfile.magicked", "=="); 718 706 pxAddLabelSearchArgs (config, where, "-label", "diffRun.label", "LIKE"); 719 707 pxAddLabelSearchArgs (config, where, "-data_group", "diffRun.data_group", "LIKE"); 708 709 PXOPT_LOOKUP_BOOL(pstamp_order, config->args, "-pstamp_order", false); 720 710 PXOPT_LOOKUP_BOOL(template, config->args, "-template", false); 721 711 if (!template) { … … 725 715 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawInput.dateobs", ">="); 726 716 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawInput.dateobs", "<="); 727 PXOPT_COPY_STR(config->args, where, "-filter", "rawInput.filter", " ==");717 PXOPT_COPY_STR(config->args, where, "-filter", "rawInput.filter", "LIKE"); 728 718 } else { 729 719 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawTemplate.exp_id", "=="); … … 732 722 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawTemplate.dateobs", ">="); 733 723 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawTemplate.dateobs", "<="); 734 PXOPT_COPY_STR(config->args, where, "-filter", "rawTemplate.filter", " ==");724 PXOPT_COPY_STR(config->args, where, "-filter", "rawTemplate.filter", "LIKE"); 735 725 } 736 726 … … 745 735 psString query = pxDataGet("difftool_skyfile.sql"); 746 736 if (!query) { 747 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");737 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 748 738 return false; 749 739 } … … 756 746 psStringAppend(&query, " WHERE diffRun.diff_id is not null %s", where2); 757 747 } else if (!all) { 758 psError(PXTOOLS_ERR_ DATA, true, "search parameters or -all are required");748 psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required"); 759 749 return false; 760 750 } 761 751 psFree(where); 762 752 753 if (pstamp_order) { 754 if (template) { 755 psStringAppend(&query, " ORDER BY rawTemplate.exp_id, diff_id DESC"); 756 } else { 757 psStringAppend(&query, " ORDER BY rawInput.exp_id, diff_id DESC"); 758 } 759 } 760 763 761 // treat limit == 0 as "no limit" 764 762 if (limit) { … … 816 814 psMetadata *where = psMetadataAlloc(); 817 815 PXOPT_COPY_S64(config->args, where, "-diff_id", "diffSkyfile.diff_id", "=="); 818 PXOPT_COPY_STR(config->args, where, "-label", "diffRun.label", "=="); 816 PXOPT_COPY_STR(config->args, where, "-skycell_id", "diffSkyfile.skycell_id", "=="); 817 pxAddLabelSearchArgs(config, where, "-label", "diffRun.label", "=="); 819 818 PXOPT_COPY_S16(config->args, where, "-fault", "fault", "=="); 820 819 821 820 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { 822 821 psFree(where); 823 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); 824 return false; 825 } 826 827 if (!psDBTransaction(config->dbh)) { 828 psError(PS_ERR_UNKNOWN, false, "database error"); 829 psFree(where); 830 return false; 831 } 832 833 // Update state to 'new' 822 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 823 return false; 824 } 825 834 826 { 835 psString query = pxDataGet("difftool_revertdiffskyfile_ update.sql");827 psString query = pxDataGet("difftool_revertdiffskyfile_delete.sql"); 836 828 if (!query) { 837 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 838 if (!psDBRollback(config->dbh)) { 839 psError(PS_ERR_UNKNOWN, false, "database error"); 840 } 829 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 830 return false; 831 } 832 psString query_updated = pxDataGet("difftool_revertdiffskyfile_updated.sql"); 833 if (!query_updated) { 834 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 841 835 return false; 842 836 } … … 845 839 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 846 840 psStringAppend(&query, " AND %s", whereClause); 841 psStringAppend(&query_updated, " AND %s", whereClause); 847 842 psFree(whereClause); 848 843 } … … 851 846 psError(PS_ERR_UNKNOWN, false, "database error"); 852 847 psFree(query); 853 if (!psDBRollback(config->dbh)) {854 psError(PS_ERR_UNKNOWN, false, "database error");855 }856 848 return false; 857 849 } 858 850 psFree(query); 851 psLogMsg("difftool", PS_LOG_INFO, "Deleted %" PRIu64 " rows", psDBAffectedRows(config->dbh)); 852 853 if (!p_psDBRunQuery(config->dbh, query_updated)) { 854 psError(PS_ERR_UNKNOWN, false, "database error"); 855 psFree(query_updated); 856 return false; 857 } 858 psFree(query_updated); 859 859 860 860 psLogMsg("difftool", PS_LOG_INFO, "Updated %" PRIu64 " rows", psDBAffectedRows(config->dbh)); 861 861 } 862 862 863 // Delete product864 {865 psString query = pxDataGet("difftool_revertdiffskyfile_delete.sql");866 if (!query) {867 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");868 if (!psDBRollback(config->dbh)) {869 psError(PS_ERR_UNKNOWN, false, "database error");870 }871 return false;872 }873 874 if (psListLength(where->list)) {875 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);876 psStringAppend(&query, " AND %s", whereClause);877 psFree(whereClause);878 }879 880 if (!p_psDBRunQuery(config->dbh, query)) {881 psError(PS_ERR_UNKNOWN, false, "database error");882 psFree(query);883 if (!psDBRollback(config->dbh)) {884 psError(PS_ERR_UNKNOWN, false, "database error");885 }886 return false;887 }888 psFree(query);889 890 psLogMsg("difftool", PS_LOG_INFO, "Deleted %" PRIu64 " rows", psDBAffectedRows(config->dbh));891 }892 893 863 psFree(where); 894 864 895 if (!psDBCommit(config->dbh)) {896 psError(PS_ERR_UNKNOWN, false, "database error");897 return false;898 }899 865 900 866 return true; … … 914 880 if (magicked) { 915 881 char *query = "UPDATE diffRun SET state = '%s', magicked = %" PRId64 " WHERE diff_id = %"PRId64; 916 882 917 883 if (!p_psDBRunQueryF(config->dbh, query, state, magicked, diff_id)) { 918 884 psError(PS_ERR_UNKNOWN, false, … … 923 889 else { 924 890 char *query = "UPDATE diffRun SET state = '%s' WHERE diff_id = %"PRId64; 925 891 926 892 if (!p_psDBRunQueryF(config->dbh, query, state, diff_id)) { 927 893 psError(PS_ERR_UNKNOWN, false, … … 930 896 } 931 897 } 932 898 933 899 return true; 934 900 } … … 948 914 if (!p_psDBRunQueryF(config->dbh,query,state,label)) { 949 915 psError(PS_ERR_UNKNOWN, false, 950 "failed to change state for label %s", label);916 "failed to change state for label %s", label); 951 917 return(false); 952 918 } … … 986 952 return false; 987 953 } 954 psS16 diff_mode = IPP_DIFF_MODE_UNDEFINED; 955 if ((input_warp_id != PS_MAX_S64) && (template_warp_id != PS_MAX_S64)) { 956 diff_mode = IPP_DIFF_MODE_WARP_WARP; 957 } 958 else if ((input_warp_id != PS_MAX_S64) && (template_stack_id != PS_MAX_S64)) { 959 diff_mode = IPP_DIFF_MODE_WARP_STACK; 960 } 961 else if ((input_stack_id != PS_MAX_S64) && (template_warp_id != PS_MAX_S64)) { 962 diff_mode = IPP_DIFF_MODE_STACK_WARP; 963 } 964 else if ((input_stack_id != PS_MAX_S64) && (template_stack_id != PS_MAX_S64)) { 965 diff_mode = IPP_DIFF_MODE_STACK_STACK; 966 } 967 988 968 989 969 // default … … 1005 985 false, 1006 986 0, // magicked 987 diff_mode, // diff_mode 1007 988 note 1008 989 ); … … 1110 1091 1111 1092 psArray *list = psArrayAllocEmpty(16); // List of runs, to print 1112 1093 // Populated Run will generate the diff_mode value 1113 1094 if (!populatedrun(list, workdir, skycell_id, tess_id, label, data_group ? data_group : label, dist_group, reduction, note, 1114 1095 input_warp_id ? input_warp_id : PS_MAX_S64, … … 1138 1119 1139 1120 psMetadata *expWhere = psMetadataAlloc(); 1140 psMetadata *warpWhere = psMetadataAlloc(); 1121 psMetadata *warp1Where = psMetadataAlloc(); // First set of restrictions on warp 1122 psMetadata *warp2Where = psMetadataAlloc(); // Second set of restriction on warp 1141 1123 psMetadata *stackWhere = psMetadataAlloc(); 1142 1124 1143 1125 PXOPT_COPY_S64(config->args, expWhere, "-exp_id", "exp_id", "=="); 1144 1126 PXOPT_COPY_STR(config->args, expWhere, "-filter", "filter", "=="); 1145 PXOPT_COPY_S64(config->args, warpWhere, "-warp_id", "warpRun.warp_id", "=="); 1146 PXOPT_COPY_STR(config->args, warpWhere, "-skycell_id", "warpSkyfile.skycell_id", "=="); 1147 PXOPT_COPY_STR(config->args, warpWhere, "-tess_id", "warpRun.tess_id", "=="); 1148 PXOPT_COPY_STR(config->args, warpWhere, "-warp_label", "warpRun.label", "=="); 1149 PXOPT_COPY_F32(config->args, warpWhere, "-good_frac", "warpSkyfile.good_frac", ">="); 1127 PXOPT_COPY_STR(config->args, expWhere, "-comment", "comment", "LIKE"); 1128 PXOPT_COPY_S64(config->args, warp1Where, "-warp_id", "warpRun.warp_id", "=="); 1129 PXOPT_COPY_STR(config->args, warp1Where, "-warp_label", "warpRun.label", "=="); 1130 PXOPT_COPY_STR(config->args, warp1Where, "-tess_id", "warpRun.tess_id", "=="); 1131 PXOPT_COPY_STR(config->args, warp1Where, "-data_group", "warpRun.data_group", "=="); 1132 PXOPT_COPY_S64(config->args, warp2Where, "-warp_id", "warpRun.warp_id", "=="); 1133 PXOPT_COPY_STR(config->args, warp2Where, "-tess_id", "warpRun.tess_id", "=="); 1134 PXOPT_COPY_STR(config->args, warp2Where, "-data_group", "warpRun.data_group", "=="); 1135 PXOPT_COPY_STR(config->args, warp2Where, "-skycell_id", "warpSkyfile.skycell_id", "=="); 1136 PXOPT_COPY_STR(config->args, warp2Where, "-warp_label", "warpRun.label", "=="); 1137 PXOPT_COPY_F32(config->args, warp2Where, "-good_frac", "warpSkyfile.good_frac", ">="); 1150 1138 PXOPT_COPY_STR(config->args, stackWhere, "-stack_label", "stackRun.label", "=="); 1151 1139 … … 1167 1155 psString query = pxDataGet("difftool_definewarpstack_part1.sql"); 1168 1156 if (!query) { 1169 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1170 return false; 1171 } 1172 1173 psString warpQuery = NULL; 1157 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1158 return false; 1159 } 1160 1161 psString warp1Query = NULL; 1162 psString warp2Query = NULL; 1174 1163 psString stackQuery = NULL; 1175 1164 psString expQuery = NULL; … … 1183 1172 } 1184 1173 psFree(expWhere); 1185 if (psListLength(warp Where->list)) {1186 psString whereClause = psDBGenerateWhereConditionSQL(warp Where, NULL);1187 psStringAppend(&warp Query, "\n AND %s", whereClause);1174 if (psListLength(warp1Where->list)) { 1175 psString whereClause = psDBGenerateWhereConditionSQL(warp1Where, NULL); 1176 psStringAppend(&warp1Query, "\n AND %s", whereClause); 1188 1177 psFree(whereClause); 1189 1178 } else { 1190 warpQuery = psStringCopy("\n"); 1191 } 1192 psFree(warpWhere); 1193 1194 if (!available) { 1195 // diff what's available, even if warp run has some faults and is incomplete 1196 psStringAppend(&warpQuery, " AND warpRun.state = 'full'"); 1197 } 1179 warp1Query = psStringCopy("\n"); 1180 } 1181 psFree(warp1Where); 1182 if (psListLength(warp2Where->list)) { 1183 psString whereClause = psDBGenerateWhereConditionSQL(warp2Where, NULL); 1184 psStringAppend(&warp2Query, "\n AND %s", whereClause); 1185 psFree(whereClause); 1186 } else { 1187 warp2Query = psStringCopy("\n"); 1188 } 1189 psFree(warp2Where); 1198 1190 1199 1191 // don't queue for exposures that have already been diff'd unless requested … … 1214 1206 psFree(stackWhere); 1215 1207 1216 psTrace("difftool", 1, query, warp Query, diffQuery, expQuery, stackQuery);1208 psTrace("difftool", 1, query, warp1Query, warp2Query, diffQuery, expQuery, stackQuery); 1217 1209 1218 1210 if (!psDBTransaction(config->dbh)) { … … 1221 1213 } 1222 1214 1223 if (!p_psDBRunQueryF(config->dbh, query, warp Query, expQuery, diffQuery)) {1215 if (!p_psDBRunQueryF(config->dbh, query, warp1Query, warp2Query, expQuery, diffQuery)) { 1224 1216 psError(PS_ERR_UNKNOWN, false, "database error"); 1225 1217 psFree(query); … … 1281 1273 return false; 1282 1274 } 1275 psFree(warp1Query); 1283 1276 psFree(query); 1284 1277 query = NULL; … … 1312 1305 if (!p_psDBRunQuery(config->dbh, "DELETE FROM skycellsToDiff")) { 1313 1306 psError(PS_ERR_UNKNOWN, false, "database error"); 1314 psFree(warp Query);1307 psFree(warp2Query); 1315 1308 psFree(stackQuery); 1316 1309 psFree(skycell_query); … … 1323 1316 if (!mdok) { 1324 1317 psError(PXTOOLS_ERR_PROG, false, "warp_id not found --- ignoring row %ld", i); 1325 psFree(warp Query);1318 psFree(warp2Query); 1326 1319 psFree(stackQuery); 1327 1320 psFree(skycell_query); … … 1334 1327 if (!mdok) { 1335 1328 psError(PXTOOLS_ERR_PROG, false, "skycell_count not found"); 1336 psFree(warp Query);1329 psFree(warp2Query); 1337 1330 psFree(stackQuery); 1338 1331 psFree(skycell_query); … … 1345 1338 if (!mdok) { 1346 1339 psError(PXTOOLS_ERR_PROG, false, "tess_id not found"); 1347 psFree(warp Query);1340 psFree(warp2Query); 1348 1341 psFree(stackQuery); 1349 1342 psFree(skycell_query); … … 1353 1346 return false; 1354 1347 } 1348 1355 1349 psString filter = psMetadataLookupStr(&mdok, row, "filter"); 1356 1350 if (!mdok) { 1357 1351 psError(PXTOOLS_ERR_PROG, false, "filter not found"); 1358 psFree(warp Query);1352 psFree(warp2Query); 1359 1353 psFree(stackQuery); 1360 1354 psFree(skycell_query); … … 1364 1358 return false; 1365 1359 } 1366 if (!p_psDBRunQueryF(config->dbh, skycell_query, stackQuery, warp_id, filter, warpQuery)) { 1367 psError(PS_ERR_UNKNOWN, false, "database error"); 1368 psFree(warpQuery); 1360 1361 psString warp_data_group = psMetadataLookupStr(&mdok, row, "data_group"); 1362 if (!mdok) { 1363 psError(PXTOOLS_ERR_PROG, false, "warp data_group not found"); 1364 psFree(warp2Query); 1365 psFree(stackQuery); 1366 psFree(skycell_query); 1367 if (!psDBRollback(config->dbh)) { 1368 psError(PS_ERR_UNKNOWN, false, "database error"); 1369 } 1370 return false; 1371 } 1372 if (warp_data_group) { 1373 data_group = warp_data_group; 1374 } 1375 1376 if (!p_psDBRunQueryF(config->dbh, skycell_query, stackQuery, warp_id, filter, warp2Query)) { 1377 psError(PS_ERR_UNKNOWN, false, "database error"); 1378 psFree(warp2Query); 1369 1379 psFree(stackQuery); 1370 1380 psFree(skycell_query); … … 1377 1387 1378 1388 if (num == 0) { 1379 psTrace("difftool", PS_LOG_INFO, "no skycells with stack found for %" PRId64, warp_id);1389 psTrace("difftool", PS_LOG_INFO, "no skycells with stack found for warp_id %" PRId64, warp_id); 1380 1390 continue; 1381 1391 } … … 1383 1393 if (!available && (num != skycell_count)) { 1384 1394 psTrace("difftool", PS_LOG_INFO, "%" PRId64 " skyfiles with stack found for warp_id %" PRId64 1385 " need %" PRId64, num, warp_id, skycell_count);1395 " but need %" PRId64, num, warp_id, skycell_count); 1386 1396 continue; 1387 1397 } … … 1402 1412 true, // exposure 1403 1413 0, // magicked 1414 IPP_DIFF_MODE_WARP_STACK, 1404 1415 note 1405 1416 ); … … 1418 1429 if (!p_psDBRunQuery(config->dbh, query)) { 1419 1430 psError(PS_ERR_UNKNOWN, false, "database error"); 1420 psFree(warp Query);1431 psFree(warp2Query); 1421 1432 psFree(stackQuery); 1422 1433 psFree(skycell_query); … … 1432 1443 if (!p_psDBRunQuery(config->dbh, query)) { 1433 1444 psError(PS_ERR_UNKNOWN, false, "database error"); 1434 psFree(warp Query);1445 psFree(warp2Query); 1435 1446 psFree(stackQuery); 1436 1447 psFree(skycell_query); … … 1447 1458 psError(PS_ERR_UNKNOWN, false, "failed to change diffRun.state for diff_id: %" PRId64, 1448 1459 run->diff_id); 1449 psFree(warp Query);1460 psFree(warp2Query); 1450 1461 psFree(stackQuery); 1451 1462 psFree(skycell_query); … … 1461 1472 } 1462 1473 psFree(output); 1463 psFree(warp Query);1474 psFree(warp2Query); 1464 1475 psFree(stackQuery); 1465 1476 psFree(skycell_query); … … 1549 1560 // Additional controls 1550 1561 PXOPT_LOOKUP_BOOL(rerun, config->args, "-rerun", false); 1551 PXOPT_LOOKUP_BOOL(available, config->args, "-available", false);1552 1562 1553 1563 // Settings to apply to defined run … … 1574 1584 psString tempCreate = pxDataGet("difftool_definewarpwarp_temp_create.sql"); // Create temp table SQL 1575 1585 if (!tempCreate) { 1576 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1586 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1577 1587 psFree(selectWhere); 1578 1588 psFree(insertWhere); … … 1597 1607 psString tempInsert = pxDataGet("difftool_definewarpwarp_temp_insert.sql"); // Insert to temp table 1598 1608 if (!tempInsert) { 1599 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1609 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1600 1610 psFree(selectWhere); 1601 1611 psFree(insertWhere); … … 1629 1639 psString select = pxDataGet("difftool_definewarpwarp_select.sql"); 1630 1640 if (!select) { 1631 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1641 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1632 1642 psFree(selectWhere); 1633 1643 psFree(insertWhere); … … 1642 1652 if (psListLength(selectWhere->list)) { 1643 1653 psString new = psDBGenerateWhereConditionSQL(selectWhere, NULL); 1644 psStringAppend(&whereClause, "\n %s %s", whereClause ? "AND" : "WHERE", new);1654 psStringAppend(&whereClause, "\nAND %s", new); 1645 1655 psFree(new); 1646 1656 } 1647 1657 psFree(selectWhere); 1648 1658 1649 if (!available) {1650 psStringAppend(&whereClause,1651 "\n%s inputWarpRun.state = 'full'"1652 "AND templateWarpRun.state = 'full'",1653 whereClause ? "AND" : "WHERE");1654 }1655 1656 1659 if (!rerun) { 1657 psStringAppend(&whereClause, "\n %s diffs.diff_id IS NULL", whereClause ? "AND" : "WHERE");1660 psStringAppend(&whereClause, "\nAND diffs.diff_id IS NULL"); 1658 1661 } 1659 1662 … … 1732 1735 const char *template = psMetadataLookupStr(NULL, row, "template_warp_id"); 1733 1736 const char *tess_id = psMetadataLookupStr(NULL, row, "tess_id"); 1737 psString input_data_group = psMetadataLookupStr(NULL, row, "input_data_group"); 1738 if (input_data_group) { 1739 data_group = input_data_group; 1740 } 1741 1734 1742 if (!input_id || !template || !tess_id) { 1735 1743 psError(PXTOOLS_ERR_PROG, false, "Identifiers not found"); … … 1742 1750 return false; 1743 1751 } 1744 1745 diffRunRow *run = diffRunRowAlloc(0, "reg", workdir, label, data_group ? data_group : label, dist_group, reduction, NULL, registered, 1746 tess_id, true, true, false, note); // Run to insert 1752 1753 diffRunRow *run = diffRunRowAlloc(0, 1754 "reg", 1755 workdir, 1756 label, 1757 data_group ? data_group : label, 1758 dist_group, 1759 reduction, 1760 NULL, // dvodb 1761 registered, 1762 tess_id, 1763 true, // bothways 1764 true, // exposure 1765 false, // magicked 1766 IPP_DIFF_MODE_WARP_WARP, 1767 note); // Run to insert 1747 1768 if (!diffRunInsertObject(config->dbh, run)) { 1748 1769 psError(PS_ERR_UNKNOWN, false, "database error"); … … 1816 1837 } 1817 1838 1839 static bool definestackstackMode(pxConfig *config) { 1840 PS_ASSERT_PTR_NON_NULL(config, false); 1841 1842 psMetadata *stack1Where = psMetadataAlloc(); 1843 psMetadata *stack2Where = psMetadataAlloc(); 1844 1845 PXOPT_COPY_STR(config->args, stack1Where, "-tess_id", "stackRun.tess_id", "=="); 1846 PXOPT_COPY_STR(config->args, stack2Where, "-tess_id", "stackRun.tess_id", "=="); 1847 PXOPT_COPY_STR(config->args, stack1Where, "-filter", "stackRun.filter", "=="); 1848 PXOPT_COPY_STR(config->args, stack2Where, "-filter", "stackRun.filter", "=="); 1849 PXOPT_COPY_STR(config->args, stack1Where, "-skycell_id", "stackRun.skycell_id", "=="); 1850 PXOPT_COPY_STR(config->args, stack2Where, "-skycell_id", "stackRun.skycell_id", "=="); 1851 PXOPT_COPY_STR(config->args, stack1Where, "-input_label", "stackRun.label","=="); 1852 PXOPT_COPY_STR(config->args, stack2Where, "-template_label", "stackRun.label","=="); 1853 PXOPT_COPY_F32(config->args, stack1Where, "-good_frac", "stackSumSkyfile.good_frac", ">="); 1854 PXOPT_COPY_F32(config->args, stack2Where, "-good_frac", "stackSumSkyfile.good_frac", ">="); 1855 1856 PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", true, false); // required option 1857 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); // option 1858 PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false); // option 1859 PXOPT_LOOKUP_TIME(registered, config->args, "-set_registered", false, false); 1860 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 1861 PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false); 1862 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 1863 1864 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1865 PXOPT_LOOKUP_BOOL(reRun, config->args, "-rerun", false); 1866 PXOPT_LOOKUP_BOOL(newTemplates,config->args,"-new-templates", false); 1867 1868 PXOPT_LOOKUP_BOOL(available, config->args, "-available", false); 1869 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 1870 1871 if (!(label)) { 1872 PXOPT_LOOKUP_STR(label,config->args, "-input_label",true,false); 1873 } 1874 1875 // Organize the config information into queries. 1876 psString stack1Query = NULL; 1877 psString stack2Query = NULL; 1878 1879 if (psListLength(stack1Where->list)) { 1880 psString whereClause = psDBGenerateWhereConditionSQL(stack1Where, NULL); 1881 psStringAppend(&stack1Query, "\n AND %s", whereClause); 1882 psFree(whereClause); 1883 } else { 1884 stack1Query = psStringCopy("\n"); 1885 } 1886 psFree(stack1Where); 1887 1888 if (psListLength(stack2Where->list)) { 1889 psString whereClause = psDBGenerateWhereConditionSQL(stack2Where, NULL); 1890 psStringAppend(&stack2Query, "\n AND %s", whereClause); 1891 psFree(whereClause); 1892 } else { 1893 stack2Query = psStringCopy("\n"); 1894 } 1895 psFree(stack2Where); 1896 1897 // don't queue for stacks that have already been diffed unless requested 1898 psString diffQuery = NULL; 1899 if (! (reRun || newTemplates) ) { 1900 psStringAppend(&diffQuery, "\n AND diffExp.diff_id IS NULL"); 1901 } else { 1902 diffQuery = psStringCopy("\n"); 1903 } 1904 1905 // find the distinct set of data_groups and filters 1906 psString query = pxDataGet("difftool_definestackstack_part0.sql"); 1907 if (!query) { 1908 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1909 return(false); 1910 } 1911 psTrace("difftool",1,query,stack2Query,stack1Query,diffQuery,stack1Query); 1912 /* exit(10); */ 1913 1914 if (!psDBTransaction(config->dbh)) { 1915 psError(PS_ERR_UNKNOWN, false, "database error"); 1916 return(false); 1917 } 1918 1919 if (!p_psDBRunQueryF(config->dbh, query, stack2Query, stack1Query, diffQuery, stack1Query)) { 1920 psError(PS_ERR_UNKNOWN, false, "database error"); 1921 psFree(query); 1922 if (!psDBRollback(config->dbh)) { 1923 psError(PS_ERR_UNKNOWN, false, "database error"); 1924 } 1925 return false; 1926 } 1927 1928 psFree(query); 1929 1930 psArray *output = p_psDBFetchResult(config->dbh); 1931 if (!output) { 1932 psErrorCode err = psErrorCodeLast(); 1933 switch (err) { 1934 case PS_ERR_DB_CLIENT: 1935 psError(PXTOOLS_ERR_SYS, false, "database error"); 1936 break; 1937 case PS_ERR_DB_SERVER: 1938 psError(PXTOOLS_ERR_PROG, false, "database error"); 1939 break; 1940 default: 1941 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 1942 break; 1943 } 1944 if (!psDBRollback(config->dbh)) { 1945 psError(PS_ERR_UNKNOWN, false, "database error"); 1946 } 1947 return false; 1948 } 1949 if (!psArrayLength(output)) { 1950 psTrace("difftool", PS_LOG_INFO, "no rows found"); 1951 psFree(output); 1952 if (!psDBCommit(config->dbh)) { 1953 psError(PS_ERR_UNKNOWN, false, "database error"); 1954 return false; 1955 } 1956 return true; 1957 } 1958 1959 query = pxDataGet("difftool_definestackstack_part1.sql"); 1960 if (pretend) { 1961 // negative simple so the default is true 1962 if (!ippdbPrintMetadatas(stdout, output, "diffRunTemp", !simple)) { 1963 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1964 psFree(output); 1965 return false; 1966 } 1967 psFree(output); 1968 return true; 1969 } 1970 1971 psArray *list = psArrayAllocEmpty(16); // List of runs defined, to print 1972 for (long i = 0; i < output->n; i++) { 1973 psMetadata *row = output->data[i]; // Output row from query 1974 bool mdok; // Status of MD lookup 1975 1976 psString tess_id = psMetadataLookupStr(&mdok,row,"INPUT_tess_id"); 1977 psString this_data_group = psMetadataLookupStr(&mdok,row,"INPUT_data_group"); 1978 psString this_dist_group = psMetadataLookupStr(&mdok,row,"INPUT_dist_group"); 1979 psString this_label = psMetadataLookupStr(&mdok,row,"INPUT_label"); 1980 1981 psString this_stack1Query = psStringCopy(stack1Query); 1982 1983 psString thisWhere = psDBGenerateWhereConditionSQL(row,NULL); 1984 psStringSubstitute(&thisWhere,"stackRun.","INPUT_"); 1985 psStringAppend(&this_stack1Query,"\n AND %s", thisWhere); 1986 psFree(thisWhere); 1987 1988 psTrace("difftool",1, query,stack2Query,this_stack1Query,diffQuery,this_stack1Query); 1989 if (!psDBTransaction(config->dbh)) { 1990 psError(PS_ERR_UNKNOWN, false, "database error"); 1991 return(false); 1992 } 1993 1994 if (!p_psDBRunQueryF(config->dbh, query, stack2Query, this_stack1Query, diffQuery, this_stack1Query)) { 1995 psError(PS_ERR_UNKNOWN, false, "database error"); 1996 psFree(query); 1997 if (!psDBRollback(config->dbh)) { 1998 psError(PS_ERR_UNKNOWN, false, "database error"); 1999 } 2000 return false; 2001 } 2002 psFree(this_stack1Query); 2003 2004 psArray *diff_id_output = p_psDBFetchResult(config->dbh); 2005 if (!diff_id_output) { 2006 psErrorCode err = psErrorCodeLast(); 2007 switch (err) { 2008 case PS_ERR_DB_CLIENT: 2009 psError(PXTOOLS_ERR_SYS, false, "database error"); 2010 break; 2011 case PS_ERR_DB_SERVER: 2012 psError(PXTOOLS_ERR_PROG, false, "database error"); 2013 break; 2014 default: 2015 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 2016 break; 2017 } 2018 if (!psDBRollback(config->dbh)) { 2019 psError(PS_ERR_UNKNOWN, false, "database error"); 2020 } 2021 return false; 2022 } 2023 if (!psArrayLength(diff_id_output)) { 2024 psTrace("difftool", PS_LOG_INFO, "no rows found"); 2025 psFree(diff_id_output); 2026 if (!psDBCommit(config->dbh)) { 2027 psError(PS_ERR_UNKNOWN, false, "database error"); 2028 return false; 2029 } 2030 return true; 2031 } 2032 2033 // ok we've got one create the diffRun 2034 diffRunRow *run = diffRunRowAlloc( 2035 0, // ID 2036 "reg", // state 2037 workdir, 2038 label ? label : this_label, 2039 data_group ? data_group : this_data_group, 2040 dist_group ? dist_group : this_dist_group, 2041 reduction, 2042 NULL, // dvodb 2043 registered, 2044 tess_id, 2045 false, // bothways 2046 false, // exposure 2047 0, // magicked 2048 IPP_DIFF_MODE_STACK_STACK, // diff_mode 2049 note 2050 ); 2051 // Commit to database 2052 if (!diffRunInsertObject(config->dbh, run)) { 2053 psError(PS_ERR_UNKNOWN, false, "database error"); 2054 psFree(run); 2055 if (!psDBRollback(config->dbh)) { 2056 psError(PS_ERR_UNKNOWN, false, "database error"); 2057 } 2058 return false; 2059 } 2060 /* diffRunPrintObject(stdout,run,1); */ 2061 run->diff_id = psDBLastInsertID(config->dbh); 2062 for (long j = 0; j < diff_id_output->n; j++) { 2063 psMetadata *input_row = diff_id_output->data[j]; // Output row from query 2064 bool mdok; 2065 psString in_skycell_id = psMetadataLookupStr(&mdok,input_row,"skycell_id"); 2066 psS64 in_input_stack_id = psMetadataLookupS64(&mdok,input_row,"stack_id"); 2067 psS64 in_template_stack_id = psMetadataLookupS64(&mdok,input_row,"max_stack_id"); 2068 psString in_tess_id = psMetadataLookupStr(&mdok,input_row,"tess_id"); 2069 psTrace("difftool",1,"%s %" PRId64 " %" PRId64 " %s\n", 2070 in_skycell_id, in_input_stack_id, in_template_stack_id, in_tess_id); 2071 diffInputSkyfileRow *input = diffInputSkyfileRowAlloc( 2072 run->diff_id, // ID 2073 in_skycell_id, 2074 PS_MAX_S64, // warp1_id -> NULL 2075 in_input_stack_id, // stack1 2076 PS_MAX_S64, // warp2_id -> NULL 2077 in_template_stack_id, // stack2 2078 in_tess_id, 2079 0 // diff_skyfile_id 2080 ); 2081 // Commit to database the input 2082 if (!diffInputSkyfileInsertObject(config->dbh, input)) { 2083 psError(PS_ERR_UNKNOWN, false, "database error"); 2084 psFree(input); 2085 if (!psDBRollback(config->dbh)) { 2086 psError(PS_ERR_UNKNOWN, false, "database error"); 2087 } 2088 return false; 2089 } 2090 2091 /* diffInputSkyfilePrintObject(stdout,input,1); */ 2092 psFree(input); 2093 } 2094 2095 if (!setdiffRunState(config, run->diff_id, "new", false)) { 2096 psError(PS_ERR_UNKNOWN, false, "failed to change diffRun.state for diff_id: %" PRId64, run->diff_id); 2097 psFree(stack1Query); 2098 psFree(stack2Query); 2099 psFree(diffQuery); 2100 psFree(run); 2101 psFree(list); 2102 if (!psDBRollback(config->dbh)) { 2103 psError(PS_ERR_UNKNOWN, false, "database error"); 2104 } 2105 return false; 2106 } 2107 psArrayAdd(list, list->n, run); 2108 psFree(run); 2109 } 2110 2111 if (!psDBCommit(config->dbh)) { 2112 psError(PS_ERR_UNKNOWN, false, "database error"); 2113 psFree(list); 2114 return false; 2115 } 2116 2117 if (!diffRunPrintObjects(stdout, list, !simple)) { 2118 psError(PS_ERR_UNKNOWN, false, "failed to print object"); 2119 psFree(list); 2120 return false; 2121 } 2122 2123 psFree(query); 2124 psFree(stack1Query); 2125 psFree(stack2Query); 2126 psFree(diffQuery); 2127 psFree(output); 2128 psFree(list); 2129 2130 if (!psDBCommit(config->dbh)) { 2131 psError(PS_ERR_UNKNOWN, false, "database error"); 2132 psFree(list); 2133 return false; 2134 } 2135 2136 return(true); 2137 } 1818 2138 1819 2139 static bool pendingcleanuprunMode(pxConfig *config) … … 1825 2145 1826 2146 psMetadata *where = psMetadataAlloc(); 1827 pxAddLabelSearchArgs (config, where, "-label", " label", "==");2147 pxAddLabelSearchArgs (config, where, "-label", "diffRun.label", "=="); 1828 2148 1829 2149 psString query = pxDataGet("difftool_pendingcleanuprun.sql"); 1830 2150 if (!query) { 1831 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1832 return false; 1833 } 2151 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 2152 return false; 2153 } 2154 // pxDataGet/psStringSubstitute workaround 2155 psString queryCopy = psStringCopy(query); 2156 psFree(query); 2157 query = queryCopy; 1834 2158 1835 2159 if (where && psListLength(where->list)) { 1836 2160 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1837 psStringAppend(&query, " AND %s", whereClause); 2161 psStringAppend(&whereClause, " AND "); 2162 psStringSubstitute(&query,whereClause,"@INNERCONSTRAINT@"); 1838 2163 psFree(whereClause); 2164 } 2165 else { 2166 psStringSubstitute(&query,NULL,"@INNERCONSTRAINT@"); 1839 2167 } 1840 2168 psFree(where); … … 1846 2174 psFree(limitString); 1847 2175 } 1848 1849 2176 // fprintf(stderr,"%s",query); 2177 2178 //fprintf(stderr,"%s",query); 1850 2179 if (!p_psDBRunQuery(config->dbh, query)) { 1851 2180 psError(PS_ERR_UNKNOWN, false, "database error"); … … 1895 2224 psString query = pxDataGet("difftool_pendingcleanupskyfile.sql"); 1896 2225 if (!query) { 1897 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");2226 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1898 2227 return false; 1899 2228 } … … 1955 2284 psString query = pxDataGet("difftool_donecleanup.sql"); 1956 2285 if (!query) { 1957 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");2286 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1958 2287 return false; 1959 2288 } … … 2010 2339 psMetadata *where = psMetadataAlloc(); 2011 2340 PXOPT_COPY_S64(config->args, where, "-diff_id", "diff_id", "=="); 2341 PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id", "=="); 2012 2342 2013 2343 if (!pxSetFaultCode(config->dbh, "diffSkyfile", where, fault)) { … … 2027 2357 PXOPT_LOOKUP_S64(diff_id, config->args, "-diff_id", true, false); 2028 2358 PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", true, false); 2359 2360 2361 psS64 magicked = 0; 2362 if (!strcmp(data_state, "full")) { 2363 PXOPT_LOOKUP_S64(set_magicked, config->args, "-magicked", 0, false); 2364 magicked = set_magicked; 2365 } 2029 2366 2030 2367 psString query = pxDataGet("difftool_change_skyfile_data_state.sql"); … … 2035 2372 } 2036 2373 2374 psString set_magicked_skyfile = psStringCopy(""); 2375 psString set_magicked_run = psStringCopy(""); 2376 if (magicked != 0 && !strcmp(data_state, "full")) { 2377 psStringAppend(&set_magicked_skyfile, "\n , diffSkyfile.magicked = %" PRId64, magicked); 2378 psStringAppend(&set_magicked_run, "\n , diffRun.magicked = %" PRId64, magicked); 2379 2380 } else if (!strcmp(data_state, "cleaned") || !strcmp(data_state, "purged")) { 2381 psStringAppend(&set_magicked_skyfile, "\n, diffSkyfile.magicked = IF(diffSkyfile.magicked = 0, 0, -1)"); 2382 psStringAppend(&set_magicked_run, "\n, diffRun.magicked = IF(diffRun.magicked = 0, 0, -1)"); 2383 } 2384 2037 2385 // Uses the unconstrained (diffRun.state [NEED NOT EQUAL] run_state) version from warptool.c 2038 2386 2039 if (!p_psDBRunQueryF(config->dbh, query, data_state, diff_id, skycell_id)) {2387 if (!p_psDBRunQueryF(config->dbh, query, data_state, set_magicked_skyfile, diff_id, skycell_id)) { 2040 2388 psError(PS_ERR_UNKNOWN, false, "database error"); 2041 2389 // rollback … … 2044 2392 } 2045 2393 psError(PS_ERR_UNKNOWN, false, "database error"); 2394 psFree(set_magicked_skyfile); 2046 2395 return(false); 2047 2396 } 2397 psFree(set_magicked_skyfile); 2048 2398 psFree(query); 2049 2399 2050 2400 query = pxDataGet("difftool_change_run_state.sql"); 2051 if (!p_psDBRunQueryF(config->dbh, query, data_state, diff_id, data_state)) {2401 if (!p_psDBRunQueryF(config->dbh, query, data_state, set_magicked_run, diff_id, data_state)) { 2052 2402 // rollback 2053 2403 if (!psDBRollback(config->dbh)) { … … 2055 2405 } 2056 2406 psError(PS_ERR_UNKNOWN, false, "database error"); 2407 psFree(set_magicked_run); 2057 2408 return(false); 2058 2409 } … … 2060 2411 if (!psDBCommit(config->dbh)) { 2061 2412 psError(PS_ERR_UNKNOWN, false, "database error"); 2413 psFree(set_magicked_run); 2062 2414 return(false); 2063 2415 } 2064 2416 psFree(set_magicked_run); 2417 2065 2418 return(true); 2066 2419 } … … 2074 2427 static bool toscrubbedskyfileMode(pxConfig *config) { 2075 2428 return change_skyfile_data_state(config, "scrubbed", "goto_scrubbed"); 2429 } 2430 static bool tofullskyfileMode(pxConfig *config) { 2431 return change_skyfile_data_state(config, "full", "update"); 2076 2432 } 2077 2433 … … 2115 2471 psString query = pxDataGet(tables[i].sqlFilename); 2116 2472 if (!query) { 2117 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");2473 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 2118 2474 return false; 2119 2475 } … … 2252 2608 return true; 2253 2609 } 2610 2611 static bool listrunMode(pxConfig *config) 2612 { 2613 PS_ASSERT_PTR_NON_NULL(config, false); 2614 2615 psMetadata *where = psMetadataAlloc(); 2616 PXOPT_COPY_S64(config->args, where, "-diff_id", "diffRun.diff_id", "=="); 2617 PXOPT_COPY_STR(config->args, where, "-tess_id", "diffRun.tess_id", "=="); 2618 PXOPT_COPY_S64(config->args, where, "-magicked", "diffRun.magicked", "=="); 2619 pxAddLabelSearchArgs (config, where, "-label", "diffRun.label", "LIKE"); 2620 pxAddLabelSearchArgs (config, where, "-data_group", "diffRun.data_group", "LIKE"); 2621 pxAddLabelSearchArgs (config, where, "-dist_group", "diffRun.dist_group", "LIKE"); 2622 2623 PXOPT_LOOKUP_BOOL(template, config->args, "-template", false); 2624 if (!template) { 2625 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawInput.exp_id", "=="); 2626 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawInput.exp_name", "=="); 2627 PXOPT_COPY_STR(config->args, where, "-warp_id", "warpInput.warp_id", "=="); 2628 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawInput.dateobs", ">="); 2629 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawInput.dateobs", "<="); 2630 PXOPT_COPY_STR(config->args, where, "-filter", "rawInput.filter", "LIKE"); 2631 } else { 2632 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawTemplate.exp_id", "=="); 2633 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawTemplate.exp_name", "=="); 2634 PXOPT_COPY_STR(config->args, where, "-warp_id", "warpTemplate.warp_id", "=="); 2635 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawTemplate.dateobs", ">="); 2636 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawTemplate.dateobs", "<="); 2637 PXOPT_COPY_STR(config->args, where, "-filter", "rawTemplate.filter", "LIKE"); 2638 } 2639 2640 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 2641 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 2642 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 2643 PXOPT_LOOKUP_BOOL(pstamp_order, config->args, "-pstamp_order", false); 2644 2645 2646 psString where2 = NULL; 2647 pxmagicAddWhere(config, &where2, "diffRun"); 2648 pxspaceAddWhere(config, &where2, template ? "rawTemplate" : "rawInput"); 2649 psString query = pxDataGet("difftool_listrun.sql"); 2650 if (!query) { 2651 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 2652 return false; 2653 } 2654 2655 if (psListLength(where->list)) { 2656 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 2657 psStringAppend(&query, " WHERE %s", whereClause); 2658 psFree(whereClause); 2659 } else if (where2) { 2660 psStringAppend(&query, " WHERE diffRun.diff_id is not null %s", where2); 2661 } else if (!all) { 2662 psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required"); 2663 return false; 2664 } 2665 psFree(where); 2666 2667 if (pstamp_order) { 2668 if (template) { 2669 psStringAppend(&query, " ORDER BY rawTemplate.exp_id, diff_id DESC"); 2670 } else { 2671 psStringAppend(&query, " ORDER BY rawInput.exp_id, diff_id DESC"); 2672 } 2673 } 2674 2675 // treat limit == 0 as "no limit" 2676 if (limit) { 2677 psString limitString = psDBGenerateLimitSQL(limit); 2678 psStringAppend(&query, " %s", limitString); 2679 psFree(limitString); 2680 } 2681 2682 if (!p_psDBRunQuery(config->dbh, query)) { 2683 psError(PS_ERR_UNKNOWN, false, "database error"); 2684 psFree(query); 2685 return false; 2686 } 2687 psFree(query); 2688 2689 psArray *output = p_psDBFetchResult(config->dbh); 2690 if (!output) { 2691 psErrorCode err = psErrorCodeLast(); 2692 switch (err) { 2693 case PS_ERR_DB_CLIENT: 2694 psError(PXTOOLS_ERR_SYS, false, "database error"); 2695 case PS_ERR_DB_SERVER: 2696 psError(PXTOOLS_ERR_PROG, false, "database error"); 2697 default: 2698 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 2699 } 2700 2701 return false; 2702 } 2703 if (!psArrayLength(output)) { 2704 psTrace("difftool", PS_LOG_INFO, "no rows found"); 2705 psFree(output); 2706 return true; 2707 } 2708 2709 if (psArrayLength(output)) { 2710 // negative simple so the default is true 2711 if (!ippdbPrintMetadatas(stdout, output, "diffRun", !simple)) { 2712 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 2713 psFree(output); 2714 return false; 2715 } 2716 } 2717 2718 psFree(output); 2719 2720 return true; 2721 } 2722 // a very specfic function to queue a cleaned warpSkyfile to be updated 2723 static bool setskyfiletoupdateMode(pxConfig *config) 2724 { 2725 PS_ASSERT_PTR_NON_NULL(config, NULL); 2726 2727 PXOPT_LOOKUP_S64(diff_id, config->args, "-diff_id", true, false); 2728 PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", false, false); 2729 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 2730 2731 psString query = pxDataGet("difftool_setskyfiletoupdate.sql"); 2732 if (!query) { 2733 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 2734 return false; 2735 } 2736 2737 psString setHook = psStringCopy(""); 2738 if (label) { 2739 psStringAppend(&setHook, "\n , diffRun.label = '%s'", label); 2740 } 2741 2742 if (skycell_id) { 2743 psStringAppend(&query, " AND (diffSkyfile.skycell_id = '%s')", skycell_id); 2744 } 2745 2746 if (!p_psDBRunQueryF(config->dbh, query, setHook, diff_id)) { 2747 psError(PS_ERR_UNKNOWN, false, "database error"); 2748 return false; 2749 } 2750 2751 psFree(setHook); 2752 psFree(query); 2753 2754 return true; 2755 } -
branches/tap_branches/ippTools/src/difftool.h
r25800 r27838 37 37 DIFFTOOL_MODE_DEFINEWARPSTACK, 38 38 DIFFTOOL_MODE_DEFINEWARPWARP, 39 DIFFTOOL_MODE_DEFINESTACKSTACK, 39 40 DIFFTOOL_MODE_PENDINGCLEANUPRUN, 40 41 DIFFTOOL_MODE_PENDINGCLEANUPSKYFILE, … … 45 46 DIFFTOOL_MODE_TOCLEANEDSKYFILE, 46 47 DIFFTOOL_MODE_TOPURGEDSKYFILE, 47 DIFFTOOL_MODE_TOSCRUBBEDSKYFILE 48 48 DIFFTOOL_MODE_TOSCRUBBEDSKYFILE, 49 DIFFTOOL_MODE_TOFULLSKYFILE, 50 DIFFTOOL_MODE_LISTRUN, 51 DIFFTOOL_MODE_SETSKYFILETOUPDATE, 49 52 } difftoolMode; 50 53 -
branches/tap_branches/ippTools/src/difftoolConfig.c
r25840 r27838 38 38 config->modules = pmConfigRead(&argc, argv, NULL); 39 39 if (!config->modules) { 40 psError( PS_ERR_UNKNOWN, false, "Can't find site configuration");40 psError(psErrorCodeLast(), false, "Can't find site configuration"); 41 41 psFree(config); 42 42 return NULL; … … 56 56 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data group", NULL); 57 57 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define dist group", NULL); 58 psMetadataAddS16(definerunArgs, PS_LIST_TAIL, "-set_diff_mode", 0, "specify type of difference (WW=1,WS=2,SW=3,SS=4)", 0); 58 59 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 59 60 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 64 65 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "set state", NULL); 65 66 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "define by label instead of diff ID", 0); 67 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-data_group", 0, "define by data_group instead of diff ID", 0); 66 68 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_label", 0, "define new value for label", 0); 67 69 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "define new state", NULL); 68 70 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_data_group", 0, "define new data_group", NULL); 69 71 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define new dist_group", NULL); 72 psMetadataAddS16(updaterunArgs, PS_LIST_TAIL, "-set_diff_mode", 0, "specify type of difference (WW=1,WS=2,SW=3,SS=4)", 0); 70 73 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_note", 0, "define new note", NULL); 71 74 … … 122 125 psMetadataAddStr(adddiffskyfileArgs, PS_LIST_TAIL, "-hostname", 0, "define hostname", 0); 123 126 psMetadataAddF32(adddiffskyfileArgs, PS_LIST_TAIL, "-good_frac", 0, "define %% of good pixels", NAN); 124 psMetadataAdd Bool(adddiffskyfileArgs, PS_LIST_TAIL, "-magicked", 0, "define magicked state", false);127 psMetadataAddS64(adddiffskyfileArgs, PS_LIST_TAIL, "-magicked", 0, "define magicked state", 0); 125 128 126 129 // -advance … … 144 147 psMetadataAddStr(diffskyfileArgs, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); 145 148 psMetadataAddStr(diffskyfileArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by diffRun label (LIKE comparison)", NULL); 149 psMetadataAddStr(diffskyfileArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by diffRun data_group (LIKE comparison)", NULL); 150 psMetadataAddStr(diffskyfileArgs, PS_LIST_TAIL, "-dist_group", PS_META_DUPLICATE_OK, "search by diffRun dist_group (LIKE comparison)", NULL); 146 151 psMetadataAddS16(diffskyfileArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 147 152 pxmagicAddArguments(diffskyfileArgs); 148 153 pxspaceAddArguments(diffskyfileArgs); 149 154 155 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-pstamp_order", 0, "order results for postage stamp server", false); 150 156 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-all", 0, "search without arguments", false); 151 157 psMetadataAddU64(diffskyfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 152 158 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 153 159 160 // -listrun 161 psMetadata *listrunArgs = psMetadataAlloc(); 162 psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-diff_id", 0, "search by diff ID", 0); 163 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tessellation ID", NULL); 164 psMetadataAddStr(listrunArgs , PS_LIST_TAIL, "-warp_id", 0, "search by warp_id", NULL); 165 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-template", 0, "apply exposure args to template of bothways diff", false); 166 psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 167 psMetadataAddStr(listrunArgs , PS_LIST_TAIL, "-exp_name", 0, "search by exposure name", NULL); 168 psMetadataAddTime(listrunArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 169 psMetadataAddTime(listrunArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<=)", NULL); 170 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); 171 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by diffRun label (LIKE comparison)", NULL); 172 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by diffRun data_group (LIKE comparison)", NULL); 173 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-dist_group", PS_META_DUPLICATE_OK, "search by diffRun dist_group (LIKE comparison)", NULL); 174 pxmagicAddArguments(listrunArgs); 175 pxspaceAddArguments(listrunArgs); 176 177 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-pstamp_order", 0, "order results for postage stamp server", false); 178 179 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-all", 0, "search without arguments", false); 180 psMetadataAddU64(listrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 181 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 182 183 154 184 // -revertdiffskyfile 155 185 psMetadata *revertdiffskyfileArgs = psMetadataAlloc(); 156 186 psMetadataAddS64(revertdiffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "search by diff ID", 0); 157 psMetadataAddStr(revertdiffskyfileArgs, PS_LIST_TAIL, "-label", 0, "search by label", NULL); 187 psMetadataAddStr(revertdiffskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell_id", NULL); 188 psMetadataAddStr(revertdiffskyfileArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by label", NULL); 158 189 psMetadataAddS16(revertdiffskyfileArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 159 190 psMetadataAddBool(revertdiffskyfileArgs, PS_LIST_TAIL, "-all", 0, "allow no search terms", 0); … … 180 211 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tess ID", NULL); 181 212 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-filter", 0, "search by filter", NULL); 213 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-comment", 0, "search by comment (LIKE)", NULL); 182 214 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-stack_label", 0, "search by stack label", NULL); 183 215 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-warp_label", 0, "search by warp label", NULL); 216 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-data_group", 0, "search by data_group", NULL); 184 217 psMetadataAddF32(definewarpstackArgs, PS_LIST_TAIL, "-good_frac", 0, "minimum good fraction of skycell", NAN); 185 218 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir (required)", NULL); … … 192 225 psMetadataAddBool(definewarpstackArgs, PS_LIST_TAIL, "-new-templates", 0, "also search for diffs with new template", false); 193 226 psMetadataAddBool(definewarpstackArgs, PS_LIST_TAIL, "-rerun", 0, "define new run even if one exists", false); 194 psMetadataAddBool(definewarpstackArgs, PS_LIST_TAIL, "-available", 0, "define new run even if warpRun has some faults", false);227 psMetadataAddBool(definewarpstackArgs, PS_LIST_TAIL, "-available", 0, "define new run even if no stacks available for some skycells", false); 195 228 psMetadataAddBool(definewarpstackArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 196 229 psMetadataAddBool(definewarpstackArgs, PS_LIST_TAIL, "-pretend", 0, "list results but to not queue", false); … … 217 250 psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 218 251 psMetadataAddBool(definewarpwarpArgs, PS_LIST_TAIL, "-rerun", 0, "define new run even if one exists", false); 219 psMetadataAddBool(definewarpwarpArgs, PS_LIST_TAIL, "-available", 0, "define new run even if warpRun has some faults", false);220 252 psMetadataAddBool(definewarpwarpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 221 253 psMetadataAddBool(definewarpwarpArgs, PS_LIST_TAIL, "-pretend", 0, "list results but to not queue", false); … … 250 282 psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-comment", 0, "search by comment field (LIKE comparison)", NULL); 251 283 284 // -definestackstack 285 psMetadata *definestackstackArgs = psMetadataAlloc(); 286 // stack id and exp id searches seem less useful here 287 psMetadataAddStr(definestackstackArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell ID", NULL); 288 psMetadataAddStr(definestackstackArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tess ID", NULL); 289 psMetadataAddStr(definestackstackArgs, PS_LIST_TAIL, "-filter", 0, "search by filter", NULL); 290 psMetadataAddStr(definestackstackArgs, PS_LIST_TAIL, "-input_label", 0, "search by stack label for input", NULL); 291 psMetadataAddStr(definestackstackArgs, PS_LIST_TAIL, "-template_label", 0, "search by stack label for template", NULL); 292 psMetadataAddF32(definestackstackArgs, PS_LIST_TAIL, "-good_frac", 0, "minimum good fraction of skycell", NAN); 293 psMetadataAddStr(definestackstackArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir (required)", NULL); 294 psMetadataAddStr(definestackstackArgs, PS_LIST_TAIL, "-set_label", 0, "define label", NULL); 295 psMetadataAddStr(definestackstackArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction class", NULL); 296 psMetadataAddTime(definestackstackArgs, PS_LIST_TAIL, "-set_registered", 0, "time detrend run was registered", now); 297 psMetadataAddStr(definestackstackArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data group", NULL); 298 psMetadataAddStr(definestackstackArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define dist group", NULL); 299 psMetadataAddStr(definestackstackArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 300 psMetadataAddBool(definestackstackArgs, PS_LIST_TAIL, "-rerun", 0, "define new run even if one exists", false); 301 psMetadataAddBool(definestackstackArgs, PS_LIST_TAIL, "-available", 0, "define new run even if no stacks available for some skycells", false); 302 psMetadataAddBool(definestackstackArgs, PS_LIST_TAIL, "-new-templates", 0, "also search for diffs with new template", false); 303 psMetadataAddBool(definestackstackArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 304 psMetadataAddBool(definestackstackArgs, PS_LIST_TAIL, "-pretend", 0, "list results but do not queue", false); 305 306 252 307 // -pendingcleanuprun 253 308 psMetadata *pendingcleanuprunArgs = psMetadataAlloc(); 254 psMetadataAddStr(pendingcleanuprunArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "list blocks forspecified label", NULL);309 psMetadataAddStr(pendingcleanuprunArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "list runs for cleanup with specified label", NULL); 255 310 psMetadataAddBool(pendingcleanuprunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 256 311 psMetadataAddU64(pendingcleanuprunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); … … 271 326 psMetadata *updatediffskyfileArgs = psMetadataAlloc(); 272 327 psMetadataAddS64(updatediffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "define diff ID (required)", 0); 273 psMetadataAddS16(updatediffskyfileArgs, PS_LIST_TAIL, "-fault", 0, "set fault code (required)", 0); 328 psMetadataAddS16(updatediffskyfileArgs, PS_LIST_TAIL, "-fault", 0, "set fault code (required)", 0); 329 psMetadataAddStr(updatediffskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell ID", NULL); 274 330 275 331 // -tocleanedskyfile … … 287 343 psMetadataAddS64(toscrubbedskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "difftool ID to update", 0); 288 344 psMetadataAddStr(toscrubbedskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL); 345 346 // -tofullskyfile 347 psMetadata *tofullskyfileArgs = psMetadataAlloc(); 348 psMetadataAddS64(tofullskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "difftool ID to update", 0); 349 psMetadataAddStr(tofullskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL); 350 psMetadataAddS64(tofullskyfileArgs, PS_LIST_TAIL, "-magicked", 0, "define magicked state", 0); 351 352 // -setskyfiletoupdate 353 psMetadata *setskyfiletoupdateArgs = psMetadataAlloc(); 354 psMetadataAddS64(setskyfiletoupdateArgs, PS_LIST_TAIL, "-diff_id", 0, "search by difftool ID (required)", 0); 355 psMetadataAddStr(setskyfiletoupdateArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by tessellation ID", NULL); 356 psMetadataAddStr(setskyfiletoupdateArgs, PS_LIST_TAIL, "-set_label", 0, "new value for diffRun.label", NULL); 357 358 289 359 290 360 // -exportrun … … 314 384 PXOPT_ADD_MODE("-advance", "", DIFFTOOL_MODE_ADVANCE, advanceArgs); 315 385 PXOPT_ADD_MODE("-diffskyfile", "", DIFFTOOL_MODE_DIFFSKYFILE, diffskyfileArgs); 386 PXOPT_ADD_MODE("-listrun", "", DIFFTOOL_MODE_LISTRUN, listrunArgs); 316 387 PXOPT_ADD_MODE("-revertdiffskyfile","", DIFFTOOL_MODE_REVERTDIFFSKYFILE, revertdiffskyfileArgs); 317 388 PXOPT_ADD_MODE("-definepoprun", "", DIFFTOOL_MODE_DEFINEPOPRUN, definepoprunArgs); 318 389 PXOPT_ADD_MODE("-definewarpstack", "", DIFFTOOL_MODE_DEFINEWARPSTACK, definewarpstackArgs); 319 390 PXOPT_ADD_MODE("-definewarpwarp", "", DIFFTOOL_MODE_DEFINEWARPWARP, definewarpwarpArgs); 391 PXOPT_ADD_MODE("-definestackstack", "", DIFFTOOL_MODE_DEFINESTACKSTACK, definestackstackArgs); 320 392 PXOPT_ADD_MODE("-pendingcleanuprun", "show runs that need to be cleaned up", DIFFTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunArgs); 321 393 PXOPT_ADD_MODE("-pendingcleanupskyfile", "show runs that need to be cleaned up", DIFFTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileArgs); 322 394 PXOPT_ADD_MODE("-donecleanup", "show runs that have been cleaned", DIFFTOOL_MODE_DONECLEANUP, donecleanupArgs); 323 395 PXOPT_ADD_MODE("-updatediffskyfile", "update fault code for a diffskyfile", DIFFTOOL_MODE_UPDATEDIFFSKYFILE, updatediffskyfileArgs); 396 PXOPT_ADD_MODE("-setskyfiletoupdate", "set cleaned skyfile to be updated", DIFFTOOL_MODE_SETSKYFILETOUPDATE, setskyfiletoupdateArgs); 397 324 398 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", DIFFTOOL_MODE_EXPORTRUN, exportrunArgs); 325 399 PXOPT_ADD_MODE("-importrun", "import run from metadata file", DIFFTOOL_MODE_IMPORTRUN, importrunArgs); … … 328 402 PXOPT_ADD_MODE("-topurgedskyfile", "set skyfile as purged", DIFFTOOL_MODE_TOPURGEDSKYFILE, topurgedskyfileArgs); 329 403 PXOPT_ADD_MODE("-toscrubbedskyfile", "set skyfile as scrubbed", DIFFTOOL_MODE_TOSCRUBBEDSKYFILE, toscrubbedskyfileArgs); 330 404 PXOPT_ADD_MODE("-tofullskyfile", "set skyfile as full", DIFFTOOL_MODE_TOFULLSKYFILE, tofullskyfileArgs); 405 331 406 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { 332 407 psError(PS_ERR_UNKNOWN, true, "option parsing failed"); -
branches/tap_branches/ippTools/src/disttool.c
r25835 r27838 42 42 static bool addfilesetMode(pxConfig *config); 43 43 static bool revertfilesetMode(pxConfig *config); 44 static bool updatefilesetMode(pxConfig *config); 44 45 static bool queuercrunMode(pxConfig *config); 45 46 static bool updatercrunMode(pxConfig *config); 46 47 static bool revertrcrunMode(pxConfig *config); 47 48 static bool pendingdestMode(pxConfig *config); 49 static bool pendingcleanupMode(pxConfig *config); 50 static bool listfilesetsMode(pxConfig *config); 48 51 49 52 static bool definetargetMode(pxConfig *config); 50 53 static bool updatetargetMode(pxConfig *config); 51 static bool listtarget Mode(pxConfig *config);54 static bool listtargetsMode(pxConfig *config); 52 55 53 56 static bool definedestinationMode(pxConfig *config); … … 86 89 MODECASE(DISTTOOL_MODE_TOADVANCE, toadvanceMode); 87 90 MODECASE(DISTTOOL_MODE_PENDINGFILESET, pendingfilesetMode); 91 MODECASE(DISTTOOL_MODE_PENDINGCLEANUP, pendingcleanupMode); 88 92 MODECASE(DISTTOOL_MODE_ADDFILESET, addfilesetMode); 89 93 MODECASE(DISTTOOL_MODE_REVERTFILESET, revertfilesetMode); 94 MODECASE(DISTTOOL_MODE_LISTFILESETS, listfilesetsMode); 95 MODECASE(DISTTOOL_MODE_UPDATEFILESET, updatefilesetMode); 90 96 MODECASE(DISTTOOL_MODE_QUEUERCRUN, queuercrunMode); 91 97 MODECASE(DISTTOOL_MODE_UPDATERCRUN, updatercrunMode); … … 94 100 MODECASE(DISTTOOL_MODE_DEFINETARGET, definetargetMode); 95 101 MODECASE(DISTTOOL_MODE_UPDATETARGET, updatetargetMode); 96 MODECASE(DISTTOOL_MODE_LISTTARGET , listtargetMode);102 MODECASE(DISTTOOL_MODE_LISTTARGETS, listtargetsMode); 97 103 MODECASE(DISTTOOL_MODE_DEFINEDESTINATION, definedestinationMode); 98 104 MODECASE(DISTTOOL_MODE_UPDATEDESTINATION, updatedestinationMode); … … 131 137 132 138 // optional 133 PXOPT_LOOKUP_ S64(magic_ds_id, config->args, "-magic_ds_id", false, false);139 PXOPT_LOOKUP_BOOL(use_alternate, config->args, "-use_alternate", false); 134 140 PXOPT_LOOKUP_BOOL(no_magic, config->args, "-no_magic", false); 135 141 PXOPT_LOOKUP_STR(set_label, config->args, "-set_label", false, false); 142 PXOPT_LOOKUP_STR(set_data_group, config->args, "-set_data_group", false, false); 136 143 PXOPT_LOOKUP_STR(set_note, config->args, "-set_note", false, false); 137 144 138 145 PXOPT_LOOKUP_S64(limit, config->args, "-limit", false, false); 139 146 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 140 141 PXOPT_LOOKUP_BOOL(dry_run, config->args, "-dry_run", false); 147 148 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 149 150 if (use_alternate) { 151 if (strcmp(stage, "raw")) { 152 psError(PXTOOLS_ERR_SYS, true, "alternate inputs only supported for raw stage"); 153 return false; 154 } 155 if (no_magic) { 156 psError(PXTOOLS_ERR_SYS, true, "no_magic forbidden with alternate inputs"); 157 return false; 158 } 159 } 142 160 143 161 // select arguments … … 155 173 psString runJoinStr = NULL; 156 174 if (!strcmp(stage, "raw")) { 157 magicRunType = "rawExp"; 158 runJoinStr = "rawExp.exp_id"; 175 if (! use_alternate ) { 176 magicRunType = "rawExp"; 177 runJoinStr = "rawExp.exp_id"; 178 } else { 179 magicRunType = "camRun"; 180 runJoinStr = "camRun.exp_id"; 181 } 159 182 query = pxDataGet("disttool_definebyquery_raw.sql"); 160 183 if (!query) { 161 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");184 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 162 185 psFree(where); 163 186 return false; 164 187 } 165 188 166 // for raw stage we select by c hipRun.label because raw labels typically aren't set189 // for raw stage we select by camRun.label and dist_group because rawExp doesn't have those columns 167 190 if (label) { 168 psStringAppend(&query, " AND ( chipRun.label = '%s')", label);191 psStringAppend(&query, " AND (magicDSRun.label = '%s')", label); 169 192 } 170 193 if (dist_group) { 171 psStringAppend(&query, " AND (c hipRun.dist_group = '%s')", dist_group);194 psStringAppend(&query, " AND (camRun.dist_group = '%s')", dist_group); 172 195 } 173 196 } else if (!strcmp(stage, "chip")) { … … 176 199 query = pxDataGet("disttool_definebyquery_chip.sql"); 177 200 if (!query) { 178 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");201 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 179 202 psFree(where); 180 203 return false; … … 192 215 query = pxDataGet("disttool_definebyquery_camera.sql"); 193 216 if (!query) { 194 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");217 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 195 218 psFree(where); 196 219 return false; … … 207 230 query = pxDataGet("disttool_definebyquery_fake.sql"); 208 231 if (!query) { 209 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");232 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 210 233 psFree(where); 211 234 return false; … … 225 248 query = pxDataGet("disttool_definebyquery_warp.sql"); 226 249 if (!query) { 227 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");250 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 228 251 psFree(where); 229 252 return false; … … 242 265 query = pxDataGet("disttool_definebyquery_diff.sql"); 243 266 if (!query) { 244 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");267 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 245 268 psFree(where); 246 269 return false; … … 258 281 query = pxDataGet("disttool_definebyquery_stack.sql"); 259 282 if (!query) { 260 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");283 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 261 284 psFree(where); 262 285 return false; … … 271 294 // stack stage doesn't require magic 272 295 no_magic = true; 296 } else if (!strcmp(stage, "SSdiff")) { 297 magicRunType = "diffRun"; 298 runJoinStr = "diffRun.diff_id"; 299 query = pxDataGet("disttool_definebyquery_SSdiff.sql"); 300 if (!query) { 301 psError(PXTOOLS_ERR_SYS, false, "failed to retrieve SQL statement"); 302 psFree(where); 303 return(false); 304 } 305 306 if (label) { 307 psStringAppend(&query, " AND (diffRun.label = '%s') ", label); 308 } 309 if (dist_group) { 310 psStringAppend(&query, " AND (diffRun.dist_group = '%s') ", dist_group); 311 } 312 313 no_magic = true; 273 314 } else { 274 315 psError(PS_ERR_UNKNOWN, true, "unknown value for stage: %s", stage); 275 316 psFree(where); 276 317 return false; 318 } 319 320 if (!strcmp(stage, "raw")) { 321 if (!no_magic) { 322 psStringAppend(&query, " AND (magicDSRun.re_place = %d)", !use_alternate); 323 psStringAppend(&query, " AND (camRun.state = 'full')"); 324 } 277 325 } 278 326 … … 287 335 288 336 if (!no_magic) { 289 psStringAppend(&query, " AND (%s.magicked)", magicRunType); 290 291 // is selecting by magic_ds_id really interesting? 292 if (magic_ds_id) { 293 if (!runJoinStr) { 294 psError(PS_ERR_PROGRAMMING, true, "cannot select by magic_ds_id for stage: %s", stage); 295 psFree(query); 296 return false; 297 } 298 psStringAppend(&joinHook, "\nJOIN magicDSRun ON magicDSRun.stage = distTarget.stage" 299 " AND magicDSRun.stage_id = %s", runJoinStr); 300 psStringAppend(&query, " AND (magicDSRun.state = 'full' AND magicDSRun.re_place AND (magic_ds_id = %" PRId64 "))", magic_ds_id); 301 } 337 psStringAppend(&query, " AND (%s.magicked > 0)", magicRunType); 302 338 } 303 339 … … 307 343 psFree(limitString); 308 344 } 309 345 psTrace("disttool",2,query,joinHook ? joinHook : ""); 310 346 if (!p_psDBRunQueryF(config->dbh, query, joinHook ? joinHook : "")) { 311 psError(PS_ERR_UNKNOWN, false, "database error");312 psFree(query);313 return false;347 psError(PS_ERR_UNKNOWN, false, "database error"); 348 psFree(query); 349 return false; 314 350 } 315 351 psFree(query); … … 328 364 329 365 330 if ( dry_run) {366 if (pretend) { 331 367 if (!ippdbPrintMetadatas(stdout, output, "newdistRuns", true)) { 332 368 psError(PS_ERR_UNKNOWN, false, "failed to print array"); … … 352 388 psS64 target_id = psMetadataLookupS64(NULL, md, "target_id"); 353 389 psString stage_label = psMetadataLookupStr(NULL, md, "label"); 390 psString stage_data_group = psMetadataLookupStr(NULL, md, "data_group"); 354 391 bool clean = psMetadataLookupBool(NULL, md, "clean"); 355 392 356 393 psString outroot = NULL; 357 psStringAppend(&outroot, "%s/%s/%s", workdir, run_tag, stage); 394 psStringAppend(&outroot, "%s/%s/%s", workdir, run_tag, stage); 358 395 359 396 psString new_label; … … 363 400 new_label = stage_label; 364 401 } 402 psString new_data_group; 403 if (set_data_group != NULL) { 404 new_data_group = set_data_group; 405 } else { 406 new_data_group = stage_data_group; 407 } 408 365 409 distRunRow *row = distRunRowAlloc( 366 410 0, // dist_id … … 371 415 new_label, 372 416 outroot, 417 NULL, // outdir 373 418 clean, 374 419 no_magic, 420 use_alternate, 375 421 "new", 376 NULL, // time_stamp422 NULL, // time_stamp 377 423 0, // fault 378 set_note // note does not propagate 424 new_data_group, 425 set_note // note does not propagate 379 426 ); 380 427 … … 419 466 PXOPT_COPY_S64(config->args, where, "-dist_id", "dist_id", "=="); 420 467 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "==");; 421 PXOPT_COPY_STR(config->args, where, "-state", " state", "==");468 PXOPT_COPY_STR(config->args, where, "-state", "distRun.state", "=="); 422 469 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 470 PXOPT_COPY_STR(config->args, where, "-data_group", "distRun.data_group", "LIKE"); 471 PXOPT_COPY_STR(config->args, where, "-dist_group", "distTarget.dist_group", "=="); 472 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 423 473 424 474 if (!psListLength(where->list)) { 425 475 psFree(where); 426 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");476 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 427 477 return false; 428 478 } … … 430 480 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 431 481 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 482 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 483 PXOPT_LOOKUP_STR(outdir, config->args, "-set_outdir", false, false); 432 484 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 433 434 if ((!state) && (!label) && (!fault)) { 435 psError(PXTOOLS_ERR_DATA, false, "parameters (-fault or -set_state or -set_label) are required"); 436 psFree(where); 437 return false; 438 } 439 440 psString query = psStringCopy("UPDATE distRun SET time_stamp = UTC_TIMESTAMP()"); 441 485 PXOPT_LOOKUP_STR(set_note, config->args, "-set_note", false, false); 486 487 if ((!state) && (!label) && (!fault) &&(!data_group)) { 488 psError(PXTOOLS_ERR_CONFIG, false, "parameters (-fault or -set_state or -set_label -set_data_group) are required"); 489 psFree(where); 490 return false; 491 } 492 493 psString query = psStringCopy("UPDATE distRun join distTarget using(target_id, stage) SET distRun.time_stamp = UTC_TIMESTAMP()"); 494 495 if (outdir) { 496 psStringAppend(&query, " , distRun.outdir = '%s'", outdir); 497 } 442 498 if (state) { 443 psStringAppend(&query, " , state = '%s'", state);499 psStringAppend(&query, " , distRun.state = '%s'", state); 444 500 } 445 501 446 502 if (label) { 447 psStringAppend(&query, " , label = '%s'", label);503 psStringAppend(&query, " , distRun.label = '%s'", label); 448 504 } 449 505 450 506 if (fault) { 451 psStringAppend(&query, " , fault = %d", fault); 452 } 507 psStringAppend(&query, " , distRun.fault = %d", fault); 508 } 509 510 if (data_group) { 511 psStringAppend(&query, " , distRun.data_group = '%s'", data_group); 512 } 513 514 if (set_note) { 515 psStringAppend(&query, " , distRun.note = '%s'", set_note); 516 } 517 453 518 454 519 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); … … 481 546 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { 482 547 psFree(where); 483 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");548 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 484 549 return false; 485 550 } … … 487 552 psString query = pxDataGet("disttool_revertrun.sql"); 488 553 if (!query) { 489 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");554 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 490 555 if (!psDBRollback(config->dbh)) { 491 556 psError(PS_ERR_UNKNOWN, false, "database error"); … … 522 587 PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "=="); 523 588 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 524 PXOPT_COPY_STR(config->args, where, "-label", "label", "==");589 pxAddLabelSearchArgs(config, where, "-label", "distRun.label", "=="); 525 590 526 591 PXOPT_COPY_S16(config->args, where, "-fault", "distComponent.fault", "=="); … … 530 595 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { 531 596 psFree(where); 532 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");597 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 533 598 return false; 534 599 } … … 536 601 psString query = pxDataGet("disttool_revertcomponent.sql"); 537 602 if (!query) { 538 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");603 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 539 604 psFree(where); 540 605 return false; … … 568 633 569 634 psMetadata *where = psMetadataAlloc(); 570 PXOPT_COPY_S64(config->args, where, "-dist_id", "dist _id", "==");635 PXOPT_COPY_S64(config->args, where, "-dist_id", "distRun.dist_id", "=="); 571 636 pxAddLabelSearchArgs (config, where, "-label", "distRun.label", "=="); 572 637 … … 578 643 psString query = pxDataGet(queryFile); 579 644 if (!query) { 580 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement from %s", queryFile);645 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement from %s", queryFile); 581 646 return false; 582 647 } … … 652 717 PXOPT_LOOKUP_S32(bytes, config->args, "-bytes", require_fileinfo, false); 653 718 PXOPT_LOOKUP_STR(md5sum, config->args, "-md5sum", require_fileinfo, false); 719 PXOPT_LOOKUP_STR(outdir, config->args, "-outdir", require_fileinfo, false); 654 720 PXOPT_LOOKUP_STR(name, config->args, "-name", require_fileinfo, false); 655 721 656 if (!distComponentInsert(config->dbh, dist_id, component, bytes, md5sum, "full", name, fault)) {722 if (!distComponentInsert(config->dbh, dist_id, component, bytes, md5sum, "full", outdir, name, fault)) { 657 723 psError(PS_ERR_UNKNOWN, false, "database error"); 658 724 return false; … … 676 742 psString query = pxDataGet("disttool_toadvance.sql"); 677 743 if (!query) { 678 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");744 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 679 745 return false; 680 746 } … … 747 813 psString query = pxDataGet("disttool_processedcomponent.sql"); 748 814 if (!query) { 749 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");815 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 750 816 return false; 751 817 } … … 821 887 psString query = pxDataGet("disttool_pendingfileset.sql"); 822 888 if (!query) { 823 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");889 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 824 890 return false; 825 891 } … … 891 957 PXOPT_LOOKUP_STR(name, config->args, "-name", fault == 0, false); 892 958 893 if (!rcDSFilesetInsert(config->dbh, 959 if (!rcDSFilesetInsert(config->dbh, 894 960 0, // fs_id 895 961 dist_id, … … 904 970 return true; 905 971 } 972 906 973 static bool revertfilesetMode(pxConfig *config) 907 974 { … … 920 987 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { 921 988 psFree(where); 922 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");989 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 923 990 return false; 924 991 } … … 926 993 psString query = pxDataGet("disttool_revertfileset.sql"); 927 994 if (!query) { 928 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");995 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 929 996 psFree(where); 930 997 return false; … … 968 1035 psString query = pxDataGet("disttool_pendingdest.sql"); 969 1036 if (!query) { 970 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1037 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 971 1038 return false; 972 1039 } … … 1047 1114 psString query = pxDataGet("disttool_queuercrun.sql"); 1048 1115 if (!query) { 1049 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1116 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1050 1117 return false; 1051 1118 } … … 1093 1160 // We either need rc_id or (dest_id and fs_name) to identifiy the rcRun 1094 1161 if ((!rc_id) && !(dest_id && fs_name)) { 1095 psError(PXTOOLS_ERR_ DATA, true, "either -rc_id or (-fs_name and -dest_id) are required");1162 psError(PXTOOLS_ERR_CONFIG, true, "either -rc_id or (-fs_name and -dest_id) are required"); 1096 1163 return false; 1097 1164 } … … 1105 1172 // this can't happen because we checked above 1106 1173 psFree(where); 1107 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");1174 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1108 1175 return false; 1109 1176 } … … 1115 1182 1116 1183 if (!state && (fault < 0)) { 1117 psError(PXTOOLS_ERR_ DATA, false, "parameters (-fault or -set_state) are required");1184 psError(PXTOOLS_ERR_CONFIG, false, "parameters (-fault or -set_state) are required"); 1118 1185 psFree(where); 1119 1186 return false; … … 1122 1189 psString query = pxDataGet("disttool_updatercrun.sql"); 1123 1190 if (!query) { 1124 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1191 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1125 1192 return false; 1126 1193 } … … 1179 1246 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { 1180 1247 psFree(where); 1181 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");1248 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1182 1249 return false; 1183 1250 } … … 1185 1252 psString query = pxDataGet("disttool_revertrcrun.sql"); 1186 1253 if (!query) { 1187 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1254 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1188 1255 if (!psDBRollback(config->dbh)) { 1189 1256 psError(PS_ERR_UNKNOWN, false, "database error"); … … 1238 1305 comment 1239 1306 ); 1240 1307 1241 1308 if (!row) { 1242 1309 psError(PS_ERR_UNKNOWN, false, "failed to allocate distTarget object"); … … 1298 1365 } 1299 1366 1300 static bool listtarget Mode(pxConfig *config)1367 static bool listtargetsMode(pxConfig *config) 1301 1368 { 1302 1369 PS_ASSERT_PTR_NON_NULL(config, false); … … 1404 1471 state ? state : "enabled" 1405 1472 ); 1406 1473 1407 1474 if (!row) { 1408 1475 psError(PS_ERR_UNKNOWN, false, "failed to allocate rcDestination object"); … … 1441 1508 if (!(state || last_fileset)) { 1442 1509 psError(PS_ERR_UNKNOWN, true, "one or more of -set_state or -set_last_fileset is required"); 1443 # else 1510 # else 1444 1511 if (!state) { 1445 1512 #endif … … 1538 1605 PXOPT_COPY_STR(config->args, where, "-dist_group", "dist_group", "LIKE"); 1539 1606 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE"); 1540 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 1607 // if stage is all don't add it to the query (match all stages) 1608 if (stage && strcmp(stage, "all")) { 1609 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 1610 } 1541 1611 1542 1612 psString query = pxDataGet("disttool_defineinterest.sql"); … … 1598 1668 PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "=="); 1599 1669 PXOPT_COPY_S64(config->args, where, "-target_id", "target_id", "=="); 1670 PXOPT_COPY_STR(config->args, where, "-dest_name", "rcDestination.name", "LIKE"); 1671 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 1672 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE"); 1673 PXOPT_COPY_STR(config->args, where, "-dist_group", "dist_group", "LIKE"); 1674 1675 PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false); 1676 PXOPT_LOOKUP_BOOL(full, config->args, "-full", false); 1677 if (full && clean) { 1678 psError(PS_ERR_UNKNOWN, true, "-full and -clean makes no sense, chose one or the other"); 1679 psFree(where); 1680 return false; 1681 } 1682 1600 1683 1601 1684 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); … … 1605 1688 return false; 1606 1689 } 1607 psString query = NULL; 1608 psStringAppend(&query, "UPDATE rcInterest SET state = '%s'", state); 1690 psString query = pxDataGet("disttool_updateinterest.sql"); 1609 1691 1610 1692 if (psListLength(where->list)) { … … 1620 1702 psFree(where); 1621 1703 1704 if (clean) { 1705 psStringAppend(&query, " AND distTarget.clean"); 1706 } else { 1707 psStringAppend(&query, " AND NOT distTarget.clean"); 1708 } 1709 1710 if (!p_psDBRunQueryF(config->dbh, query, state)) { 1711 psError(PS_ERR_UNKNOWN, false, "database error"); 1712 psFree(query); 1713 return false; 1714 } 1715 psFree(query); 1716 1717 psS64 numUpdated = psDBAffectedRows(config->dbh); 1718 printf("updated %" PRId64 " interests\n", numUpdated); 1719 1720 return true; 1721 } 1722 static bool listinterestsMode(pxConfig *config) 1723 { 1724 PS_ASSERT_PTR_NON_NULL(config, false); 1725 1726 psMetadata *where = psMetadataAlloc(); 1727 PXOPT_COPY_S64(config->args, where, "-int_id", "int_id", "=="); 1728 PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "=="); 1729 PXOPT_COPY_STR(config->args, where, "-dest_name", "name", "=="); 1730 PXOPT_COPY_S64(config->args, where, "-target_id", "target_id", "=="); 1731 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 1732 PXOPT_COPY_STR(config->args, where, "-dist_group", "dist_group", "LIKE"); 1733 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE"); 1734 PXOPT_COPY_STR(config->args, where, "-state", "rcInterest.state", "=="); 1735 1736 PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false); 1737 PXOPT_LOOKUP_BOOL(full, config->args, "-full", false); 1738 1739 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1740 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1741 1742 if (clean && full) { 1743 psError(PS_ERR_UNKNOWN, false, "can't select both -clean and -full"); 1744 return false; 1745 } 1746 1747 psString query = pxDataGet("disttool_listinterests.sql"); 1748 1749 if (psListLength(where->list)) { 1750 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1751 psStringAppend(&query, " WHERE %s", whereClause); 1752 psFree(whereClause); 1753 if (clean) { 1754 psStringAppend(&query, " AND (clean)"); 1755 } else if (full) { 1756 psStringAppend(&query, " AND (!clean)"); 1757 } 1758 } else if (clean) { 1759 psStringAppend(&query, " WHERE clean"); 1760 } else if (full) { 1761 psStringAppend(&query, " WHERE !clean"); 1762 } 1763 psFree(where); 1764 1765 // treat limit == 0 as "no limit" 1766 if (limit) { 1767 psString limitString = psDBGenerateLimitSQL(limit); 1768 psStringAppend(&query, " %s", limitString); 1769 psFree(limitString); 1770 } 1771 1622 1772 if (!p_psDBRunQuery(config->dbh, query)) { 1623 1773 psError(PS_ERR_UNKNOWN, false, "database error"); 1624 1774 psFree(query); 1775 if (!psDBRollback(config->dbh)) { 1776 psError(PS_ERR_UNKNOWN, false, "database error"); 1777 } 1625 1778 return false; 1626 1779 } 1627 1780 psFree(query); 1628 1781 1629 return true; 1630 } 1631 static bool listinterestsMode(pxConfig *config) 1782 psArray *output = p_psDBFetchResult(config->dbh); 1783 if (!output) { 1784 psError(PS_ERR_UNKNOWN, false, "database error"); 1785 return false; 1786 } 1787 if (!psArrayLength(output)) { 1788 psTrace("disttool", PS_LOG_INFO, "no rows found"); 1789 psFree(output); 1790 return true; 1791 } 1792 1793 if (!ippdbPrintMetadatas(stdout, output, "rcInterest", !simple)) { 1794 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1795 psFree(output); 1796 return false; 1797 } 1798 1799 psFree(output); 1800 1801 return true; 1802 } 1803 static bool pendingcleanupMode(pxConfig *config) 1632 1804 { 1633 1805 PS_ASSERT_PTR_NON_NULL(config, false); 1634 1806 1635 1807 psMetadata *where = psMetadataAlloc(); 1808 PXOPT_COPY_S64(config->args, where, "-dist_id", "dist_id", "=="); 1809 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 1810 pxAddLabelSearchArgs (config, where, "-label", "distRun.label", "=="); 1811 1812 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1813 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1814 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 1815 1816 psString query = pxDataGet("disttool_pendingcleanup.sql"); 1817 1818 if (psListLength(where->list)) { 1819 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1820 psStringAppend(&query, " AND %s", whereClause); 1821 psFree(whereClause); 1822 psFree(where); 1823 } else if (!all) { 1824 psFree(where); 1825 psError(PXTOOLS_ERR_CONFIG, false, "search parameters or -all are required"); 1826 return false; 1827 } 1828 1829 // treat limit == 0 as "no limit" 1830 if (limit) { 1831 psString limitString = psDBGenerateLimitSQL(limit); 1832 psStringAppend(&query, " %s", limitString); 1833 psFree(limitString); 1834 } 1835 1836 if (!p_psDBRunQuery(config->dbh, query)) { 1837 psError(PS_ERR_UNKNOWN, false, "database error"); 1838 psFree(query); 1839 if (!psDBRollback(config->dbh)) { 1840 psError(PS_ERR_UNKNOWN, false, "database error"); 1841 } 1842 return false; 1843 } 1844 psFree(query); 1845 1846 psArray *output = p_psDBFetchResult(config->dbh); 1847 if (!output) { 1848 psError(PS_ERR_UNKNOWN, false, "database error"); 1849 return false; 1850 } 1851 if (!psArrayLength(output)) { 1852 psTrace("disttool", PS_LOG_INFO, "no rows found"); 1853 psFree(output); 1854 return true; 1855 } 1856 1857 if (!ippdbPrintMetadatas(stdout, output, "distToCleanup", !simple)) { 1858 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1859 psFree(output); 1860 return false; 1861 } 1862 1863 psFree(output); 1864 1865 return true; 1866 } 1867 static bool listfilesetsMode(pxConfig *config) 1868 { 1869 PS_ASSERT_PTR_NON_NULL(config, false); 1870 1871 psMetadata *where = psMetadataAlloc(); 1872 PXOPT_COPY_S64(config->args, where, "-dist_id", "dist_id", "=="); 1636 1873 PXOPT_COPY_S64(config->args, where, "-int_id", "int_id", "=="); 1637 1874 PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "=="); … … 1646 1883 PXOPT_LOOKUP_BOOL(full, config->args, "-full", false); 1647 1884 1885 pxAddLabelSearchArgs (config, where, "-label", "distRun.label", "=="); 1886 1648 1887 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1649 1888 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1650 1889 1651 if (clean && full) { 1652 psError(PS_ERR_UNKNOWN, false, "can't select both -clean and -full"); 1653 return false; 1654 } 1655 1656 psString query = pxDataGet("disttool_listinterests.sql"); 1657 1658 if (psListLength(where->list)) { 1659 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1660 psStringAppend(&query, " WHERE %s", whereClause); 1661 psFree(whereClause); 1662 if (clean) { 1663 psStringAppend(&query, " AND (clean)"); 1664 } else if (full) { 1665 psStringAppend(&query, " AND (!clean)"); 1666 } 1667 } else if (clean) { 1668 psStringAppend(&query, " WHERE clean"); 1669 } else if (full) { 1670 psStringAppend(&query, " WHERE !clean"); 1671 } 1890 if (!psListLength(where->list)) { 1891 psFree(where); 1892 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1893 return false; 1894 } 1895 1896 psString query = pxDataGet("disttool_listfilesets.sql"); 1897 1898 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1899 psStringAppend(&query, " WHERE %s", whereClause); 1900 psFree(whereClause); 1672 1901 psFree(where); 1673 1902 … … 1700 1929 } 1701 1930 1702 if (!ippdbPrintMetadatas(stdout, output, " rcInterest", !simple)) {1931 if (!ippdbPrintMetadatas(stdout, output, "distFilesets", !simple)) { 1703 1932 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1704 1933 psFree(output); … … 1710 1939 return true; 1711 1940 } 1941 static bool updatefilesetMode(pxConfig *config) 1942 { 1943 psMetadata *where = psMetadataAlloc(); 1944 PXOPT_COPY_S64(config->args, where, "-fs_id", "fs_id", "=="); 1945 1946 if (!psListLength(where->list)) { 1947 psFree(where); 1948 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1949 return false; 1950 } 1951 1952 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 1953 1954 // We don't use PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); here 1955 // because we want -fault 0 to work 1956 bool gotFault = false; 1957 psS16 fault = psMetadataLookupS16(&gotFault, config->args, "-fault"); 1958 1959 if ((!state) && (!gotFault)) { 1960 psError(PXTOOLS_ERR_CONFIG, true, "parameters (-fault or -set_state) is required"); 1961 psFree(where); 1962 return false; 1963 } 1964 1965 psString query = psStringCopy("UPDATE rcDSFileset SET "); 1966 1967 if (state) { 1968 psStringAppend(&query, " state = '%s'", state); 1969 } 1970 1971 if (gotFault) { 1972 psStringAppend(&query, "%s fault = %d", state ? ", " : "", fault); 1973 } 1974 1975 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1976 psStringAppend(&query, " WHERE %s", whereClause); 1977 psFree(whereClause); 1978 psFree(where); 1979 1980 if (!p_psDBRunQuery(config->dbh, query)) { 1981 psError(PS_ERR_UNKNOWN, false, "database error"); 1982 psFree(query); 1983 return false; 1984 } 1985 1986 return true; 1987 } -
branches/tap_branches/ippTools/src/disttool.h
r25835 r27838 33 33 DISTTOOL_MODE_PROCESSEDCOMPONENT, 34 34 DISTTOOL_MODE_TOADVANCE, 35 DISTTOOL_MODE_PENDINGCLEANUP, 35 36 DISTTOOL_MODE_PENDINGFILESET, 36 37 DISTTOOL_MODE_ADDFILESET, 37 38 DISTTOOL_MODE_REVERTFILESET, 39 DISTTOOL_MODE_LISTFILESETS, 40 DISTTOOL_MODE_UPDATEFILESET, 38 41 DISTTOOL_MODE_QUEUERCRUN, 39 42 DISTTOOL_MODE_UPDATERCRUN, … … 44 47 DISTTOOL_MODE_DEFINETARGET, 45 48 DISTTOOL_MODE_UPDATETARGET, 46 DISTTOOL_MODE_LISTTARGET ,49 DISTTOOL_MODE_LISTTARGETS, 47 50 DISTTOOL_MODE_DEFINEINTEREST, 48 51 DISTTOOL_MODE_UPDATEINTEREST, -
branches/tap_branches/ippTools/src/disttoolConfig.c
r25835 r27838 38 38 config->modules = pmConfigRead(&argc, argv, NULL); 39 39 if (! config->modules) { 40 psError( PS_ERR_UNKNOWN, false, "Can't find site configuration!\n");40 psError(psErrorCodeLast(), false, "Can't find site configuration!\n"); 41 41 psFree(config); 42 42 return NULL; … … 49 49 50 50 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-no_magic", 0, "magic is not needed", false); 51 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-use_alternate", 0, "use alternate inputs", false); 51 52 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_label", 0, "define label for run", NULL); 53 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data_group for run", NULL); 52 54 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_note", 0, "select by dist_group", NULL); 53 55 54 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "- dry_run", 0, "don't queue runs just display what would be selected", false);56 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend", 0, "don't queue runs just display what would be selected", false); 55 57 56 58 // select args 57 psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-target_id", 0, "define target_id", 0); 58 psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-exp_id", 0, "define exp_id", 0); 59 psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-chip_id", 0, "define chip_id", 0); 60 psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "define chip_id", 0); 59 psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-target_id", 0, "define target_id", 0); 60 psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-exp_id", 0, "define exp_id", 0); 61 psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-chip_id", 0, "define chip_id", 0); 61 62 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label", 0, "select by run label", NULL); 62 63 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-dist_group", 0, "select by dist_group", NULL); … … 70 71 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "new value for state", NULL); 71 72 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_label", 0, "new value for label", NULL); 73 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_data_group", 0, "new value for label", NULL); 74 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_outdir", 0, "new value for outdir", NULL); 75 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_note", 0, "define new note", NULL); 72 76 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-stage", 0, "value for stage", NULL); 73 77 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "value for state", NULL); 74 78 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "limit updates to label", NULL); 79 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-data_group", 0, "limit updates to data_group", NULL); 80 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-dist_group", 0, "limit updates to data_group", NULL); 75 81 psMetadataAddS16(updaterunArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0); 76 77 82 // -revertrun 78 83 psMetadata *revertrunArgs = psMetadataAlloc(); … … 93 98 psMetadataAddBool(pendingcomponentArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 94 99 100 // -pendingcleanup 101 psMetadata *pendingcleanupArgs = psMetadataAlloc(); 102 psMetadataAddS64(pendingcleanupArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0); 103 psMetadataAddStr(pendingcleanupArgs, PS_LIST_TAIL, "-stage", 0, "limit results to runs for stage", NULL); 104 psMetadataAddStr(pendingcleanupArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "limit results to label", NULL); 105 psMetadataAddU64(pendingcleanupArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 106 psMetadataAddBool(pendingcleanupArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 107 psMetadataAddBool(pendingcleanupArgs, PS_LIST_TAIL, "-all", 0, "list all runs pending cleanup", NULL); 108 95 109 96 110 // -addprocessedcomponent … … 98 112 psMetadataAddS64(addprocessedcomponentArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0); 99 113 psMetadataAddStr(addprocessedcomponentArgs, PS_LIST_TAIL, "-component", 0, "define component (required)", NULL); 114 psMetadataAddStr(addprocessedcomponentArgs, PS_LIST_TAIL, "-outdir", 0, "define output directory", NULL); 100 115 psMetadataAddStr(addprocessedcomponentArgs, PS_LIST_TAIL, "-name", 0, "define file name", NULL); 101 116 psMetadataAddS32(addprocessedcomponentArgs, PS_LIST_TAIL, "-bytes", 0, "define file size", 0); … … 110 125 psMetadataAddS64(revertcomponentArgs, PS_LIST_TAIL, "-stage_id", 0, "define stage_id", 0); 111 126 psMetadataAddStr(revertcomponentArgs, PS_LIST_TAIL, "-state", 0, "define state", NULL); 112 psMetadataAddStr(revertcomponentArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL);127 psMetadataAddStr(revertcomponentArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label", NULL); 113 128 psMetadataAddS16(revertcomponentArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0); 114 129 psMetadataAddBool(revertcomponentArgs, PS_LIST_TAIL, "-all", 0, "revert all faulted runs", NULL); … … 142 157 psMetadataAddStr(addfilesetArgs, PS_LIST_TAIL, "-name", 0, "define file name", NULL); 143 158 psMetadataAddS32(addfilesetArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0); 159 160 // -updatefileset 161 psMetadata *updatefilesetArgs = psMetadataAlloc(); 162 psMetadataAddS64(updatefilesetArgs, PS_LIST_TAIL, "-fs_id", 0, "define fs_id", 0); 163 // psMetadataAddS64(updatefilesetArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0); 164 psMetadataAddStr(updatefilesetArgs, PS_LIST_TAIL, "-set_state",0, "new value for state", NULL); 165 psMetadataAddS32(updatefilesetArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0); 144 166 145 167 // -pendingdest … … 162 184 psMetadataAddBool(revertfilesetArgs, PS_LIST_TAIL, "-all", 0, "revert all faulted runs", NULL); 163 185 186 // -listfileset 187 psMetadata *listfilesetsArgs = psMetadataAlloc(); 188 psMetadataAddS64(listfilesetsArgs, PS_LIST_TAIL, "-dist_id", 0, "list filesets with dist_id", 0); 189 psMetadataAddS64(listfilesetsArgs, PS_LIST_TAIL, "-target_id", 0, "list filesets with target_id", 0); 190 psMetadataAddS64(listfilesetsArgs, PS_LIST_TAIL, "-dest_id", 0, "list filesets with dest_id", 0); 191 psMetadataAddS64(listfilesetsArgs, PS_LIST_TAIL, "-int_id", 0, "list filesets with int_id", 0); 192 psMetadataAddStr(listfilesetsArgs, PS_LIST_TAIL, "-dest_name", 0, "list filesets for destinationn name)", NULL); 193 psMetadataAddStr(listfilesetsArgs, PS_LIST_TAIL, "-dist_group", 0, "list filesets for dist_group (LIKE comparison)", NULL); 194 psMetadataAddStr(listfilesetsArgs, PS_LIST_TAIL, "-filter", 0, "list filesets by filter (LIKE comparison)", NULL); 195 psMetadataAddStr(listfilesetsArgs, PS_LIST_TAIL, "-stage", 0, "list filesets for stage", NULL); 196 psMetadataAddBool(listfilesetsArgs, PS_LIST_TAIL,"-clean", 0, "list clean filesets", false); 197 psMetadataAddBool(listfilesetsArgs, PS_LIST_TAIL,"-full", 0, "list full filesets", false); 198 psMetadataAddStr(listfilesetsArgs, PS_LIST_TAIL, "-state", 0, "list filesets in state", NULL); 199 psMetadataAddStr(listfilesetsArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "limit results to label", NULL); 200 psMetadataAddU64(listfilesetsArgs, PS_LIST_TAIL, "-limit", 0, "limit number of filesets listed to N", 0); 201 psMetadataAddBool(listfilesetsArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 202 164 203 // -queuercrun 165 204 psMetadata *queuercrunArgs = psMetadataAlloc(); … … 228 267 psMetadataAddStr(updatetargetArgs, PS_LIST_TAIL, "-set_state", 0, "define new state", NULL); 229 268 230 // -listtarget 231 psMetadata *listtarget Args = psMetadataAlloc();232 psMetadataAddS64(listtarget Args, PS_LIST_TAIL, "-target_id", 0, "list target with target_id", 0);233 psMetadataAddStr(listtarget Args, PS_LIST_TAIL, "-dist_group", 0, "list targets for dist_group", NULL);234 psMetadataAddStr(listtarget Args, PS_LIST_TAIL, "-filter", 0, "define filter", NULL);235 psMetadataAddStr(listtarget Args, PS_LIST_TAIL, "-stage", 0, "list targets for stage", NULL);236 psMetadataAddBool(listtarget Args, PS_LIST_TAIL,"-clean", 0, "list clean targets", false);237 psMetadataAddBool(listtarget Args, PS_LIST_TAIL,"-full", 0, "list full targets", false);238 psMetadataAddStr(listtarget Args, PS_LIST_TAIL, "-state", 0, "list targets in state", NULL);239 psMetadataAddU64(listtarget Args, PS_LIST_TAIL, "-limit", 0, "limit number of targets listed to N", 0);240 psMetadataAddBool(listtarget Args, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);269 // -listtargets 270 psMetadata *listtargetsArgs = psMetadataAlloc(); 271 psMetadataAddS64(listtargetsArgs, PS_LIST_TAIL, "-target_id", 0, "list target with target_id", 0); 272 psMetadataAddStr(listtargetsArgs, PS_LIST_TAIL, "-dist_group", 0, "list targets for dist_group", NULL); 273 psMetadataAddStr(listtargetsArgs, PS_LIST_TAIL, "-filter", 0, "define filter", NULL); 274 psMetadataAddStr(listtargetsArgs, PS_LIST_TAIL, "-stage", 0, "list targets for stage", NULL); 275 psMetadataAddBool(listtargetsArgs, PS_LIST_TAIL,"-clean", 0, "list clean targets", false); 276 psMetadataAddBool(listtargetsArgs, PS_LIST_TAIL,"-full", 0, "list full targets", false); 277 psMetadataAddStr(listtargetsArgs, PS_LIST_TAIL, "-state", 0, "list targets in state", NULL); 278 psMetadataAddU64(listtargetsArgs, PS_LIST_TAIL, "-limit", 0, "limit number of targets listed to N", 0); 279 psMetadataAddBool(listtargetsArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 241 280 242 281 // -defineinterest … … 258 297 psMetadataAddS64(updateinterestArgs, PS_LIST_TAIL, "-target_id", 0, "define target_id", 0); 259 298 psMetadataAddStr(updateinterestArgs, PS_LIST_TAIL, "-set_state", 0, "define state (required)", NULL); 299 psMetadataAddStr(updateinterestArgs, PS_LIST_TAIL, "-stage", 0, "define stage", NULL); 300 psMetadataAddStr(updateinterestArgs, PS_LIST_TAIL, "-filter", 0, "define filter (LIKE comparison)", NULL); 301 psMetadataAddStr(updateinterestArgs, PS_LIST_TAIL, "-dest_name", 0, "define destination name", NULL); 302 psMetadataAddStr(updateinterestArgs, PS_LIST_TAIL, "-dist_group", 0, "define distribution group", NULL); 303 psMetadataAddBool(updateinterestArgs, PS_LIST_TAIL,"-clean", 0, "update clean interests", false); 304 psMetadataAddBool(updateinterestArgs, PS_LIST_TAIL,"-full", 0, "update full interests", false); 260 305 261 306 // -listinterests … … 285 330 PXOPT_ADD_MODE("-processedcomponent", "", DISTTOOL_MODE_PROCESSEDCOMPONENT, processedcomponentArgs); 286 331 PXOPT_ADD_MODE("-toadvance", "", DISTTOOL_MODE_TOADVANCE, toadvanceArgs); 332 PXOPT_ADD_MODE("-pendingcleanup", "", DISTTOOL_MODE_PENDINGCLEANUP, pendingcleanupArgs); 287 333 PXOPT_ADD_MODE("-pendingfileset", "", DISTTOOL_MODE_PENDINGFILESET, pendingfilesetArgs); 288 334 PXOPT_ADD_MODE("-addfileset", "", DISTTOOL_MODE_ADDFILESET, addfilesetArgs); 335 PXOPT_ADD_MODE("-updatefileset", "", DISTTOOL_MODE_UPDATEFILESET, updatefilesetArgs); 336 PXOPT_ADD_MODE("-listfilesets", "", DISTTOOL_MODE_LISTFILESETS, listfilesetsArgs); 289 337 PXOPT_ADD_MODE("-revertfileset", "", DISTTOOL_MODE_REVERTFILESET, revertfilesetArgs); 290 338 PXOPT_ADD_MODE("-queuercrun", "", DISTTOOL_MODE_QUEUERCRUN, queuercrunArgs); … … 299 347 PXOPT_ADD_MODE("-definetarget", "", DISTTOOL_MODE_DEFINETARGET, definetargetArgs); 300 348 PXOPT_ADD_MODE("-updatetarget", "", DISTTOOL_MODE_UPDATETARGET, updatetargetArgs); 301 PXOPT_ADD_MODE("-listtarget ", "", DISTTOOL_MODE_LISTTARGET, listtargetArgs);349 PXOPT_ADD_MODE("-listtargets", "", DISTTOOL_MODE_LISTTARGETS, listtargetsArgs); 302 350 303 351 PXOPT_ADD_MODE("-defineinterest", "", DISTTOOL_MODE_DEFINEINTEREST, defineinterestArgs); -
branches/tap_branches/ippTools/src/faketool.c
r25851 r27838 92 92 MODECASE(FAKETOOL_MODE_TOFULLIMFILE, tofullimfileMode); 93 93 MODECASE(FAKETOOL_MODE_TOPURGEDIMFILE, topurgedimfileMode); 94 MODECASE(FAKETOOL_MODE_TOSCRUBBEDIMFILE, toscrubbedimfileMode);94 MODECASE(FAKETOOL_MODE_TOSCRUBBEDIMFILE, toscrubbedimfileMode); 95 95 MODECASE(FAKETOOL_MODE_EXPORTRUN, exportrunMode); 96 96 MODECASE(FAKETOOL_MODE_IMPORTRUN, importrunMode); … … 123 123 124 124 psMetadata *where = psMetadataAlloc(); 125 PXOPT_COPY_S64(config->args, where, "-cam_id", "cam_id", "=="); 126 PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "=="); 125 127 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 126 128 PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "=="); … … 130 132 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "dateobs", "<="); 131 133 PXOPT_COPY_STR(config->args, where, "-exp_tag", "exp_tag", "=="); 132 pxAddLabelSearchArgs (config, where, "-label", "label", "=="); 134 pxAddLabelSearchArgs (config, where, "-label", "label", "=="); // XXX does this choose the right label? 133 135 PXOPT_COPY_STR(config->args, where, "-filelevel", "filelevel", "=="); 134 136 PXOPT_COPY_STR(config->args, where, "-reduction", "reduction", "=="); … … 166 168 && !psMetadataLookupBool(NULL, config->args, "-all")) { 167 169 psFree(where); 168 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");170 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 169 171 return false; 170 172 } … … 188 190 psString query = pxDataGet("faketool_find_camrun.sql"); 189 191 if (!query) { 190 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");192 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 191 193 psFree(where); 192 194 return false; … … 339 341 psFree(where); 340 342 where = NULL; 341 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");343 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 342 344 return false; 343 345 } … … 346 348 347 349 // pxUpdateRun gets parameters from config->args and updates 348 bool result = pxUpdateRun(config, where, &query, "fakeRun", true);350 bool result = pxUpdateRun(config, where, &query, "fakeRun", "fake_id", "fakeProcessedImfile", true); 349 351 if (!result) { 350 psError( PXTOOLS_ERR_DATA, false, "pxUpdateRun failed");352 psError(psErrorCodeLast(), false, "pxUpdateRun failed"); 351 353 } 352 354 … … 373 375 psString query = pxDataGet("faketool_find_pendingexp.sql"); 374 376 if (!query) { 375 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");377 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 376 378 psFree(where); 377 379 return false; … … 440 442 psString query = pxDataGet("faketool_pendingimfile.sql"); 441 443 if (!query) { 442 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");444 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 443 445 return false; 444 446 } … … 556 558 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "=="); 557 559 PXOPT_COPY_STR(config->args, where, "-class_id", "rawImfile.class_id", "=="); 558 PXOPT_COPY_STR(config->args, where, "-inst", "rawExp. telescope", "==");559 PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", " ==");560 PXOPT_COPY_STR(config->args, where, "-inst", "rawExp.camera", "=="); 561 PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "LIKE"); 560 562 561 563 psString query = pxDataGet("faketool_processedimfile.sql"); 562 564 if (!query) { 563 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");565 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 564 566 return false; 565 567 } 566 568 567 569 if (where && psListLength(where->list)) { 568 psString whereClause = psDBGenerateWhereConditionSQL(where, "fakeProcessedImfile");570 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 569 571 psStringAppend(&query, " AND %s", whereClause); 570 572 psFree(whereClause); … … 665 667 && !psMetadataLookupBool(NULL, config->args, "-all")) { 666 668 psFree(where); 667 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");669 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 668 670 return false; 669 671 } … … 671 673 psString query = pxDataGet("faketool_revertprocessedimfile.sql"); 672 674 if (!query) { 673 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");675 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 674 676 psFree(where); 675 677 return false; … … 812 814 psString query = pxDataGet("faketool_unmasked.sql"); 813 815 if (!query) { 814 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");816 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 815 817 return false; 816 818 } … … 889 891 psString query = pxDataGet("faketool_pendingcleanuprun.sql"); 890 892 if (!query) { 891 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");893 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 892 894 return false; 893 895 } … … 954 956 psString query = pxDataGet("faketool_pendingcleanupimfile.sql"); 955 957 if (!query) { 956 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");958 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 957 959 return false; 958 960 } … … 1015 1017 psString query = pxDataGet("faketool_donecleanup.sql"); 1016 1018 if (!query) { 1017 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1019 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1018 1020 return false; 1019 1021 } … … 1077 1079 psString query = pxDataGet("faketool_completely_processed_exp.sql"); 1078 1080 if (!query) { 1079 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1081 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1080 1082 return false; 1081 1083 } … … 1285 1287 psString query = pxDataGet(tables[i].sqlFilename); 1286 1288 if (!query) { 1287 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1289 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1288 1290 return false; 1289 1291 } -
branches/tap_branches/ippTools/src/faketoolConfig.c
r25840 r27838 39 39 config->modules = pmConfigRead(&argc, argv, NULL); 40 40 if (! config->modules) { 41 psError( PS_ERR_UNKNOWN, false, "Can't find site configuration");41 psError(psErrorCodeLast(), false, "Can't find site configuration"); 42 42 psFree(config); 43 43 return NULL; … … 47 47 psMetadata *queueArgs = psMetadataAlloc(); 48 48 // XXX need to allow multiple exp_ids 49 psMetadataAddS64(queueArgs, PS_LIST_TAIL, "-cam_id", 0, "search by cam_id", 0); 50 psMetadataAddS64(queueArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip_id", 0); 49 51 psMetadataAddS64(queueArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 50 52 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exp_name", NULL); -
branches/tap_branches/ippTools/src/flatcorr.c
r25835 r27838 115 115 if (!psListLength(where->list)) { 116 116 psFree(where); 117 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");118 return false; 119 } 120 121 // require the camera to be defined: this analysis does not make sense 117 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 118 return false; 119 } 120 121 // require the camera to be defined: this analysis does not make sense 122 122 // across multiple cameras 123 123 PXOPT_LOOKUP_STR(camera, config->args, "-inst", true, false); … … 133 133 PXOPT_LOOKUP_STR(tess_id, config->args, "-set_tess_id", false, false); 134 134 PXOPT_LOOKUP_STR(region, config->args, "-set_region", false, false); 135 PXOPT_LOOKUP_BOOL(make_correction, config->args, "-make_correction", false); 135 136 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 136 137 … … 141 142 psString query = pxDataGet("chiptool_find_rawexp.sql"); 142 143 if (!query) { 143 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");144 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 144 145 psFree(where); 145 146 return false; … … 172 173 173 174 if (pretend) { 174 for (long i = 0; i < psArrayLength(output); i++) {175 // negative simple so the default is true176 if (!ippdbPrintMetadataRaw(stdout, output->data[i], !simple)) {177 psError(PS_ERR_UNKNOWN, false, "failed to print array");178 psFree(output);179 return false;180 }181 }175 for (long i = 0; i < psArrayLength(output); i++) { 176 // negative simple so the default is true 177 if (!ippdbPrintMetadataRaw(stdout, output->data[i], !simple)) { 178 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 179 psFree(output); 180 return false; 181 } 182 } 182 183 psFree(output); 183 184 return true; … … 194 195 // create a new flatcorrRun 195 196 if (!flatcorrRunInsert( 196 config->dbh,197 config->dbh, 197 198 0, // corr_id 198 det_type,199 det_type, 199 200 dvodb, 200 camera,201 telescope,202 NULL,201 camera, 202 telescope, 203 NULL, 203 204 filter, 204 205 "reg", // state 206 make_correction, 205 207 workdir, 206 208 label, 207 209 reduction, 208 region,209 NULL,210 0210 region, 211 NULL, 212 0 211 213 )) { 212 214 if (!psDBRollback(config->dbh)) { … … 294 296 PXOPT_LOOKUP_STR(tess_id, config->args, "-set_tess_id", false, false); 295 297 PXOPT_LOOKUP_STR(region, config->args, "-set_region", false, false); 298 PXOPT_LOOKUP_BOOL(make_correction, config->args, "-make_correction", false); 296 299 // XXX probably should make the region in -set_region match ra_min, ra_max, etc 297 300 … … 307 310 // create a new flatcorrRun 308 311 flatcorrRunRow *row = flatcorrRunRowAlloc( 309 0, // corr_id 310 det_type, 311 dvodb, 312 camera, 313 telescope, 314 NULL, 315 filter, 316 "reg", // state 317 workdir, 318 label, 319 reduction, 320 region, 321 NULL, // hostname 322 0 // fault 312 0, // corr_id 313 det_type, 314 dvodb, 315 camera, 316 telescope, 317 NULL, 318 filter, 319 "reg", // state 320 make_correction, 321 workdir, 322 label, 323 reduction, 324 region, 325 NULL, // hostname 326 0 // fault 323 327 ); 324 328 … … 331 335 return false; 332 336 } 333 337 334 338 // figure out the ID of the flatcorrRun we just created 335 339 psS64 corr_id = psDBLastInsertID(config->dbh); … … 373 377 psString query = pxDataGet("flatcorr_dropchip.sql"); 374 378 if (!query) { 375 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");376 return false;379 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 380 return false; 377 381 } 378 382 … … 416 420 psString query = pxDataGet("flatcorr_dropcamera.sql"); 417 421 if (!query) { 418 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");419 return false;422 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 423 return false; 420 424 } 421 425 … … 444 448 psString query = pxDataGet("flatcorr_chiprundone.sql"); 445 449 if (!query) { 446 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");447 return false;450 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 451 return false; 448 452 } 449 453 … … 457 461 // treat limit == 0 as "no limit" 458 462 if (limit) { 459 psString limitString = psDBGenerateLimitSQL(limit);460 psStringAppend(&query, " %s", limitString);461 psFree(limitString);463 psString limitString = psDBGenerateLimitSQL(limit); 464 psStringAppend(&query, " %s", limitString); 465 psFree(limitString); 462 466 } 463 467 … … 520 524 // queue the exp 521 525 if (!pxcamQueueByChipID( 522 config, 523 row->chip_id, 524 row->workdir, 525 row->label, 526 row->data_group, 527 row->dist_group, 528 row->reduction, 529 row->expgroup, 530 row->dvodb, 531 row->tess_id, 532 "camera", 526 config, 527 row->chip_id, 528 row->workdir, 529 row->label, 530 row->data_group, 531 row->dist_group, 532 row->reduction, 533 row->expgroup, 534 row->dvodb, 535 row->tess_id, 536 "camera", 537 row->magicked, 533 538 NULL // note does not propragate 534 539 )) { … … 543 548 } 544 549 545 // figure out the ID of the flatcorrRun we just created546 psS64 cam_id = psDBLastInsertID(config->dbh);547 548 // add the camRun entry to the flatcorrCamLink table (include is TRUE)550 // figure out the ID of the flatcorrRun we just created 551 psS64 cam_id = psDBLastInsertID(config->dbh); 552 553 // add the camRun entry to the flatcorrCamLink table (include is TRUE) 549 554 if (!flatcorrCamLinkInsert(config->dbh, corr_id, row->chip_id, cam_id, 1)) { 550 555 if (!psDBRollback(config->dbh)) { … … 554 559 return false; 555 560 } 556 561 557 562 psFree(row); 558 563 } … … 582 587 psString query = pxDataGet("flatcorr_camerarundone.sql"); 583 588 if (!query) { 584 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");585 return false;589 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 590 return false; 586 591 } 587 592 … … 595 600 // treat limit == 0 as "no limit" 596 601 if (limit) { 597 psString limitString = psDBGenerateLimitSQL(limit);598 psStringAppend(&query, " %s", limitString);599 psFree(limitString);602 psString limitString = psDBGenerateLimitSQL(limit); 603 psStringAppend(&query, " %s", limitString); 604 psFree(limitString); 600 605 } 601 606 … … 658 663 // queue the exp : force image_only to be false (flatcorr is meaningless with just image info) 659 664 if (!pxaddQueueByCamID( 660 config,661 row->cam_id,662 row->workdir,663 row->reduction,664 row->label,665 config, 666 row->cam_id, 667 row->workdir, 668 row->reduction, 669 row->label, 665 670 row->data_group, 666 row->dvodb,671 row->dvodb, 667 672 NULL, // note is not propagated 668 0)) {673 0)) { 669 674 if (!psDBRollback(config->dbh)) { 670 675 psError(PS_ERR_UNKNOWN, false, "database error"); … … 677 682 } 678 683 679 // figure out the ID of the flatcorrRun we just created680 psS64 add_id = psDBLastInsertID(config->dbh);681 682 // add the addRun entry to the flatcorrAddstarLink table (include is TRUE)684 // figure out the ID of the flatcorrRun we just created 685 psS64 add_id = psDBLastInsertID(config->dbh); 686 687 // add the addRun entry to the flatcorrAddstarLink table (include is TRUE) 683 688 if (!flatcorrAddstarLinkInsert(config->dbh, corr_id, row->cam_id, add_id, 1)) { 684 689 if (!psDBRollback(config->dbh)) { … … 714 719 psString query = pxDataGet("flatcorr_pendingprocess.sql"); 715 720 if (!query) { 716 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");717 return false;721 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 722 return false; 718 723 } 719 724 … … 727 732 // treat limit == 0 as "no limit" 728 733 if (limit) { 729 psString limitString = psDBGenerateLimitSQL(limit);730 psStringAppend(&query, " %s", limitString);731 psFree(limitString);734 psString limitString = psDBGenerateLimitSQL(limit); 735 psStringAppend(&query, " %s", limitString); 736 psFree(limitString); 732 737 } 733 738 … … 750 755 751 756 if (!ippdbPrintMetadatas(stdout, output, "flatcorrPending", !simple)) { 752 psError(PS_ERR_UNKNOWN, false, "failed to print array");753 psFree(output);754 return false;757 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 758 psFree(output); 759 return false; 755 760 } 756 761 … … 809 814 // treat limit == 0 as "no limit" 810 815 if (limit) { 811 psString limitString = psDBGenerateLimitSQL(limit);812 psStringAppend(&query, " %s", limitString);813 psFree(limitString);816 psString limitString = psDBGenerateLimitSQL(limit); 817 psStringAppend(&query, " %s", limitString); 818 psFree(limitString); 814 819 } 815 820 … … 832 837 833 838 if (!ippdbPrintMetadatas(stdout, output, "flatcorrPending", !simple)) { 834 psError(PS_ERR_UNKNOWN, false, "failed to print array");835 psFree(output);836 return false;839 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 840 psFree(output); 841 return false; 837 842 } 838 843 … … 849 854 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 850 855 PXOPT_LOOKUP_BOOL(limit, config->args, "-limit", false); 851 856 852 857 psMetadata *where = psMetadataAlloc(); 853 858 PXOPT_COPY_S64(config->args, where, "-chip_id", "chipProcessedImfile.chip_id", "=="); … … 855 860 psString query = pxDataGet("flatcorr_inputimfile.sql"); 856 861 if (!query) { 857 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");862 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 858 863 return false; 859 864 } … … 868 873 // treat limit == 0 as "no limit" 869 874 if (limit) { 870 psString limitString = psDBGenerateLimitSQL(limit);871 psStringAppend(&query, " %s", limitString);872 psFree(limitString);875 psString limitString = psDBGenerateLimitSQL(limit); 876 psStringAppend(&query, " %s", limitString); 877 psFree(limitString); 873 878 } 874 879 … … 891 896 892 897 if (!ippdbPrintMetadatas(stdout, output, "flatcorrPending", !simple)) { 893 psError(PS_ERR_UNKNOWN, false, "failed to print array");894 psFree(output);895 return false;898 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 899 psFree(output); 900 return false; 896 901 } 897 902 … … 905 910 906 911 // check that state is a valid string value 907 if (!strcmp(state, "reg") && 908 !strcmp(state, "new") && 909 !strcmp(state, "full"))912 if (!strcmp(state, "reg") && 913 !strcmp(state, "new") && 914 !strcmp(state, "full")) 910 915 { 911 916 psError(PS_ERR_UNKNOWN, false, "invalid state: %s", state); -
branches/tap_branches/ippTools/src/flatcorrConfig.c
r25816 r27838 59 59 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_tess_id", 0, "define tessalation", NULL); 60 60 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_region", 0, "define region", NULL); 61 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-make_correction", 0, "generate a correction image and add to detrend database", false); 61 62 62 63 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend", 0, "print the exposures that would be included in the detrend run and exit", false); … … 76 77 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_tess_id", 0, "define tessalation", NULL); 77 78 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_region", 0, "define region", NULL); 79 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-make_correction", 0, "generate a correction image and add to detrend database", false); 78 80 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 79 81 … … 129 131 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-corr_id", 0, "define correction id (required)", 0); 130 132 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "set state (required)", NULL); 133 // XXX add mechanism to change this value: psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-set_correction", 0, "generate a correction image and add to detrend database", false); 131 134 132 135 // -inputexp -
branches/tap_branches/ippTools/src/magicdstool.c
r25837 r27838 33 33 34 34 static bool definebyqueryMode(pxConfig *config); 35 static bool definecopyMode(pxConfig *config); 35 36 static bool updaterunMode(pxConfig *config); 36 37 static bool todestreakMode(pxConfig *config); … … 38 39 static bool advancerunMode(pxConfig *config); 39 40 static bool revertdestreakedfileMode(pxConfig *config); 41 static bool clearstatefaultsMode(pxConfig *config); 40 42 static bool getskycellsMode(pxConfig *config); 41 43 static bool toremoveMode(pxConfig *config); … … 44 46 static bool tocleanupMode(pxConfig *config); 45 47 46 static bool setmagicDSRunState(pxConfig *config, psS64 magic_id, ps Metadata *where, const char *state);48 static bool setmagicDSRunState(pxConfig *config, psS64 magic_id, psString extraSetString, psMetadata *where, const char *state); 47 49 48 50 # define MODECASE(caseName, func) \ … … 65 67 switch (config->mode) { 66 68 MODECASE(MAGICDSTOOL_MODE_DEFINEBYQUERY, definebyqueryMode); 69 MODECASE(MAGICDSTOOL_MODE_DEFINECOPY, definecopyMode); 67 70 MODECASE(MAGICDSTOOL_MODE_UPDATERUN, updaterunMode); 68 71 MODECASE(MAGICDSTOOL_MODE_TODESTREAK, todestreakMode); … … 70 73 MODECASE(MAGICDSTOOL_MODE_ADVANCERUN, advancerunMode); 71 74 MODECASE(MAGICDSTOOL_MODE_REVERTDESTREAKEDFILE,revertdestreakedfileMode); 75 MODECASE(MAGICDSTOOL_MODE_CLEARSTATEFAULTS, clearstatefaultsMode); 72 76 MODECASE(MAGICDSTOOL_MODE_GETSKYCELLS, getskycellsMode); 73 77 MODECASE(MAGICDSTOOL_MODE_TOREMOVE, toremoveMode); … … 110 114 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 111 115 PXOPT_LOOKUP_BOOL(rerun, config->args, "-rerun", false); 112 PXOPT_LOOKUP_BOOL( dry_run, config->args, "-dry_run", false);116 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 113 117 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 114 118 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); … … 124 128 PXOPT_COPY_S32(config->args, where, "-streaks_max","streaks", "<="); 125 129 126 pxAddLabelSearchArgs (config, where, "-label", "magicRun.label", "=="); 130 pxAddLabelSearchArgs (config, where, "-label", "magicRun.label", "=="); // define using magicRun label 127 131 128 132 ippStage stageNum = ippStringToStage(stage); 129 133 130 134 psString query = NULL; 131 135 switch (stageNum) { … … 147 151 case IPP_STAGE_FAKE: 148 152 case IPP_STAGE_STACK: 149 psError(PXTOOLS_ERR_ DATA, true, "%sRuns do not need to be destreaked", stage);153 psError(PXTOOLS_ERR_CONFIG, true, "%sRuns do not need to be destreaked", stage); 150 154 return false; 151 155 case IPP_STAGE_NONE: 152 psError(PXTOOLS_ERR_ DATA, true, "%s is not a valid stage", stage);156 psError(PXTOOLS_ERR_CONFIG, true, "%s is not a valid stage", stage); 153 157 return false; 154 158 default: … … 159 163 160 164 if (!query) { 161 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");165 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 162 166 return false; 163 167 } … … 233 237 // Parse the list of runs ready to be destreaked 234 238 235 if (! dry_run&& !psDBTransaction(config->dbh)) {239 if (!pretend && !psDBTransaction(config->dbh)) { 236 240 psError(PS_ERR_UNKNOWN, false, "database error"); 237 241 return false; … … 249 253 psString magicRunDataGroup = psMetadataLookupStr(NULL, row, "data_group"); 250 254 psString magicRunWorkdir = psMetadataLookupStr(NULL, row, "workdir"); 251 255 252 256 // if workdir is not supplied use the magicRun's 253 257 if (!workdir) { … … 282 286 } 283 287 284 if (! dry_run) {288 if (!pretend) { 285 289 if (!magicDSRunInsertObject(config->dbh, run)) { 286 290 psError(PS_ERR_UNKNOWN, false, "database error"); … … 301 305 } 302 306 303 if (! dry_run&& !psDBCommit(config->dbh)) {307 if (!pretend && !psDBCommit(config->dbh)) { 304 308 psError(PS_ERR_UNKNOWN, false, "database error"); 305 309 return false; … … 319 323 320 324 325 // XXX This currently allows multiple destreak runs to be queued on the same exposure if there are multiple 326 // magicRuns selected! 327 static bool definecopyMode(pxConfig *config) 328 { 329 // Required 330 PXOPT_LOOKUP_STR(stage, config->args, "-stage", true, false); 331 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); 332 333 // Optional 334 PXOPT_LOOKUP_STR(recoveryroot, config->args, "-recoveryroot", false, false); 335 PXOPT_LOOKUP_BOOL(noreplace, config->args, "-noreplace", false); 336 PXOPT_LOOKUP_STR(set_label, config->args, "-set_label", false, false); 337 PXOPT_LOOKUP_STR(set_data_group, config->args, "-set_data_group", false, false); 338 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 339 PXOPT_LOOKUP_BOOL(rerun, config->args, "-rerun", false); 340 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 341 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 342 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 343 344 // search args 345 psMetadata *where = psMetadataAlloc(); 346 PXOPT_COPY_S64(config->args, where, "-exp_id", "chipRun.exp_id", "=="); 347 PXOPT_COPY_S64(config->args, where, "-chip_id", "chipRun.chip_id", "=="); 348 PXOPT_COPY_S64(config->args, where, "-cam_id", "camRun.cam_id", "=="); 349 PXOPT_COPY_S64(config->args, where, "-warp_id", "warpRun.warp_id", "=="); 350 PXOPT_COPY_S64(config->args, where, "-diff_id", "diffRun.diff_id", "=="); 351 PXOPT_COPY_S64(config->args, where, "-magic_id", "magicRun.magic_id", "=="); 352 PXOPT_COPY_S32(config->args, where, "-streaks_max", "magicMask.streaks", "<="); 353 354 pxAddLabelSearchArgs (config, where, "-magic_label", "magicRun.label", "=="); // define magic label 355 psString labelName = NULL; // Name of label 356 psStringAppend(&labelName, "%sRun.label", stage); 357 pxAddLabelSearchArgs (config, where, "-stage_label", labelName, "=="); // define stageRun label 358 psFree(labelName); 359 360 ippStage stageNum = ippStringToStage(stage); 361 362 psString query = NULL; 363 switch (stageNum) { 364 case IPP_STAGE_RAW: 365 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Raw stage is not appropriate for a copied destreak"); 366 return false; 367 case IPP_STAGE_CHIP: 368 query = pxDataGet("magicdstool_definecopy_chip.sql"); 369 break; 370 case IPP_STAGE_WARP: 371 query = pxDataGet("magicdstool_definecopy_warp.sql"); 372 break; 373 case IPP_STAGE_CAMERA: 374 case IPP_STAGE_DIFF: 375 case IPP_STAGE_FAKE: 376 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "%s has not been coded.", stage); 377 return false; 378 case IPP_STAGE_STACK: 379 psError(PXTOOLS_ERR_CONFIG, true, "Stacks do not need to be destreaked"); 380 return false; 381 case IPP_STAGE_NONE: 382 psError(PXTOOLS_ERR_CONFIG, true, "%s is not a valid stage", stage); 383 return false; 384 default: 385 psError(PXTOOLS_ERR_PROG, true, "ippStageToString returned %d for invalid stage %s", 386 stageNum, stage); 387 return false; 388 } 389 390 if (!query) { 391 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 392 return false; 393 } 394 const char *rerun_flag = rerun ? "" : "\n"; // String to give query to activate (or not) rerun 395 396 if (stageNum != IPP_STAGE_DIFF) { 397 if (psListLength(where->list)) { 398 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 399 psStringAppend(&query, "\nAND %s", whereClause); 400 psFree(whereClause); 401 } 402 psFree(where); 403 404 // treat limit == 0 as "no limit" 405 if (limit) { 406 psString limitString = psDBGenerateLimitSQL(limit); 407 psStringAppend(&query, " %s", limitString); 408 psFree(limitString); 409 } 410 if (!p_psDBRunQueryF(config->dbh, query, set_label, rerun_flag)) { 411 psError(PS_ERR_UNKNOWN, false, "database error"); 412 psFree(query); 413 return false; 414 } 415 } else { 416 // diff stage query has two types bothways and !bothways 417 // so we need to send the rerun flag and the where data twice 418 psString whereString = psStringCopy(""); 419 if (psListLength(where->list)) { 420 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 421 psStringAppend(&whereString, "\nAND %s", whereClause); 422 psFree(whereClause); 423 } 424 psFree(where); 425 426 // treat limit == 0 as "no limit" 427 if (limit) { 428 psString limitString = psDBGenerateLimitSQL(limit); 429 psStringAppend(&query, " %s", limitString); 430 psFree(limitString); 431 } 432 433 if (!p_psDBRunQueryF(config->dbh, query, rerun_flag, whereString, rerun_flag, whereString)) { 434 psError(PS_ERR_UNKNOWN, false, "database error"); 435 psFree(whereString); 436 psFree(query); 437 return false; 438 } 439 psFree(whereString); 440 } 441 psFree(query); 442 443 psArray *output = p_psDBFetchResult(config->dbh); 444 if (!output) { 445 psErrorCode err = psErrorCodeLast(); 446 switch (err) { 447 case PS_ERR_DB_CLIENT: 448 psError(PXTOOLS_ERR_SYS, false, "database error"); 449 case PS_ERR_DB_SERVER: 450 psError(PXTOOLS_ERR_PROG, false, "database error"); 451 default: 452 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 453 } 454 455 return false; 456 } 457 if (!psArrayLength(output)) { 458 psTrace("magictool", PS_LOG_INFO, "no rows found"); 459 psFree(output); 460 return true; 461 } 462 463 // Parse the list of runs ready to be destreaked 464 465 if (!pretend && !psDBTransaction(config->dbh)) { 466 psError(PS_ERR_UNKNOWN, false, "database error"); 467 return false; 468 } 469 470 psArray *list = psArrayAllocEmpty(16); // List of runs, to print 471 for (long i = 0; i < psArrayLength(output); i++) { 472 psMetadata *row = output->data[i]; // Row of interest 473 psS64 stage_id = psMetadataLookupS64(NULL, row, "stage_id"); 474 psS64 exp_id = psMetadataLookupS64(NULL, row, "exp_id"); 475 psS64 magic_id = psMetadataLookupS64(NULL, row, "magic_id"); 476 psS64 inv_magic_id = psMetadataLookupS64(NULL, row, "inv_magic_id"); 477 psS64 cam_id = psMetadataLookupS64(NULL, row, "cam_id"); 478 psString magicRunLabel = psMetadataLookupStr(NULL, row, "label"); 479 psString magicRunDataGroup = psMetadataLookupStr(NULL, row, "data_group"); 480 481 psString outroot = NULL; 482 // set outroot to workdir/exp_id/stage for example /somewhere/424242/chip 483 psStringAppend(&outroot, "%s/%" PRId64 "/%s", workdir, exp_id, stage); 484 485 // create a new magicRun for this group 486 magicDSRunRow *run = magicDSRunRowAlloc( 487 0, // magic_ds_id 488 magic_id, 489 inv_magic_id, 490 "new", 491 stage, 492 stage_id, 493 cam_id, 494 set_label ? set_label : magicRunLabel, 495 set_data_group ? set_data_group : magicRunDataGroup, 496 outroot, 497 recoveryroot, 498 noreplace ? 0 :1, // re_place 499 0, // remove 500 0, // fault 501 note); // remove 502 503 psFree(outroot); 504 if (!run) { 505 psAbort("failed to alloc magicDSRun object"); 506 } 507 508 if (!pretend) { 509 if (!magicDSRunInsertObject(config->dbh, run)) { 510 psError(PS_ERR_UNKNOWN, false, "database error"); 511 psFree(run); 512 psFree(output); 513 psFree(list); 514 if (!psDBRollback(config->dbh)) { 515 psError(PS_ERR_UNKNOWN, false, "database error"); 516 } 517 return false; 518 } 519 psS64 magic_ds_id = psDBLastInsertID(config->dbh); // Assigned identifier 520 run->magic_ds_id = magic_ds_id; 521 } 522 523 psArrayAdd(list, list->n, run); 524 psFree(run); 525 } 526 527 if (!pretend && !psDBCommit(config->dbh)) { 528 psError(PS_ERR_UNKNOWN, false, "database error"); 529 return false; 530 } 531 psFree(output); 532 533 if (!magicDSRunPrintObjects(stdout, list, !simple)) { 534 psError(PS_ERR_UNKNOWN, false, "failed to print object"); 535 psFree(list); 536 return false; 537 } 538 539 psFree(list); 540 541 return true; 542 } 543 544 321 545 static bool updaterunMode(pxConfig *config) 322 546 { … … 326 550 PXOPT_LOOKUP_STR(state, config->args, "-set_state", true, false); 327 551 552 // optional 553 PXOPT_LOOKUP_STR(set_label, config->args, "-set_label", false, false); 554 PXOPT_LOOKUP_STR(set_data_group, config->args, "-set_data_group", false, false); 555 psString setString = NULL; 556 if (set_label) { 557 psStringAppend(&setString, ", label = '%s'", set_label); 558 } 559 if (set_data_group) { 560 psStringAppend(&setString, ", data_group = '%s'", set_data_group); 561 } 562 328 563 PXOPT_LOOKUP_S64(magic_ds_id, config->args, "-magic_ds_id", false, false); 329 564 if (magic_ds_id) { 330 565 331 return setmagicDSRunState(config, magic_ds_id, NULL, state);566 return setmagicDSRunState(config, magic_ds_id, setString, NULL, state); 332 567 333 568 } else if (!strcmp(state, "full")) { … … 341 576 PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "=="); 342 577 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 343 578 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 579 PXOPT_COPY_STR(config->args, where, "-data_group", "data_group", "LIKE"); 344 580 345 581 if (psListLength(where->list) < 2) { … … 353 589 psMetadataAddS32(where, PS_LIST_TAIL, "re_place", 0, ">", 0); 354 590 } 355 bool result = setmagicDSRunState(config, magic_ds_id, where, state);591 bool result = setmagicDSRunState(config, magic_ds_id, setString, where, state); 356 592 psFree(where); 357 593 … … 379 615 psString query = pxDataGet(sql_file); 380 616 if (!query) { 381 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement from %s", sql_file);617 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement from %s", sql_file); 382 618 psFree(sql_file); 383 619 return false; … … 445 681 { 446 682 // first query the magicDSRun to find the stage and the stage_id 447 psString query = "SELECT stage, stage_id from magicDSRun where magic_ds_id = %" PRId64;683 psString query = "SELECT stage, stage_id, magic_id from magicDSRun where magic_ds_id = %" PRId64; 448 684 449 685 if (!p_psDBRunQueryF(config->dbh, query, magic_ds_id)) { … … 472 708 psString stage= psMetadataLookupStr(NULL, row, "stage"); 473 709 psS64 stage_id = psMetadataLookupS64(NULL, row, "stage_id"); 710 psS64 magic_id = psMetadataLookupS64(NULL, row, "magic_id"); 474 711 475 712 ippStage stageNum = ippStringToStage(stage); … … 499 736 } 500 737 501 if (!p_psDBRunQueryF(config->dbh, query, magic_ ds_id, stage_id, component)) {738 if (!p_psDBRunQueryF(config->dbh, query, magic_id, stage_id, component)) { 502 739 psError(PS_ERR_UNKNOWN, false, "database error"); 503 740 return false; … … 518 755 { 519 756 // first query the magicDSRun to find the stage and the stage_id 520 psString query = "SELECT stage, stage_id from magicDSRun where magic_ds_id = %" PRId64;757 psString query = "SELECT stage, stage_id, magic_id from magicDSRun where magic_ds_id = %" PRId64; 521 758 522 759 if (!p_psDBRunQueryF(config->dbh, query, magic_ds_id)) { … … 545 782 psString stage = psMetadataLookupStr(NULL, row, "stage"); 546 783 psS64 stage_id = psMetadataLookupS64(NULL, row, "stage_id"); 784 psS64 magic_id = psMetadataLookupS64(NULL, row, "magic_id"); 547 785 548 786 ippStage stageNum = ippStringToStage(stage); … … 570 808 return false; 571 809 } 572 if (!p_psDBRunQueryF(config->dbh, query, magic_ ds_id, stage_id)) {810 if (!p_psDBRunQueryF(config->dbh, query, magic_id, stage_id)) { 573 811 psError(PS_ERR_UNKNOWN, false, "database error"); 574 812 return false; … … 598 836 PXOPT_LOOKUP_STR(recovery_path_base, config->args, "-recovery_path_base", false, false); 599 837 PXOPT_LOOKUP_BOOL(setmagicked, config->args, "-setmagicked", false); 838 PXOPT_LOOKUP_F32(streak_frac, config->args, "-streak_frac", false, false); 839 PXOPT_LOOKUP_F32(nondiff_frac, config->args, "-nondiff_frac", false, false); 840 PXOPT_LOOKUP_F32(run_time, config->args, "-run_time", false, false); 600 841 601 842 if (setmagicked && (fault != 0)) { … … 620 861 } 621 862 622 if (!magicDSFileInsert(config->dbh, magic_ds_id, component, backup_path_base, recovery_path_base, fault, "full")) { 863 if (!magicDSFileInsert(config->dbh, 864 magic_ds_id, 865 component, 866 backup_path_base, 867 recovery_path_base, 868 streak_frac, 869 nondiff_frac, 870 run_time, 871 fault, 872 "full" // data_state 873 )) { 623 874 // rollback 624 875 if (!psDBRollback(config->dbh)) { … … 651 902 psString query = pxDataGet("magicdstool_completed_runs.sql"); 652 903 if (!query) { 653 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");904 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 654 905 return false; 655 906 } … … 699 950 700 951 // set magicDSRun.state to 'full' 701 if (!setmagicDSRunState(config, magic_ds_id, NULL, "full")) {952 if (!setmagicDSRunState(config, magic_ds_id, NULL, NULL, "full")) { 702 953 psError(PS_ERR_UNKNOWN, false, "failed to change magicDSRun.state for magic_ds_id: %" PRId64, 703 954 magic_ds_id); … … 747 998 748 999 if (!p_psDBRunQuery(config->dbh, query)) { 1000 psError(PS_ERR_UNKNOWN, false, "failed to revert"); 1001 psFree(query); 1002 return false; 1003 } 1004 psFree(query); 1005 return true; 1006 } 1007 static bool clearstatefaultsMode(pxConfig *config) 1008 { 1009 PS_ASSERT_PTR_NON_NULL(config, false); 1010 1011 psMetadata *where = psMetadataAlloc(); 1012 // new state 1013 PXOPT_LOOKUP_STR(new_state, config->args, "-set_state", false, false); 1014 // old state (required) 1015 PXOPT_LOOKUP_STR(state, config->args, "-state", true, false); 1016 1017 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 1018 PXOPT_COPY_S64(config->args, where, "-magic_ds_id", "magicDSRun.magic_ds_id", "=="); 1019 PXOPT_COPY_S16(config->args, where, "-fault", "fault", "=="); 1020 pxAddLabelSearchArgs (config, where, "-label", "label", "=="); 1021 1022 psString query = pxDataGet("magicdstool_clearstatefaults.sql"); 1023 1024 if (psListLength(where->list)) { 1025 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1026 psStringAppend(&query, " WHERE %s", whereClause); 1027 psFree(whereClause); 1028 } else { 1029 psError(PS_ERR_UNKNOWN, true, "search arguments are required"); 1030 return false; 1031 } 1032 psFree(where); 1033 1034 if (!new_state) { 1035 if (!strcmp(state, "failed_revert")) { 1036 new_state = "new"; 1037 } else if (!strcmp(state, "failed_cleanup")) { 1038 new_state = "goto_cleaned"; 1039 } else { 1040 psError(PS_ERR_UNKNOWN, true, "unexpected value for state: %s", state); 1041 return false; 1042 } 1043 } 1044 if (!p_psDBRunQueryF(config->dbh, query, new_state)) { 749 1045 psError(PS_ERR_UNKNOWN, false, "failed to revert"); 750 1046 psFree(query); … … 809 1105 for (int i=0; i<psArrayLength(output); i++) { 810 1106 psMetadata *row = output->data[i]; 811 psS64 magic_ds_id = psMetadataLookupS64(NULL, row, "magic_ds_id"); 812 psString old_state = psMetadataLookupStr(NULL, row, "state"); 1107 psS64 magic_ds_id = psMetadataLookupS64(NULL, row, "magic_ds_id"); 1108 psString old_state = psMetadataLookupStr(NULL, row, "state"); 813 1109 psString new_state; 814 1110 if (!strcmp(old_state, "goto_censored")) { … … 838 1134 839 1135 psMetadata *where = psMetadataAlloc(); 1136 PXOPT_COPY_S64(config->args, where, "-magic_ds_id", "magicDSRun.magic_ds_id", "=="); 840 1137 PXOPT_COPY_STR(config->args, where, "-class_id", "warpSkyCellMap.class_id", "=="); 841 1138 PXOPT_COPY_STR(config->args, where, "-skycell_id", "warpSkyCellMap.skycell_id", "=="); … … 845 1142 psString query = pxDataGet("magicdstool_getskycells.sql"); 846 1143 if (!query) { 847 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 848 return false; 849 } 850 1144 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1145 return false; 1146 } 1147 1148 psString whereClause = NULL; 851 1149 if (psListLength(where->list)) { 852 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 853 psStringAppend(&query, " AND %s", whereClause); 854 psFree(whereClause); 1150 whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1151 psStringPrepend(&whereClause, "\n AND "); 855 1152 } 856 1153 psFree(where); 857 1154 858 if (!p_psDBRunQueryF(config->dbh, query, magic_ds_id)) {1155 if (!p_psDBRunQueryF(config->dbh, query, whereClause, whereClause)) { 859 1156 psError(PS_ERR_UNKNOWN, false, "database error"); 860 1157 psFree(query); … … 901 1198 if (!((strcmp(state, "new") == 0) || 902 1199 (strcmp(state, "full") == 0) || 1200 (strcmp(state, "drop") == 0) || 1201 (strcmp(state, "failed_revert") == 0) || 1202 (strcmp(state, "failed_cleanup") == 0) || 903 1203 (strcmp(state, "restored") == 0) || 904 1204 (strcmp(state, "censored") == 0) || … … 914 1214 } 915 1215 916 static bool setmagicDSRunState(pxConfig *config, psS64 magic_ds_id, ps Metadata *where, const char *state)1216 static bool setmagicDSRunState(pxConfig *config, psS64 magic_ds_id, psString extraSetStr, psMetadata *where, const char *state) 917 1217 { 918 1218 PS_ASSERT_PTR_NON_NULL(state, false); … … 924 1224 } 925 1225 926 psString query = psStringCopy("UPDATE magicDSRun SET state = '%s'"); 1226 psString query = NULL; 1227 psStringAppend(&query, "UPDATE magicDSRun SET state = '%s' %s\n", state, extraSetStr ? extraSetStr : ""); 927 1228 if (magic_ds_id) { 928 1229 psStringAppend(&query, " WHERE magic_ds_id = %" PRId64, magic_ds_id); … … 932 1233 psFree(whereClause); 933 1234 } else { 934 psError(PS_ERR_UNKNOWN, true, "search arugments are required"); 935 return false; 936 } 937 938 if (!p_psDBRunQueryF(config->dbh, query, state)) { 1235 psError(PS_ERR_UNKNOWN, true, "search arguments are required"); 1236 return false; 1237 } 1238 1239 if (!strcmp(state, "goto_cleaned")) { 1240 // Don't set state back to goto_cleaned if it is already cleaned 1241 psStringAppend(&query, " AND (magicDSRun.state != 'cleaned')"); 1242 1243 // don't clean up magicDSRun's where stage is camera 1244 psStringAppend(&query, " AND (magicDSRun.stage != 'camera')"); 1245 } 1246 1247 if (!p_psDBRunQuery(config->dbh, query)) { 939 1248 psError(PS_ERR_UNKNOWN, false, 940 1249 "failed to change state for magic_id %" PRId64, magic_ds_id); … … 960 1269 psString query = pxDataGet("magicdstool_toremove.sql"); 961 1270 if (!query) { 962 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1271 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 963 1272 return false; 964 1273 } … … 1038 1347 psString query = pxDataGet(sql_file); 1039 1348 if (!query) { 1040 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement from %s", sql_file);1349 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement from %s", sql_file); 1041 1350 psFree(sql_file); 1042 1351 return false; … … 1106 1415 psMetadata *where = psMetadataAlloc(); 1107 1416 1108 PXOPT_COPY_S 64(config->args, where, "-stage", "stage", "==");1417 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 1109 1418 PXOPT_COPY_S64(config->args, where, "-magic_ds_id", "magic_ds_id", "=="); 1110 1419 PXOPT_COPY_S64(config->args, where, "-magic_id", "magic_id", "=="); … … 1116 1425 psString query = pxDataGet("magicdstool_tocleanup.sql"); 1117 1426 if (!query) { 1118 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1427 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1119 1428 return false; 1120 1429 } -
branches/tap_branches/ippTools/src/magicdstool.h
r25835 r27838 26 26 MAGICDSTOOL_MODE_NONE = 0x0, 27 27 MAGICDSTOOL_MODE_DEFINEBYQUERY, 28 MAGICDSTOOL_MODE_DEFINECOPY, 28 29 MAGICDSTOOL_MODE_UPDATERUN, 29 30 MAGICDSTOOL_MODE_TODESTREAK, … … 31 32 MAGICDSTOOL_MODE_ADVANCERUN, 32 33 MAGICDSTOOL_MODE_REVERTDESTREAKEDFILE, 34 MAGICDSTOOL_MODE_CLEARSTATEFAULTS, 33 35 MAGICDSTOOL_MODE_GETSKYCELLS, 34 36 MAGICDSTOOL_MODE_TOREMOVE, -
branches/tap_branches/ippTools/src/magicdstoolConfig.c
r25843 r27838 40 40 config->modules = pmConfigRead(&argc, argv, NULL); 41 41 if (!config->modules) { 42 psError( PS_ERR_UNKNOWN, false, "Can't find site configuration");42 psError(psErrorCodeLast(), false, "Can't find site configuration"); 43 43 psFree(config); 44 44 return NULL; … … 66 66 psMetadataAddS32(definebyqueryArgs, PS_LIST_TAIL, "-streaks_max", 0, "maximum number of streaks", 0); 67 67 68 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-rerun", 0, "queue a new run even if one a rleady exists", false);69 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "- dry_run", 0, "don't queue runs just display what would be queued", false);68 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-rerun", 0, "queue a new run even if one already exists", false); 69 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend", 0, "don't queue runs just display what would be queued", false); 70 70 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 71 71 psMetadataAddU64(definebyqueryArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 72 72 73 // -definecopy 74 psMetadata *definecopyArgs = psMetadataAlloc(); 75 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-stage", 0, "define stage (required)", NULL); 76 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 77 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-recoveryroot", 0, "define recovery directory", NULL); 78 psMetadataAddBool(definecopyArgs, PS_LIST_TAIL, "-noreplace", 0, "do not replace input files with the destreaked versions", false); 79 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_label", 0, "define label", NULL); 80 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data_group", NULL); 81 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 82 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-stage_label", PS_META_DUPLICATE_OK, "search by stageRun.label", NULL); 83 psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-magic_label", PS_META_DUPLICATE_OK, "search by magicRun.label", NULL); 84 psMetadataAddS64(definecopyArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 85 psMetadataAddS64(definecopyArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip_id", 0); 86 psMetadataAddS64(definecopyArgs, PS_LIST_TAIL, "-cam_id", 0, "search by cam_id", 0); 87 psMetadataAddS64(definecopyArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warp_id", 0); 88 psMetadataAddS64(definecopyArgs, PS_LIST_TAIL, "-diff_id", 0, "search by diff_id", 0); 89 psMetadataAddS64(definecopyArgs, PS_LIST_TAIL, "-magic_id", 0, "search by magic_id", 0); 90 psMetadataAddS32(definecopyArgs, PS_LIST_TAIL, "-streaks_max", 0, "maximum number of streaks", 0); 91 psMetadataAddBool(definecopyArgs, PS_LIST_TAIL, "-rerun", 0, "queue a new run even if one already exists", false); 92 psMetadataAddBool(definecopyArgs, PS_LIST_TAIL, "-pretend", 0, "don't queue runs just display what would be queued", false); 93 psMetadataAddBool(definecopyArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 94 psMetadataAddU64(definecopyArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 95 73 96 // -updaterun 74 97 psMetadata *updaterunArgs = psMetadataAlloc(); 75 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "set state (required)", NULL); 98 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "set state", NULL); 99 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_label", 0, "set label", NULL); 100 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_data_group", 0, "set data_group", NULL); 76 101 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "define magictool ID", 0); 77 102 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-stage", 0, "define stage", NULL); 103 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "define state", NULL); 78 104 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-stage_id", 0, "define stage_id", 0); 79 105 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 106 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-data_group", 0, "data_group (LIKE) comparision", NULL); 80 107 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-noreplace", 0, "only update runs with replace not set", false); 81 108 … … 102 129 psMetadataAddStr(adddestreakedfileArgs, PS_LIST_TAIL, "-recovery_path_base", 0, "define recovery pixels URI", NULL); 103 130 psMetadataAddBool(adddestreakedfileArgs, PS_LIST_TAIL, "-setmagicked", 0, "update the magicked state of the file", false); 131 psMetadataAddF32(adddestreakedfileArgs, PS_LIST_TAIL, "-streak_frac", 0, "set fraction of pixels masked by streaks", 0); 132 psMetadataAddF32(adddestreakedfileArgs, PS_LIST_TAIL, "-nondiff_frac", 0, "set fraction of pixels masked because nondiffed", 0); 133 psMetadataAddF32(adddestreakedfileArgs, PS_LIST_TAIL, "-run_time", 0, "set the streaksremove run time for component ", 0); 104 134 psMetadataAddS16(adddestreakedfileArgs, PS_LIST_TAIL, "-fault", 0, "set fault code", 0); 105 135 … … 111 141 psMetadataAddBool(revertdestreakedfileArgs, PS_LIST_TAIL, "-i_am_sure", 0, "confirm that you know what you are doing", false); 112 142 psMetadataAddStr(revertdestreakedfileArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label", NULL); 143 144 // -clearstatefaults 145 psMetadata *clearstatefaultsArgs = psMetadataAlloc(); 146 psMetadataAddStr(clearstatefaultsArgs, PS_LIST_TAIL, "-set_state", 0, "new value for state", NULL); 147 psMetadataAddStr(clearstatefaultsArgs, PS_LIST_TAIL, "-state", 0, "search by state (required)", NULL); 148 psMetadataAddS64(clearstatefaultsArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "search by magictool de-streak ID", 0); 149 psMetadataAddS16(clearstatefaultsArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 150 psMetadataAddStr(clearstatefaultsArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by label", NULL); 113 151 114 152 // -getskycells … … 163 201 PXOPT_ADD_MODE("-definebyquery", "create magic de-streak runs from magic runs", 164 202 MAGICDSTOOL_MODE_DEFINEBYQUERY, definebyqueryArgs); 203 PXOPT_ADD_MODE("-definecopy", "create magic de-streak runs from magic runs for different path", 204 MAGICDSTOOL_MODE_DEFINECOPY, definecopyArgs); 165 205 PXOPT_ADD_MODE("-updaterun", "update state of magic de-streak run", 166 206 MAGICDSTOOL_MODE_UPDATERUN, updaterunArgs); … … 173 213 PXOPT_ADD_MODE("-revertdestreakedfile", " revert a faulted de-streaked file", 174 214 MAGICDSTOOL_MODE_REVERTDESTREAKEDFILE, revertdestreakedfileArgs); 215 PXOPT_ADD_MODE("-clearstatefaults", " clear magicDSRuns in fault state", 216 MAGICDSTOOL_MODE_CLEARSTATEFAULTS, clearstatefaultsArgs); 175 217 PXOPT_ADD_MODE("-getskycells", "get skycell files ", 176 218 MAGICDSTOOL_MODE_GETSKYCELLS, getskycellsArgs); -
branches/tap_branches/ippTools/src/magictool.c
r25844 r27838 114 114 // Required 115 115 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", false, false); 116 PXOPT_LOOKUP_STR(label, config->args, "-label", true, false); 116 117 117 118 // Optional 118 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false);119 119 PXOPT_LOOKUP_STR(data_group, config->args, "-data_group", false, false); 120 120 PXOPT_LOOKUP_STR(note, config->args, "-note", false, false); … … 135 135 psString query = pxDataGet("magictool_definebyquery_select.sql"); 136 136 if (!query) { 137 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");137 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 138 138 return false; 139 139 } … … 151 151 // what if no skycells for the diff run completed? 152 152 153 if (!rerun) { 154 psStringAppend(&queryWhereStr, "\n%s magic_id IS NULL", queryWhereStr ? "AND" : "WHERE"); 153 psStringAppend(&queryWhereStr, "\n%s magic_id IS NULL", queryWhereStr ? "AND" : "WHERE"); 154 psString rerunWhereStr = NULL; 155 if (rerun) { 156 psStringAppend(&rerunWhereStr, "\n WHERE magicRun.label = '%s'", label); 155 157 } 156 158 … … 176 178 queryWhereStr = psStringCopy(""); 177 179 } 178 179 if (!p_psDBRunQueryF(config->dbh, query, diffWhereStr, diffWhereStr, queryWhereStr)) { 180 if (!rerunWhereStr) { 181 rerunWhereStr = psStringCopy(""); 182 } 183 184 if (!p_psDBRunQueryF(config->dbh, query, diffWhereStr, diffWhereStr, rerunWhereStr, queryWhereStr)) { 180 185 psError(PS_ERR_UNKNOWN, false, "database error"); 181 186 psFree(diffWhereStr); 182 187 psFree(queryWhereStr); 188 psFree(rerunWhereStr); 183 189 psFree(query); 184 190 return false; … … 186 192 psFree(diffWhereStr); 187 193 psFree(queryWhereStr); 194 psFree(rerunWhereStr); 188 195 psFree(query); 189 196 } … … 427 434 psString query = pxDataGet("magictool_inputskyfile.sql"); 428 435 if (!query) { 429 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");436 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 430 437 return false; 431 438 } … … 500 507 psString query = pxDataGet("magictool_totree.sql"); 501 508 if (!query) { 502 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");509 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 503 510 return false; 504 511 } … … 573 580 574 581 if (fault > 0) { 575 char *query = "UPDATE magicRun SET fault = %d , state = 'full'WHERE magic_id = %" PRId64;582 char *query = "UPDATE magicRun SET fault = %d WHERE magic_id = %" PRId64; 576 583 if (!p_psDBRunQueryF(config->dbh, query, fault, magic_id)) { 577 584 psError(PS_ERR_UNKNOWN, false, … … 612 619 return false; 613 620 } 621 psS32 numUpdated = psDBAffectedRows(config->dbh); 622 psLogMsg("magictool", PS_LOG_INFO, "Reverted %d magic runs", numUpdated); 623 614 624 return true; 615 625 } … … 635 645 psString query = pxDataGet("magictool_inputs.sql"); 636 646 if (!query) { 637 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");647 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 638 648 return false; 639 649 } … … 805 815 psString query = pxDataGet("magictool_toprocess_inputs.sql"); 806 816 if (!query) { 807 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");817 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 808 818 return false; 809 819 } … … 867 877 868 878 // look for tree nodes that need to be processed 879 880 // first find incomplete magicRuns 869 881 query = pxDataGet("magictool_toprocess_runs.sql"); 870 882 if (!query) { 871 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 872 return false; 873 } 874 883 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 884 return false; 885 } 886 887 // we limit the query even though it is cheap (only magic_id is selected) 888 889 // XXX: if the first 1000 unfinished magicRuns have no ready nodes 890 // that haven't faulted, later runs won't get returned even though 891 // they have work to do. When we used a limit of 100 we actually ran 892 // into this problem. Since we're using labels a limit of 1000 will 893 // probably be ok. 875 894 { 876 psString limitString = psDBGenerateLimitSQL( 100 );895 psString limitString = psDBGenerateLimitSQL( 1000 ); 877 896 psStringAppend(&query, " %s", limitString); 878 897 psFree(limitString); … … 910 929 query = pxDataGet("magictool_toprocess_tree.sql"); 911 930 if (!query) { 912 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");931 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 913 932 return false; 914 933 } … … 923 942 psAbort("failed to lookup value for magic_id column"); 924 943 } 925 944 926 945 whereString = NULL; 927 946 psStringAppend(&whereString, "\nAND (magic_id = %" PRId64 ")", magic_id); … … 1041 1060 PXOPT_COPY_S64(config->args, where, "-magic_id", "magic_id", "=="); 1042 1061 PXOPT_COPY_STR(config->args, where, "-node", "node", "=="); 1043 PXOPT_COPY_STR(config->args, where, "-label", "label", "==");1044 1062 PXOPT_COPY_S16(config->args, where, "-fault", "magicNodeResult.fault", "=="); 1063 pxAddLabelSearchArgs (config, where, "-label", "magicRun.label", "=="); 1045 1064 1046 1065 psString query = pxDataGet("magictool_revertnode.sql"); 1047 1066 if (!query) { 1048 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1067 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1049 1068 return false; 1050 1069 } … … 1067 1086 1068 1087 psS32 numUpdated = psDBAffectedRows(config->dbh); 1069 psLogMsg("magictool", PS_LOG_INFO, " Updated %d magic nodes", numUpdated);1088 psLogMsg("magictool", PS_LOG_INFO, "Reverted %d magic nodes", numUpdated); 1070 1089 1071 1090 return true; … … 1083 1102 psString query = pxDataGet("magictool_tomask.sql"); 1084 1103 if (!query) { 1085 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1104 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1086 1105 return false; 1087 1106 } … … 1171 1190 psString query = pxDataGet("magictool_addmask.sql"); 1172 1191 if (!query) { 1173 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1192 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1174 1193 if (!psDBRollback(config->dbh)) { 1175 1194 psError(PS_ERR_UNKNOWN, false, "database error"); … … 1278 1297 psString query = pxDataGet("magictool_mask.sql"); 1279 1298 if (!query) { 1280 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1299 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1281 1300 return false; 1282 1301 } -
branches/tap_branches/ippTools/src/magictoolConfig.c
r25545 r27838 40 40 config->modules = pmConfigRead(&argc, argv, NULL); 41 41 if (!config->modules) { 42 psError( PS_ERR_UNKNOWN, false, "Can't find site configuration");42 psError(psErrorCodeLast(), false, "Can't find site configuration"); 43 43 psFree(config); 44 44 return NULL; … … 50 50 psMetadata *definebyqueryArgs = psMetadataAlloc(); 51 51 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 52 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label", 0, "define label ", NULL);52 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label", 0, "define label (required)", NULL); 53 53 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-dvodb", 0, "define dvodb", NULL); 54 54 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 55 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-data_group", 0, "define data group", NULL); 56 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-note", 0, "define note", NULL); 55 57 psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-diff_id", 0, "search diff_id", 0); 56 58 psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-exp_id", 0, "search exp_id", 0); … … 135 137 psMetadataAddS64(revertnodeArgs, PS_LIST_TAIL, "-magic_id", 0, "search by magictool ID", 0); 136 138 psMetadataAddStr(revertnodeArgs, PS_LIST_TAIL, "-node", 0, "search by node name", NULL); 137 psMetadataAddStr(revertnodeArgs, PS_LIST_TAIL, "-label", 0, "search by label", NULL);139 psMetadataAddStr(revertnodeArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by label", NULL); 138 140 psMetadataAddS16(revertnodeArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 139 141 -
branches/tap_branches/ippTools/src/pstamptool.c
r25793 r27838 51 51 static bool pendingdependentMode(pxConfig *config); 52 52 static bool updatedependentMode(pxConfig *config); 53 static bool revertdependentMode(pxConfig *config); 53 54 54 55 # define MODECASE(caseName, func) \ … … 91 92 MODECASE(PSTAMPTOOL_MODE_PENDINGDEPENDENT, pendingdependentMode); 92 93 MODECASE(PSTAMPTOOL_MODE_UPDATEDEPENDENT, updatedependentMode); 94 MODECASE(PSTAMPTOOL_MODE_REVERTDEPENDENT, revertdependentMode); 93 95 default: 94 96 psAbort("invalid option (this should not happen)"); … … 116 118 PS_ASSERT_PTR_NON_NULL(config, false); 117 119 118 PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false); 119 PXOPT_LOOKUP_STR(outProduct, config->args, "-out_product", true, false); 120 PXOPT_LOOKUP_STR(lastFileset, config->args, "-last_fileset", false, false); 121 PXOPT_LOOKUP_STR(state, config->args, "-state", false, false); 120 PXOPT_LOOKUP_STR(uri, config->args, "-set_uri", true, false); 121 PXOPT_LOOKUP_STR(outProduct, config->args, "-set_out_product", true, false); 122 PXOPT_LOOKUP_STR(lastFileset, config->args, "-set_last_fileset", false, false); 123 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 124 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 125 PXOPT_LOOKUP_S32(pollInterval, config->args, "-set_poll_interval",false, false); 122 126 123 127 if (!pstampDataStoreInsert(config->dbh, … … 125 129 state, 126 130 lastFileset, 131 NULL, // timestamp 132 label, // label 127 133 outProduct, 128 uri 134 uri, 135 pollInterval 129 136 )) { 130 137 psError(PS_ERR_UNKNOWN, false, "database error"); … … 142 149 PXOPT_COPY_S64(config->args, where, "-ds_id", "ds_id", "=="); 143 150 151 PXOPT_LOOKUP_BOOL(ready, config->args, "-ready", false); 144 152 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 145 153 146 154 psString query = pxDataGet("pstamptool_datastore.sql"); 147 155 if (!query) { 148 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");156 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 149 157 return false; 150 158 } … … 156 164 } 157 165 psFree(where); 166 if (ready) { 167 psStringAppend(&query, " %s", "\nAND TIMESTAMPDIFF(SECOND, timestamp, now()) > pollInterval"); 168 } 158 169 159 170 if (!p_psDBRunQuery(config->dbh, query)) { … … 189 200 190 201 PXOPT_LOOKUP_S64(ds_id, config->args, "-ds_id", true, false); 191 PXOPT_LOOKUP_STR(lastFileset, config->args, "-last_fileset", false, false); 192 PXOPT_LOOKUP_STR(state, config->args, "-state", false, false); 193 194 if (!state && !lastFileset) { 195 psError(PS_ERR_UNKNOWN, true, "at least one of -last_fileset or -state is required"); 196 return false; 197 } 198 199 char *query = psStringCopy ("UPDATE pstampDataStore SET"); 200 bool needComma = false; 201 202 PXOPT_LOOKUP_STR(lastFileset, config->args, "-set_last_fileset", false, false); 203 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 204 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 205 PXOPT_LOOKUP_S32(pollInterval, config->args, "-set_poll_interval", false, false); 206 PXOPT_LOOKUP_BOOL(update_timestamp, config->args, "-update_timestamp", false); 207 208 if (!state && !lastFileset && !pollInterval && !update_timestamp && !label) { 209 psError(PS_ERR_UNKNOWN, true, "at least one of -last_fileset or -set_state is required"); 210 return false; 211 } 212 213 char *query = psStringCopy ("UPDATE pstampDataStore SET timestamp = CURRENT_TIMESTAMP() "); 214 202 215 if (lastFileset) { 203 psStringAppend(&query, " lastFileset = '%s'", lastFileset); 204 needComma = true; 216 psStringAppend(&query, " , lastFileset = '%s'", lastFileset); 205 217 } 206 218 207 219 if (state) { 208 psStringAppend(&query, "%s state = '%s'", needComma ? "," : " ", state); 209 needComma = true; // be ready in case we add another field 210 } 211 220 psStringAppend(&query, ", state = '%s'", state); 221 } 222 223 if (label) { 224 psStringAppend(&query, ", label = '%s'", label); 225 } 226 227 if (pollInterval) { 228 psStringAppend(&query, ", pollInterval = %d", pollInterval); 229 } 230 212 231 psStringAppend(&query, " WHERE ds_id = %" PRId64, ds_id); 213 232 … … 220 239 psU64 affected = psDBAffectedRows(config->dbh); 221 240 if (affected != 1) { 222 psError(PS_ERR_UNKNOWN, false, "should have affected one row but %" 241 psError(PS_ERR_UNKNOWN, false, "should have affected one row but %" 223 242 PRIu64 " rows were modified", affected); 224 243 return false; … … 245 264 label, 246 265 NULL, // outProduct 247 uri, 248 0 // fault 266 uri, 267 0 // fault 249 268 )) { 250 269 psError(PS_ERR_UNKNOWN, false, "failed to insert request"); … … 265 284 psMetadata *where = psMetadataAlloc(); 266 285 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 286 pxAddLabelSearchArgs(config, where, "-label", "label", "LIKE"); 267 287 268 288 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); … … 271 291 psString query = pxDataGet("pstamptool_pendingreq.sql"); 272 292 if (!query) { 273 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");293 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 274 294 return false; 275 295 } … … 342 362 psFree(whereClause); 343 363 psFree(where); 344 364 345 365 // treat limit == 0 as "no limit" 346 366 if (limit) { … … 365 385 psTrace("pstamptool", PS_LOG_INFO, "request not found"); 366 386 // This causes main to exit with PS_EXIT_DATA_ERROR which the script is looking for 367 psError(PXTOOLS_ERR_ DATA, true, "request not found");387 psError(PXTOOLS_ERR_CONFIG, true, "request not found"); 368 388 psFree(output); 369 389 // we return false so that the caller can determine that a request does not exist … … 387 407 PS_ASSERT_PTR_NON_NULL(config, false); 388 408 409 psMetadata *where = psMetadataAlloc(); 410 pxAddLabelSearchArgs(config, where, "-label", "label", "LIKE"); 411 389 412 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 390 413 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 391 414 392 415 psString query = pxDataGet("pstamptool_completedreq.sql"); 416 417 if (psListLength(where->list)) { 418 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 419 psStringAppend(&query, " AND %s", whereClause); 420 psFree(whereClause); 421 } 422 psFree(where); 393 423 394 424 // treat limit == 0 as "no limit" … … 436 466 PXOPT_LOOKUP_STR(state, config->args, "-state", false, false); 437 467 PXOPT_LOOKUP_STR(outProduct, config->args, "-outProduct", false, false); 438 PXOPT_LOOKUP_S TR(fault,config->args, "-fault", false, false);439 PXOPT_LOOKUP_STR(uri, config->args, "-uri", false, false);440 PXOPT_LOOKUP_STR(name, config->args, "-name", false, false);468 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 469 PXOPT_LOOKUP_STR(uri, config->args, "-uri", false, false); 470 PXOPT_LOOKUP_STR(name, config->args, "-name", false, false); 441 471 PXOPT_LOOKUP_STR(reqType, config->args, "-reqType", false, false); 442 472 … … 454 484 } 455 485 if (fault) { 456 psStringAppend(&query, "%c fault = % s", c, fault);486 psStringAppend(&query, "%c fault = %d", c, fault); 457 487 c = ','; 458 488 } … … 485 515 // note zero is not an error 486 516 if (affected > 1) { 487 psError(PS_ERR_UNKNOWN, false, "should have affected one row but %" 517 psError(PS_ERR_UNKNOWN, false, "should have affected one row but %" 488 518 PRIu64 " rows were modified", affected); 489 519 return false; … … 500 530 501 531 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 502 PXOPT_COPY_S64(config->args, where, "-fault", " req_id", "==");532 PXOPT_COPY_S64(config->args, where, "-fault", "fault", "=="); 503 533 PXOPT_COPY_STR(config->args, where, "-state", "pstampRequest.state", "=="); 534 pxAddLabelSearchArgs(config, where, "-label", "pstampRequest.label", "LIKE"); 504 535 505 536 if (!psListLength(where->list)) { 506 537 psFree(where); 507 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");538 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 508 539 return false; 509 540 } … … 525 556 query = pxDataGet("pstamptool_revertreq.sql"); 526 557 psStringAppend(&query, " AND %s", whereClause); 527 558 528 559 psFree(whereClause); 529 560 … … 555 586 // unless the job is being inserted with stop state require outputBase 556 587 if (strcmp(stateString, "stop") && !outputBase) { 557 psError(PS_ERR_UNKNOWN, true, "-outputBase is required");558 return false;588 psError(PS_ERR_UNKNOWN, true, "-outputBase is required"); 589 return false; 559 590 } 560 591 561 592 // default value for job_type is defined in pstamptoolConfig.c 562 593 if (!strcmp(job_type, "get_image") || !strcmp(job_type, "detect_query") || !strcmp(job_type, "none")) { 563 stampJob = false;594 stampJob = false; 564 595 } else if (!strcmp(job_type, "stamp")) { 565 stampJob = true;596 stampJob = true; 566 597 } else { 567 psError(PS_ERR_UNKNOWN, false, "unknown value for -job_type: %s", job_type);568 return false;569 } 570 if (!pstampJobInsert(config->dbh, 598 psError(PS_ERR_UNKNOWN, false, "unknown value for -job_type: %s", job_type); 599 return false; 600 } 601 if (!pstampJobInsert(config->dbh, 571 602 0, // job_id 572 603 req_id, 573 rownum, 574 stateString, 575 job_type, 576 fault, 577 exp_id, 604 rownum, 605 stateString, 606 job_type, 607 fault, 608 exp_id, 578 609 outputBase, 579 610 options, … … 586 617 psU64 affected = psDBAffectedRows(config->dbh); 587 618 if (affected != 1) { 588 psError(PS_ERR_UNKNOWN, false, 619 psError(PS_ERR_UNKNOWN, false, 589 620 "should have affected one row but %" PRIu64 " rows were modified", 590 621 affected); … … 617 648 psString query = pxDataGet("pstamptool_listjob.sql"); 618 649 if (!query) { 619 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");650 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 620 651 return false; 621 652 } … … 674 705 PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "=="); 675 706 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 707 pxAddLabelSearchArgs(config, where, "-label", "label", "LIKE"); 708 676 709 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 677 710 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 679 712 psString query = pxDataGet("pstamptool_pendingjob.sql"); 680 713 if (!query) { 681 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");714 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 682 715 return false; 683 716 } … … 685 718 // use psDBGenerateWhereSQL because the SQL yields an intermediate table 686 719 if (psListLength(where->list)) { 687 psString whereClause = psDBGenerateWhereConditionSQL(where, "pstampJob");720 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 688 721 psStringAppend(&query, " AND %s", whereClause); 689 722 psFree(whereClause); … … 732 765 PS_ASSERT_PTR_NON_NULL(config, false); 733 766 734 PXOPT_LOOKUP_S64(job_id, config->args, "-job_id", true, false); 767 PXOPT_LOOKUP_S64(job_id, config->args, "-job_id", false, false); 768 PXOPT_LOOKUP_S64(dep_id, config->args, "-dep_id", false, false); 769 770 if (!job_id && !dep_id) { 771 psError(PS_ERR_UNKNOWN, true, "at least -job_id or -dep_id is required"); 772 return false; 773 } 735 774 PXOPT_LOOKUP_STR(state, config->args, "-state", true, false); 736 PXOPT_LOOKUP_STR(fault, config->args, "-fault", false, false); 775 PXOPT_LOOKUP_S32(fault, config->args, "-fault", false, false); 776 777 psMetadata *where = psMetadataAlloc(); 778 779 PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "=="); 780 PXOPT_COPY_S64(config->args, where, "-dep_id", "dep_id", "=="); 737 781 738 782 psString faultStr = NULL; … … 740 784 faultStr = psStringCopy(""); 741 785 } else { 742 psStringAppend(&faultStr, ", fault = '%s'", fault); 743 } 744 745 char *query ="UPDATE pstampJob" 746 " SET state = '%s' %s" 747 " WHERE job_id = %" PRId64; 748 749 if (!p_psDBRunQueryF(config->dbh, query, state, faultStr, job_id)) { 786 psStringAppend(&faultStr, "\n, pstampJob.fault = %d", fault); 787 } 788 789 psString query = pxDataGet("pstamptool_updatejob.sql"); 790 791 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 792 psStringAppend(&query, " WHERE %s", whereClause); 793 psFree(whereClause); 794 psFree(where); 795 796 if (!p_psDBRunQueryF(config->dbh, query, state, faultStr)) { 750 797 psError(PS_ERR_UNKNOWN, false, "database error"); 751 798 psFree(query); … … 753 800 } 754 801 psFree(faultStr); 802 psFree(query); 755 803 756 804 psU64 affected = psDBAffectedRows(config->dbh); 757 if (affected != 1) { 758 psError(PS_ERR_UNKNOWN, false, "should have affected one row but %" 759 PRIu64 " rows were modified", affected); 760 return false; 761 } 805 psLogMsg("pstamptool", PS_LOG_INFO, "Updated %" PRIu64 " pstampJobs", affected); 762 806 763 807 return true; … … 772 816 PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "=="); 773 817 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 774 PXOPT_COPY_S64(config->args, where, "-fault", " fault", "==");818 PXOPT_COPY_S64(config->args, where, "-fault", "pstampJob.fault", "=="); 775 819 PXOPT_COPY_S64(config->args, where, "-req_id_min", "req_id", ">="); 820 pxAddLabelSearchArgs(config, where, "-label", "pstampRequest.label", "LIKE"); 821 776 822 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 777 823 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 824 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 825 826 // By default only revert faults < 10 which are our "ipp exit codes" 827 // codes larger than that are the pstamp request interface. 828 // Don't fault those unless -fault waa provided 829 psString faultClause = ""; 830 if (!fault) { 831 faultClause = " \nAND (pstampJob.fault < 10)"; 832 } 778 833 779 834 psString query = pxDataGet("pstamptool_revertjob.sql"); 780 835 if (!psListLength(where->list) && !all) { 781 836 psFree(where); 782 psError(PXTOOLS_ERR_ DATA, false, "search parameters or -all are required");837 psError(PXTOOLS_ERR_CONFIG, false, "search parameters or -all are required"); 783 838 return false; 784 839 } 785 840 if (psListLength(where->list)) { 786 psString whereClause = psDBGenerateWhereConditionSQL(where, "pstampJob");841 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 787 842 psStringAppend(&query, " AND %s", whereClause); 788 843 psFree(whereClause); 789 844 } 790 845 psFree(where); 791 792 if (!p_psDBRunQuery (config->dbh, query)) {846 847 if (!p_psDBRunQueryF(config->dbh, query, faultClause)) { 793 848 psError(PS_ERR_UNKNOWN, false, "database error"); 794 849 return false; … … 837 892 psString query = pxDataGet("pstamptool_project.sql"); 838 893 if (!query) { 839 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");894 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 840 895 return false; 841 896 } … … 883 938 884 939 char *query = psStringCopy ("UPDATE pstampProject SET"); 885 940 886 941 psStringAppend(&query, " state = '%s'", state); 887 942 888 943 psStringAppend(&query, " WHERE proj_id = %" PRId64, proj_id); 889 944 … … 896 951 psU64 affected = psDBAffectedRows(config->dbh); 897 952 if (affected != 1) { 898 psError(PS_ERR_UNKNOWN, false, "should have affected one row but %" 953 psError(PS_ERR_UNKNOWN, false, "should have affected one row but %" 899 954 PRIu64 " rows were modified", affected); 900 955 return false; … … 910 965 PXOPT_LOOKUP_STR(stage, config->args, "-stage", true, false); 911 966 PXOPT_LOOKUP_S64(stage_id, config->args, "-stage_id", true, false); 967 PXOPT_LOOKUP_STR(component, config->args, "-component", true, false); 912 968 PXOPT_LOOKUP_STR(imagedb, config->args, "-imagedb", true, false); 913 PXOPT_LOOKUP_STR(rlabel, config->args, "-rlabel", false, false);914 PXOPT_LOOKUP_BOOL(n o_magic, config->args, "-no_magic", false);969 PXOPT_LOOKUP_STR(rlabel, config->args, "-rlabel", true, false); 970 PXOPT_LOOKUP_BOOL(need_magic, config->args, "-need_magic", false); 915 971 PXOPT_LOOKUP_BOOL(no_create, config->args, "-no_create", false); 916 972 917 psString query = pxDataGet("pstamptool_pendingdependent.sql"); 973 psMetadata *where = psMetadataAlloc(); 974 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 975 PXOPT_COPY_STR(config->args, where, "-imagedb", "imagedb", "=="); 976 PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "=="); 977 PXOPT_COPY_STR(config->args, where, "-component", "component", "=="); 978 979 // start a transaction eraly so it will contain any row level locks 980 if (!psDBTransaction(config->dbh)) { 981 psError(PS_ERR_UNKNOWN, false, "database error"); 982 return false; 983 } 984 985 psString query = pxDataGet("pstamptool_getdependent.sql"); 918 986 if (!query) { 919 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 920 return false; 921 } 987 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 988 return false; 989 } 990 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 991 if (!no_create) { 992 // This will lock the row until the transaction is committed 993 psStringAppend(&query, " AND %s FOR UPDATE", whereClause); 994 } else { 995 psStringAppend(&query, " AND %s", whereClause); 996 } 997 psFree(whereClause); 998 psFree(where); 999 922 1000 if (!p_psDBRunQuery(config->dbh, query)) { 923 1001 psError(PS_ERR_UNKNOWN, false, "database error"); … … 937 1015 if (!dep_id) { 938 1016 psError(PS_ERR_UNKNOWN, false, "database error"); 1017 psFree(output); 939 1018 return false; 940 1019 } 941 1020 printf("%" PRId64 "\n", dep_id); 1021 psFree(output); 1022 if (!psDBRollback(config->dbh)) { 1023 psError(PS_ERR_UNKNOWN, false, "database error"); 1024 } 942 1025 return true; 943 1026 } 944 1027 if (no_create) { 1028 if (!psDBRollback(config->dbh)) { 1029 psError(PS_ERR_UNKNOWN, false, "database error"); 1030 return false; 1031 } 945 1032 return true; 946 1033 } 947 1034 // no existing dependent that matches, insert one 1035 // Since we have multiple processes running jobs we have a 1036 // race condition here so that's why we need to lock the table 948 1037 949 1038 if (!pstampDependentInsert( … … 953 1042 stage, 954 1043 stage_id, 1044 component, 955 1045 imagedb, 956 1046 rlabel, 957 no_magic 1047 need_magic, 1048 0 // fault 958 1049 )) { 1050 if (!psDBRollback(config->dbh)) { 1051 psError(PS_ERR_UNKNOWN, false, "database error"); 1052 } 959 1053 psError(PS_ERR_UNKNOWN, false, "failed to insert pstampDependent"); 960 1054 return false; 961 1055 } 962 1056 1057 // if we try and get this after commit zero is returned 963 1058 psS64 dep_id = psDBLastInsertID(config->dbh); 1059 if (!dep_id) { 1060 psError(PS_ERR_UNKNOWN, false, "psDBLastInsertID returned NULL"); 1061 if (!psDBRollback(config->dbh)) { 1062 psError(PS_ERR_UNKNOWN, false, "database error"); 1063 } 1064 return false; 1065 } 1066 1067 if (!psDBCommit(config->dbh)) { 1068 // rollback 1069 if (!psDBRollback(config->dbh)) { 1070 psError(PS_ERR_UNKNOWN, false, "database error"); 1071 } 1072 psError(PS_ERR_UNKNOWN, false, "database error"); 1073 return false; 1074 } 964 1075 965 1076 printf("%" PRId64 "\n", dep_id); … … 973 1084 974 1085 psMetadata *where = psMetadataAlloc(); 1086 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 1087 PXOPT_COPY_STR(config->args, where, "-imagedb", "imagedb", "=="); 1088 PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "=="); 1089 PXOPT_COPY_STR(config->args, where, "-rlabel", "rlabel", "=="); 1090 pxAddLabelSearchArgs(config, where, "-label", "pstampRequest.label", "=="); 975 1091 976 1092 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); … … 979 1095 psString query = pxDataGet("pstamptool_pendingdependent.sql"); 980 1096 if (!query) { 981 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1097 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 982 1098 return false; 983 1099 } 984 1100 985 1101 if (psListLength(where->list)) { 986 psString whereClause = psDBGenerateWhereConditionSQL(where, "pstampDependent");1102 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 987 1103 psStringAppend(&query, " AND %s", whereClause); 988 1104 psFree(whereClause); … … 1031 1147 1032 1148 PXOPT_LOOKUP_S64(dep_id, config->args, "-dep_id", true, false); 1033 PXOPT_LOOKUP_STR(state, config->args, "-set_state", true, false); 1034 1035 char *query ="UPDATE pstampDependent" 1036 " SET state = '%s'" 1037 " WHERE dep_id = %" PRId64; 1038 1039 if (!p_psDBRunQueryF(config->dbh, query, state, dep_id)) { 1149 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 1150 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 1151 1152 if (!fault && !state) { 1153 psError(PS_ERR_UNKNOWN, true, "at least one of -set_state or fault is required"); 1154 return false; 1155 } 1156 psString query = psStringCopy("UPDATE pstampDependent SET"); 1157 bool needComma = false; 1158 if (state) { 1159 psStringAppend(&query, " state = '%s'", state); 1160 needComma = true; 1161 } 1162 if (fault) { 1163 psStringAppend(&query, "%s fault = %d", needComma ? ", " : "", fault); 1164 needComma = true; 1165 } 1166 psStringAppend(&query, " WHERE dep_id = %" PRId64, dep_id); 1167 1168 if (!p_psDBRunQuery(config->dbh, query)) { 1040 1169 psError(PS_ERR_UNKNOWN, false, "database error"); 1041 1170 psFree(query); … … 1045 1174 psU64 affected = psDBAffectedRows(config->dbh); 1046 1175 if (affected != 1) { 1047 psError(PS_ERR_UNKNOWN, false, "should have affected one row but %" 1176 psError(PS_ERR_UNKNOWN, false, "should have affected one row but %" 1048 1177 PRIu64 " rows were modified", affected); 1049 1178 return false; … … 1052 1181 return true; 1053 1182 } 1183 static bool revertdependentMode(pxConfig *config) 1184 { 1185 PS_ASSERT_PTR_NON_NULL(config, false); 1186 1187 psMetadata *where = psMetadataAlloc(); 1188 PXOPT_COPY_S64(config->args, where, "-fault", "pstampDependent.fault", "=="); 1189 PXOPT_COPY_S64(config->args, where, "-dep_id", "dep_id", "=="); 1190 pxAddLabelSearchArgs(config, where, "-label", "pstampRequest.label", "=="); 1191 1192 if (!psListLength(where->list)) { 1193 psFree(where); 1194 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1195 return false; 1196 } 1197 psString query = pxDataGet("pstamptool_revertdependent.sql"); 1198 if (!query) { 1199 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1200 return false; 1201 } 1202 1203 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1204 psStringAppend(&query, " AND %s", whereClause); 1205 psFree(whereClause); 1206 psFree(where); 1207 1208 if (!p_psDBRunQuery(config->dbh, query)) { 1209 psError(PS_ERR_UNKNOWN, false, "database error"); 1210 psFree(query); 1211 return false; 1212 } 1213 1214 return true; 1215 } -
branches/tap_branches/ippTools/src/pstamptool.h
r25793 r27838 46 46 PSTAMPTOOL_MODE_PENDINGDEPENDENT, 47 47 PSTAMPTOOL_MODE_UPDATEDEPENDENT, 48 PSTAMPTOOL_MODE_REVERTDEPENDENT, 48 49 } pstamptoolMode; 49 50 -
branches/tap_branches/ippTools/src/pstamptoolConfig.c
r25793 r27838 38 38 config->modules = pmConfigRead(&argc, argv, NULL); 39 39 if (! config->modules) { 40 psError( PS_ERR_UNKNOWN, false, "Can't find site configuration!\n");40 psError(psErrorCodeLast(), false, "Can't find site configuration!\n"); 41 41 psFree(config); 42 42 return NULL; … … 45 45 // -adddatastore 46 46 psMetadata *adddatastoreArgs = psMetadataAlloc(); 47 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-uri", 0, "define storage uri (required)", NULL); 48 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-out_product", 0, "define output product name (required)", NULL); 49 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-last_fileset", 0, "define last fileset seen", NULL); 50 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-state", 0, "define datastore state", "enabled"); 51 47 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-set_uri", 0, "define storage uri (required)", NULL); 48 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-set_out_product", 0, "define output product name (required)", NULL); 49 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-set_last_fileset", 0, "define last fileset seen", NULL); 50 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-set_state", 0, "define datastore state", "enabled"); 51 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-set_label", 0, "define datastore label", NULL); 52 psMetadataAddS32(adddatastoreArgs, PS_LIST_TAIL, "-set_poll_interval", 0, "define datastore poll interval (seconds)", 60); 53 52 54 // -datastore 53 55 psMetadata *datastoreArgs = psMetadataAlloc(); 54 psMetadataAddS64(datastoreArgs, PS_LIST_TAIL, "-ds_id", 0, "define ds_id", 0); 56 psMetadataAddS64(datastoreArgs, PS_LIST_TAIL, "-ds_id", 0, "define ds_id", 0); 57 psMetadataAddBool(datastoreArgs, PS_LIST_TAIL, "-ready", 0, "list data stores ready to be polled", false); 55 58 psMetadataAddBool(datastoreArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 56 59 57 60 // -moddatastore 58 61 psMetadata *moddatastoreArgs = psMetadataAlloc(); 59 psMetadataAddS64(moddatastoreArgs, PS_LIST_TAIL, "-ds_id", 0, "define ds_id", 0); 60 psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-last_fileset", 0, "set last_fileset seen", NULL); 61 psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-state", 0, "set state", NULL); 62 psMetadataAddS64(moddatastoreArgs, PS_LIST_TAIL, "-ds_id", 0, "define ds_id", 0); 63 psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-set_last_fileset", 0, "set last_fileset seen", NULL); 64 psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-set_state", 0, "set state", NULL); 65 psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-set_label", 0, "set label", NULL); 66 psMetadataAddS32(moddatastoreArgs, PS_LIST_TAIL, "-set_poll_interval", 0, "define datastore poll interval (seconds)", 0); 67 psMetadataAddBool(moddatastoreArgs, PS_LIST_TAIL, "-update_timestamp", 0, "update the timestamp", false); 68 psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-state", 0, "search by state", NULL); 62 69 63 70 // -addreq 64 71 psMetadata *addreqArgs = psMetadataAlloc(); 65 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-uri", 0, "define request file uri (required)", NULL); 66 psMetadataAddS64(addreqArgs, PS_LIST_TAIL, "-ds_id", 0, "define request ds_id", 0); 67 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-name", 0, "define request name", NULL); 68 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-label", 0, "define request label", NULL); 72 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-uri", 0, "define request file uri (required)", NULL); 73 psMetadataAddS64(addreqArgs, PS_LIST_TAIL, "-ds_id", 0, "define request ds_id", 0); 74 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-name", 0, "define request name", NULL); 75 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-label", 0, "define request label", NULL); 69 76 70 77 // -pendingreq 71 78 psMetadata *pendingreqArgs = psMetadataAlloc(); 72 psMetadataAddS64(pendingreqArgs, PS_LIST_TAIL, "-req_id", 0, "define req_id", 0); 79 psMetadataAddS64(pendingreqArgs, PS_LIST_TAIL, "-req_id", 0, "define req_id", 0); 80 psMetadataAddStr(pendingreqArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by pstampRequest label (LIKE comparision)", NULL); 73 81 psMetadataAddU64(pendingreqArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 74 82 psMetadataAddBool(pendingreqArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 76 84 // -listreq 77 85 psMetadata *listreqArgs = psMetadataAlloc(); 78 psMetadataAddS64(listreqArgs, PS_LIST_TAIL, "-req_id", 0, "list by req_id", 0); 79 psMetadataAddStr(listreqArgs, PS_LIST_TAIL, "-name", 0, "list by name", NULL); 80 psMetadataAddS64(listreqArgs, PS_LIST_TAIL, "-not_req_id", 0, "req_id to not list", 0); 86 psMetadataAddS64(listreqArgs, PS_LIST_TAIL, "-req_id", 0, "list by req_id", 0); 87 psMetadataAddStr(listreqArgs, PS_LIST_TAIL, "-name", 0, "list by name", NULL); 88 psMetadataAddS64(listreqArgs, PS_LIST_TAIL, "-not_req_id", 0, "req_id to not list", 0); 81 89 psMetadataAddU64(listreqArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 82 90 psMetadataAddBool(listreqArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 84 92 // -completedreq 85 93 psMetadata *completedreqArgs = psMetadataAlloc(); 94 psMetadataAddStr(completedreqArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by pstampJob label (LIKE comparision)", NULL); 86 95 psMetadataAddU64(completedreqArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 87 96 psMetadataAddBool(completedreqArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 89 98 // -updatereq 90 99 psMetadata *updatereqArgs = psMetadataAlloc(); 91 psMetadataAddS64(updatereqArgs, PS_LIST_TAIL, "-req_id", 0, "req_id for which to change state", 0); 92 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-state", 0, "new state", NULL); 93 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-outProduct", 0, "define request outProduct", NULL); 94 psMetadataAddS tr(updatereqArgs, PS_LIST_TAIL, "-fault", 0, "define request fault code", NULL);95 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-uri", 0, "define the uri", NULL); 96 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-name", 0, "define the name", NULL); 97 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-reqType", 0, "define the reqType", NULL); 100 psMetadataAddS64(updatereqArgs, PS_LIST_TAIL, "-req_id", 0, "req_id for which to change state", 0); 101 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-state", 0, "new state", NULL); 102 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-outProduct", 0, "define request outProduct", NULL); 103 psMetadataAddS16(updatereqArgs, PS_LIST_TAIL, "-fault", 0, "define request fault code", 0); 104 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-uri", 0, "define the uri", NULL); 105 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-name", 0, "define the name", NULL); 106 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-reqType", 0, "define the reqType", NULL); 98 107 99 108 // -revertreq 100 109 psMetadata *revertreqArgs = psMetadataAlloc(); 101 psMetadataAddS64(revertreqArgs, PS_LIST_TAIL, "-req_id", 0, "req_id to revert", 0); 102 psMetadataAddS16(revertreqArgs, PS_LIST_TAIL, "-fault", 0, "fault to revert", 0); 103 psMetadataAddStr(revertreqArgs, PS_LIST_TAIL, "-state", 0, "state to revert", NULL); 110 psMetadataAddS64(revertreqArgs, PS_LIST_TAIL, "-req_id", 0, "req_id to revert", 0); 111 psMetadataAddS16(revertreqArgs, PS_LIST_TAIL, "-fault", 0, "fault to revert", 0); 112 psMetadataAddStr(revertreqArgs, PS_LIST_TAIL, "-state", 0, "state to revert", NULL); 113 psMetadataAddStr(revertreqArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by pstampRequest label (LIKE comparision)", NULL); 104 114 105 115 // -addjob 106 116 psMetadata *addjobArgs = psMetadataAlloc(); 107 psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-req_id", 0, "define job req_id", 0); 108 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-rownum", 0, "define job rownum", NULL); 109 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-job_type", 0, "define job job_type", "stamp"); 110 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-outputBase", 0, "define job outputBase", NULL); 111 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-state", 0, "define state", "run"); 112 psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-exp_id", 0, "define exposure id", 0); 113 psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-options", 0, "define options", 0); 114 psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-dep_id", 0, "define job dep_id", 0); 115 psMetadataAddS16(addjobArgs, PS_LIST_TAIL, "-fault", 0, "define job result", 0); 117 psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-req_id", 0, "define job req_id", 0); 118 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-rownum", 0, "define job rownum", NULL); 119 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-job_type", 0, "define job job_type", "stamp"); 120 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-outputBase", 0, "define job outputBase", NULL); 121 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-state", 0, "define state", "run"); 122 psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-exp_id", 0, "define exposure id", 0); 123 psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-options", 0, "define options", 0); 124 psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-dep_id", 0, "define job dep_id", 0); 125 psMetadataAddS16(addjobArgs, PS_LIST_TAIL, "-fault", 0, "define job result", 0); 116 126 117 127 // -listjob 118 128 psMetadata *listjobArgs = psMetadataAlloc(); 119 psMetadataAddS64(listjobArgs, PS_LIST_TAIL, "-req_id", 0, "select by request ID", 0); 120 psMetadataAddS64(listjobArgs, PS_LIST_TAIL, "-job_id", 0, "select by job ID", 0); 121 psMetadataAddS16(listjobArgs, PS_LIST_TAIL, "-fault", 0, "select by fault", 0); 129 psMetadataAddS64(listjobArgs, PS_LIST_TAIL, "-req_id", 0, "select by request ID", 0); 130 psMetadataAddS64(listjobArgs, PS_LIST_TAIL, "-job_id", 0, "select by job ID", 0); 131 psMetadataAddS16(listjobArgs, PS_LIST_TAIL, "-fault", 0, "select by fault", 0); 122 132 psMetadataAddU64(listjobArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 123 133 psMetadataAddBool(listjobArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 125 135 // -pendingjob 126 136 psMetadata *pendingjobArgs = psMetadataAlloc(); 127 psMetadataAddS64(pendingjobArgs, PS_LIST_TAIL, "-job_id", 0, "define job", 0); 128 psMetadataAddS64(pendingjobArgs, PS_LIST_TAIL, "-req_id", 0, "define request", 0); 137 psMetadataAddS64(pendingjobArgs, PS_LIST_TAIL, "-job_id", 0, "define job", 0); 138 psMetadataAddS64(pendingjobArgs, PS_LIST_TAIL, "-req_id", 0, "define request", 0); 139 psMetadataAddStr(pendingjobArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by pstampJob label (LIKE comparision)", NULL); 129 140 psMetadataAddU64(pendingjobArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 130 141 psMetadataAddBool(pendingjobArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 132 143 // -updatejob 133 144 psMetadata *updatejobArgs = psMetadataAlloc(); 134 psMetadataAddS64(updatejobArgs, PS_LIST_TAIL, "-job_id", 0, "req_id for which to change state", 0); 135 psMetadataAddStr(updatejobArgs, PS_LIST_TAIL, "-state", 0, "new state", NULL); 136 psMetadataAddStr(updatejobArgs, PS_LIST_TAIL, "-fault", 0, "new result", NULL); 145 psMetadataAddS64(updatejobArgs, PS_LIST_TAIL, "-job_id", 0, "req_id for which to change state", 0); 146 psMetadataAddS64(updatejobArgs, PS_LIST_TAIL, "-dep_id", 0, "dep_id for which to change state", 0); 147 psMetadataAddStr(updatejobArgs, PS_LIST_TAIL, "-state", 0, "new state", NULL); 148 psMetadataAddS16(updatejobArgs, PS_LIST_TAIL, "-fault", 0, "new result", 0); 137 149 138 150 // -revertjob 139 151 psMetadata *revertjobArgs = psMetadataAlloc(); 140 psMetadataAddS64(revertjobArgs, PS_LIST_TAIL, "-req_id", 0, "req_id to revert", 0); 141 psMetadataAddS64(revertjobArgs, PS_LIST_TAIL, "-req_id_min", 0, "minimum req_id to revert", 0); 142 psMetadataAddS64(revertjobArgs, PS_LIST_TAIL, "-job_id", 0, "job_id to revert", 0); 143 psMetadataAddS16(revertjobArgs, PS_LIST_TAIL, "-fault", 0, "fault to revert", 0); 152 psMetadataAddS64(revertjobArgs, PS_LIST_TAIL, "-req_id", 0, "req_id to revert", 0); 153 psMetadataAddS64(revertjobArgs, PS_LIST_TAIL, "-req_id_min", 0, "minimum req_id to revert", 0); 154 psMetadataAddS64(revertjobArgs, PS_LIST_TAIL, "-job_id", 0, "job_id to revert", 0); 155 psMetadataAddS16(revertjobArgs, PS_LIST_TAIL, "-fault", 0, "fault to revert", 0); 156 psMetadataAddStr(revertjobArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by pstampRequest label (LIKE comparision)", NULL); 144 157 psMetadataAddBool(revertjobArgs, PS_LIST_TAIL, "-all", 0, "revert all faulted jobs", false); 145 158 psMetadataAddU64(revertjobArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); … … 147 160 // -getdependent 148 161 psMetadata *getdependentArgs = psMetadataAlloc(); 149 psMetadataAddS64(getdependentArgs, PS_LIST_TAIL, "-stage_id", 0, "define id for dependent run (required)", 0); 150 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-stage", 0, "define stage for dependent run (required)", NULL); 151 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-imagedb", 0, "define imagedb for depenent run (required)", NULL); 152 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-rlabel", 0, "define label for dependent run", NULL); 153 psMetadataAddBool(getdependentArgs,PS_LIST_TAIL, "-no_magic", 0, "define no_magic", false); 154 psMetadataAddBool(getdependentArgs,PS_LIST_TAIL, "-no_create", 0, "if no run exists do not create one", false); 162 psMetadataAddS64(getdependentArgs, PS_LIST_TAIL, "-stage_id", 0, "define id for dependent (required)", 0); 163 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-stage", 0, "define stage for dependent (required)", NULL); 164 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-component", 0, "define component for depenent (required)", NULL); 165 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-imagedb", 0, "define imagedb for depenent (required)", NULL); 166 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-rlabel", 0, "define label for dependent ", NULL); 167 psMetadataAddBool(getdependentArgs,PS_LIST_TAIL, "-need_magic", 0, "define need_magic", false); 168 psMetadataAddBool(getdependentArgs,PS_LIST_TAIL, "-no_create", 0, "if no matching dependent do not create one", false); 155 169 156 170 // -updatedependent 157 171 psMetadata *updatedependentArgs = psMetadataAlloc(); 158 psMetadataAddS64(updatedependentArgs, PS_LIST_TAIL, "-dep_id", 0, "define id for dependent run (required)", 0); 159 psMetadataAddStr(updatedependentArgs, PS_LIST_TAIL, "-set_state", 0, "new value for state (required)", NULL); 172 psMetadataAddS64(updatedependentArgs, PS_LIST_TAIL, "-dep_id", 0, "define id for dependent (required)", 0); 173 psMetadataAddStr(updatedependentArgs, PS_LIST_TAIL, "-set_state", 0, "new value for state", NULL); 174 psMetadataAddS16(updatedependentArgs, PS_LIST_TAIL, "-fault", 0, "new value for fault", 0); 175 176 // -revertdependent 177 psMetadata *revertdependentArgs = psMetadataAlloc(); 178 psMetadataAddS64(revertdependentArgs, PS_LIST_TAIL, "-dep_id", 0, "define id for dependent", 0); 179 psMetadataAddStr(revertdependentArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label for dependent ", NULL); 180 psMetadataAddS16(revertdependentArgs, PS_LIST_TAIL, "-fault", 0, "define fault", 0); 160 181 161 182 // -pendingdependent 162 183 psMetadata *pendingdependentArgs = psMetadataAlloc(); 163 psMetadataAddS64(pendingdependentArgs, PS_LIST_TAIL, "-stage_id", 0, "define id for dependent run", 0);164 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-stage", 0, "define stage for dependent run", NULL);165 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "- imagedb", 0, "define imagedb for depenent run", NULL);166 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "- rlabel", 0, "define label for dependent run", NULL);167 psMetadataAdd Bool(pendingdependentArgs,PS_LIST_TAIL, "-no_magic", 0, "define no_magic", false);168 psMetadataAdd Bool(pendingdependentArgs,PS_LIST_TAIL, "-no_create", 0, "if no run exists do not create one", false);184 psMetadataAddS64(pendingdependentArgs, PS_LIST_TAIL, "-stage_id", 0, "define id for dependent", 0); 185 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-stage", 0, "define stage for dependent", NULL); 186 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-component", 0, "define component for dependent", NULL); 187 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label for pstampRequest", NULL); 188 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-rlabel", 0, "define label for dependent", NULL); 189 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-imagedb", 0, "define imagedb for depenent", NULL); 169 190 psMetadataAddU64(pendingdependentArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 170 191 psMetadataAddBool(pendingdependentArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 182 203 // -modproject 183 204 psMetadata *modprojectArgs = psMetadataAlloc(); 184 psMetadataAddS64(modprojectArgs, PS_LIST_TAIL, "-proj_id", 0, "define project ID to modify (required)", 0); 205 psMetadataAddS64(modprojectArgs, PS_LIST_TAIL, "-proj_id", 0, "define project ID to modify (required)", 0); 185 206 psMetadataAddStr(modprojectArgs, PS_LIST_TAIL, "-imagedb", 0, "define name of database for project", NULL); 186 207 psMetadataAddStr(modprojectArgs, PS_LIST_TAIL, "-state", 0, "define state for project (enabled, disabled)", NULL); … … 192 213 // -project 193 214 psMetadata *projectArgs = psMetadataAlloc(); 194 psMetadataAddStr(projectArgs, PS_LIST_TAIL, "-name", 0, "define project name to list (required)", NULL); 215 psMetadataAddStr(projectArgs, PS_LIST_TAIL, "-name", 0, "define project name to list (required)", NULL); 195 216 psMetadataAddBool(projectArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 196 217 … … 218 239 PXOPT_ADD_MODE("-updatedependent", "", PSTAMPTOOL_MODE_UPDATEDEPENDENT, updatedependentArgs); 219 240 PXOPT_ADD_MODE("-pendingdependent","", PSTAMPTOOL_MODE_PENDINGDEPENDENT, pendingdependentArgs); 241 PXOPT_ADD_MODE("-revertdependent","", PSTAMPTOOL_MODE_REVERTDEPENDENT, revertdependentArgs); 220 242 221 243 PXOPT_ADD_MODE("-addproject", "", PSTAMPTOOL_MODE_ADDPROJECT, addprojectArgs); -
branches/tap_branches/ippTools/src/pubtool.c
r25256 r27838 32 32 33 33 static bool defineclientMode(pxConfig *config); 34 static bool updateclientMode(pxConfig *config); 34 35 static bool definerunMode(pxConfig *config); 35 36 static bool pendingMode(pxConfig *config); … … 57 58 switch (config->mode) { 58 59 MODECASE(PUBTOOL_MODE_DEFINECLIENT, defineclientMode); 60 MODECASE(PUBTOOL_MODE_UPDATECLIENT, updateclientMode); 59 61 MODECASE(PUBTOOL_MODE_DEFINERUN, definerunMode); 60 62 MODECASE(PUBTOOL_MODE_PENDING, pendingMode); … … 93 95 // optional 94 96 PXOPT_LOOKUP_STR(comment, config->args, "-comment", false, false); 95 96 if (!publishClientInsert(config->dbh, 0, product, stage, workdir, comment)) { 97 psError(PS_ERR_UNKNOWN, false, "Database error"); 98 return false; 99 } 97 PXOPT_LOOKUP_BOOL(unmagicked, config->args, "-unmagicked", false); 98 99 if (!publishClientInsert(config->dbh, 0, 0, product, stage, !unmagicked, workdir, comment)) { 100 psError(PS_ERR_UNKNOWN, false, "Database error"); 101 return false; 102 } 103 104 return true; 105 } 106 107 static bool updateclientMode(pxConfig *config) 108 { 109 PS_ASSERT_PTR_NON_NULL(config, false); 110 111 psMetadata *where = psMetadataAlloc(); // WHERE conditions 112 PXOPT_COPY_S64(config->args, where, "-client_id", "client_id", "=="); 113 PXOPT_COPY_STR(config->args, where, "-product", "product", "=="); 114 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 115 PXOPT_COPY_STR(config->args, where, "-comment", "comment", "LIKE"); 116 117 PXOPT_LOOKUP_BOOL(active, config->args, "-active", false); 118 PXOPT_LOOKUP_BOOL(inactive, config->args, "-inactive", false); 119 120 if ((!active && !inactive) || (active && inactive)) { 121 psError(PS_ERR_UNKNOWN, false, "Must specify one, and only one, of -active and -inactive."); 122 psFree(where); 123 return false; 124 } 125 126 psString query = NULL; // Query to run 127 psStringAppend(&query, "UPDATE publishClient SET active = %d", active ? 1 : 0); 128 129 if (psListLength(where->list)) { 130 psString clause = psDBGenerateWhereConditionSQL(where, NULL); 131 psStringAppend(&query, "\n WHERE %s", clause); 132 psFree(clause); 133 } 134 psFree(where); 135 136 if (!p_psDBRunQuery(config->dbh, query)) { 137 psError(PS_ERR_UNKNOWN, false, "Database error"); 138 psFree(query); 139 return false; 140 } 141 psFree(query); 142 143 long numUpdated = psDBAffectedRows(config->dbh); 144 psLogMsg("pubtool", PS_LOG_INFO, "%ld rows updated.", numUpdated); 100 145 101 146 return true; … … 112 157 // optional 113 158 PXOPT_COPY_S64(config->args, where, "-client_id", "client_id", "=="); 114 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 115 116 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 159 pxAddLabelSearchArgs(config, where, "-label", "label", "=="); // define using newExp label 117 160 118 161 psString query = pxDataGet("pubtool_definerun.sql"); // Query to run 119 162 if (!query) { 120 psError(PXTOOLS_ERR_ DATA, false, "Failed to retreive SQL statement");163 psError(PXTOOLS_ERR_SYS, false, "Failed to retreive SQL statement"); 121 164 psFree(where); 122 165 return false; … … 167 210 psS64 client = psMetadataLookupS64(NULL, row, "client_id"); // Client identifier 168 211 psS64 stage = psMetadataLookupS64(NULL, row, "stage_id"); // Stage identifier 212 char *label = psMetadataLookupStr(NULL, row, "src_label"); // label from correct source 169 213 170 214 if (!publishRunInsert(config->dbh, 0, client, stage, label, "new")) { … … 205 249 psString query = pxDataGet("pubtool_pending.sql"); 206 250 if (!query) { 207 psError(PXTOOLS_ERR_ DATA, false, "Failed to retreive SQL statement");251 psError(PXTOOLS_ERR_SYS, false, "Failed to retreive SQL statement"); 208 252 psFree(where); 209 253 return false; … … 311 355 PXOPT_COPY_STR(config->args, where, "-client_id", "publishClient.client_id", "=="); 312 356 PXOPT_COPY_STR(config->args, where, "-comment", "publishClient.comment", "LIKE"); 313 PXOPT_COPY_STR(config->args, where, "-label", "publishRun.label", "==");357 pxAddLabelSearchArgs(config, where, "-label", "publishRun.label", "=="); 314 358 315 359 psString query = pxDataGet("pubtool_revert.sql"); 316 360 if (!query) { 317 psError(PXTOOLS_ERR_ DATA, false, "Failed to retreive SQL statement");361 psError(PXTOOLS_ERR_SYS, false, "Failed to retreive SQL statement"); 318 362 psFree(where); 319 363 return false; -
branches/tap_branches/ippTools/src/pubtool.h
r24512 r27838 26 26 PUBTOOL_MODE_NONE = 0x0, 27 27 PUBTOOL_MODE_DEFINECLIENT, 28 PUBTOOL_MODE_UPDATECLIENT, 28 29 PUBTOOL_MODE_DEFINERUN, 29 30 PUBTOOL_MODE_PENDING, -
branches/tap_branches/ippTools/src/pubtoolConfig.c
r25256 r27838 38 38 config->modules = pmConfigRead(&argc, argv, NULL); 39 39 if (!config->modules) { 40 psError( PS_ERR_UNKNOWN, false, "Can't find site configuration!");40 psError(psErrorCodeLast(), false, "Can't find site configuration!"); 41 41 psFree(config); 42 42 return NULL; … … 49 49 psMetadataAddStr(defineclientArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 50 50 psMetadataAddStr(defineclientArgs, PS_LIST_TAIL, "-comment", 0, "define comment", NULL); 51 psMetadataAddBool(defineclientArgs, PS_LIST_TAIL, "-unmagicked", 0, "allow unmagicked data?", false); 52 53 // -updateclient 54 psMetadata *updateclientArgs = psMetadataAlloc(); 55 psMetadataAddS64(updateclientArgs, PS_LIST_TAIL, "-client_id", 0, "search by client_id", 0); 56 psMetadataAddStr(updateclientArgs, PS_LIST_TAIL, "-stage", 0, "search by stage", NULL); 57 psMetadataAddStr(updateclientArgs, PS_LIST_TAIL, "-product", 0, "search by product", NULL); 58 psMetadataAddStr(updateclientArgs, PS_LIST_TAIL, "-comment", 0, "search by comment (LIKE)", NULL); 59 psMetadataAddBool(updateclientArgs, PS_LIST_TAIL, "-active", 0, "set to active state", NULL); 60 psMetadataAddBool(updateclientArgs, PS_LIST_TAIL, "-inactive", 0, "set to inactive state", NULL); 51 61 52 62 // -definerun 53 63 psMetadata *definerunArgs = psMetadataAlloc(); 54 64 psMetadataAddS64(definerunArgs, PS_LIST_TAIL, "-client_id", 0, "search by client_id", 0); 55 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-label", 0, "set and search by label", NULL);65 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "set and search by label", NULL); 56 66 57 67 // -pending … … 78 88 psMetadataAddStr(revertArgs, PS_LIST_TAIL, "-client_id", 0, "search on client_id", NULL); 79 89 psMetadataAddStr(revertArgs, PS_LIST_TAIL, "-comment", 0, "search on comment (LIKE)", NULL); 80 psMetadataAddStr(revertArgs, PS_LIST_TAIL, "-label", 0, "search on label", NULL);90 psMetadataAddStr(revertArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search on label", NULL); 81 91 82 92 … … 85 95 86 96 PXOPT_ADD_MODE("-defineclient", "", PUBTOOL_MODE_DEFINECLIENT, defineclientArgs); 97 PXOPT_ADD_MODE("-updateclient", "", PUBTOOL_MODE_UPDATECLIENT, updateclientArgs); 87 98 PXOPT_ADD_MODE("-definerun", "", PUBTOOL_MODE_DEFINERUN, definerunArgs); 88 99 PXOPT_ADD_MODE("-pending", "", PUBTOOL_MODE_PENDING, pendingArgs); -
branches/tap_branches/ippTools/src/pxadd.c
r25835 r27838 124 124 bool pxaddQueueByCamID(pxConfig *config, 125 125 psS64 cam_id, 126 char *workdir,127 char *reduction,128 char *label,126 char *workdir, 127 char *reduction, 128 char *label, 129 129 char *data_group, 130 char *dvodb,130 char *dvodb, 131 131 char *note, 132 bool image_only)132 bool image_only) 133 133 { 134 134 PS_ASSERT_PTR_NON_NULL(config, false); … … 140 140 psMemSetPersistent(query, true); 141 141 if (!query) { 142 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");142 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 143 143 return false; 144 144 } … … 149 149 // on 32/64 150 150 if (!p_psDBRunQueryF(config->dbh, query, 151 "new", // state152 workdir ? workdir : "NULL",153 "dirty", //workdir_state154 reduction? reduction : "NULL",155 label ? label : "NULL",156 data_group ? data_group : "NULL",157 dvodb ? dvodb : "NULL",158 note ? note : "NULL",159 image_only,160 (long long) cam_id151 "new", // state 152 workdir ? workdir : "NULL", 153 "dirty", //workdir_state 154 reduction? reduction : "NULL", 155 label ? label : "NULL", 156 data_group ? data_group : "NULL", 157 dvodb ? dvodb : "NULL", 158 note ? note : "NULL", 159 image_only, 160 (long long) cam_id 161 161 )) { 162 162 psError(PS_ERR_UNKNOWN, false, "database error"); -
branches/tap_branches/ippTools/src/pxadmin.c
r25851 r27838 94 94 psString query = pxDataGet("pxadmin_create_tables.sql"); 95 95 if (!query) { 96 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");96 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 97 97 return false; 98 98 } … … 114 114 psFree(query); 115 115 116 if (!insert_dbversion(config, PACKAGE_VERSION)) {116 if (!insert_dbversion(config, IPPDB_VERSION)) { 117 117 psError(PS_ERR_UNKNOWN, false, "failed to set database version"); 118 118 return false; … … 135 135 psString query = pxDataGet("pxadmin_create_mirror_tables.sql"); 136 136 if (!query) { 137 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");137 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 138 138 return false; 139 139 } … … 155 155 psFree(query); 156 156 157 if (!insert_dbversion(config, PACKAGE_VERSION)) {157 if (!insert_dbversion(config, IPPDB_VERSION)) { 158 158 psError(PS_ERR_UNKNOWN, false, "failed to set database version"); 159 159 return false; … … 220 220 psString query = pxDataGet("pxadmin_drop_tables.sql"); 221 221 if (!query) { 222 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");222 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 223 223 return false; 224 224 } -
branches/tap_branches/ippTools/src/pxcam.c
r25835 r27838 76 76 bool pxcamGetSearchArgs (pxConfig *config, psMetadata *where) { 77 77 78 PXOPT_COPY_S64(config->args, where, "-chip_id", "chipRun.chip_id", "==");79 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "==");80 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "==");81 PXOPT_COPY_STR(config->args, where, "-inst", "rawExp.camera", "==");82 PXOPT_COPY_STR(config->args, where, "-telescope", "rawExp.telescope", "==");83 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawExp.dateobs", ">=");84 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawExp.dateobs", "<=");85 PXOPT_COPY_STR(config->args, where, "-exp_tag", "rawExp.exp_tag", "==");86 PXOPT_COPY_STR(config->args, where, "-exp_type", "rawExp.exp_type", "==");87 PXOPT_COPY_STR(config->args, where, "-comment", "rawExp.comment", "LIKE");88 PXOPT_COPY_STR(config->args, where, "-filelevel", "rawExp.filelevel", "==");89 PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", " ==");78 PXOPT_COPY_S64(config->args, where, "-chip_id", "chipRun.chip_id", "=="); 79 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "=="); 80 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); 81 PXOPT_COPY_STR(config->args, where, "-inst", "rawExp.camera", "=="); 82 PXOPT_COPY_STR(config->args, where, "-telescope", "rawExp.telescope", "=="); 83 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawExp.dateobs", ">="); 84 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawExp.dateobs", "<="); 85 PXOPT_COPY_STR(config->args, where, "-exp_tag", "rawExp.exp_tag", "=="); 86 PXOPT_COPY_STR(config->args, where, "-exp_type", "rawExp.exp_type", "=="); 87 PXOPT_COPY_STR(config->args, where, "-comment", "rawExp.comment", "LIKE"); 88 PXOPT_COPY_STR(config->args, where, "-filelevel", "rawExp.filelevel", "=="); 89 PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "LIKE"); 90 90 PXOPT_COPY_F64(config->args, where, "-airmass_min", "rawExp.airmass", ">="); 91 91 PXOPT_COPY_F64(config->args, where, "-airmass_max", "rawExp.airmass", "<"); … … 152 152 char *tess_id, 153 153 char *end_stage, 154 psS64 magicked, 154 155 char *note) 155 156 { … … 162 163 psMemSetPersistent(query, true); 163 164 if (!query) { 164 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");165 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 165 166 return false; 166 167 } … … 168 169 169 170 // queue the exp 170 // XXX chip_id isbeing cast here work around psS64 have a different type171 // XXX chip_id and magicked are being cast here work around psS64 have a different type 171 172 // different on 32/64 172 173 if (!p_psDBRunQueryF(config->dbh, query, … … 182 183 tess_id ? tess_id : "NULL", 183 184 end_stage ? end_stage : "NULL", 185 (long long) magicked, 184 186 note ? note : "NULL", 185 187 (long long)chip_id -
branches/tap_branches/ippTools/src/pxcam.h
r25835 r27838 40 40 char *tess_id, 41 41 char *end_stage, 42 psS64 magicked, 42 43 char *note); 43 44 -
branches/tap_branches/ippTools/src/pxchip.c
r25835 r27838 96 96 PXOPT_COPY_STR(config->args, where, "-exp_type", "rawExp.exp_type", "=="); 97 97 PXOPT_COPY_STR(config->args, where, "-filelevel", "rawExp.filelevel", "=="); 98 PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", " ==");98 PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "LIKE"); 99 99 PXOPT_COPY_F64(config->args, where, "-airmass_min", "rawExp.airmass", ">="); 100 100 PXOPT_COPY_F64(config->args, where, "-airmass_max", "rawExp.airmass", "<"); … … 125 125 PXOPT_COPY_F32(config->args, where, "-sun_angle_max", "rawExp.sun_angle", "<"); 126 126 PXOPT_COPY_STR(config->args, where, "-comment", "rawExp.comment", "LIKE"); 127 PXOPT_COPY_STR(config->args, where, "-obs_mode", "rawExp.obs_mode", " ==");128 return true; 129 } 130 131 bool pxchipRunSetState(pxConfig *config, psS64 chip_id, const char *state, const boolmagicked)127 PXOPT_COPY_STR(config->args, where, "-obs_mode", "rawExp.obs_mode", "LIKE"); 128 return true; 129 } 130 131 bool pxchipRunSetState(pxConfig *config, psS64 chip_id, const char *state, const psS64 magicked) 132 132 { 133 133 PS_ASSERT_PTR_NON_NULL(config, false); … … 140 140 } 141 141 142 char *query = "UPDATE chipRun SET state = '%s', magicked = % dWHERE chip_id = %" PRId64;142 char *query = "UPDATE chipRun SET state = '%s', magicked = %" PRId64 " WHERE chip_id = %" PRId64; 143 143 if (!p_psDBRunQueryF(config->dbh, query, state, magicked, chip_id)) { 144 144 psError(PS_ERR_UNKNOWN, false, … … 174 174 175 175 psString query = psStringCopy("UPDATE chipRun JOIN rawExp USING(exp_id) SET state = '%s'"); 176 177 if (!strcmp(state, "cleaned") || !strcmp(state, "purged")) { 178 // if magicked is non-zero set it to -1 179 psStringAppend(&query, ", chipRun.magicked = IF(chipRun.magicked = 0, 0, -1)"); 180 } 176 181 177 182 if (where && psListLength(where->list) > 0) { … … 213 218 /* } */ 214 219 215 psString query = psStringCopy("UPDATE chipProcessedImfile JOIN chipRun USING(chip_id) JOIN rawExp ON chipRun.exp_id = rawExp.exp_id SET state = '%s'");220 psString query = psStringCopy("UPDATE chipProcessedImfile JOIN chipRun USING(chip_id) JOIN rawExp ON chipRun.exp_id = rawExp.exp_id SET data_state = '%s'"); 216 221 217 222 if (where && psListLength(where->list) > 0) { … … 219 224 psStringAppend(&query, " %s", whereClause); 220 225 psFree(whereClause); 226 } else { 227 psError(PS_ERR_UNKNOWN, true, "search parameters are required"); 228 return false; 221 229 } 222 230 -
branches/tap_branches/ippTools/src/pxchip.h
r25835 r27838 27 27 28 28 29 bool pxchipRunSetState(pxConfig *config, psS64 chip_id, const char *state, const boolmagicked);29 bool pxchipRunSetState(pxConfig *config, psS64 chip_id, const char *state, const psS64 magicked); 30 30 bool pxchipProcessedImfileSetStateByQuery(pxConfig *config, psMetadata *where, const char *state); 31 31 -
branches/tap_branches/ippTools/src/pxerrors.c
r23487 r27838 29 29 switch (err) { 30 30 case PXTOOLS_ERR_SYS: 31 return PS_EXIT_SYS_ERROR;31 return PS_EXIT_SYS_ERROR; 32 32 case PXTOOLS_ERR_CONFIG: 33 return PS_EXIT_CONFIG_ERROR;33 return PS_EXIT_CONFIG_ERROR; 34 34 case PXTOOLS_ERR_PROG: 35 return PS_EXIT_PROG_ERROR; 36 case PXTOOLS_ERR_DATA: 37 return PS_EXIT_DATA_ERROR; 35 return PS_EXIT_PROG_ERROR; 38 36 default: 39 return PS_EXIT_UNKNOWN_ERROR;37 return PS_EXIT_UNKNOWN_ERROR; 40 38 } 41 39 return PS_EXIT_UNKNOWN_ERROR; -
branches/tap_branches/ippTools/src/pxfake.c
r25835 r27838 74 74 psMemSetPersistent(query, true); 75 75 if (!query) { 76 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");76 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 77 77 return false; 78 78 } -
branches/tap_branches/ippTools/src/pxmagic.c
r25771 r27838 35 35 psString query_temp = pxDataGet(queryFile); 36 36 if (!query_temp) { 37 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement from %s", queryFile);37 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement from %s", queryFile); 38 38 psFree(queryFile); 39 39 if (!psDBRollback(config->dbh)) { … … 75 75 if (not_destreaked) { 76 76 if (destreaked) { 77 psError(PXTOOLS_ERR_ DATA, true, "providing -not_destreaked and -destreaked makes no sense");77 psError(PXTOOLS_ERR_CONFIG, true, "providing -not_destreaked and -destreaked makes no sense"); 78 78 return false; 79 79 } 80 80 if (magicked) { 81 psError(PXTOOLS_ERR_ DATA, true, "providing -not_destreaked and -magicked makes no sense");81 psError(PXTOOLS_ERR_CONFIG, true, "providing -not_destreaked and -magicked makes no sense"); 82 82 return false; 83 83 } … … 87 87 psStringAppend(out, " AND %s.magicked != 0", table); 88 88 } 89 // Note -magicked is handled by the caller. XXX: Why? 89 90 return true; 90 91 } -
branches/tap_branches/ippTools/src/pxregister.c
r21402 r27838 58 58 return true; 59 59 } 60 61 bool pxrawExpSetState(pxConfig *config, psS64 exp_id, const char *state) 62 { 63 if (!exp_id) { 64 psError(PS_ERR_UNKNOWN, true, "0 is not a valid exp_id"); 65 return false; 66 } 67 PS_ASSERT_PTR_NON_NULL(state, false); 68 69 // check that state is a valid string value 70 if (!( 71 (strncmp(state, "full", 5) == 0) 72 || (strncmp(state, "new", 4) == 0) 73 || (strncmp(state, "goto_compressed", 14) == 0) 74 || (strncmp(state, "compressed", 11) == 0) 75 || (strncmp(state, "goto_lossy", 11) == 0) 76 || (strncmp(state, "lossy", 6) == 0) 77 ) 78 ) { 79 psError(PS_ERR_UNKNOWN, false, 80 "invalid rawExp state: %s", state); 81 return false; 82 } 83 84 char *query = "UPDATE rawExp SET state = '%s' WHERE exp_id = %"PRId64; 85 if (!p_psDBRunQueryF(config->dbh, query, state, exp_id)) { 86 psError(PS_ERR_UNKNOWN, false, 87 "failed to change state for exp_id %"PRId64, exp_id); 88 return false; 89 } 90 91 return true; 92 } 93 bool pxrawImfileSetState(pxConfig *config, psS64 exp_id, const char *class_id, const char *state) 94 { 95 if (!exp_id) { 96 psError(PS_ERR_UNKNOWN, true, "0 is not a valid exp_id"); 97 return false; 98 } 99 PS_ASSERT_PTR_NON_NULL(state, false); 100 101 // check that state is a valid string value 102 if (!( 103 (strncmp(state, "full", 5) == 0) 104 || (strncmp(state, "new", 4) == 0) 105 || (strncmp(state, "goto_compressed", 14) == 0) 106 || (strncmp(state, "compressed", 11) == 0) 107 || (strncmp(state, "goto_lossy", 11) == 0) 108 || (strncmp(state, "lossy", 6) == 0) 109 ) 110 ) { 111 psError(PS_ERR_UNKNOWN, false, 112 "invalid rawImfile data_state: %s", state); 113 return false; 114 } 115 116 char *query = "UPDATE rawImfile SET data_state = '%s' WHERE class_id = %s AND exp_id = %"PRId64; 117 if (!p_psDBRunQueryF(config->dbh, query, state, class_id, exp_id)) { 118 psError(PS_ERR_UNKNOWN, false, 119 "failed to change state for exp_id %"PRId64, exp_id); 120 return false; 121 } 122 123 return true; 124 } -
branches/tap_branches/ippTools/src/pxregister.h
r18336 r27838 26 26 27 27 bool pxnewExpSetState(pxConfig *config, psS64 exp_id, const char *state); 28 bool pxrawExpSetState(pxConfig *config, psS64 exp_id, const char *state); 29 bool pxrawImfileSetState(pxConfig *config, psS64 exp_id, const char *class_id, const char *state); 28 30 29 31 #endif // PXREGISTER_H -
branches/tap_branches/ippTools/src/pxtools.c
r25851 r27838 61 61 if (!state) { 62 62 psError(PS_ERR_PROGRAMMING, false, "%s not found in row %ld of table %s", 63 columnName, i, tableName);63 columnName, i, tableName); 64 64 return false; 65 65 } … … 70 70 // if state isn't cleaned or full we can't set it to cleaned 71 71 psError(PS_ERR_PROGRAMMING, true, "%s with state %s may not be exported cleaned", 72 tableName, state);72 tableName, state); 73 73 return false; 74 74 } … … 90 90 psAssert (entry, "%s should at least have a place-holder", name); 91 91 if (entry->data.str) { 92 psListIterator *iter = psListIteratorAlloc (item->data.list, PS_LIST_HEAD, true);93 psMetadataItem *item = NULL;94 while ((item = psListGetAndIncrement(iter))) {95 // need to change the name and comment96 psFree (item->name);97 item->name = psStringCopy (field);98 psFree (item->comment);99 item->comment = psStringCopy (op);100 if (!psMetadataAddItem(where, item, PS_LIST_TAIL, PS_META_DUPLICATE_OK)) {101 psError(PS_ERR_UNKNOWN, false, "failed to add item %s", field);102 psFree(where);103 return false;104 }105 }106 psFree (iter);92 psListIterator *iter = psListIteratorAlloc (item->data.list, PS_LIST_HEAD, true); 93 psMetadataItem *item = NULL; 94 while ((item = psListGetAndIncrement(iter))) { 95 // need to change the name and comment 96 psFree (item->name); 97 item->name = psStringCopy (field); 98 psFree (item->comment); 99 item->comment = psStringCopy (op); 100 if (!psMetadataAddItem(where, item, PS_LIST_TAIL, PS_META_DUPLICATE_OK)) { 101 psError(PS_ERR_UNKNOWN, false, "failed to add item %s", field); 102 psFree(where); 103 return false; 104 } 105 } 106 psFree (iter); 107 107 } 108 108 return true; … … 110 110 111 111 // shared code for updating the various strings for a Run 112 bool pxUpdateRun(pxConfig *config, psMetadata *where, psString *pQuery, psString table, bool has_dist_group)112 bool pxUpdateRun(pxConfig *config, psMetadata *where, psString *pQuery, psString runTable, psString idColumn, psString fileTable, bool has_dist_group) 113 113 { 114 114 PS_ASSERT_PTR_NON_NULL(config, false); … … 116 116 PS_ASSERT_PTR_NON_NULL(pQuery, false); 117 117 PS_ASSERT_PTR_NON_NULL(*pQuery, false); 118 PS_ASSERT_PTR_NON_NULL(runTable, false); 119 PS_ASSERT_PTR_NON_NULL(idColumn, false); 120 PS_ASSERT_PTR_NON_NULL(fileTable, false); 118 121 119 122 // make sure that -state is not the only selection parameter 120 123 PXOPT_LOOKUP_STR(where_state, config->args, "-state", false, false); 121 124 if (where_state && (psListLength(where->list) < 2)) { 122 psError(PXTOOLS_ERR_ DATA, true, "selection by -state alone is not allowed");125 psError(PXTOOLS_ERR_CONFIG, true, "selection by -state alone is not allowed"); 123 126 return false; 124 127 } … … 136 139 137 140 if ((!state) && (!label) && (!data_group) && (has_dist_group && !dist_group) && !(note)) { 138 psError(PXTOOLS_ERR_ DATA, false, "parameters are required");141 psError(PXTOOLS_ERR_CONFIG, false, "parameters are required"); 139 142 return false; 140 143 } 141 144 142 145 if (state && ! pxIsValidState(state)) { 143 psError(PXTOOLS_ERR_ DATA, false, "pxIsValidState failed");146 psError(PXTOOLS_ERR_CONFIG, false, "pxIsValidState failed"); 144 147 return false; 145 148 } … … 158 161 } while (0) 159 162 160 addColumn( table, state);161 addColumn( table, data_group);163 addColumn(runTable, state); 164 addColumn(runTable, data_group); 162 165 if (has_dist_group) { 163 addColumn(table, dist_group); 164 } 165 addColumn(table, note); 166 addColumn(table, label); 166 addColumn(runTable, dist_group); 167 } 168 addColumn(runTable, note); 169 addColumn(runTable, label); 170 171 psString joinHook = psStringCopy(""); 172 psString fileWhere = NULL; 173 if (state && !strcmp(state, "update")) { 174 psStringAppend(&joinHook, "\n JOIN %s USING(%s)", fileTable, idColumn); 175 psStringAppend(pQuery, ", %s.data_state = 'update'", fileTable); 176 psStringAppend(&fileWhere, "AND %s.data_state = 'cleaned'", fileTable); 177 } 167 178 168 179 psString whereClause = psDBGenerateWhereSQL(where, NULL); 169 180 psStringAppend(pQuery, " %s", whereClause); 170 181 psFree(whereClause); 171 172 if (!p_psDBRunQuery(config->dbh, *pQuery)) { 182 if (fileWhere) { 183 psStringAppend(pQuery, "%s", fileWhere); 184 } 185 186 bool mdok; // Status of MD lookup 187 if (psMetadataLookupBool(&mdok, config->args, "-pretend")) { 188 psLogMsg("pxtools", PS_LOG_INFO, "Query to run: %s\n", *pQuery); 189 return true; 190 } 191 192 if (!p_psDBRunQueryF(config->dbh, *pQuery, joinHook)) { 173 193 psError(PS_ERR_UNKNOWN, false, "database error"); 174 194 return false; … … 198 218 } 199 219 if (psArrayLength(output) > 1) { 200 psError(PS_ERR_UNKNOWN, true, "unexpected number of rows found in dbversion: % " PRId64,220 psError(PS_ERR_UNKNOWN, true, "unexpected number of rows found in dbversion: %ld", 201 221 psArrayLength(output)); 202 222 return false; … … 221 241 return NULL; 222 242 } 223 243 224 244 psString version = psMetadataLookupStr(NULL, md, "schema_version"); 225 245 … … 257 277 return false; 258 278 } 259 279 260 280 psMetadataItem *dbversion = psListGet(multi_item->data.list, 0); 261 281 if (!dbversion) { … … 272 292 return false; 273 293 } 274 294 275 295 psString import_version = psMetadataLookupStr(NULL, md, "schema_version"); 276 296 if (import_version && strcmp(import_version, schema_version)) { -
branches/tap_branches/ippTools/src/pxtools.h
r25851 r27838 65 65 bool pxGetOptions(FILE *stream, int argc, char **argv, pxConfig *config, psMetadata *modes, psMetadata *argSets); 66 66 67 bool pxUpdateRun(pxConfig *config, psMetadata *where, psString *pQuery, psString table, bool has_dist_group);67 bool pxUpdateRun(pxConfig *config, psMetadata *where, psString *pQuery, psString runTable, psString idColumn, psString fileTable, bool has_dist_group); 68 68 69 69 #define PXOPT_ADD_MODE(option, comment, modeval, argset) \ -
branches/tap_branches/ippTools/src/pxtoolsErrorCodes.dat
r23695 r27838 8 8 CONFIG Problem in configure files 9 9 PROG Programming error 10 DATA invalid data -
branches/tap_branches/ippTools/src/pztool.c
r25418 r27838 117 117 telescope, 118 118 uri, 119 NULL // epoch 119 NULL, // epoch 120 0 // use_compress 120 121 )) { 121 122 psError(PS_ERR_UNKNOWN, false, "database error"); … … 304 305 psArray *cameras = pzGetPendingCameras(config); 305 306 if (!cameras) { 306 psError(PXTOOLS_ERR_ DATA, false, "failed to find any cameras");307 psError(PXTOOLS_ERR_CONFIG, false, "failed to find any cameras"); 307 308 return false; 308 309 } … … 314 315 psString query = pxDataGet("pztool_pendingimfile.sql"); 315 316 if (!query) { 316 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");317 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 317 318 psFree(cameraImfiles); 318 319 return false; … … 492 493 psString query = pxDataGet("pztool_find_completed_exp.sql"); 493 494 if (!query) { 494 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");495 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 495 496 return false; 496 497 } … … 783 784 psMetadata *where = psMetadataAlloc(); 784 785 PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "=="); 785 PXOPT_COPY_STR(config->args, where, "-inst", " inst", "==");786 PXOPT_COPY_STR(config->args, where, "-inst", "camera", "=="); 786 787 PXOPT_COPY_STR(config->args, where, "-telescope", "telescope", "=="); 787 788 PXOPT_COPY_STR(config->args, where, "-class", "class", "=="); … … 807 808 psMetadata *where = psMetadataAlloc(); 808 809 PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "=="); 809 PXOPT_COPY_STR(config->args, where, "-inst", " inst", "==");810 PXOPT_COPY_STR(config->args, where, "-inst", "camera", "=="); 810 811 PXOPT_COPY_STR(config->args, where, "-telescope", "telescope", "=="); 811 812 PXOPT_COPY_STR(config->args, where, "-class", "class", "=="); … … 814 815 psString query = pxDataGet("pztool_revertcopied.sql"); 815 816 if (!query) { 816 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");817 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 817 818 return false; 818 819 } … … 848 849 psString query = pxDataGet("pztool_revert_downloadimfile_faults.sql"); 849 850 if (!query) { 850 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");851 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 851 852 return false; 852 853 } … … 863 864 psString query = pxDataGet("pztool_revert_fileset_faults.sql"); 864 865 if (!query) { 865 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");866 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 866 867 return false; 867 868 } -
branches/tap_branches/ippTools/src/pztoolConfig.c
r25418 r27838 38 38 config->modules = pmConfigRead(&argc, argv, NULL); 39 39 if (! config->modules) { 40 psError( PS_ERR_UNKNOWN, false, "Can't find site configuration!\n");40 psError(psErrorCodeLast(), false, "Can't find site configuration!\n"); 41 41 psFree(config); 42 42 return NULL; -
branches/tap_branches/ippTools/src/receivetool.c
r24784 r27838 105 105 // optional 106 106 PXOPT_LOOKUP_STR(comment, config->args, "-comment", false, false); 107 PXOPT_LOOKUP_STR(state, config->args, "-state", false, false); 107 108 PXOPT_LOOKUP_STR(last, config->args, "-last", false, false); 108 109 PXOPT_LOOKUP_STR(status_product, config->args, "-status_product", false, false); … … 110 111 PXOPT_LOOKUP_STR(ds_dbhost, config->args, "-ds_dbhost", false, false); 111 112 112 if (!receiveSourceInsert(config->dbh, 0, source, product, workdir, comment, last, status_product, ds_dbname, ds_dbhost)) {113 if (!receiveSourceInsert(config->dbh, 0, source, product, workdir, state, comment, last, status_product, ds_dbname, ds_dbhost)) { 113 114 psError(PS_ERR_UNKNOWN, false, "Database error"); 114 115 return false; … … 135 136 psString query = pxDataGet("receivetool_list.sql"); 136 137 if (!query) { 137 psError(PXTOOLS_ERR_ DATA, false, "Failed to retreive SQL statement");138 psError(PXTOOLS_ERR_SYS, false, "Failed to retreive SQL statement"); 138 139 psFree(where); 139 140 return false; … … 142 143 if (psListLength(where->list)) { 143 144 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 144 psStringAppend(&query, " WHERE%s", whereClause);145 psStringAppend(&query, " AND %s", whereClause); 145 146 psFree(whereClause); 146 147 } … … 194 195 psString query = pxDataGet("receivetool_addfileset.sql"); 195 196 if (!query) { 196 psError(PXTOOLS_ERR_ DATA, false, "Failed to retreive SQL statement");197 psError(PXTOOLS_ERR_SYS, false, "Failed to retreive SQL statement"); 197 198 return false; 198 199 } … … 301 302 psString query = pxDataGet("receivetool_pendingfileset.sql"); 302 303 if (!query) { 303 psError(PXTOOLS_ERR_ DATA, false, "Failed to retreive SQL statement");304 psError(PXTOOLS_ERR_SYS, false, "Failed to retreive SQL statement"); 304 305 psFree(where); 305 306 return false; … … 380 381 psString file_type = psMetadataLookupStr(NULL, md, "file_type"); 381 382 psString component = psMetadataLookupStr(NULL, md, "component"); 382 383 383 384 if (!file) { 384 385 psError(PS_ERR_UNKNOWN, false, "failed to find value for file"); … … 430 431 psString query = pxDataGet("receivetool_pendingfile.sql"); 431 432 if (!query) { 432 psError(PXTOOLS_ERR_ DATA, false, "Failed to retreive SQL statement");433 psError(PXTOOLS_ERR_SYS, false, "Failed to retreive SQL statement"); 433 434 psFree(where); 434 435 return false; … … 513 514 psString query = pxDataGet("receivetool_revert.sql"); 514 515 if (!query) { 515 psError(PXTOOLS_ERR_ DATA, false, "Failed to retreive SQL statement");516 psError(PXTOOLS_ERR_SYS, false, "Failed to retreive SQL statement"); 516 517 psFree(where); 517 518 return false; … … 546 547 psString query = pxDataGet("receivetool_toadvance.sql"); 547 548 if (!query) { 548 psError(PXTOOLS_ERR_ DATA, false, "Failed to retreive SQL statement");549 psError(PXTOOLS_ERR_SYS, false, "Failed to retreive SQL statement"); 549 550 psFree(where); 550 551 return false; … … 612 613 psString query = NULL; // Query to execute 613 614 psStringAppend(&query, "UPDATE receiveFileset SET "); 614 615 615 616 psString sep = ""; 616 617 if (fault) { … … 630 631 sep = ","; 631 632 } 632 633 633 634 psStringAppend(&query, " WHERE fileset_id = %" PRId64, fileset_id); 634 635 -
branches/tap_branches/ippTools/src/receivetoolConfig.c
r24125 r27838 38 38 config->modules = pmConfigRead(&argc, argv, NULL); 39 39 if (!config->modules) { 40 psError( PS_ERR_UNKNOWN, false, "Can't find site configuration!");40 psError(psErrorCodeLast(), false, "Can't find site configuration!"); 41 41 psFree(config); 42 42 return NULL; … … 49 49 psMetadataAddStr(definesourceArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 50 50 psMetadataAddStr(definesourceArgs, PS_LIST_TAIL, "-comment", 0, "define comment", NULL); 51 psMetadataAddStr(definesourceArgs, PS_LIST_TAIL, "-state", 0, "define state", "enabled"); 51 52 psMetadataAddStr(definesourceArgs, PS_LIST_TAIL, "-last", 0, "define last fileset", NULL); 52 53 psMetadataAddStr(definesourceArgs, PS_LIST_TAIL, "-status_product", 0, "define status_product", NULL); -
branches/tap_branches/ippTools/src/regtool.c
r25835 r27838 37 37 static bool revertprocessedimfileMode(pxConfig *config); 38 38 static bool updateprocessedimfileMode(pxConfig *config); 39 static bool pendingcompressimfileMode(pxConfig *config); 39 40 // exp 40 41 static bool pendingexpMode(pxConfig *config); … … 44 45 static bool updateprocessedexpMode(pxConfig *config); 45 46 static bool cleardupexpMode(pxConfig *config); 47 static bool finishcompressexpMode(pxConfig *config); 48 49 static bool updatebyqueryMode(pxConfig *config); 50 46 51 static bool exportrunMode(pxConfig *config); 47 52 static bool importrunMode(pxConfig *config); … … 77 82 MODECASE(REGTOOL_MODE_REVERTPROCESSEDEXP, revertprocessedexpMode); 78 83 MODECASE(REGTOOL_MODE_UPDATEPROCESSEDEXP, updateprocessedexpMode); 84 MODECASE(REGTOOL_MODE_UPDATEBYQUERY, updatebyqueryMode); 85 MODECASE(REGTOOL_MODE_PENDINGCOMPRESSIMFILE, pendingcompressimfileMode); 86 MODECASE(REGTOOL_MODE_FINISHCOMPRESSEXP, finishcompressexpMode); 79 87 MODECASE(REGTOOL_MODE_CLEARDUPEXP, cleardupexpMode); 80 88 MODECASE(REGTOOL_MODE_EXPORTRUN, exportrunMode); … … 117 125 psString query = pxDataGet("regtool_pendingimfile.sql"); 118 126 if (!query) { 119 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");127 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 120 128 return false; 121 129 } … … 189 197 PXOPT_LOOKUP_STR(obs_mode, config->args, "-obs_mode", false, false); 190 198 PXOPT_LOOKUP_STR(obs_group, config->args, "-obs_group", false, false); 199 PXOPT_LOOKUP_STR(data_state, config->args, "-data_state", false, false); 191 200 192 201 PXOPT_LOOKUP_F32(airmass, config->args, "-airmass", false, false); … … 255 264 class_id, 256 265 uri, 266 data_state, 257 267 exp_type, 258 268 filelevel, … … 333 343 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "dateobs", ">="); 334 344 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "dateobs", "<="); 335 PXOPT_COPY_STR(config->args, where, "-filter", "filter", " ==");345 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE"); 336 346 PXOPT_COPY_STR(config->args, where, "-exp_type", "exp_type", "=="); 337 347 PXOPT_COPY_STR(config->args, where, "-obs_mode", "obs_mode", "=="); 338 PXOPT_COPY_S 64(config->args, where, "-magicked", "magicked", "==");348 PXOPT_COPY_STR(config->args, where, "-data_state", "data_state", "=="); 339 349 340 350 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 341 351 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 352 PXOPT_LOOKUP_BOOL(allfiles, config->args, "-allfiles", false); 353 if (allfiles) { 354 faulted = false; 355 } 342 356 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 343 357 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); … … 347 361 psString where2 = NULL; 348 362 if (!pxmagicAddWhere(config, &where2, "rawImfile")) { 349 psError( PXTOOLS_ERR_DATA, false, "pxSpaceAddWhere failed");363 psError(psErrorCodeLast(), false, "pxmagicAddWhere failed"); 350 364 return false; 351 365 } 352 366 if (!pxspaceAddWhere(config, &where2, "rawImfile")) { 353 psError( PXTOOLS_ERR_DATA, false, "pxSpaceAddWhere failed");367 psError(psErrorCodeLast(), false, "pxspaceAddWhere failed"); 354 368 return false; 355 369 } … … 357 371 psString query = pxDataGet("regtool_processedimfile.sql"); 358 372 if (!query) { 359 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");373 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 360 374 psFree(where); 361 375 return false; … … 367 381 psFree(whereClause); 368 382 } else if (!all && !where2) { 369 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");383 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 370 384 return false; 371 385 } … … 379 393 // list only faulted rows 380 394 psStringAppend(&query, " %s", "AND rawImfile.fault != 0"); 381 } else {395 } else if (!allfiles) { 382 396 // don't list faulted rows 383 397 psStringAppend(&query, " %s", "AND rawImfile.fault = 0"); … … 452 466 psString query = pxDataGet("regtool_revertprocessedimfile.sql"); 453 467 if (!query) { 454 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");468 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 455 469 psFree(where); 456 470 return false; … … 463 477 } else { 464 478 psFree(where); 465 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");479 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 466 480 return false; 467 481 } … … 491 505 492 506 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 493 /* PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false); */494 507 PXOPT_LOOKUP_S16(burntool_state, config->args, "-burntool_state", false, false); 495 496 if ((fault == INT16_MAX) && !isfinite(burntool_state)) { 497 psError(PS_ERR_UNKNOWN, false, "one of -fault or -burntool_state must be selected"); 498 return false; 499 } 500 if ((fault != INT16_MAX) && isfinite(burntool_state)) { 508 PXOPT_LOOKUP_S32(set_bytes, config->args, "-set_bytes", false, false); 509 PXOPT_LOOKUP_STR(set_md5sum, config->args, "-set_md5sum", false, false); 510 PXOPT_LOOKUP_STR(set_state, config->args, "-set_state", false, false); 511 512 if ((fault == INT16_MAX) && !isfinite(burntool_state) && !(set_state)) { 513 psError(PS_ERR_UNKNOWN, false, "one of -fault or -burntool_state or -set_state must be selected"); 514 return false; 515 } 516 if ((fault != INT16_MAX) && isfinite(burntool_state)) { 501 517 psError(PS_ERR_UNKNOWN, false, "only one of -fault or -burntool_state must be selected"); 502 518 return false; … … 508 524 509 525 if (fault != INT16_MAX) { 510 // this is fairly dangerous : can set all if the where is not set... 511 if (!pxSetFaultCode(config->dbh, "rawImfile", where, fault)) { 512 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 513 psFree (where); 514 return false; 515 } 516 } 517 518 if (isfinite(burntool_state)) { 519 psString query = pxDataGet("regtool_updateprocessedimfile.sql"); 520 if (!query) { 521 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 522 return false; 523 } 524 525 if (!p_psDBRunQueryF(config->dbh, query, burntool_state, exp_id, class_id)) { 526 psError(PS_ERR_UNKNOWN, false, "database error"); 527 psFree(query); 528 return false; 529 } 530 psFree(query); 526 // this is fairly dangerous : can set all if the where is not set... 527 if (!pxSetFaultCode(config->dbh, "rawImfile", where, fault)) { 528 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 529 psFree (where); 530 return false; 531 } 532 psFree (where); 533 return(true); 531 534 } 532 535 psFree (where); 533 536 537 psString setvalues = NULL; 538 if (burntool_state != INT16_MAX) { 539 psStringAppend(&setvalues,"rawImfile.burntool_state = %d",burntool_state); 540 } 541 if (set_bytes != INT32_MAX) { 542 if (setvalues) { 543 psStringAppend(&setvalues,","); 544 } 545 psStringAppend(&setvalues,"rawImfile.bytes = %d",set_bytes); 546 } 547 if (set_md5sum) { 548 if (setvalues) { 549 psStringAppend(&setvalues,","); 550 } 551 psStringAppend(&setvalues,"rawImfile.md5sum = '%s'",set_md5sum); 552 } 553 if (set_state) { 554 if (setvalues) { 555 psStringAppend(&setvalues,","); 556 } 557 psStringAppend(&setvalues,"rawImfile.data_state = '%s'",set_state); 558 } 559 560 psString query = pxDataGet("regtool_updateprocessedimfile.sql"); 561 if (!query) { 562 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 563 return false; 564 } 565 566 // printf(query,setvalues,exp_id,class_id); 567 if (!p_psDBRunQueryF(config->dbh, query, setvalues, exp_id,class_id)) { 568 psError(PS_ERR_UNKNOWN, false, "database error"); 569 psFree(query); 570 psFree(setvalues); 571 return false; 572 } 573 psFree(setvalues); 574 psFree(query); 575 534 576 return true; 577 } 578 579 static bool pendingcompressimfileMode(pxConfig *config) { 580 PS_ASSERT_PTR_NON_NULL(config, false); 581 582 psMetadata *where = psMetadataAlloc(); 583 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 584 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 585 586 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 587 if (whereClause) { 588 psStringPrepend(&whereClause, "\n AND "); 589 } 590 PXOPT_LOOKUP_BOOL(compress, config->args, "-compress", false); 591 PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false); 592 593 if ((compress && clean) || (!compress && !clean)) { 594 psStringAppend(&whereClause, "\n AND ((data_state = 'goto_compressed' AND state = 'goto_compressed')\n OR (data_state = 'goto_lossy' AND state = 'goto_lossy')) "); 595 } 596 else if (compress) { 597 psStringAppend(&whereClause, "\n AND ((data_state = 'goto_compressed' AND state = 'goto_compressed')) "); 598 } 599 else if (clean) { 600 psStringAppend(&whereClause, "\n AND ((data_state = 'goto_lossy' AND state = 'goto_lossy')) "); 601 } 602 else { 603 psStringAppend(&whereClause, "\n AND ((data_state = 'goto_compressed' AND state = 'goto_compressed')\n OR (data_state = 'goto_lossy' AND state = 'goto_lossy')) "); 604 } 605 606 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 607 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 608 609 psString query = pxDataGet("regtool_pendingcompressimfile.sql"); 610 if (!query) { 611 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 612 return(false); 613 } 614 psString limitString = NULL; 615 if (limit) { 616 limitString = psDBGenerateLimitSQL(limit); 617 psStringPrepend(&limitString, "\n"); 618 } 619 // printf(query,whereClause,limitString); 620 if (!p_psDBRunQueryF(config->dbh, query, whereClause, limitString ? limitString : "")) { 621 psError(PXTOOLS_ERR_PROG, false, "database error"); 622 psFree(limitString); 623 psFree(query); 624 psFree(whereClause); 625 psFree(where); 626 return(false); 627 } 628 psFree(limitString); 629 psFree(query); 630 psFree(whereClause); 631 psFree(where); 632 633 psArray *output = p_psDBFetchResult(config->dbh); 634 if (!output) { 635 psErrorCode err = psErrorCodeLast(); 636 switch (err) { 637 case PS_ERR_DB_CLIENT: 638 psError(PXTOOLS_ERR_SYS, false, "database error"); 639 case PS_ERR_DB_SERVER: 640 psError(PXTOOLS_ERR_PROG, false, "database error"); 641 default: 642 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 643 } 644 645 return false; 646 } 647 if (!psArrayLength(output)) { 648 psTrace("regtool", PS_LOG_INFO, "no rows found"); 649 psFree(output); 650 return true; 651 } 652 653 // negate simple so the default is true 654 if (!ippdbPrintMetadatas(stdout, output, "regPendingCompressImfile", !simple)) { 655 psError(PXTOOLS_ERR_PROG, false, "failed to print array"); 656 psFree(output); 657 return false; 658 } 659 660 psFree(output); 661 662 return true; 535 663 } 536 664 … … 549 677 psString query = pxDataGet("regtool_pendingexp.sql"); 550 678 if (!query) { 551 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");679 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 552 680 return false; 553 681 } … … 626 754 PXOPT_LOOKUP_STR(exp_type, config->args, "-exp_type", false, false); 627 755 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", false, false); 756 PXOPT_LOOKUP_STR(state, config->args, "-state", false, false); 628 757 PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false); 629 758 PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", false, false); … … 687 816 psString query = pxDataGet("regtool_pendingexp.sql"); 688 817 if (!query) { 689 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");818 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 690 819 return false; 691 820 } … … 787 916 filelevel, 788 917 workdir, 918 state, 789 919 reduction, 790 920 dvodb, … … 920 1050 psString query = pxDataGet("regtool_processedexp.sql"); 921 1051 if (!query) { 922 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1052 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 923 1053 return false; 924 1054 } … … 930 1060 PXOPT_COPY_STR(config->args, where, "-inst", "camera", "=="); 931 1061 PXOPT_COPY_STR(config->args, where, "-telescope", "telescope", "=="); 932 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "dateobs", ">="); 933 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "dateobs", "<="); 1062 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "dateobs", ">="); 1063 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "dateobs", "<="); 1064 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 934 1065 PXOPT_COPY_STR(config->args, where, "-exp_tag", "exp_tag", "=="); 935 1066 PXOPT_COPY_STR(config->args, where, "-exp_type", "exp_type", "=="); 936 1067 PXOPT_COPY_STR(config->args, where, "-filelevel", "filelevel", "=="); 937 1068 PXOPT_COPY_STR(config->args, where, "-reduction", "reduction", "=="); 938 PXOPT_COPY_STR(config->args, where, "-filter", "filter", " ==");1069 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE"); 939 1070 PXOPT_COPY_F32(config->args, where, "-airmass_min", "airmass", ">="); 940 1071 PXOPT_COPY_F32(config->args, where, "-airmass_max", "airmass", "<"); … … 965 1096 PXOPT_COPY_F32(config->args, where, "-sun_angle_max", "sun_angle", "<"); 966 1097 1098 psString where2 = NULL; 1099 if (!pxmagicAddWhere(config, &where2, "rawExp")) { 1100 psError(psErrorCodeLast(), false, "pxmagicAddWhere failed"); 1101 return false; 1102 } 1103 if (!pxspaceAddWhere(config, &where2, "rawExp")) { 1104 psError(psErrorCodeLast(), false, "pxSpaceAddWhere failed"); 1105 return false; 1106 } 1107 967 1108 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 968 1109 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 970 1111 971 1112 if (psListLength(where->list)) { 972 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp");973 psStringAppend(&query, " AND %s", whereClause);974 psFree(whereClause);1113 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp"); 1114 psStringAppend(&query, " AND %s", whereClause); 1115 psFree(whereClause); 975 1116 } 976 1117 psFree(where); 977 1118 1119 if (where2) { 1120 psStringAppend(&query, " %s ", where2); 1121 psFree(where2); 1122 } 1123 978 1124 if (faulted) { 979 // list only faulted rows980 psStringAppend(&query, " %s", "AND rawExp.fault != 0");1125 // list only faulted rows 1126 psStringAppend(&query, " %s", "AND rawExp.fault != 0"); 981 1127 } else { 982 // don't list faulted rows983 psStringAppend(&query, " %s", "AND rawExp.fault = 0");1128 // don't list faulted rows 1129 psStringAppend(&query, " %s", "AND rawExp.fault = 0"); 984 1130 } 985 1131 986 1132 // treat limit == 0 as "no limit" 987 1133 if (limit) { 988 psString limitString = psDBGenerateLimitSQL(limit);989 psStringAppend(&query, " %s", limitString);990 psFree(limitString);1134 psString limitString = psDBGenerateLimitSQL(limit); 1135 psStringAppend(&query, " %s", limitString); 1136 psFree(limitString); 991 1137 } 992 1138 993 1139 if (!p_psDBRunQuery(config->dbh, query)) { 994 psError(PS_ERR_UNKNOWN, false, "database error");995 return false;1140 psError(PS_ERR_UNKNOWN, false, "database error"); 1141 return false; 996 1142 } 997 1143 psFree(query); … … 999 1145 psArray *output = p_psDBFetchResult(config->dbh); 1000 1146 if (!output) { 1001 psErrorCode err = psErrorCodeLast();1002 switch (err) {1003 case PS_ERR_DB_CLIENT:1004 psError(PXTOOLS_ERR_SYS, false, "database error");1005 case PS_ERR_DB_SERVER:1006 psError(PXTOOLS_ERR_PROG, false, "database error");1007 default:1008 psError(PXTOOLS_ERR_PROG, false, "unknown error");1009 }1010 1011 return false;1147 psErrorCode err = psErrorCodeLast(); 1148 switch (err) { 1149 case PS_ERR_DB_CLIENT: 1150 psError(PXTOOLS_ERR_SYS, false, "database error"); 1151 case PS_ERR_DB_SERVER: 1152 psError(PXTOOLS_ERR_PROG, false, "database error"); 1153 default: 1154 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 1155 } 1156 1157 return false; 1012 1158 } 1013 1159 if (!psArrayLength(output)) { 1014 psTrace("regtool", PS_LOG_INFO, "no rows found"); 1160 psTrace("regtool", PS_LOG_INFO, "no rows found"); 1161 psFree(output); 1162 return true; 1163 } 1164 1165 if (psArrayLength(output)) { 1166 // negative simple so the default is true 1167 if (!ippdbPrintMetadatas(stdout, output, "rawExp", !simple)) { 1168 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1015 1169 psFree(output); 1016 return true; 1017 } 1018 1019 if (psArrayLength(output)) { 1020 // negative simple so the default is true 1021 if (!ippdbPrintMetadatas(stdout, output, "rawExp", !simple)) { 1022 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1023 psFree(output); 1024 return false; 1025 } 1170 return false; 1171 } 1026 1172 } 1027 1173 … … 1033 1179 static bool revertprocessedexpMode(pxConfig *config) 1034 1180 { 1035 PS_ASSERT_PTR_NON_NULL(config, false); 1036 1037 psMetadata *where = psMetadataAlloc(); 1038 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1039 PXOPT_COPY_S16(config->args, where, "-fault", "fault", "=="); 1040 PXOPT_COPY_S64(config->args, where, "-exp_id_begin", "exp_id", ">="); 1041 PXOPT_COPY_S64(config->args, where, "-exp_id_end", "exp_id", "<="); 1042 1043 psString query = pxDataGet("regtool_revertprocessedexp.sql"); 1044 if (!query) { 1045 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1046 psFree(where); 1047 return false; 1048 } 1049 1050 if (psListLength(where->list)) { 1051 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp"); 1052 psStringAppend(&query, " AND %s", whereClause); 1053 psFree(whereClause); 1054 } else { 1055 psFree(where); 1056 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); 1057 return false; 1058 } 1181 PS_ASSERT_PTR_NON_NULL(config, false); 1182 1183 psMetadata *where = psMetadataAlloc(); 1184 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1185 PXOPT_COPY_S16(config->args, where, "-fault", "fault", "=="); 1186 PXOPT_COPY_S64(config->args, where, "-exp_id_begin", "exp_id", ">="); 1187 PXOPT_COPY_S64(config->args, where, "-exp_id_end", "exp_id", "<="); 1188 1189 psString query = pxDataGet("regtool_revertprocessedexp.sql"); 1190 if (!query) { 1191 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1059 1192 psFree(where); 1060 1061 if (!p_psDBRunQuery(config->dbh, query)) { 1062 psError(PS_ERR_UNKNOWN, false, "database error"); 1063 psFree(query); 1064 return false; 1065 } 1193 return false; 1194 } 1195 1196 if (psListLength(where->list)) { 1197 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp"); 1198 psStringAppend(&query, " AND %s", whereClause); 1199 psFree(whereClause); 1200 } else { 1201 psFree(where); 1202 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1203 return false; 1204 } 1205 psFree(where); 1206 1207 if (!p_psDBRunQuery(config->dbh, query)) { 1208 psError(PS_ERR_UNKNOWN, false, "database error"); 1066 1209 psFree(query); 1067 1068 int numUpdated = psDBAffectedRows(config->dbh); 1069 1070 psLogMsg("regtool", PS_LOG_INFO, "Updated %d rawExp", numUpdated); 1071 1072 return true; 1210 return false; 1211 } 1212 psFree(query); 1213 1214 int numUpdated = psDBAffectedRows(config->dbh); 1215 1216 psLogMsg("regtool", PS_LOG_INFO, "Updated %d rawExp", numUpdated); 1217 1218 return true; 1073 1219 } 1074 1220 … … 1076 1222 static bool updateprocessedexpMode(pxConfig *config) 1077 1223 { 1078 PS_ASSERT_PTR_NON_NULL(config, false); 1079 1080 psMetadata *where = psMetadataAlloc(); 1081 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1082 1083 PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false); 1084 1085 if (!pxSetFaultCode(config->dbh, "rawExp", where, fault)) { 1086 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 1087 psFree(where); 1088 return false; 1089 } 1224 PS_ASSERT_PTR_NON_NULL(config, false); 1225 1226 psMetadata *where = psMetadataAlloc(); 1227 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1228 1229 PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false); 1230 1231 if (!pxSetFaultCode(config->dbh, "rawExp", where, fault)) { 1232 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 1090 1233 psFree(where); 1091 1092 return true; 1093 } 1234 return false; 1235 } 1236 psFree(where); 1237 1238 return true; 1239 } 1240 1241 1242 static bool finishcompressexpMode(pxConfig *config) { 1243 1244 PS_ASSERT_PTR_NON_NULL(config, false); 1245 1246 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1247 1248 psMetadata *where = psMetadataAlloc(); 1249 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1250 1251 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1252 1253 psString query = pxDataGet("regtool_finishcompressexp.sql"); 1254 if (!query) { 1255 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1256 return(false); 1257 } 1258 if (where && psListLength(where->list)) { 1259 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1260 psStringAppend(&query, " %s ", whereClause); 1261 psFree(whereClause); 1262 } 1263 psFree(where); 1264 1265 if (limit) { 1266 psString limitString = psDBGenerateLimitSQL(limit); 1267 psStringAppend(&query, " %s ", limitString); 1268 psFree(limitString); 1269 } 1270 // printf(query); 1271 // return(false); 1272 if (!p_psDBRunQuery(config->dbh, query)) { 1273 psError(PS_ERR_UNKNOWN, false, "database error"); 1274 psFree(query); 1275 return(false); 1276 } 1277 psFree(query); 1278 1279 psArray *output = p_psDBFetchResult(config->dbh); 1280 if (!output) { 1281 psError(PS_ERR_UNKNOWN, false, "database error"); 1282 return(false); 1283 } 1284 if (!psArrayLength(output)) { 1285 psTrace("chiptool", PS_LOG_INFO, "no rows found"); 1286 psFree(output); 1287 return(true); 1288 } 1289 1290 for (long i = 0; i < psArrayLength(output); i++) { 1291 psMetadata *md = output->data[i]; 1292 1293 rawExpRow *row = rawExpObjectFromMetadata(md); 1294 if (!psDBTransaction(config->dbh)) { 1295 psError(PS_ERR_UNKNOWN, false, "database error"); 1296 return(false); 1297 } 1298 1299 if (strcmp(row->state,"goto_compressed") == 0) { 1300 if (!pxrawExpSetState(config,row->exp_id, "compressed")) { 1301 psError(PS_ERR_UNKNOWN, false, "failed to set rawExp.state for exp_id: %" PRId64, row->exp_id); 1302 psFree(row); 1303 psFree(output); 1304 return(false); 1305 } 1306 } 1307 else if (strcmp(row->state,"goto_lossy") == 0) { 1308 if (!pxrawExpSetState(config,row->exp_id, "lossy")) { 1309 psError(PS_ERR_UNKNOWN, false, "failed to set rawExp.state for exp_id: %" PRId64, row->exp_id); 1310 psFree(row); 1311 psFree(output); 1312 return(false); 1313 } 1314 } 1315 if (!psDBCommit(config->dbh)) { 1316 psError(PS_ERR_UNKNOWN, false, "database error"); 1317 return false; 1318 } 1319 psFree(row); 1320 } 1321 1322 psFree(output); 1323 return(true); 1324 } 1325 1326 static bool updatebyqueryMode(pxConfig *config) { 1327 PS_ASSERT_PTR_NON_NULL(config, false); 1328 1329 PXOPT_LOOKUP_STR(set_state, config->args, "-set_state", true, false); 1330 1331 // XX test this out; need to make this consistent with the list in regtoolConfig.c 1332 psMetadata *where = psMetadataAlloc(); 1333 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "=="); 1334 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); 1335 PXOPT_COPY_STR(config->args, where, "-inst", "rawExp.camera", "=="); 1336 PXOPT_COPY_STR(config->args, where, "-telescope", "rawExp.telescope", "=="); 1337 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawExp.dateobs", ">="); 1338 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawExp.dateobs", "<="); 1339 PXOPT_COPY_STR(config->args, where, "-exp_tag", "rawExp.exp_tag", "=="); 1340 PXOPT_COPY_STR(config->args, where, "-exp_type", "rawExp.exp_type", "=="); 1341 PXOPT_COPY_STR(config->args, where, "-filelevel", "rawExp.filelevel", "=="); 1342 PXOPT_COPY_STR(config->args, where, "-state", "rawExp.state", "=="); 1343 PXOPT_COPY_STR(config->args, where, "-reduction", "rawExp.reduction", "=="); 1344 PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "=="); 1345 PXOPT_COPY_F32(config->args, where, "-airmass_min", "rawExp.airmass", ">="); 1346 PXOPT_COPY_F32(config->args, where, "-airmass_max", "rawExp.airmass", "<"); 1347 PXOPT_COPY_RADEC(config->args, where, "-ra_min", "rawExp.ra", ">="); 1348 PXOPT_COPY_RADEC(config->args, where, "-ra_max", "rawExp.ra", "<"); 1349 PXOPT_COPY_RADEC(config->args, where, "-decl_min", "rawExp.decl", ">="); 1350 PXOPT_COPY_RADEC(config->args, where, "-decl_max", "rawExp.decl", "<"); 1351 PXOPT_COPY_F32(config->args, where, "-exp_time_min", "rawExp.exp_time", ">="); 1352 PXOPT_COPY_F32(config->args, where, "-exp_time_max", "rawExp.exp_time", "<"); 1353 PXOPT_COPY_F32(config->args, where, "-sat_pixel_frac_min", "rawExp.sat_pixel_frac", ">="); 1354 PXOPT_COPY_F32(config->args, where, "-sat_pixel_frac_max", "rawExp.sat_pixel_frac", "<"); 1355 PXOPT_COPY_F64(config->args, where, "-bg_min", "rawExp.bg", ">="); 1356 PXOPT_COPY_F64(config->args, where, "-bg_max", "rawExp.bg", "<"); 1357 PXOPT_COPY_F64(config->args, where, "-bg_stdev_min", "rawExp.bg_stdev", ">="); 1358 PXOPT_COPY_F64(config->args, where, "-bg_stdev_max", "rawExp.bg_stdev", "<"); 1359 PXOPT_COPY_F64(config->args, where, "-bg_mean_stdev_min", "rawExp.bg_mean_stdev", ">="); 1360 PXOPT_COPY_F64(config->args, where, "-bg_mean_stdev_max", "rawExp.bg_mean_stdev", "<"); 1361 PXOPT_COPY_F64(config->args, where, "-alt_min", "rawExp.alt", ">="); 1362 PXOPT_COPY_F64(config->args, where, "-alt_max", "rawExp.alt", "<"); 1363 PXOPT_COPY_F64(config->args, where, "-az_min", "rawExp.az", ">="); 1364 PXOPT_COPY_F64(config->args, where, "-az_max", "rawExp.az", "<"); 1365 PXOPT_COPY_F64(config->args, where, "-ccd_temp_min", "rawExp.ccd_temp", ">="); 1366 PXOPT_COPY_F64(config->args, where, "-ccd_temp_max", "rawExp.ccd_temp", "<"); 1367 PXOPT_COPY_F64(config->args, where, "-posang_min", "rawExp.posang", ">="); 1368 PXOPT_COPY_F64(config->args, where, "-posang_max", "rawExp.posang", "<"); 1369 PXOPT_COPY_F32(config->args, where, "-sun_angle_min", "rawExp.sun_angle", ">="); 1370 PXOPT_COPY_F32(config->args, where, "-sun_angle_max", "rawExp.sun_angle", "<"); 1371 PXOPT_COPY_STR(config->args, where, "-object", "rawExp.object", "=="); 1372 PXOPT_COPY_STR(config->args, where, "-comment", "rawExp.comment", "LIKE"); 1373 PXOPT_COPY_STR(config->args, where, "-obs_mode", "rawExp.obs_mode", "LIKE"); 1374 1375 1376 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1377 psStringPrepend(&whereClause,"\n AND "); 1378 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1379 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1380 1381 psString limitString = NULL; 1382 if (limit) { 1383 limitString = psDBGenerateLimitSQL(limit); 1384 psStringPrepend(&limitString, "\n"); 1385 } 1386 // Update the imfiles first, because if you select by state, you'll clobber things 1387 psString query = pxDataGet("regtool_updatebyqueryimfile.sql"); 1388 if (!query) { 1389 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1390 return(false); 1391 } 1392 1393 // printf(query,set_state,whereClause,limitString); 1394 if (!p_psDBRunQueryF(config->dbh, query, set_state, whereClause, limitString ? limitString : "")) { 1395 psError(PXTOOLS_ERR_PROG, false, "database error"); 1396 psFree(limitString); 1397 psFree(query); 1398 psFree(whereClause); 1399 psFree(where); 1400 return(false); 1401 } 1402 1403 psFree(query); 1404 // Now up date the exposure. 1405 query = pxDataGet("regtool_updatebyquery.sql"); 1406 if (!query) { 1407 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1408 return(false); 1409 } 1410 if (!p_psDBRunQueryF(config->dbh, query, set_state,whereClause, limitString ? limitString : "")) { 1411 psError(PXTOOLS_ERR_PROG, false, "database error"); 1412 psFree(limitString); 1413 psFree(query); 1414 psFree(whereClause); 1415 psFree(where); 1416 return(false); 1417 } 1418 1419 psFree(limitString); 1420 psFree(query); 1421 psFree(whereClause); 1422 psFree(where); 1423 1424 return true; 1425 } 1426 1094 1427 1095 1428 … … 1111 1444 psError(PS_ERR_UNKNOWN, false, "database error"); 1112 1445 } 1113 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1446 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1114 1447 return false; 1115 1448 } … … 1137 1470 psError(PS_ERR_UNKNOWN, false, "database error"); 1138 1471 } 1139 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1472 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1140 1473 return false; 1141 1474 } … … 1218 1551 } 1219 1552 1553 if (!pxExportVersion(config, f)) { 1554 psError(PS_ERR_UNKNOWN, false, "failed to write dbversion to output file"); 1555 return false; 1556 } 1557 1220 1558 psMetadata *where = psMetadataAlloc(); 1221 1559 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); … … 1229 1567 psString query = pxDataGet(tables[i].sqlFilename); 1230 1568 if (!query) { 1231 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1569 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1232 1570 return false; 1233 1571 } … … 1287 1625 1288 1626 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 1627 1628 if (!pxCheckImportVersion(config, input)) { 1629 psError(PS_ERR_UNKNOWN, false, "pxCheckImportVersion failed"); 1630 return false; 1631 } 1632 1289 1633 1290 1634 fprintf (stdout, "---- input ----\n"); -
branches/tap_branches/ippTools/src/regtool.h
r23310 r27838 36 36 REGTOOL_MODE_UPDATEPROCESSEDEXP, 37 37 REGTOOL_MODE_CLEARDUPEXP, 38 REGTOOL_MODE_UPDATEBYQUERY, 39 REGTOOL_MODE_PENDINGCOMPRESSIMFILE, 40 REGTOOL_MODE_FINISHCOMPRESSEXP, 38 41 REGTOOL_MODE_EXPORTRUN, 39 42 REGTOOL_MODE_IMPORTRUN -
branches/tap_branches/ippTools/src/regtoolConfig.c
r25775 r27838 43 43 config->modules = pmConfigRead(&argc, argv, NULL); 44 44 if (!config->modules) { 45 psError( PXTOOLS_ERR_CONFIG, false, "Can't find site configuration");45 psError(psErrorCodeLast(), false, "Can't find site configuration"); 46 46 psFree(config); 47 47 return NULL; … … 72 72 ADD_OPT(Str, addprocessedimfileArgs, "-comment", "define comment ", NULL); 73 73 ADD_OPT(Str, addprocessedimfileArgs, "-obs_mode", "define observing mode (data usage goal)", NULL); 74 ADD_OPT(Str, addprocessedimfileArgs, "-obs_group", "define observing group (set of associated observations)", NULL);75 74 ADD_OPT(Str, addprocessedimfileArgs, "-obs_group", "define observing group (set of associated observations)", NULL); 75 ADD_OPT(Str, addprocessedimfileArgs, "-data_state", "define the data_state", "full"); 76 76 // Note: RA & DEC are supplied here in radians, but the query options use degrees. This 77 77 // can be justified by the fact that this option (addprocessedimfile) is a software … … 139 139 ADD_OPT(Str, processedimfileArgs, "-obs_mode", "search by obs_mod", NULL); 140 140 ADD_OPT(Str, processedimfileArgs, "-exp_type", "search by exposure type", NULL); 141 ADD_OPT(Str, processedimfileArgs, "-data_state", "search by data_state", NULL); 141 142 ADD_OPT(Time, processedimfileArgs, "-dateobs_begin", "search for exposures by time (>=)", NULL); 142 143 ADD_OPT(Time, processedimfileArgs, "-dateobs_end", "search for exposures by time (<)", NULL); 143 144 ADD_OPT(U64, processedimfileArgs, "-limit", "limit result set to N items", 0); 144 145 ADD_OPT(Bool, processedimfileArgs, "-faulted", "only return imfiles with a fault status set", false); 146 ADD_OPT(Bool, processedimfileArgs, "-allfiles", "return imfiles regardless of fault status", false); 145 147 ADD_OPT(Bool, processedimfileArgs, "-all", "list without search arguments", false); 146 148 ADD_OPT(Bool, processedimfileArgs, "-simple", "use the simple output format", false); … … 162 164 ADD_OPT(S64, updateprocessedimfileArgs, "-exp_id", "search by exposure ID", 0); 163 165 ADD_OPT(Str, updateprocessedimfileArgs, "-class_id", "search by class ID", NULL); 164 ADD_OPT(S16, updateprocessedimfileArgs, "-burntool_state", "set burntool state", 0);166 ADD_OPT(S16, updateprocessedimfileArgs, "-burntool_state", "set burntool state", INT16_MAX); 165 167 ADD_OPT(S16, updateprocessedimfileArgs, "-fault", "set fault code", INT16_MAX); 166 168 ADD_OPT(S32, updateprocessedimfileArgs, "-set_bytes", "set bytes", INT32_MAX); 169 ADD_OPT(Str, updateprocessedimfileArgs, "-set_md5sum", "set md5sum", NULL); 170 ADD_OPT(Str, updateprocessedimfileArgs, "-set_state", "set data state", NULL); 171 172 167 173 // -pendingexp 168 174 psMetadata *pendingexpArgs = psMetadataAlloc(); … … 185 191 ADD_OPT(Str, addprocessedexpArgs, "-exp_type", "define exposure type", NULL); 186 192 ADD_OPT(Str, addprocessedexpArgs, "-workdir", "define the \"default\" workdir for this exposure", NULL); 193 ADD_OPT(Str, addprocessedexpArgs, "-state", "define the state for this exposure", NULL); 187 194 ADD_OPT(Str, addprocessedexpArgs, "-dvodb", "define the dvodb for the next processing step", NULL); 188 195 ADD_OPT(Str, addprocessedexpArgs, "-tess_id", "define the tess_id for the next processing step", NULL); … … 253 260 psMetadataAddTime(processedexpArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 254 261 psMetadataAddTime(processedexpArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<)", NULL); 262 psMetadataAddStr(processedexpArgs, PS_LIST_TAIL, "-state", 0, "search by exposure state", NULL); 255 263 psMetadataAddStr(processedexpArgs, PS_LIST_TAIL, "-exp_tag", 0, "search by exp_tag", NULL); 256 264 psMetadataAddStr(processedexpArgs, PS_LIST_TAIL, "-exp_type", 0, "search by exp_type", "object"); … … 285 293 psMetadataAddF32(processedexpArgs, PS_LIST_TAIL, "-sun_angle_min", 0, "define min solar angle", NAN); 286 294 psMetadataAddF32(processedexpArgs, PS_LIST_TAIL, "-sun_angle_max", 0, "define max solar angle", NAN); 295 pxspaceAddArguments(processedexpArgs); 296 pxmagicAddArguments(processedexpArgs); 287 297 288 298 psMetadataAddU64(processedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); … … 301 311 psMetadataAddS64(updatedprocessedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 302 312 psMetadataAddS16(updatedprocessedexpArgs, PS_LIST_TAIL, "-fault", 0, "set fault code (required)", INT16_MAX); 303 313 psMetadataAddStr(updatedprocessedexpArgs, PS_LIST_TAIL, "-set_state", 0, "set state", NULL); 304 314 // -exportrun 305 315 psMetadata *exportrunArgs = psMetadataAlloc(); … … 312 322 psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL); 313 323 314 315 324 // -cleardupexp 316 325 psMetadata *cleardupexpArgs = psMetadataAlloc(); 317 326 327 // -updatebyquery 328 psMetadata *updatebyqueryArgs = psMetadataAlloc(); 329 330 psMetadataAddStr(updatebyqueryArgs, PS_LIST_TAIL, "-set_state", 0, "set the state", NULL); 331 332 psMetadataAddS64(updatebyqueryArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 333 psMetadataAddStr(updatebyqueryArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exp_name", NULL); 334 psMetadataAddStr(updatebyqueryArgs, PS_LIST_TAIL, "-inst", 0, "search for camera", NULL); 335 psMetadataAddStr(updatebyqueryArgs, PS_LIST_TAIL, "-telescope", 0, "search for telescope", NULL); 336 psMetadataAddTime(updatebyqueryArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 337 psMetadataAddTime(updatebyqueryArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<)", NULL); 338 psMetadataAddStr(updatebyqueryArgs, PS_LIST_TAIL, "-exp_tag", 0, "search by exp_tag", NULL); 339 psMetadataAddStr(updatebyqueryArgs, PS_LIST_TAIL, "-exp_type", 0, "search by exp_type", NULL); 340 psMetadataAddStr(updatebyqueryArgs, PS_LIST_TAIL, "-filelevel", 0, "search by filelevel", NULL); 341 psMetadataAddStr(updatebyqueryArgs, PS_LIST_TAIL, "-state", 0, "search by rawExp.state", NULL); 342 psMetadataAddStr(updatebyqueryArgs, PS_LIST_TAIL, "-reduction", 0, "search by reduction class", NULL); 343 psMetadataAddStr(updatebyqueryArgs, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); 344 psMetadataAddF32(updatebyqueryArgs, PS_LIST_TAIL, "-airmass_min", 0, "search by min airmass", NAN); 345 psMetadataAddF32(updatebyqueryArgs, PS_LIST_TAIL, "-airmass_max", 0, "search by max airmass", NAN); 346 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-ra_min", 0, "search by min RA (degrees) ", NAN); 347 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-ra_max", 0, "search by max RA (degrees) ", NAN); 348 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-decl_min", 0, "search by min DEC (degrees)", NAN); 349 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-decl_max", 0, "search by max DEC (degrees)", NAN); 350 psMetadataAddF32(updatebyqueryArgs, PS_LIST_TAIL, "-exp_time_min", 0, "search by min exposure time", NAN); 351 psMetadataAddF32(updatebyqueryArgs, PS_LIST_TAIL, "-exp_time_max", 0, "search by max exposure time", NAN); 352 psMetadataAddF32(updatebyqueryArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, "search by min fraction of saturated pixels", NAN); 353 psMetadataAddF32(updatebyqueryArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, "search by max fraction of saturated pixels", NAN); 354 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-bg_min", 0, "search by min background", NAN); 355 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-bg_max", 0, "search by max background", NAN); 356 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, "search by min background standard deviation", NAN); 357 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, "search by max background standard deviation", NAN); 358 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, "search by min background mean standard deviation (across imfiles)", NAN); 359 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, "search by max background mean standard deviation (across imfiles)", NAN); 360 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-alt_min", 0, "search by min altitude", NAN); 361 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-alt_max", 0, "search by max altitude", NAN); 362 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-az_min", 0, "search by min azimuth ", NAN); 363 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-az_max", 0, "search by max azimuth ", NAN); 364 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, "search by min ccd tempature", NAN); 365 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, "search by max ccd tempature", NAN); 366 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-posang_min", 0, "search by min rotator position angle", NAN); 367 psMetadataAddF64(updatebyqueryArgs, PS_LIST_TAIL, "-posang_max", 0, "search by max rotator position angle", NAN); 368 psMetadataAddF32(updatebyqueryArgs, PS_LIST_TAIL, "-sun_angle_min", 0, "search by min solar angle", NAN); 369 psMetadataAddF32(updatebyqueryArgs, PS_LIST_TAIL, "-sun_angle_max", 0, "search by max solar angle", NAN); 370 psMetadataAddStr(updatebyqueryArgs, PS_LIST_TAIL, "-object", 0, "search by exposure object", NULL); 371 psMetadataAddStr(updatebyqueryArgs, PS_LIST_TAIL, "-comment", 0, "search by comment", NULL); 372 psMetadataAddStr(updatebyqueryArgs, PS_LIST_TAIL, "-obs_mode", 0, "search by obs_mode", NULL); 373 374 psMetadataAddU64(updatebyqueryArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 375 psMetadataAddBool(updatebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 376 377 378 // -pendingcompressimfile 379 psMetadata *pendingcompressimfileArgs = psMetadataAlloc(); 380 psMetadataAddS64(pendingcompressimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 381 psMetadataAddStr(pendingcompressimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 382 psMetadataAddBool(pendingcompressimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 383 psMetadataAddU64(pendingcompressimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 384 psMetadataAddBool(pendingcompressimfileArgs, PS_LIST_TAIL, "-compress", 0, "search only for files to compress", 0); 385 psMetadataAddBool(pendingcompressimfileArgs, PS_LIST_TAIL, "-clean", 0, "search only for files to clean originals", 0); 386 387 // -finishcompressexp 388 psMetadata *finishcompressexpArgs = psMetadataAlloc(); 389 psMetadataAddS64(finishcompressexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 390 psMetadataAddBool(finishcompressexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 391 psMetadataAddU64(finishcompressexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 392 318 393 psMetadata *argSets = psMetadataAlloc(); 319 394 psMetadata *modes = psMetadataAlloc(); … … 330 405 PXOPT_ADD_MODE("-updateprocessedexp", "", REGTOOL_MODE_UPDATEPROCESSEDEXP, updatedprocessedexpArgs); 331 406 PXOPT_ADD_MODE("-cleardupexp", "", REGTOOL_MODE_CLEARDUPEXP, cleardupexpArgs); 407 PXOPT_ADD_MODE("-updatebyquery", "", REGTOOL_MODE_UPDATEBYQUERY, updatebyqueryArgs); 408 PXOPT_ADD_MODE("-pendingcompressimfile", "", REGTOOL_MODE_PENDINGCOMPRESSIMFILE, pendingcompressimfileArgs); 409 PXOPT_ADD_MODE("-finishcompressexp", "", REGTOOL_MODE_FINISHCOMPRESSEXP, finishcompressexpArgs); 332 410 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", REGTOOL_MODE_EXPORTRUN, exportrunArgs); 333 411 PXOPT_ADD_MODE("-importrun", "import run from metadata file", REGTOOL_MODE_IMPORTRUN, importrunArgs); -
branches/tap_branches/ippTools/src/stacktool.c
r25851 r27838 124 124 125 125 // select based on properties of the raw exposures 126 PXOPT_COPY_STR(config->args, where, "-select_comment", "rawExp.comment", "LIKE"); 126 127 PXOPT_COPY_STR(config->args, where, "-select_inst", "rawExp.camera", "=="); 127 128 PXOPT_COPY_STR(config->args, where, "-select_telescope", "rawExp.telescope", "=="); … … 145 146 PXOPT_COPY_F32(config->args, where, "-select_fwhm_minor_min", "camProcessedExp.fwhm_minor", ">="); 146 147 PXOPT_COPY_F32(config->args, where, "-select_fwhm_minor_max", "camProcessedExp.fwhm_minor", "<="); 147 PXOPT_COPY_F32(config->args, where, "-select_iq_m2_max", "camProcessedExp.iq_m2", "<=");148 PXOPT_COPY_F32(config->args, where, "-select_iq_m2_min", "camProcessedExp.iq_m2", ">=");149 PXOPT_COPY_F32(config->args, where, "-select_iq_m3_max", "camProcessedExp.iq_m3", "<=");150 PXOPT_COPY_F32(config->args, where, "-select_iq_m4_min", "camProcessedExp.iq_m4", ">=");151 PXOPT_COPY_F32(config->args, where, "-select_iq_m4_max", "camProcessedExp.iq_m4", "<=");152 148 PXOPT_COPY_F32(config->args, where, "-select_iq_m2_max", "camProcessedExp.iq_m2", "<="); 149 PXOPT_COPY_F32(config->args, where, "-select_iq_m2_min", "camProcessedExp.iq_m2", ">="); 150 PXOPT_COPY_F32(config->args, where, "-select_iq_m3_max", "camProcessedExp.iq_m3", "<="); 151 PXOPT_COPY_F32(config->args, where, "-select_iq_m4_min", "camProcessedExp.iq_m4", ">="); 152 PXOPT_COPY_F32(config->args, where, "-select_iq_m4_max", "camProcessedExp.iq_m4", "<="); 153 153 154 PXOPT_COPY_STR(config->args, where, "-select_exp_type", "rawExp.exp_type", "=="); 154 155 PXOPT_COPY_F32(config->args, where, "-select_good_frac_min", "warpSkyfile.good_frac", ">="); 155 156 PXOPT_COPY_STR(config->args, where, "-select_skycell_id", "warpSkyfile.skycell_id", "=="); 156 pxAddLabelSearchArgs (config, where, "-select_label", "warpRun.label", "LIKE"); 157 PXOPT_COPY_STR(config->args, where, "-select_data_group", "warpRun.data_group", "=="); 158 pxAddLabelSearchArgs (config, where, "-select_label", "warpRun.label", "LIKE"); // define using warp label 157 159 158 160 // these are used to build the HAVING restriction 159 161 PXOPT_COPY_S32(config->args, having, "-min_num", "num_warp", ">="); 162 PXOPT_LOOKUP_S32(min_num, config->args, "-min_num", false, false); 163 if (min_num < 2) { 164 psError(PXTOOLS_ERR_CONFIG, true, "Require at least two inputs for a stack, but min_num = %d", 165 min_num); 166 psFree(where); 167 psFree(having); 168 return false; 169 } 160 170 161 171 // other options applied outside of the WHERE … … 168 178 169 179 if (!psListLength(where->list)) { 180 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 170 181 psFree(where); 171 ps Error(PXTOOLS_ERR_DATA, false, "search parameters are required");172 return false; 173 } 174 175 psString select = pxDataGet("stacktool_definebyquery_ part1.sql");182 psFree(having); 183 return false; 184 } 185 186 psString select = pxDataGet("stacktool_definebyquery_select.sql"); 176 187 if (!select) { 177 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 178 return false; 179 } 180 188 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 189 psFree(where); 190 psFree(having); 191 return false; 192 } 193 194 psString where1 = psStringCopy(""); 181 195 if (psListLength(where->list)) { 182 196 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 183 psStringAppend(& select, "AND %s", whereClause);197 psStringAppend(&where1, "\nAND %s", whereClause); 184 198 psFree(whereClause); 185 199 } 186 200 187 psString groupby = pxDataGet("stacktool_definebyquery_part2.sql"); 188 if (!groupby) { 189 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 190 psFree(where); 191 return false; 192 } 193 psStringAppend(&select, " %s", groupby); 194 psFree(groupby); 201 psString where2 = psStringCopy(""); 202 if (label) { 203 psStringAppend(&where2, "\nWHERE stackRun.label = '%s'", label); 204 } 195 205 196 206 // Restriction on aggregated quantities using HAVING … … 224 234 psFree(having); 225 235 226 if (!p_psDBRunQuery (config->dbh, select)) {236 if (!p_psDBRunQueryF(config->dbh, select, where1, where2)) { 227 237 psError(PS_ERR_UNKNOWN, false, "database error"); 228 238 psFree(select); 229 psFree(where); 239 psFree(where1); 240 psFree(where2); 230 241 return false; 231 242 } 232 243 psFree(select); 244 psFree(where1); 245 psFree(where2); 233 246 234 247 psArray *output = p_psDBFetchResult(config->dbh); … … 272 285 } 273 286 if (!insert) { 274 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");287 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 275 288 psFree(where); 276 289 return false; … … 287 300 psString part2 = pxDataGet("stacktool_definebyquery_insert_random_part2.sql"); 288 301 if (!part2) { 289 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");302 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 290 303 psFree(insert); 291 304 return false; … … 593 606 if (!psListLength(where->list)) { 594 607 psFree(where); 595 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");608 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 596 609 return false; 597 610 } … … 600 613 601 614 // pxUpdateRun gets parameters from config->args and updates 602 bool result = pxUpdateRun(config, where, &query, "stackRun", true);615 bool result = pxUpdateRun(config, where, &query, "stackRun", "stack_id", "stackSumSkyfile", true); 603 616 604 617 psFree(query); … … 663 676 psString query = pxDataGet("stacktool_inputskyfile.sql"); 664 677 if (!query) { 665 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");678 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 666 679 return false; 667 680 } … … 669 682 if (psListLength(where->list)) { 670 683 psString whereClause = psDBGenerateWhereConditionSQL(where, "stackInputSkyfile"); 671 psStringAppend(&query, " AND%s", whereClause);684 psStringAppend(&query, " WHERE %s", whereClause); 672 685 psFree(whereClause); 673 686 } … … 737 750 psString query = pxDataGet("stacktool_tosum.sql"); 738 751 if (!query) { 739 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 740 return false; 741 } 742 752 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 753 return false; 754 } 755 756 psString whereClause = psStringCopy(""); // WHERE conditions to add 743 757 if (psListLength(where->list)) { 744 psString whereClause= psDBGenerateWhereConditionSQL(where, NULL);745 psStringAppend(& query, " AND %s", whereClause);746 psFree( whereClause);758 psString new = psDBGenerateWhereConditionSQL(where, NULL); 759 psStringAppend(&whereClause, "\nAND %s", new); 760 psFree(new); 747 761 } 748 762 psFree(where); … … 755 769 } 756 770 757 if (!p_psDBRunQuery (config->dbh, query)) {771 if (!p_psDBRunQueryF(config->dbh, query, whereClause)) { 758 772 psError(PS_ERR_UNKNOWN, false, "database error"); 759 773 psFree(query); … … 908 922 PXOPT_COPY_STR(config->args, where, "-filter", "stackRun.filter", "LIKE"); 909 923 PXOPT_COPY_STR(config->args, where, "-label", "stackRun.label", "=="); 924 PXOPT_COPY_STR(config->args, where, "-data_group", "stackRun.data_group", "LIKE"); 910 925 PXOPT_COPY_S16(config->args, where, "-fault", "stackSumSkyfile.fault", "=="); 911 926 … … 922 937 psString query = pxDataGet("stacktool_sumskyfile.sql"); 923 938 if (!query) { 924 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");939 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 925 940 return false; 926 941 } … … 931 946 psFree(whereClause); 932 947 } else if (!all) { 933 psError(PXTOOLS_ERR_ DATA, true, "search parameters or -all are required");948 psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required"); 934 949 return false; 935 950 } … … 991 1006 psMetadata *where = psMetadataAlloc(); 992 1007 PXOPT_COPY_S64(config->args, where, "-stack_id", "stackSumSkyfile.stack_id", "=="); 993 PXOPT_COPY_STR(config->args, where, "-label", "stackRun.label", "==");1008 pxAddLabelSearchArgs(config, where, "-label", "stackRun.label", "=="); 994 1009 PXOPT_COPY_S16(config->args, where, "-fault", "stackSumSkyfile.fault", "=="); 995 1010 996 1011 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { 997 1012 psFree(where); 998 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");1013 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 999 1014 return false; 1000 1015 } … … 1003 1018 psString delete = pxDataGet("stacktool_revertsumskyfile_delete.sql"); 1004 1019 if (!delete) { 1005 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1020 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1006 1021 return false; 1007 1022 } … … 1084 1099 psString query = pxDataGet("stacktool_pendingcleanuprun.sql"); 1085 1100 if (!query) { 1086 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1101 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1087 1102 return false; 1088 1103 } … … 1148 1163 psString query = pxDataGet("stacktool_pendingcleanupskyfile.sql"); 1149 1164 if (!query) { 1150 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1165 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1151 1166 return false; 1152 1167 } … … 1209 1224 psString query = pxDataGet("stacktool_donecleanup.sql"); 1210 1225 if (!query) { 1211 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1226 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1212 1227 return false; 1213 1228 } … … 1313 1328 psString query = pxDataGet(tables[i].sqlFilename); 1314 1329 if (!query) { 1315 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1330 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1316 1331 return false; 1317 1332 } -
branches/tap_branches/ippTools/src/stacktoolConfig.c
r25835 r27838 38 38 config->modules = pmConfigRead(&argc, argv, NULL); 39 39 if (!config->modules) { 40 psError( PS_ERR_UNKNOWN, false, "Can't find site configuration");40 psError(psErrorCodeLast(), false, "Can't find site configuration"); 41 41 psFree(config); 42 42 return NULL; … … 59 59 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_exp_type", 0, "search for exp_type", "object"); 60 60 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_label", PS_META_DUPLICATE_OK, "search by warpRun label (LIKE comparison, multiple OK)", NULL); 61 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_data_group", 0 , "search by warpRun data_group", NULL); 62 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_comment", 0, "search for comment (LIKE)", NULL); 61 63 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_inst", 0, "search for camera", NULL); 62 64 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_telescope", 0, "search for telescope", NULL); … … 116 118 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define new dist_group", NULL); 117 119 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_note", 0, "define new note", NULL); 118 120 119 121 // -addinputskyfile 120 122 psMetadata *addinputskyfileArgs = psMetadataAlloc(); … … 181 183 #endif 182 184 psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-label", 0, "search by stackRun.label", NULL); 185 psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-data_group", 0, "search by stackRun.data_group (LIKE comparison)", NULL); 183 186 psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-filter", 0, "search by filter (LIKE comparison)", NULL); 184 187 psMetadataAddS16(sumskyfileArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); … … 190 193 psMetadata *revertsumskyfileArgs= psMetadataAlloc(); 191 194 psMetadataAddS64(revertsumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0, "search by stack ID", 0); 192 psMetadataAddStr(revertsumskyfileArgs, PS_LIST_TAIL, "-label", 0, "search by label", 0);195 psMetadataAddStr(revertsumskyfileArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by label", 0); 193 196 psMetadataAddS16(revertsumskyfileArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 194 197 psMetadataAddBool(revertsumskyfileArgs, PS_LIST_TAIL, "-all", 0, "allow no search terms", 0); -
branches/tap_branches/ippTools/src/warptool.c
r25851 r27838 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); … … 104 106 MODECASE(WARPTOOL_MODE_TOCLEANEDSKYFILE, tocleanedskyfileMode); 105 107 MODECASE(WARPTOOL_MODE_TOPURGEDSKYFILE, topurgedskyfileMode); 106 MODECASE(WARPTOOL_MODE_TOSCRUBBEDSKYFILE, toscrubbedskyfileMode);108 MODECASE(WARPTOOL_MODE_TOSCRUBBEDSKYFILE, toscrubbedskyfileMode); 107 109 MODECASE(WARPTOOL_MODE_TOFULLSKYFILE, tofullskyfileMode); 108 110 MODECASE(WARPTOOL_MODE_UPDATESKYFILE, updateskyfileMode); … … 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: … … 247 251 PXOPT_COPY_F32(config->args, where, "-sun_angle_max", "rawExp.sun_angle", "<"); 248 252 PXOPT_COPY_STR(config->args, where, "-reduction", "fakeRun.reduction", "=="); 249 pxAddLabelSearchArgs (config, where, "-label", "fakeRun.label", "==");253 pxAddLabelSearchArgs (config, where, "-label", "fakeRun.label", "=="); // define using fake label 250 254 251 255 if (!psListLength(where->list) && 252 256 !psMetadataLookupBool(NULL, config->args, "-all")) { 253 257 psFree(where); 254 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");258 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 255 259 return false; 256 260 } … … 279 283 psString query = pxDataGet("warptool_definebyquery.sql"); 280 284 if (!query) { 281 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");285 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 282 286 psFree(where); 283 287 return false; … … 383 387 PXOPT_COPY_S64(config->args, where, "-warp_id", "warpRun.warp_id", "=="); 384 388 PXOPT_COPY_STR(config->args, where, "-reduction", "warpRun.reduction", "=="); 385 PXOPT_COPY_STR(config->args, where, "-label", "warpRun.label", "==");386 389 PXOPT_COPY_STR(config->args, where, "-state", "warpRun.state", "=="); 387 PXOPT_COPY_STR(config->args, where, "-data_group","warpRun.data_group", "=="); 388 PXOPT_COPY_STR(config->args, where, "-dist_group","warpRun.dist_group", "=="); 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 } 389 401 390 402 if (!psListLength(where->list)) { 391 403 psFree(where); 392 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");393 return false; 394 } 395 396 psString query = psStringCopy("UPDATE warpRun JOIN fakeRun USING(fake_id) JOIN camRun USING(cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id)");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)"); 397 409 398 410 // pxUpdateRun gets parameters from config->args and updates 399 bool result = pxUpdateRun(config, where, &query, "warpRun", true);411 bool result = pxUpdateRun(config, where, &query, "warpRun", "warp_id", "warpSkyfile", true); 400 412 401 413 psFree(query); … … 419 431 psString query = pxDataGet("warptool_exp.sql"); 420 432 if (!query) { 421 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");433 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 422 434 return false; 423 435 } … … 493 505 psString query = pxDataGet("warptool_imfile.sql"); 494 506 if (!query) { 495 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");507 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 496 508 return false; 497 509 } … … 567 579 psString query = pxDataGet("warptool_tooverlap.sql"); 568 580 if (!query) { 569 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");581 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 570 582 return false; 571 583 } … … 676 688 PXOPT_COPY_STR(config->args, where, "-skycell_id", "warpSkyCellMap.skycell_id", "=="); 677 689 PXOPT_COPY_STR(config->args, where, "-tess_id", "warpSkyCellMap.tess_id", "=="); 678 // PXOPT_COPY_STR(config->args, where, "-label", "warpRun.label", "==");679 690 pxAddLabelSearchArgs (config, where, "-label", "warpRun.label", "=="); 680 691 PXOPT_COPY_S16(config->args, where, "-fault", "warpSkyCellMap.fault", "=="); … … 683 694 && !psMetadataLookupBool(NULL, config->args, "-all")) { 684 695 psFree(where); 685 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");696 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 686 697 return false; 687 698 } … … 691 702 psString query = pxDataGet("warptool_revertoverlap.sql"); 692 703 if (!query) { 693 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");704 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 694 705 if (!psDBRollback(config->dbh)) { 695 706 psError(PS_ERR_UNKNOWN, false, "database error"); … … 823 834 psString query = pxDataGet("warptool_scmap.sql"); 824 835 if (!query) { 825 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");836 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 826 837 return false; 827 838 } … … 896 907 psString query = pxDataGet("warptool_towarped.sql"); 897 908 if (!query) { 898 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 899 return false; 900 } 901 909 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 910 return false; 911 } 912 913 psString whereStr = psStringCopy(""); 902 914 if (psListLength(where->list)) { 903 915 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 904 psStringAppend(& query, "AND %s", whereClause);916 psStringAppend(&whereStr, "\n AND %s", whereClause); 905 917 psFree(whereClause); 906 918 } … … 908 920 909 921 // treat limit == 0 as "no limit" 922 psString limitString = psStringCopy("\n"); 910 923 if (limit) { 911 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)); 912 928 psStringAppend(&query, " %s", limitString); 913 psFree(limitString); 914 } 915 916 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)) { 917 934 psError(PS_ERR_UNKNOWN, false, "database error"); 918 935 psFree(query); 919 936 return false; 920 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); 921 947 psFree(query); 922 948 … … 977 1003 PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false); 978 1004 PXOPT_LOOKUP_F32(good_frac, config->args, "-good_frac", false, false); 979 PXOPT_LOOKUP_S64(magicked, config->args, "- magicked", false, false);1005 PXOPT_LOOKUP_S64(magicked, config->args, "-set_magicked", false, false); 980 1006 981 1007 // default values … … 1040 1066 psString query = pxDataGet("warptool_finished_run_select.sql"); 1041 1067 if (!query) { 1042 psError(PXTOOLS_ERR_ DATA, false, "failed to retrieve SQL statement");1068 psError(PXTOOLS_ERR_SYS, false, "failed to retrieve SQL statement"); 1043 1069 return false; 1044 1070 } … … 1116 1142 psString query = pxDataGet("warptool_finished_run_select.sql"); 1117 1143 if (!query) { 1118 psError(PXTOOLS_ERR_ DATA, false, "failed to retrieve SQL statement");1144 psError(PXTOOLS_ERR_SYS, false, "failed to retrieve SQL statement"); 1119 1145 return false; 1120 1146 } … … 1194 1220 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawExp.dateobs", ">="); 1195 1221 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawExp.dateobs", "<="); 1196 PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", " ==");1222 PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "LIKE"); 1197 1223 PXOPT_COPY_S64(config->args, where, "-magicked", "warpSkyfile.magicked", "=="); 1198 1224 pxAddLabelSearchArgs (config, where, "-label", "warpRun.label", "LIKE"); 1225 pxAddLabelSearchArgs (config, where, "-data_group", "warpRun.data_group", "LIKE"); 1199 1226 1200 1227 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); … … 1206 1233 psString query = pxDataGet("warptool_warped.sql"); 1207 1234 if (!query) { 1208 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1235 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1209 1236 return false; 1210 1237 } … … 1214 1241 psString where2 = NULL; 1215 1242 if (!pxmagicAddWhere(config, &where2, "warpSkyfile")) { 1216 psError( PXTOOLS_ERR_DATA, false, "pxMagicAddWhere failed");1243 psError(psErrorCodeLast(), false, "pxMagicAddWhere failed"); 1217 1244 return false; 1218 1245 } 1219 1246 if (!pxspaceAddWhere(config, &where2, "rawExp")) { 1220 psError( PXTOOLS_ERR_DATA, false, "pxSpaceAddWhere failed");1247 psError(psErrorCodeLast(), false, "pxSpaceAddWhere failed"); 1221 1248 return false; 1222 1249 } … … 1224 1251 if (psListLength(where->list)) { 1225 1252 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1226 psStringAppend(&query, " AND%s", whereClause);1253 psStringAppend(&query, " WHERE %s", whereClause); 1227 1254 psFree(whereClause); 1228 1255 } else if (!all && !where2) { 1229 psError(PXTOOLS_ERR_DATA, true, "search parameters or -all are required"); 1230 return false; 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 } 1231 1266 } 1232 1267 psFree(where); 1233 1234 if (where2) {1235 psStringAppend(&query, " %s", where2);1236 }1237 1268 1238 1269 // treat limit == 0 as "no limit" … … 1294 1325 PXOPT_COPY_STR(config->args, where, "-tess_id", "warpSkyfile.tess_id", "=="); 1295 1326 PXOPT_COPY_STR(config->args, where, "-reduction", "rawExp.reduction", "=="); 1296 // PXOPT_COPY_STR(config->args, where, "-label", "warpRun.label", "==");1297 1327 pxAddLabelSearchArgs (config, where, "-label", "warpRun.label", "=="); 1298 PXOPT_COPY_S16(config->args, where, "-fault", "warpSkyfile.fault", "==");1328 PXOPT_COPY_S16(config->args, where, "-fault", "warpSkyfile.fault", "=="); 1299 1329 1300 1330 if (!psListLength(where->list) 1301 1331 && !psMetadataLookupBool(NULL, config->args, "-all")) { 1302 1332 psFree(where); 1303 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); 1304 return false; 1305 } 1306 1307 if (!psDBTransaction(config->dbh)) { 1308 psError(PS_ERR_UNKNOWN, false, "database error"); 1309 psFree(where); 1310 return false; 1311 } 1312 1313 // Delete product 1314 int numDeleted; // Number deleted 1315 { 1316 psString query = pxDataGet("warptool_revertwarped_delete.sql"); 1317 if (!query) { 1318 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1319 if (!psDBRollback(config->dbh)) { 1320 psError(PS_ERR_UNKNOWN, false, "database error"); 1321 } 1322 return false; 1323 } 1324 1325 if (psListLength(where->list)) { 1326 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1327 psStringAppend(&query, " AND %s", whereClause); 1328 psFree(whereClause); 1329 } 1330 1331 if (!p_psDBRunQuery(config->dbh, query)) { 1332 psError(PS_ERR_UNKNOWN, false, "database error"); 1333 psFree(query); 1334 if (!psDBRollback(config->dbh)) { 1335 psError(PS_ERR_UNKNOWN, false, "database error"); 1336 } 1337 return false; 1338 } 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"); 1339 1358 psFree(query); 1340 1341 numDeleted = psDBAffectedRows(config->dbh); 1342 } 1359 return false; 1360 } 1361 psFree(query); 1362 1363 int numDeleted = psDBAffectedRows(config->dbh); 1343 1364 1344 1365 psLogMsg("warptool", PS_LOG_INFO, "Deleted %d warpSkyfiles", numDeleted); 1345 1366 1346 psFree(where); 1347 1348 if (!psDBCommit(config->dbh)) { 1349 psError(PS_ERR_UNKNOWN, false, "database error"); 1350 return false; 1351 } 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); 1352 1379 1353 1380 return true; … … 1436 1463 psString query = pxDataGet("warptool_pendingcleanuprun.sql"); 1437 1464 if (!query) { 1438 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1465 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1439 1466 return false; 1440 1467 } … … 1499 1526 psString query = pxDataGet("warptool_pendingcleanupskyfile.sql"); 1500 1527 if (!query) { 1501 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1528 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1502 1529 return false; 1503 1530 } … … 1560 1587 psString query = pxDataGet("warptool_donecleanup.sql"); 1561 1588 if (!query) { 1562 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1589 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1563 1590 return false; 1564 1591 } … … 1648 1675 } 1649 1676 1650 // note only updates if warpRun.state = run_state 1651 // XXX note that we have removed this constraint for now 1652 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)) { 1653 1693 psError(PS_ERR_UNKNOWN, false, "database error"); 1654 1694 // rollback … … 1660 1700 } 1661 1701 psFree(query); 1702 psFree(set_magicked_skyfile); 1662 1703 1663 1704 query = pxDataGet("warptool_change_run_state.sql"); 1664 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)) { 1665 1706 // rollback 1666 1707 if (!psDBRollback(config->dbh)) { … … 1670 1711 return false; 1671 1712 } 1713 psFree(set_magicked_run); 1672 1714 1673 1715 if (!psDBCommit(config->dbh)) { … … 1707 1749 if (!state) { 1708 1750 psString query = pxDataGet("warptool_updateskyfile.sql"); 1709 1751 1710 1752 if (!p_psDBRunQueryF(config->dbh, query, fault, warp_id, skycell_id)) { 1711 1753 psError(PS_ERR_UNKNOWN, false, "database error"); … … 1716 1758 else { 1717 1759 if (strcmp(state,"error_cleaned") == 0) { 1718 change_skyfile_data_state(config,"error_cleaned","goto_cleaned");1760 change_skyfile_data_state(config,"error_cleaned","goto_cleaned"); 1719 1761 } 1720 1762 else if (strcmp(state, "error_scrubbed") == 0) { 1721 change_skyfile_data_state(config,"error_scrubbed","goto_scrubbed");1763 change_skyfile_data_state(config,"error_scrubbed","goto_scrubbed"); 1722 1764 } 1723 1765 else if (strcmp(state, "error_purged") == 0) { 1724 change_skyfile_data_state(config,"error_purged","goto_purged");1766 change_skyfile_data_state(config,"error_purged","goto_purged"); 1725 1767 } 1726 1768 else { 1727 psError(PS_ERR_UNKNOWN, false, "unhandled state given");1728 return(false);1769 psError(PS_ERR_UNKNOWN, false, "unhandled state given"); 1770 return(false); 1729 1771 } 1730 1772 } … … 1772 1814 psString query = pxDataGet(tables[i].sqlFilename); 1773 1815 if (!query) { 1774 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1816 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1775 1817 return false; 1776 1818 } … … 1939 1981 psString query = pxDataGet("warptool_runstate.sql"); 1940 1982 if (!query) { 1941 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1983 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1942 1984 return false; 1943 1985 } … … 1948 1990 psFree(whereClause); 1949 1991 } else { 1950 psError(PXTOOLS_ERR_ DATA, true, "search parameters or -all are required");1992 psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required"); 1951 1993 return false; 1952 1994 } … … 2000 2042 return true; 2001 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 } -
branches/tap_branches/ippTools/src/warptool.h
r25822 r27838 55 55 WARPTOOL_MODE_IMPORTRUN, 56 56 WARPTOOL_MODE_RUNSTATE, 57 WARPTOOL_MODE_LISTRUN, 58 WARPTOOL_MODE_SETSKYFILETOUPDATE, 57 59 } warptoolMode; 58 60 -
branches/tap_branches/ippTools/src/warptoolConfig.c
r25835 r27838 40 40 config->modules = pmConfigRead(&argc, argv, NULL); 41 41 if (!config->modules) { 42 psError( PS_ERR_UNKNOWN, false, "Can't find site configuration");42 psError(psErrorCodeLast(), false, "Can't find site configuration"); 43 43 psFree(config); 44 44 return NULL; … … 133 133 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-reduction", 0, "search by warpRun reduction class", NULL); 134 134 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "search by warpRun state", NULL); 135 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0,"search by warpRun label", NULL);135 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by warpRun label", NULL); 136 136 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-data_group", 0, "search by warpRun data_group", NULL); 137 137 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-dist_group", 0, "search by warpRun dist_group", NULL); 138 psMetadataAddTime(updaterunArgs, PS_LIST_TAIL, "-registered_begin", 0, "search for runs by registration time (>=)", NULL); 139 psMetadataAddTime(updaterunArgs, PS_LIST_TAIL, "-registered_end", 0, "search for runs by registration time (<)", NULL); 140 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-destreaked", 0, "search for runs that have been destreaked", false); 141 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-pretend", 0, "only pretend to run the query", false); 138 142 139 143 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "define new state", NULL); … … 142 146 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define new dist_group", NULL); 143 147 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_note", 0, "define new note", NULL); 148 144 149 // -exp 145 150 psMetadata *expArgs = psMetadataAlloc(); … … 212 217 psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-hostname", 0, "define hostname", 0); 213 218 psMetadataAddF32(addwarpedArgs, PS_LIST_TAIL, "-good_frac", 0, "define %% of good pixels", NAN); 214 psMetadataAdd Bool(addwarpedArgs, PS_LIST_TAIL, "-magicked", 0, "define if this skycell has been magicked", false);219 psMetadataAddS64(addwarpedArgs, PS_LIST_TAIL, "-set_magicked", 0, "define if this skycell has been magicked", 0); 215 220 psMetadataAddS16(addwarpedArgs, PS_LIST_TAIL, "-fault", 0, "set fault code", 0); 216 221 psMetadataAddS16(addwarpedArgs, PS_LIST_TAIL, "-quality", 0, "set quality", 0); … … 230 235 psMetadataAddS16(warpedArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 231 236 psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by warpRun label", NULL); 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); 232 239 // add magic related arguments 233 240 pxmagicAddArguments(warpedArgs); … … 238 245 psMetadataAddU64(warpedArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 239 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); 240 273 241 274 // -revertwarped … … 309 342 psMetadataAddS64(tofullskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, "warptool ID to update", 0); 310 343 psMetadataAddStr(tofullskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL); 311 312 // -toupdateskyfile 344 psMetadataAddS64(tofullskyfileArgs, PS_LIST_TAIL, "-set_magicked", 0, "new value for magicked", 0); 345 346 // -updateskyfile 313 347 psMetadata *updateskyfileArgs = psMetadataAlloc(); 314 348 psMetadataAddS64(updateskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, "warptool ID to update", 0); … … 316 350 psMetadataAddS16(updateskyfileArgs, PS_LIST_TAIL, "-fault", 0, "new fault code", 0); 317 351 psMetadataAddStr(updateskyfileArgs, PS_LIST_TAIL, "-set_state", 0, "set state", 0); 318 352 319 353 // -exportrun 320 354 psMetadata *exportrunArgs = psMetadataAlloc(); … … 339 373 psMetadataAddU64(runstateArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 340 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); 341 381 342 382 … … 358 398 PXOPT_ADD_MODE("-advancerun", "", WARPTOOL_MODE_ADVANCERUN, advancerunArgs); 359 399 PXOPT_ADD_MODE("-warped", "", WARPTOOL_MODE_WARPED, warpedArgs); 400 PXOPT_ADD_MODE("-listrun", "", WARPTOOL_MODE_LISTRUN, listrunArgs); 360 401 PXOPT_ADD_MODE("-runstate", "", WARPTOOL_MODE_RUNSTATE, runstateArgs); 361 402 PXOPT_ADD_MODE("-revertwarped", "", WARPTOOL_MODE_REVERTWARPED, revertwarpedArgs); … … 371 412 PXOPT_ADD_MODE("-tofullskyfile", "set skyfile as full (updated)", WARPTOOL_MODE_TOFULLSKYFILE, tofullskyfileArgs); 372 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); 373 415 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", WARPTOOL_MODE_EXPORTRUN, exportrunArgs); 374 416 PXOPT_ADD_MODE("-importrun", "import run from metadata file", WARPTOOL_MODE_IMPORTRUN, importrunArgs);
Note:
See TracChangeset
for help on using the changeset viewer.
