Changeset 28003 for branches/pap/ippTools
- Timestamp:
- May 18, 2010, 12:49:05 PM (16 years ago)
- Location:
- branches/pap
- Files:
-
- 63 edited
- 13 copied
-
. (modified) (1 prop)
-
ippTools/share/Makefile.am (modified) (6 diffs)
-
ippTools/share/camtool_find_pendingexp.sql (modified) (1 diff)
-
ippTools/share/camtool_find_processedexp.sql (modified) (1 diff)
-
ippTools/share/chiptool_change_imfile_data_state.sql (modified) (1 diff)
-
ippTools/share/chiptool_listrun.sql (copied) (copied from trunk/ippTools/share/chiptool_listrun.sql )
-
ippTools/share/chiptool_pendingcleanupimfile.sql (modified) (1 diff)
-
ippTools/share/chiptool_pendingimfile.sql (modified) (3 diffs)
-
ippTools/share/chiptool_processedimfile.sql (modified) (2 diffs)
-
ippTools/share/chiptool_revertupdatedimfile.sql (copied) (copied from trunk/ippTools/share/chiptool_revertupdatedimfile.sql )
-
ippTools/share/detselect_search.sql (modified) (1 diff)
-
ippTools/share/difftool_definewarpstack_part1.sql (modified) (1 diff)
-
ippTools/share/difftool_definewarpwarp_select.sql (modified) (1 diff)
-
ippTools/share/difftool_listrun.sql (copied) (copied from trunk/ippTools/share/difftool_listrun.sql )
-
ippTools/share/difftool_revertdiffskyfile_updated.sql (copied) (copied from trunk/ippTools/share/difftool_revertdiffskyfile_updated.sql )
-
ippTools/share/difftool_setskyfiletoupdate.sql (copied) (copied from trunk/ippTools/share/difftool_setskyfiletoupdate.sql )
-
ippTools/share/difftool_skyfile.sql (modified) (1 diff)
-
ippTools/share/difftool_todiffskyfile.sql (modified) (1 diff)
-
ippTools/share/magicdstool_todestreak_camera.sql (modified) (1 diff)
-
ippTools/share/magicdstool_todestreak_chip.sql (modified) (2 diffs)
-
ippTools/share/magicdstool_todestreak_diff.sql (modified) (3 diffs)
-
ippTools/share/magicdstool_todestreak_raw.sql (modified) (2 diffs)
-
ippTools/share/magicdstool_todestreak_warp.sql (modified) (1 diff)
-
ippTools/share/magicdstool_torevert_camera.sql (modified) (1 diff)
-
ippTools/share/magicdstool_torevert_chip.sql (modified) (1 diff)
-
ippTools/share/magicdstool_torevert_diff.sql (modified) (1 diff)
-
ippTools/share/magicdstool_torevert_raw.sql (modified) (1 diff)
-
ippTools/share/magicdstool_torevert_warp.sql (modified) (1 diff)
-
ippTools/share/magictool_exposure.sql (copied) (copied from trunk/ippTools/share/magictool_exposure.sql )
-
ippTools/share/pstamptool_completedreq.sql (modified) (1 diff)
-
ippTools/share/pstamptool_getdependent.sql (copied) (copied from trunk/ippTools/share/pstamptool_getdependent.sql )
-
ippTools/share/pstamptool_pendingcleanup.sql (copied) (copied from trunk/ippTools/share/pstamptool_pendingcleanup.sql )
-
ippTools/share/pstamptool_pendingdependent.sql (modified) (1 diff)
-
ippTools/share/pstamptool_pendingjob.sql (modified) (2 diffs)
-
ippTools/share/pstamptool_pendingreq.sql (modified) (1 diff)
-
ippTools/share/pstamptool_revertdependent.sql (copied) (copied from trunk/ippTools/share/pstamptool_revertdependent.sql )
-
ippTools/share/pstamptool_updatejob.sql (copied) (copied from trunk/ippTools/share/pstamptool_updatejob.sql )
-
ippTools/share/pxadmin_create_tables.sql (modified) (7 diffs)
-
ippTools/share/pxadmin_drop_tables.sql (modified) (1 diff)
-
ippTools/share/stacktool_tosum.sql (modified) (2 diffs)
-
ippTools/share/warptool_listrun.sql (copied) (copied from trunk/ippTools/share/warptool_listrun.sql )
-
ippTools/share/warptool_pendingcleanupskyfile.sql (modified) (1 diff)
-
ippTools/share/warptool_revertwarped_updated.sql (copied) (copied from trunk/ippTools/share/warptool_revertwarped_updated.sql )
-
ippTools/share/warptool_scmap.sql (modified) (2 diffs)
-
ippTools/share/warptool_setskyfiletoupdate.sql (copied) (copied from trunk/ippTools/share/warptool_setskyfiletoupdate.sql )
-
ippTools/share/warptool_towarped.sql (modified) (3 diffs)
-
ippTools/share/warptool_warped.sql (modified) (2 diffs)
-
ippTools/src/addtool.c (modified) (1 diff)
-
ippTools/src/addtoolConfig.c (modified) (1 diff)
-
ippTools/src/camtool.c (modified) (2 diffs)
-
ippTools/src/camtoolConfig.c (modified) (1 diff)
-
ippTools/src/chiptool.c (modified) (12 diffs)
-
ippTools/src/chiptool.h (modified) (1 diff)
-
ippTools/src/chiptoolConfig.c (modified) (3 diffs)
-
ippTools/src/difftool.c (modified) (18 diffs)
-
ippTools/src/difftool.h (modified) (1 diff)
-
ippTools/src/difftoolConfig.c (modified) (6 diffs)
-
ippTools/src/magicdstool.c (modified) (2 diffs)
-
ippTools/src/magictool.c (modified) (3 diffs)
-
ippTools/src/magictool.h (modified) (1 diff)
-
ippTools/src/magictoolConfig.c (modified) (2 diffs)
-
ippTools/src/pstamptool.c (modified) (30 diffs)
-
ippTools/src/pstamptool.h (modified) (2 diffs)
-
ippTools/src/pstamptoolConfig.c (modified) (6 diffs)
-
ippTools/src/pxchip.c (modified) (2 diffs)
-
ippTools/src/pxmagic.c (modified) (1 diff)
-
ippTools/src/pxtools.h (modified) (1 diff)
-
ippTools/src/regtool.c (modified) (2 diffs)
-
ippTools/src/regtoolConfig.c (modified) (1 diff)
-
ippTools/src/stacktool.c (modified) (1 diff)
-
ippTools/src/stacktoolConfig.c (modified) (1 diff)
-
ippTools/src/staticskytool.c (modified) (2 diffs)
-
ippTools/src/staticskytoolConfig.c (modified) (8 diffs)
-
ippTools/src/warptool.c (modified) (15 diffs)
-
ippTools/src/warptool.h (modified) (1 diff)
-
ippTools/src/warptoolConfig.c (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/pap
- Property svn:mergeinfo changed
-
branches/pap/ippTools/share/Makefile.am
r27391 r28003 31 31 chiptool_donecleanup.sql \ 32 32 chiptool_find_rawexp.sql \ 33 chiptool_listrun.sql \ 33 34 chiptool_pendingcleanupimfile.sql \ 34 35 chiptool_pendingcleanuprun.sql \ … … 36 37 chiptool_processedimfile.sql \ 37 38 chiptool_revertprocessedimfile.sql \ 39 chiptool_revertupdatedimfile.sql \ 38 40 chiptool_run.sql \ 39 41 chiptool_runstate.sql \ 40 42 chiptool_setimfiletoupdate.sql \ 43 chiptool_export_run.sql \ 41 44 chiptool_export_imfile.sql \ 42 45 chiptool_export_processed_imfile.sql \ 43 chiptool_export_run.sql \44 46 chiptool_unmasked.sql \ 45 47 detselect_search.sql \ … … 109 111 difftool_export_skyfile.sql \ 110 112 difftool_inputskyfile.sql \ 113 difftool_listrun.sql \ 111 114 difftool_pendingcleanuprun.sql \ 112 115 difftool_pendingcleanupskyfile.sql \ 113 116 difftool_revertdiffskyfile_delete.sql \ 114 difftool_revertdiffskyfile_update.sql \ 117 difftool_revertdiffskyfile_updated.sql \ 118 difftool_setskyfiletoupdate.sql \ 115 119 difftool_skyfile.sql \ 116 120 difftool_todiffskyfile.sql \ … … 194 198 magictool_rawimfile.sql \ 195 199 magictool_revertnode.sql \ 200 magictool_exposure.sql \ 196 201 magicdstool_clearstatefaults.sql \ 197 202 magicdstool_completed_runs.sql \ … … 221 226 pstamptool_completedreq.sql \ 222 227 pstamptool_datastore.sql \ 228 pstamptool_getdependent.sql \ 223 229 pstamptool_listjob.sql \ 230 pstamptool_pendingcleanup.sql \ 224 231 pstamptool_pendingdependent.sql \ 225 232 pstamptool_pendingjob.sql \ 226 233 pstamptool_pendingreq.sql \ 227 234 pstamptool_project.sql \ 235 pstamptool_revertdependent.sql \ 228 236 pstamptool_revertjob.sql \ 229 237 pstamptool_revertreq.sql \ 230 238 pstamptool_revertreq_deletejobs.sql \ 239 pstamptool_updatejob.sql \ 231 240 pxadmin_create_tables.sql \ 232 241 pxadmin_create_mirror_tables.sql \ … … 290 299 warptool_finish_run.sql \ 291 300 warptool_imfile.sql \ 301 warptool_listrun.sql \ 292 302 warptool_pendingcleanuprun.sql \ 293 303 warptool_pendingcleanupskyfile.sql \ 294 304 warptool_revertoverlap.sql \ 295 305 warptool_revertwarped_delete.sql \ 306 warptool_revertwarped_updated.sql \ 296 307 warptool_runstate.sql \ 297 308 warptool_scmap.sql \ 309 warptool_setskyfiletoupdate.sql \ 298 310 warptool_tooverlap.sql \ 299 311 warptool_towarped.sql \ -
branches/pap/ippTools/share/camtool_find_pendingexp.sql
r26567 r28003 10 10 rawExp.telescope, 11 11 rawExp.filelevel, 12 chipRun.magicked AS chip_magicked 12 chipRun.magicked AS chip_magicked, 13 camProcessedExp.path_base 13 14 FROM camRun 14 15 JOIN chipRun -
branches/pap/ippTools/share/camtool_find_processedexp.sql
r27133 r28003 3 3 camRun.workdir, 4 4 camRun.label, 5 camRun.state, 5 6 camRun.magicked, 6 7 chipRun.chip_id, 8 chipRun.state as chip_state, 7 9 chipRun.magicked as chip_magicked, 8 10 rawExp.exp_tag, -
branches/pap/ippTools/share/chiptool_change_imfile_data_state.sql
r23384 r28003 3 3 -- chip_id and class_id 4 4 UPDATE chipProcessedImfile 5 JOIN chipRun USING(chip_id, exp_id) 5 6 JOIN rawImfile USING(exp_id, class_id) 6 7 SET -
branches/pap/ippTools/share/chiptool_pendingcleanupimfile.sql
r22751 r28003 13 13 USING(chip_id) 14 14 WHERE 15 ((chipRun.state = 'goto_cleaned' AND chipProcessedImfile.data_state = 'full') 15 ((chipRun.state = 'goto_cleaned' AND (chipProcessedImfile.data_state = 'full' 16 OR chipProcessedImfile.data_state = 'update')) 16 17 OR 17 (chipRun.state = 'goto_scrubbed' AND chipProcessedImfile.data_state = 'full')18 (chipRun.state = 'goto_scrubbed' AND chipProcessedImfile.data_state != 'scrubbed') 18 19 OR 19 20 (chipRun.state = 'goto_purged' AND chipProcessedImfile.data_state != 'purged')) -
branches/pap/ippTools/share/chiptool_pendingimfile.sql
r27391 r28003 10 10 rawExp.camera, 11 11 rawExp.telescope, 12 rawExp.filelevel 12 rawExp.filelevel, 13 IFNULL(Label.priority, 10000) AS priority, 14 chipProcessedImfile.path_base 13 15 FROM chipRun 14 16 JOIN rawExp … … 25 27 LEFT JOIN chipMask 26 28 ON chipRun.label = chipMask.label 29 LEFT JOIN Label ON chipRun.label = Label.label 27 30 WHERE 28 31 ((chipRun.state = 'new' … … 33 36 OR 34 37 (chipRun.state = 'update' 35 AND chipProcessedImfile.data_state = 'update')) 36 -- // Restriction to prevent the processing of bad chips. Not needed now. 37 -- AND 38 -- (rawImfile.class_id != 'XY15' AND 39 -- rawImfile.class_id != 'XY32' AND 40 -- rawImfile.class_id != 'XY45') 41 38 AND chipProcessedImfile.data_state = 'update' 39 AND chipProcessedImfile.fault = 0)) 40 AND (Label.active OR Label.active IS NULL) -
branches/pap/ippTools/share/chiptool_processedimfile.sql
r26907 r28003 22 22 rawExp.camera, 23 23 rawExp.telescope, 24 rawExp.filelevel 24 rawExp.filelevel, 25 rawExp.dateobs, 26 rawExp.ra, 27 rawExp.decl, 28 rawExp.exp_time, 29 rawImfile.magicked AS raw_magicked, 30 rawImfile.burntool_state, 31 magicDSRun.state AS dsRun_state 25 32 FROM chipRun 26 33 JOIN chipImfile … … 30 37 JOIN rawExp 31 38 ON chipProcessedImfile.exp_id = rawExp.exp_id 39 JOIN rawImfile 40 ON rawExp.exp_id = rawImfile.exp_id 41 AND chipProcessedImfile.class_id = rawImfile.class_id 42 LEFT JOIN magicDSRun 43 ON stage_id = chip_id AND stage = 'chip' AND magicDSRun.re_place -
branches/pap/ippTools/share/detselect_search.sql
r16514 r28003 27 27 ) as Foo 28 28 WHERE 29 (state = 'stop' OR state = 'register')29 (state = 'stop') -
branches/pap/ippTools/share/difftool_definewarpstack_part1.sql
r26144 r28003 5 5 warpRun.label, 6 6 warpRun.tess_id, 7 warpRun.data_group, 7 8 COUNT(skycell_id) as skycell_count 8 9 FROM warpRun -
branches/pap/ippTools/share/difftool_definewarpwarp_select.sql
r27576 r28003 3 3 inputWarpRun.tess_id AS tess_id, 4 4 inputRawExp.exp_id AS input_exp_id, 5 inputWarpRun.data_group AS input_data_group, 5 6 -- The following trick pulls out the warp_id that has the smallest distance 6 7 SUBSTRING_INDEX(GROUP_CONCAT(templateWarpRun.warp_id ORDER BY ABS(ASIN(SQRT(POW(SIN(0.5*(inputRawExp.decl - templateRawExp.decl)),2) + COS(inputRawExp.decl) * COS(templateRawExp.decl) * POW(SIN(0.5*(inputRawExp.ra - templateRawExp.ra)),2))))), ',', 1) AS template_warp_id -
branches/pap/ippTools/share/difftool_skyfile.sql
r26986 r28003 7 7 diffRun.label, 8 8 diffRun.bothways, 9 diffRun.diff_mode, 9 10 warp1, 10 11 stack1, -
branches/pap/ippTools/share/difftool_todiffskyfile.sql
r27391 r28003 12 12 diffRun.reduction, 13 13 diffRun.bothways, 14 diffRun.diff_mode 14 diffRun.diff_mode, 15 diffSkyfile.path_base 15 16 FROM diffRun 16 17 JOIN diffInputSkyfile USING(diff_id) -
branches/pap/ippTools/share/magicdstool_todestreak_camera.sql
r27301 r28003 3 3 magicDSRun.magic_id, 4 4 chipRun.exp_id, 5 camRun.magicked, 5 6 magicDSRun.label, 6 7 camera, -
branches/pap/ippTools/share/magicdstool_todestreak_chip.sql
r27358 r28003 3 3 magicDSRun.magic_id, 4 4 chipRun.exp_id, 5 chipRun.magicked, 5 6 magicDSRun.label, 6 7 camera, … … 33 34 magicDSRun.state = 'new' 34 35 AND magicDSRun.stage = 'chip' 35 AND chipRun.state = 'full'36 AND (chipRun.state = 'full' OR (chipRun.state = 'update' and chipProcessedImfile.data_state = 'full')) 36 37 AND chipProcessedImfile.fault = 0 37 38 AND chipProcessedImfile.quality = 0 -
branches/pap/ippTools/share/magicdstool_todestreak_diff.sql
r27476 r28003 10 10 stage, 11 11 magicRun.diff_id AS stage_id, 12 diffRun.magicked, 12 13 diffSkyfile.skycell_id AS component, 13 14 CAST(NULL AS CHAR(255)) AS uri, … … 47 48 magicDSRun.label, 48 49 rawExp.camera, 49 magicMask.uri asstreaks_uri,50 magicMask.uri AS streaks_uri, 50 51 (SELECT uri from magicMask where magic_id = inv_magic_id) AS inv_streaks_uri, 51 52 stage, 52 magicRun.diff_id as stage_id, 53 diffSkyfile.skycell_id as component, 53 magicRun.diff_id AS stage_id, 54 diffRun.magicked, 55 diffSkyfile.skycell_id AS component, 54 56 CAST(NULL AS CHAR(255)) AS uri, 55 57 diffSkyfile.path_base, 56 58 magicRun.inverse, 57 CAST(NULL AS CHAR(255)) ascam_path_base,59 CAST(NULL AS CHAR(255)) AS cam_path_base, 58 60 CAST(NULL AS CHAR(255)) AS cam_reduction, 59 61 outroot, … … 80 82 AND diffSkyfile.quality = 0 81 83 AND magicDSFile.component IS NULL 82 ) asmagicDSRun84 ) AS magicDSRun 83 85 -- we need the following so this query is compatible with the other stages 84 86 WHERE magic_ds_id IS NOT NULL -
branches/pap/ippTools/share/magicdstool_todestreak_raw.sql
r27454 r28003 4 4 magicRun.exp_id, 5 5 magicDSRun.label, 6 camera,6 rawExp.camera, 7 7 magicMask.uri as streaks_uri, 8 8 CAST(NULL AS CHAR(255)) AS inv_streaks_uri, 9 9 stage, 10 10 stage_id, 11 rawExp.magicked, 11 12 class_id as component, 12 13 rawImfile.uri AS uri, … … 25 26 JOIN camRun USING(cam_id) 26 27 JOIN camProcessedExp USING(cam_id) 27 JOIN rawImfile ON magicRun.exp_id = rawImfile.exp_id 28 JOIN rawExp ON magicRun.exp_id = rawExp.exp_id 29 JOIN rawImfile ON rawExp.exp_id = rawImfile.exp_id 28 30 LEFT JOIN magicDSFile 29 31 ON magicDSRun.magic_ds_id = magicDSFile.magic_ds_id -
branches/pap/ippTools/share/magicdstool_todestreak_warp.sql
r27301 r28003 9 9 stage, 10 10 stage_id, 11 warpRun.magicked, 11 12 warpSkyfile.skycell_id as component, 12 13 warpSkyfile.uri, -
branches/pap/ippTools/share/magicdstool_torevert_camera.sql
r27015 r28003 13 13 0 AS bothways, 14 14 0 AS bytes, 15 0 AS md5sum 15 0 AS md5sum, 16 camRun.magicked 16 17 FROM magicDSRun 17 18 JOIN magicDSFile using(magic_ds_id) -
branches/pap/ippTools/share/magicdstool_torevert_chip.sql
r27015 r28003 13 13 0 AS bothways, 14 14 0 AS bytes, 15 0 AS md5sum 15 0 AS md5sum, 16 chipRun.magicked 16 17 FROM magicDSRun 17 18 JOIN magicDSFile using(magic_ds_id) 18 19 JOIN camProcessedExp using(cam_id) 19 JOIN chipProcessedImfile ON (stage_id = chipProcessedImfile.chip_id AND component = class_id) 20 JOIN chipRun ON (stage_id = chipRun.chip_id) 21 -- JOIN chipProcessedImfile ON (stage_id = chipProcessedImfile.chip_id AND component = class_id) 22 JOIN chipProcessedImfile USING(chip_id, exp_id) 20 23 JOIN rawExp using(exp_id) 21 24 WHERE magicDSRun.stage = 'chip' -
branches/pap/ippTools/share/magicdstool_torevert_diff.sql
r27015 r28003 13 13 CAST(diffRun.bothways AS SIGNED) AS bothways, 14 14 0 AS bytes, 15 0 AS md5sum 15 0 AS md5sum, 16 diffRun.magicked 16 17 FROM magicDSRun 17 18 JOIN magicRun using(magic_id) -
branches/pap/ippTools/share/magicdstool_torevert_raw.sql
r27015 r28003 10 10 outroot, 11 11 rawImfile.uri AS path_base, 12 NULL AS cam_path_base,12 CAST(NULL AS CHAR(255)) AS cam_path_base, 13 13 0 AS bothways, 14 14 bytes, 15 md5sum 15 md5sum, 16 0 AS magicked 16 17 FROM magicDSRun 17 18 JOIN magicDSFile using(magic_ds_id) -
branches/pap/ippTools/share/magicdstool_torevert_warp.sql
r27015 r28003 13 13 0 AS bothways, 14 14 0 AS bytes, 15 0 AS md5sum 15 0 AS md5sum, 16 warpRun.magicked 16 17 FROM magicDSRun 17 18 JOIN magicDSFile USING(magic_ds_id) -
branches/pap/ippTools/share/pstamptool_completedreq.sql
r25281 r28003 1 SELECT * 1 SELECT pstampRequest.* , 2 IFNULL(Label.priority, 0) AS priority 2 3 FROM pstampRequest 4 LEFT JOIN Label USING(label) 3 5 WHERE state = 'run' 4 6 AND ( -
branches/pap/ippTools/share/pstamptool_pendingdependent.sql
r25793 r28003 1 SELECT * 1 SELECT DISTINCT 2 pstampDependent.*, 3 IFNULL(Label.priority, 10000) AS priority 2 4 FROM pstampDependent 3 WHERE state = 'new' 5 JOIN pstampJob USING(dep_id) 6 JOIN pstampRequest USING(req_id) 7 LEFT JOIN Label ON pstampRequest.label = Label.label 8 WHERE pstampDependent.state = 'new' 9 AND pstampDependent.fault = 0 10 AND pstampJob.state = 'run' 11 AND (pstampRequest.state = 'run' OR pstampRequest.state = 'new') 12 AND (Label.active OR Label.active IS NULL) -
branches/pap/ippTools/share/pstamptool_pendingjob.sql
r25793 r28003 1 SELECT pstampJob.* 1 SELECT pstampJob.*, 2 IFNULL(Label.priority, 10000) AS priority 2 3 FROM pstampJob 3 4 JOIN pstampRequest USING(req_id) 4 5 LEFT JOIN pstampDependent USING(dep_id) 6 LEFT JOIN Label ON pstampRequest.label = Label.label 5 7 WHERE pstampRequest.state = 'run' 6 8 AND pstampRequest.fault = 0 … … 8 10 AND pstampJob.fault = 0 9 11 AND (dep_id = 0 OR pstampDependent.state = 'full') 12 AND (Label.active OR Label.active IS NULL) -
branches/pap/ippTools/share/pstamptool_pendingreq.sql
r25199 r28003 1 1 -- postage stamp requests ready for download and parsing 2 2 SELECT 3 pstampRequest.*, 4 pstampDataStore.outProduct as ds_outProduct 5 FROM pstampRequest 6 LEFT JOIN pstampDataStore 7 USING(ds_id) 8 WHERE pstampRequest.state = 'new' 3 pstampRequest.*, 4 pstampDataStore.outProduct AS ds_outProduct, 5 IFNULL(Label.priority, 10000) AS priority 6 FROM pstampRequest 7 LEFT JOIN pstampDataStore USING(ds_id) 8 LEFT JOIN Label ON pstampRequest.label = Label.label 9 WHERE pstampRequest.state = 'new' 9 10 AND pstampRequest.fault = 0 11 AND (Label.active OR Label.active IS NULL) -
branches/pap/ippTools/share/pxadmin_create_tables.sql
r27546 r28003 1175 1175 KEY(label), 1176 1176 KEY(fault), 1177 KEY(stage), 1178 KEY(stage_id), 1177 1179 FOREIGN KEY(magic_id) REFERENCES magicRun(magic_id), 1178 1180 FOREIGN KEY(inv_magic_id) REFERENCES magicRun(magic_id) … … 1301 1303 outProduct VARCHAR(64), 1302 1304 uri VARCHAR(255), 1305 outdir VARCHAR(255), 1303 1306 fault SMALLINT, 1304 1307 PRIMARY KEY(req_id), … … 1327 1330 stage VARCHAR(64), 1328 1331 stage_id BIGINT, 1332 component VARCHAR(64), 1329 1333 imagedb VARCHAR(64), 1330 1334 rlabel VARCHAR(64), 1331 no_magic TINYINT, 1332 PRIMARY KEY(dep_id) 1335 outdir VARCHAR(255), 1336 need_magic TINYINT, 1337 PRIMARY KEY(dep_id), 1338 KEY(state), 1339 KEY(stage), 1340 KEY(stage_id) 1333 1341 ) ENGINE=innodb DEFAULT CHARSET=latin1; 1334 1342 … … 1342 1350 comment VARCHAR(255), 1343 1351 PRIMARY KEY(target_id), 1352 KEY(stage), 1353 KEY(dist_group), 1354 KEY(filter), 1355 KEY(state), 1344 1356 CONSTRAINT UNIQUE (dist_group, filter, stage, clean) 1345 1357 ) ENGINE=innodb DEFAULT CHARSET=latin1; … … 1365 1377 KEY(state), 1366 1378 KEY(label), 1379 KEY(stage), 1380 KEY(stage_id), 1381 KEY(magic_ds_id), 1382 KEY(fault), 1383 KEY(data_group), 1367 1384 FOREIGN KEY(target_id) REFERENCES distTarget(target_id) 1368 1385 ) ENGINE=innodb DEFAULT CHARSET=latin1; … … 1549 1566 note VARCHAR(255), -- note 1550 1567 registered TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- time run was registered 1551 PRIMARY KEY( dqstats_id),1568 PRIMARY KEY(ss_id), 1552 1569 KEY(state), 1553 1570 KEY(label), … … 1581 1598 KEY(fault), 1582 1599 KEY(quality), 1583 FOREIGN KEY(ss_id) REFERENCES staticskyRun(ss_id), 1600 FOREIGN KEY(ss_id) REFERENCES staticskyRun(ss_id) 1601 ) ENGINE=innodb DEFAULT CHARSET=latin1; 1602 1603 CREATE TABLE Label ( 1604 label VARCHAR(64), 1605 priority INT, 1606 active TINYINT, 1607 comment VARCHAR(80), 1608 PRIMARY KEY(label), 1609 KEY(priority), 1610 KEY(active) 1584 1611 ) ENGINE=innodb DEFAULT CHARSET=latin1; 1585 1612 -
branches/pap/ippTools/share/pxadmin_drop_tables.sql
r25851 r28003 81 81 DROP TABLE IF EXISTS publishDone; 82 82 DROP TABLE IF EXISTS pstampDependent; 83 DROP TABLE IF EXISTS staticskyInput; 84 DROP TABLE IF EXISTS staticskyResult; 85 DROP TABLE IF EXISTS staticskyRun; 86 DROP TABLE IF EXISTS Label; 83 87 84 88 SET FOREIGN_KEY_CHECKS=1 -
branches/pap/ippTools/share/stacktool_tosum.sql
r27679 r28003 6 6 stackRun.reduction, 7 7 stackRun.label, 8 stackRun.state 8 stackRun.state, 9 stackSumSkyfile.path_base 9 10 FROM stackRun 10 11 JOIN stackInputSkyfile USING(stack_id) … … 16 17 -- WHERE hook %s 17 18 GROUP BY stack_id 18 HAVING COUNT(warpRun.state = 'full') = COUNT(stackInputSkyfile.warp_id)19 HAVING SUM(IF(warpRun.state = 'full', 1, 0)) = COUNT(stackInputSkyfile.warp_id) -
branches/pap/ippTools/share/warptool_pendingcleanupskyfile.sql
r24186 r28003 10 10 USING(warp_id) 11 11 WHERE 12 ((warpRun.state = 'goto_cleaned' AND warpSkyfile.data_state = 'full') 12 ((warpRun.state = 'goto_cleaned' AND (warpSkyfile.data_state = 'full' 13 OR warpSkyfile.data_state = 'update')) 13 14 OR 14 15 (warpRun.state = 'goto_scrubbed' AND warpSkyfile.data_state != 'scrubbed') -
branches/pap/ippTools/share/warptool_scmap.sql
r19092 r28003 3 3 chipProcessedImfile.uri, 4 4 chipProcessedImfile.path_base as chip_path_base, 5 camProcessedExp.path_base as cam_path_base 5 camProcessedExp.path_base as cam_path_base, 6 chipProcessedImfile.chip_id, 7 chipRun.state, 8 chipProcessedImfile.data_state, 9 chipProcessedImfile.magicked, 10 rawImfile.magicked AS raw_magicked 6 11 FROM warpRun 7 12 JOIN warpSkyCellMap … … 18 23 ON chipRun.chip_id = chipProcessedImfile.chip_id 19 24 AND warpSkyCellMap.class_id = chipProcessedImfile.class_id 25 JOIN rawImfile 26 ON chipRun.exp_id = rawImfile.exp_id 27 AND chipProcessedImfile.class_id = rawImfile.class_id 20 28 WHERE 21 -- warpRun.state = 'new' 22 fakeRun.state = 'full' 23 AND camRun.state = 'full' 24 AND chipRun.state = 'full' 29 1 -
branches/pap/ippTools/share/warptool_towarped.sql
r27503 r28003 1 SELECT 2 warp_id, 3 warp_skyfile_id, 4 skycell_id, 5 tess_id, 6 fake_id, 7 state, 8 reduction, 9 cam_id, 10 camera, 11 exp_tag, 12 workdir, 13 magicked, 14 path_base 15 FROM ( 1 16 SELECT DISTINCT 2 17 warpSkyCellMap.warp_id, … … 11 26 rawExp.exp_tag, 12 27 warpRun.workdir, 13 chipRun.magicked 28 chipRun.magicked, 29 CAST(NULL AS CHAR(255)) AS path_base 14 30 FROM warpRun 15 31 JOIN warpSkyCellMap … … 45 61 AND warpSkyCellMap.fault = 0 46 62 -- where hook 1 %s 63 -- limit hook 1 %s 64 UNION 65 SELECT 66 warpSkyCellMap.warp_id, 67 warpImfile.warp_skyfile_id, 68 warpSkyCellMap.skycell_id, 69 warpSkyCellMap.tess_id, 70 warpRun.fake_id, 71 warpRun.state, 72 warpRun.reduction, 73 camRun.cam_id, 74 rawExp.camera, 75 rawExp.exp_tag, 76 warpRun.workdir, 77 MIN(chipProcessedImfile.magicked) AS magicked, 78 warpSkyfile.path_base 79 FROM warpRun 80 JOIN warpImfile USING(warp_id) 81 JOIN warpSkyCellMap USING(warp_id, skycell_id) 82 JOIN warpSkyfile USING(warp_id, skycell_id) 83 JOIN fakeRun USING(fake_id) 84 JOIN camRun USING(cam_id) 85 JOIN chipRun USING(chip_id) 86 JOIN rawExp USING(exp_id) 87 LEFT JOIN chipProcessedImfile USING(chip_id, class_id) 88 WHERE warpRun.state = 'update' 89 AND warpSkyfile.data_state = 'update' 90 AND warpSkyfile.fault = 0 91 AND camRun.state = 'full' 92 AND chipProcessedImfile.data_state = 'full' 93 -- if warpSkyfile was magicked previously require inputs to be magicked 94 -- this blocks processing until all the chip inputs have been destreaked 95 AND (warpSkyfile.magicked = 0 OR chipProcessedImfile.magicked >= 0) 96 -- where hook 2 %s 97 GROUP BY warp_id, skycell_id 98 HAVING COUNT(warpSkyCellMap.class_id) = COUNT(chipProcessedImfile.class_id) 99 -- limit hook 2 %s 100 ) as towarped 101 -
branches/pap/ippTools/share/warptool_warped.sql
r25791 r28003 7 7 rawExp.exp_id, 8 8 rawExp.exp_name, 9 rawExp.camera 9 rawExp.camera, 10 rawExp.filter, 11 rawExp.dateobs, 12 rawExp.ra, 13 rawExp.decl, 14 rawExp.exp_time 10 15 FROM warpRun 11 16 JOIN warpSkyfile … … 21 26 JOIN rawExp 22 27 ON chipRun.exp_id = rawExp.exp_id 23 WHERE24 -- bogus test; just here so there there is a 'WHERE' stmt to append conditionals too25 -- XXX EAM : not needed: fix warptool.c26 warpRun.warp_id is NOT NULL -
branches/pap/ippTools/src/addtool.c
r27391 r28003 280 280 PXOPT_COPY_STR(config->args, where, "-state", "addRun.state", "=="); 281 281 PXOPT_COPY_STR(config->args, where, "-reduction", "addRun.reduction", "=="); 282 PXOPT_COPY_STR(config->args, where, "-dvodb", "addRun.dvodb", "=="); 282 283 283 284 if (!psListLength(where->list)) { -
branches/pap/ippTools/src/addtoolConfig.c
r27082 r28003 76 76 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "search by addRun state", NULL); 77 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); 78 79 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 79 80 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "set state", NULL); 80 81 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_label", 0, "set label", NULL); 82 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dvodb", 0, "set dvodb", NULL); 81 83 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_data_group", 0, "define new data_group", NULL); 82 84 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define new dist_group", NULL); -
branches/pap/ippTools/src/camtool.c
r27391 r28003 681 681 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 682 682 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 683 PXOPT_LOOKUP_BOOL(pstamp_order, config->args, "-pstamp_order", false); 683 684 684 685 // generate restrictions … … 741 742 } 742 743 743 // order by cam_id so that the postage stamp parser can easliy find the 'latest' astrometry 744 psStringAppend(&query, " ORDER BY exp_id, cam_id"); 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 } 745 750 746 751 // treat limit == 0 as "no limit" -
branches/pap/ippTools/src/camtoolConfig.c
r27300 r28003 184 184 pxmagicAddArguments(processedexpArgs); 185 185 186 psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-pstamp_order", 0, "order the results for the postage stamp server", false); 187 186 188 psMetadataAddU64(processedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 187 189 psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-all", 0, "list everything without restriction", false); -
branches/pap/ippTools/src/chiptool.c
r27391 r28003 60 60 static bool runstateMode(pxConfig *config); 61 61 static bool setimfiletoupdateMode(pxConfig *config); 62 static bool listrunMode(pxConfig *config); 62 63 63 64 # define MODECASE(caseName, func) \ … … 103 104 MODECASE(CHIPTOOL_MODE_RUNSTATE, runstateMode); 104 105 MODECASE(CHIPTOOL_MODE_SETIMFILETOUPDATE, setimfiletoupdateMode); 106 MODECASE(CHIPTOOL_MODE_LISTRUN, listrunMode); 105 107 default: 106 108 psAbort("invalid option (this should not happen)"); … … 420 422 PXOPT_COPY_S64(config->args, where, "-chip_id", "chipRun.chip_id", "=="); 421 423 // we only allow a single label to match (do not use pxAddLabelSearchArgs here) 422 PXOPT_COPY_STR(config->args, where, "-label", "chipRun.label", " ==");424 PXOPT_COPY_STR(config->args, where, "-label", "chipRun.label", "LIKE"); 423 425 PXOPT_COPY_STR(config->args, where, "-state", "chipRun.state", "=="); 424 PXOPT_COPY_STR(config->args, where, "-data_group", "chipRun.data_group", " ==");425 PXOPT_COPY_STR(config->args, where, "-dist_group", "chipRun.dist_group", " ==");426 PXOPT_COPY_STR(config->args, where, "-data_group", "chipRun.data_group", "LIKE"); 427 PXOPT_COPY_STR(config->args, where, "-dist_group", "chipRun.dist_group", "LIKE"); 426 428 427 429 if (!psListLength(where->list)) { … … 469 471 } 470 472 psFree(where); 473 474 psStringAppend(&query, "\nORDER BY priority DESC, chip_id"); 471 475 472 476 // treat limit == 0 as "no limit" … … 699 703 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 700 704 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 705 PXOPT_LOOKUP_BOOL(allfiles, config->args, "-allfiles", false); 706 if (allfiles) { 707 faulted = false; 708 } 701 709 702 710 psMetadata *where = psMetadataAlloc(); … … 740 748 // list only faulted rows 741 749 psStringAppend(&query, " %s", "AND chipProcessedImfile.fault != 0"); 742 } else {750 } else if (!allfiles) { 743 751 // don't list faulted rows 744 752 psStringAppend(&query, " %s", "AND chipProcessedImfile.fault = 0"); … … 807 815 return false; 808 816 } 817 psString query_update = pxDataGet("chiptool_revertupdatedimfile.sql"); 818 if (!query) { 819 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 820 psFree(where); 821 return false; 822 } 809 823 810 824 if (where && psListLength(where->list)) { 811 825 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 812 826 psStringAppend(&query, " AND %s", whereClause); 827 psStringAppend(&query_update, " AND %s", whereClause); 813 828 psFree(whereClause); 814 829 } … … 822 837 } 823 838 psFree(query); 839 if (!p_psDBRunQuery(config->dbh, query_update)) { 840 psError(PS_ERR_UNKNOWN, false, "database error"); 841 psFree(query_update); 842 return false; 843 } 844 psFree(query_update); 824 845 825 846 return true; … … 1414 1435 } 1415 1436 1416 char *set_magicked_imfile = "";1417 char *set_magicked_run = "";1437 psString set_magicked_imfile = psStringCopy(""); 1438 psString set_magicked_run = psStringCopy(""); 1418 1439 if (!strcmp(data_state, "full")) { 1419 1440 // if (chipProcessedImfile.magicked < 0 and rawImfile.magicked = 0) leave magicked unchanged. This will … … 1421 1442 // otherwise copy magicked from the rawImfile 1422 1443 // Same thing for chipRun/rawExp 1423 set_magicked_imfile = "\n , chipProcessedImfile.magicked = IF((chipProcessedImfile.magicked < 0 AND rawImfile.magicked = 0), chipProcessedImfile.magicked, rawImfile.magicked)"; 1424 set_magicked_run = "\n , chipRun.magicked = IF((chipRun.magicked < 0 AND rawExp.magicked = 0), chipRun.magicked, rawExp.magicked)"; 1444 psStringAppend(&set_magicked_imfile, "\n , chipProcessedImfile.magicked = IF((chipProcessedImfile.magicked < 0" 1445 " AND rawImfile.magicked = 0), chipProcessedImfile.magicked, rawImfile.magicked)"); 1446 psStringAppend(&set_magicked_run, "\n , chipRun.magicked = IF((chipRun.magicked < 0 AND rawExp.magicked = 0), " 1447 " chipRun.magicked, rawExp.magicked)"); 1448 1425 1449 } else if (!strcmp(data_state, "cleaned") || !strcmp(data_state, "purged")) { 1426 1450 // if magicked is non-zero set it to -1 1427 set_magicked_imfile = "\n, chipProcessedImfile.magicked = IF(chipProcessedImfile.magicked = 0, 0, -1)"; 1428 set_magicked_run = "\n, chipRun.magicked = IF(chipRun.magicked = 0, 0, -1)"; 1451 // Once one imfile has been cleaned, the chipRun is no longer 'magicked' 1452 psStringAppend(&set_magicked_imfile, "\n, chipProcessedImfile.magicked = IF(chipProcessedImfile.magicked = 0, 0, -1)," 1453 " chipRun.magicked = IF(chipRun.magicked = 0, 0, -1)"); 1429 1454 } 1430 1455 … … 1440 1465 } 1441 1466 psFree(query); 1467 psFree(set_magicked_imfile); 1468 psFree(set_magicked_run); 1442 1469 if (psDBAffectedRows(config->dbh) < 1) { 1443 1470 psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row"); … … 1757 1784 return true; 1758 1785 } 1786 1787 static bool listrunMode(pxConfig *config) 1788 { 1789 PS_ASSERT_PTR_NON_NULL(config, NULL); 1790 1791 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1792 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1793 PXOPT_LOOKUP_BOOL(pstamp_order, config->args, "-pstamp_order", false); 1794 1795 psMetadata *where = psMetadataAlloc(); 1796 pxchipGetSearchArgs (config, where); // chipRun, chipProcessedImfile, rawExp 1797 PXOPT_COPY_S64(config->args, where, "-chip_id", "chipRun.chip_id", "=="); 1798 PXOPT_COPY_STR(config->args, where, "-reduction", "chipRun.reduction", "=="); 1799 PXOPT_COPY_STR(config->args, where, "-state", "chipRun.state", "=="); 1800 pxAddLabelSearchArgs (config, where, "-label", "chipRun.label", "LIKE"); 1801 pxAddLabelSearchArgs (config, where, "-data_group", "chipRun.data_group", "LIKE"); 1802 pxAddLabelSearchArgs (config, where, "-dist_group", "chipRun.dist_group", "LIKE"); 1803 PXOPT_COPY_S64(config->args, where, "-magicked", "chipRun.magicked", "=="); 1804 1805 psString where2 = NULL; 1806 pxmagicAddWhere(config, &where2, "chipRun"); 1807 // add cuts on ra and decl if supplied 1808 if (!pxspaceAddWhere(config, &where2, "rawExp")) { 1809 psError(psErrorCodeLast(), false, "pxSpaceAddWhere failed"); 1810 return false; 1811 } 1812 1813 psString query = pxDataGet("chiptool_listrun.sql"); 1814 if (!query) { 1815 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1816 return false; 1817 } 1818 1819 if (psListLength(where->list)) { 1820 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1821 psStringAppend(&query, " WHERE %s %s", whereClause, where2 ? where2 : ""); 1822 psFree(whereClause); 1823 } else if (psMetadataLookupBool(NULL, config->args, "-all") || where2) { 1824 psStringAppend(&query, " WHERE chipRun.chip_id IS NOT NULL %s", where2 ? where2 : ""); 1825 } else { 1826 psFree(where); 1827 psError(PXTOOLS_ERR_CONFIG, false, "search parameters (or -all) are required"); 1828 return false; 1829 } 1830 psFree(where); 1831 1832 if (pstamp_order) { 1833 // put runs in order of exposure id with newest chip Runs first 1834 // The postage stamp parser depends on this behavior 1835 psStringAppend(&query, "\nORDER by exp_id, chip_id DESC"); 1836 } 1837 1838 // treat limit == 0 as "no limit" 1839 if (limit) { 1840 psString limitString = psDBGenerateLimitSQL(limit); 1841 psStringAppend(&query, " %s", limitString); 1842 psFree(limitString); 1843 } 1844 1845 if (!p_psDBRunQuery(config->dbh, query)) { 1846 psError(PS_ERR_UNKNOWN, false, "database error"); 1847 psFree(query); 1848 return false; 1849 } 1850 psFree(query); 1851 1852 psArray *output = p_psDBFetchResult(config->dbh); 1853 if (!output) { 1854 psError(PS_ERR_UNKNOWN, false, "database error"); 1855 return false; 1856 } 1857 if (!psArrayLength(output)) { 1858 psTrace("chiptool", PS_LOG_INFO, "no rows found"); 1859 psFree(output); 1860 return true; 1861 } 1862 1863 // negative simple so the default is true 1864 if (!ippdbPrintMetadatas(stdout, output, "chipRun", !simple)) { 1865 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1866 psFree(output); 1867 return false; 1868 } 1869 1870 psFree(output); 1871 1872 return true; 1873 } -
branches/pap/ippTools/src/chiptool.h
r27391 r28003 50 50 CHIPTOOL_MODE_EXPORTRUN, 51 51 CHIPTOOL_MODE_IMPORTRUN, 52 CHIPTOOL_MODE_RUNSTATE 52 CHIPTOOL_MODE_RUNSTATE, 53 CHIPTOOL_MODE_LISTRUN 53 54 } chiptoolMode; 54 55 -
branches/pap/ippTools/src/chiptoolConfig.c
r27391 r28003 196 196 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-all", 0, "list everything without search terms", false); 197 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); 198 199 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 199 200 … … 216 217 psMetadataAddS16(updateprocessedimfileArgs, PS_LIST_TAIL, "-fault", 0, "set fault code (required)", 0); 217 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 218 237 // -block 219 238 psMetadata *blockArgs = psMetadataAlloc(); … … 328 347 PXOPT_ADD_MODE("-revertprocessedimfile","undo a processed imfile", CHIPTOOL_MODE_REVERTPROCESSEDIMFILE,revertprocessedimfileArgs); 329 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); 330 350 PXOPT_ADD_MODE("-advanceexp", "advance completed exposures", CHIPTOOL_MODE_ADVANCEEXP, advanceexpArgs); 331 351 PXOPT_ADD_MODE("-block", "set a label block", CHIPTOOL_MODE_BLOCK, blockArgs); -
branches/pap/ippTools/src/difftool.c
r27445 r28003 57 57 static bool toscrubbedskyfileMode(pxConfig *config); 58 58 static bool tofullskyfileMode(pxConfig *config); 59 static bool listrunMode(pxConfig *config); 60 static bool setskyfiletoupdateMode(pxConfig *config); 59 61 60 62 … … 101 103 MODECASE(DIFFTOOL_MODE_TOSCRUBBEDSKYFILE, toscrubbedskyfileMode); 102 104 MODECASE(DIFFTOOL_MODE_TOFULLSKYFILE, tofullskyfileMode); 105 MODECASE(DIFFTOOL_MODE_LISTRUN, listrunMode); 106 MODECASE(DIFFTOOL_MODE_SETSKYFILETOUPDATE, setskyfiletoupdateMode); 103 107 104 108 default: … … 194 198 PXOPT_COPY_S64(config->args, where, "-diff_id", "diff_id", "=="); 195 199 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 200 PXOPT_COPY_STR(config->args, where, "-data_group","data_group", "=="); 196 201 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 197 202 if (!psListLength(where->list)) { … … 702 707 pxAddLabelSearchArgs (config, where, "-data_group", "diffRun.data_group", "LIKE"); 703 708 709 PXOPT_LOOKUP_BOOL(pstamp_order, config->args, "-pstamp_order", false); 704 710 PXOPT_LOOKUP_BOOL(template, config->args, "-template", false); 705 711 if (!template) { … … 745 751 psFree(where); 746 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 747 761 // treat limit == 0 as "no limit" 748 762 if (limit) { … … 810 824 } 811 825 812 if (!psDBTransaction(config->dbh)) {813 psError(PS_ERR_UNKNOWN, false, "database error");814 psFree(where);815 return false;816 }817 818 // Update state to 'new'819 {820 psString query = pxDataGet("difftool_revertdiffskyfile_update.sql");821 if (!query) {822 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");823 if (!psDBRollback(config->dbh)) {824 psError(PS_ERR_UNKNOWN, false, "database error");825 }826 return false;827 }828 829 if (psListLength(where->list)) {830 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);831 psStringAppend(&query, " AND %s", whereClause);832 psFree(whereClause);833 }834 835 if (!p_psDBRunQuery(config->dbh, query)) {836 psError(PS_ERR_UNKNOWN, false, "database error");837 psFree(query);838 if (!psDBRollback(config->dbh)) {839 psError(PS_ERR_UNKNOWN, false, "database error");840 }841 return false;842 }843 psFree(query);844 845 psLogMsg("difftool", PS_LOG_INFO, "Updated %" PRIu64 " rows", psDBAffectedRows(config->dbh));846 }847 848 // Delete product849 826 { 850 827 psString query = pxDataGet("difftool_revertdiffskyfile_delete.sql"); 851 828 if (!query) { 852 829 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 853 if (!psDBRollback(config->dbh)) { 854 psError(PS_ERR_UNKNOWN, false, "database error"); 855 } 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"); 856 835 return false; 857 836 } … … 860 839 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 861 840 psStringAppend(&query, " AND %s", whereClause); 841 psStringAppend(&query_updated, " AND %s", whereClause); 862 842 psFree(whereClause); 863 843 } … … 866 846 psError(PS_ERR_UNKNOWN, false, "database error"); 867 847 psFree(query); 868 if (!psDBRollback(config->dbh)) {869 psError(PS_ERR_UNKNOWN, false, "database error");870 }871 848 return false; 872 849 } 873 850 psFree(query); 874 875 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 860 psLogMsg("difftool", PS_LOG_INFO, "Updated %" PRIu64 " rows", psDBAffectedRows(config->dbh)); 876 861 } 877 862 878 863 psFree(where); 879 864 880 if (!psDBCommit(config->dbh)) {881 psError(PS_ERR_UNKNOWN, false, "database error");882 return false;883 }884 865 885 866 return true; … … 971 952 return false; 972 953 } 973 psS16 diff_mode = 0;954 psS16 diff_mode = IPP_DIFF_MODE_UNDEFINED; 974 955 if ((input_warp_id != PS_MAX_S64) && (template_warp_id != PS_MAX_S64)) { 975 diff_mode = 1;956 diff_mode = IPP_DIFF_MODE_WARP_WARP; 976 957 } 977 958 else if ((input_warp_id != PS_MAX_S64) && (template_stack_id != PS_MAX_S64)) { 978 diff_mode = 2;959 diff_mode = IPP_DIFF_MODE_WARP_STACK; 979 960 } 980 961 else if ((input_stack_id != PS_MAX_S64) && (template_warp_id != PS_MAX_S64)) { 981 diff_mode = 3;962 diff_mode = IPP_DIFF_MODE_STACK_WARP; 982 963 } 983 964 else if ((input_stack_id != PS_MAX_S64) && (template_stack_id != PS_MAX_S64)) { 984 diff_mode = 4;965 diff_mode = IPP_DIFF_MODE_STACK_STACK; 985 966 } 986 967 … … 1366 1347 } 1367 1348 1368 1369 1349 psString filter = psMetadataLookupStr(&mdok, row, "filter"); 1370 1350 if (!mdok) { … … 1378 1358 return false; 1379 1359 } 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 1380 1376 if (!p_psDBRunQueryF(config->dbh, skycell_query, stackQuery, warp_id, filter, warp2Query)) { 1381 1377 psError(PS_ERR_UNKNOWN, false, "database error"); … … 1416 1412 true, // exposure 1417 1413 0, // magicked 1418 2, // diff_mode for warp-stack difference1414 IPP_DIFF_MODE_WARP_STACK, 1419 1415 note 1420 1416 ); … … 1739 1735 const char *template = psMetadataLookupStr(NULL, row, "template_warp_id"); 1740 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 1741 1742 if (!input_id || !template || !tess_id) { 1742 1743 psError(PXTOOLS_ERR_PROG, false, "Identifiers not found"); … … 1749 1750 return false; 1750 1751 } 1751 1752 1752 1753 diffRunRow *run = diffRunRowAlloc(0, 1753 1754 "reg", … … 1763 1764 true, // exposure 1764 1765 false, // magicked 1765 1, // diff_mode for warp-warp diff1766 IPP_DIFF_MODE_WARP_WARP, 1766 1767 note); // Run to insert 1767 1768 if (!diffRunInsertObject(config->dbh, run)) { … … 2045 2046 false, // exposure 2046 2047 0, // magicked 2047 4,// diff_mode2048 IPP_DIFF_MODE_STACK_STACK, // diff_mode 2048 2049 note 2049 2050 ); … … 2338 2339 psMetadata *where = psMetadataAlloc(); 2339 2340 PXOPT_COPY_S64(config->args, where, "-diff_id", "diff_id", "=="); 2341 PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id", "=="); 2340 2342 2341 2343 if (!pxSetFaultCode(config->dbh, "diffSkyfile", where, fault)) { … … 2606 2608 return true; 2607 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/pap/ippTools/src/difftool.h
r26927 r28003 47 47 DIFFTOOL_MODE_TOPURGEDSKYFILE, 48 48 DIFFTOOL_MODE_TOSCRUBBEDSKYFILE, 49 DIFFTOOL_MODE_TOFULLSKYFILE 50 49 DIFFTOOL_MODE_TOFULLSKYFILE, 50 DIFFTOOL_MODE_LISTRUN, 51 DIFFTOOL_MODE_SETSKYFILETOUPDATE, 51 52 } difftoolMode; 52 53 -
branches/pap/ippTools/src/difftoolConfig.c
r27444 r28003 65 65 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "set state", NULL); 66 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); 67 68 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_label", 0, "define new value for label", 0); 68 69 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "define new state", NULL); … … 147 148 psMetadataAddStr(diffskyfileArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by diffRun label (LIKE comparison)", NULL); 148 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); 149 151 psMetadataAddS16(diffskyfileArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 150 152 pxmagicAddArguments(diffskyfileArgs); 151 153 pxspaceAddArguments(diffskyfileArgs); 152 154 155 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-pstamp_order", 0, "order results for postage stamp server", false); 153 156 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-all", 0, "search without arguments", false); 154 157 psMetadataAddU64(diffskyfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 155 158 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 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 156 183 157 184 // -revertdiffskyfile … … 299 326 psMetadata *updatediffskyfileArgs = psMetadataAlloc(); 300 327 psMetadataAddS64(updatediffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "define diff ID (required)", 0); 301 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); 302 330 303 331 // -tocleanedskyfile … … 321 349 psMetadataAddStr(tofullskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL); 322 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 323 359 324 360 // -exportrun … … 348 384 PXOPT_ADD_MODE("-advance", "", DIFFTOOL_MODE_ADVANCE, advanceArgs); 349 385 PXOPT_ADD_MODE("-diffskyfile", "", DIFFTOOL_MODE_DIFFSKYFILE, diffskyfileArgs); 386 PXOPT_ADD_MODE("-listrun", "", DIFFTOOL_MODE_LISTRUN, listrunArgs); 350 387 PXOPT_ADD_MODE("-revertdiffskyfile","", DIFFTOOL_MODE_REVERTDIFFSKYFILE, revertdiffskyfileArgs); 351 388 PXOPT_ADD_MODE("-definepoprun", "", DIFFTOOL_MODE_DEFINEPOPRUN, definepoprunArgs); … … 357 394 PXOPT_ADD_MODE("-donecleanup", "show runs that have been cleaned", DIFFTOOL_MODE_DONECLEANUP, donecleanupArgs); 358 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 359 398 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", DIFFTOOL_MODE_EXPORTRUN, exportrunArgs); 360 399 PXOPT_ADD_MODE("-importrun", "import run from metadata file", DIFFTOOL_MODE_IMPORTRUN, importrunArgs); -
branches/pap/ippTools/src/magicdstool.c
r27519 r28003 572 572 // we can transition by query as well 573 573 574 575 574 psMetadata *where = psMetadataAlloc(); 576 575 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); … … 1234 1233 psFree(whereClause); 1235 1234 } else { 1236 psError(PS_ERR_UNKNOWN, true, "search arugments are required"); 1237 return false; 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')"); 1238 1245 } 1239 1246 -
branches/pap/ippTools/src/magictool.c
r27274 r28003 48 48 static bool maskMode(pxConfig *config); 49 49 static bool censorrunMode(pxConfig *config); 50 static bool exposureMode(pxConfig *config); 50 51 51 52 static bool setmagicRunState(pxConfig *config, psS64 magic_id, const char *state); … … 87 88 MODECASE(MAGICTOOL_MODE_MASK, maskMode); 88 89 MODECASE(MAGICTOOL_MODE_CENSORRUN, censorrunMode); 90 MODECASE(MAGICTOOL_MODE_EXPOSURE, exposureMode); 89 91 default: 90 92 psAbort("invalid option (this should not happen)"); … … 1514 1516 return true; 1515 1517 } 1518 1519 1520 static bool exposureMode(pxConfig *config) 1521 { 1522 PS_ASSERT_PTR_NON_NULL(config, false); 1523 1524 psMetadata *where = psMetadataAlloc(); 1525 PXOPT_COPY_S64(config->args, where, "-magic_id", "magicRun.magic_id", "=="); 1526 PXOPT_COPY_BOOL(config->args, where, "-inverse", "magicRun.inverse", "=="); 1527 1528 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1529 1530 psString query = pxDataGet("magictool_exposure.sql"); 1531 if (!query) { 1532 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1533 return false; 1534 } 1535 1536 psString whereClause = psStringCopy(""); // WHERE restrictions 1537 if (psListLength(where->list)) { 1538 psString clause = psDBGenerateWhereConditionSQL(where, NULL); 1539 psStringAppend(&whereClause, "\nWHERE %s", clause); 1540 psFree(clause); 1541 } 1542 psFree(where); 1543 1544 if (!p_psDBRunQueryF(config->dbh, query, whereClause, whereClause)) { 1545 psError(PS_ERR_UNKNOWN, false, "database error"); 1546 psFree(query); 1547 return false; 1548 } 1549 psFree(query); 1550 1551 psArray *output = p_psDBFetchResult(config->dbh); 1552 if (!output) { 1553 psErrorCode err = psErrorCodeLast(); 1554 switch (err) { 1555 case PS_ERR_DB_CLIENT: 1556 psError(PXTOOLS_ERR_SYS, false, "database error"); 1557 break; 1558 case PS_ERR_DB_SERVER: 1559 psError(PXTOOLS_ERR_PROG, false, "database error"); 1560 break; 1561 default: 1562 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 1563 break; 1564 } 1565 return false; 1566 } 1567 if (!psArrayLength(output)) { 1568 psTrace("magictool", PS_LOG_INFO, "no rows found"); 1569 psFree(output); 1570 return true; 1571 } 1572 1573 if (!ippdbPrintMetadatas(stdout, output, "magicMask", !simple)) { 1574 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1575 psFree(output); 1576 return false; 1577 } 1578 psFree(output); 1579 1580 return true; 1581 } -
branches/pap/ippTools/src/magictool.h
r24883 r28003 42 42 MAGICTOOL_MODE_MASK, 43 43 MAGICTOOL_MODE_CENSORRUN, 44 MAGICTOOL_MODE_EXPOSURE, 44 45 } MAGICtoolMode; 45 46 -
branches/pap/ippTools/src/magictoolConfig.c
r27274 r28003 168 168 psMetadataAddS64(censorrunArgs, PS_LIST_TAIL, "-exp_id", 0, "define exposure ID", 0); 169 169 psMetadataAddStr(censorrunArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 170 171 // -exposure 172 psMetadata *exposureArgs = psMetadataAlloc(); 173 psMetadataAddS64(exposureArgs, PS_LIST_TAIL, "-magic_id", 0, "define magictool ID", 0); 174 psMetadataAddBool(exposureArgs, PS_LIST_TAIL, "-inverse", 0, "select the inverse subtraction?", false); 175 psMetadataAddBool(exposureArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 170 176 171 177 psFree(now); … … 191 197 PXOPT_ADD_MODE("-mask", "", MAGICTOOL_MODE_MASK, maskArgs); 192 198 PXOPT_ADD_MODE("-censorrun", "", MAGICTOOL_MODE_CENSORRUN, censorrunArgs); 199 PXOPT_ADD_MODE("-exposure", "", MAGICTOOL_MODE_EXPOSURE, exposureArgs); 193 200 194 201 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
branches/pap/ippTools/src/pstamptool.c
r27282 r28003 40 40 static bool updatereqMode(pxConfig *config); 41 41 static bool revertreqMode(pxConfig *config); 42 static bool pendingcleanupMode(pxConfig *config); 42 43 static bool addjobMode(pxConfig *config); 43 44 static bool listjobMode(pxConfig *config); … … 51 52 static bool pendingdependentMode(pxConfig *config); 52 53 static bool updatedependentMode(pxConfig *config); 54 static bool revertdependentMode(pxConfig *config); 53 55 54 56 # define MODECASE(caseName, func) \ … … 80 82 MODECASE(PSTAMPTOOL_MODE_UPDATEREQ, updatereqMode); 81 83 MODECASE(PSTAMPTOOL_MODE_REVERTREQ, revertreqMode); 84 MODECASE(PSTAMPTOOL_MODE_PENDINGCLEANUP, pendingcleanupMode); 82 85 MODECASE(PSTAMPTOOL_MODE_ADDJOB, addjobMode); 83 86 MODECASE(PSTAMPTOOL_MODE_LISTJOB, listjobMode); … … 91 94 MODECASE(PSTAMPTOOL_MODE_PENDINGDEPENDENT, pendingdependentMode); 92 95 MODECASE(PSTAMPTOOL_MODE_UPDATEDEPENDENT, updatedependentMode); 96 MODECASE(PSTAMPTOOL_MODE_REVERTDEPENDENT, revertdependentMode); 93 97 default: 94 98 psAbort("invalid option (this should not happen)"); … … 263 267 NULL, // outProduct 264 268 uri, 269 NULL, // outdir 265 270 0 // fault 266 271 )) { … … 299 304 } 300 305 psFree(where); 306 307 psStringAppend(&query, " ORDER BY priority DESC, req_id"); 301 308 302 309 // treat limit == 0 as "no limit" … … 337 344 } 338 345 339 static bool listreqMode(pxConfig *config)346 static bool pendingcleanupMode(pxConfig *config) 340 347 { 341 348 PS_ASSERT_PTR_NON_NULL(config, false); … … 343 350 psMetadata *where = psMetadataAlloc(); 344 351 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 345 PXOPT_COPY_S64(config->args, where, "-not_req_id", "req_id", "!="); 346 PXOPT_COPY_STR(config->args, where, "-name", "name", "=="); 347 348 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 352 pxAddLabelSearchArgs(config, where, "-label", "label", "LIKE"); 353 354 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 349 355 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 350 356 351 if (!psListLength(where->list)) { 352 psError(PS_ERR_UNKNOWN, true, "-req_id or -name must be supplied"); 353 return false; 354 } 355 356 psString query = psStringCopy("SELECT * from pstampRequest"); 357 358 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 359 psStringAppend(&query, " WHERE %s", whereClause); 360 psFree(whereClause); 361 psFree(where); 357 psString query = pxDataGet("pstamptool_pendingcleanup.sql"); 358 if (!query) { 359 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 360 return false; 361 } 362 363 if (psListLength(where->list)) { 364 psString whereClause = psDBGenerateWhereConditionSQL(where, "pstampRequest"); 365 psStringAppend(&query, " AND %s", whereClause); 366 psFree(whereClause); 367 } 368 psFree(where); 369 370 psStringAppend(&query, " ORDER BY priority DESC, req_id"); 362 371 363 372 // treat limit == 0 as "no limit" … … 381 390 } 382 391 if (!psArrayLength(output)) { 383 psTrace("pstamptool", PS_LOG_INFO, "request not found"); 384 // This causes main to exit with PS_EXIT_DATA_ERROR which the script is looking for 385 psError(PXTOOLS_ERR_CONFIG, true, "request not found"); 386 psFree(output); 387 // we return false so that the caller can determine that a request does not exist 388 return false; 392 psTrace("pstamptool", PS_LOG_INFO, "no rows found"); 393 psFree(output); 394 return true; 389 395 } 390 396 … … 401 407 } 402 408 403 static bool completedreqMode(pxConfig *config) 404 { 405 PS_ASSERT_PTR_NON_NULL(config, false); 406 407 psMetadata *where = psMetadataAlloc(); 408 pxAddLabelSearchArgs(config, where, "-label", "label", "LIKE"); 409 410 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 409 static bool listreqMode(pxConfig *config) 410 { 411 PS_ASSERT_PTR_NON_NULL(config, false); 412 413 psMetadata *where = psMetadataAlloc(); 414 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 415 PXOPT_COPY_S64(config->args, where, "-not_req_id", "req_id", "!="); 416 PXOPT_COPY_STR(config->args, where, "-name", "name", "=="); 417 418 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 411 419 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 412 420 413 psString query = pxDataGet("pstamptool_completedreq.sql"); 414 415 if (psListLength(where->list)) { 416 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 417 psStringAppend(&query, " AND %s", whereClause); 418 psFree(whereClause); 419 } 421 if (!psListLength(where->list)) { 422 psError(PS_ERR_UNKNOWN, true, "-req_id or -name must be supplied"); 423 return false; 424 } 425 426 psString query = psStringCopy("SELECT * from pstampRequest"); 427 428 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 429 psStringAppend(&query, " WHERE %s", whereClause); 430 psFree(whereClause); 420 431 psFree(where); 421 432 … … 432 443 return false; 433 444 } 445 psFree(query); 434 446 435 447 psArray *output = p_psDBFetchResult(config->dbh); … … 438 450 return false; 439 451 } 440 441 452 if (!psArrayLength(output)) { 442 psTrace("pstamptool", PS_LOG_INFO, "no rows found"); 443 psFree(output); 444 return true; 453 psTrace("pstamptool", PS_LOG_INFO, "request not found"); 454 // This causes main to exit with PS_EXIT_DATA_ERROR which the script is looking for 455 psError(PXTOOLS_ERR_CONFIG, true, "request not found"); 456 psFree(output); 457 // we return false so that the caller can determine that a request does not exist 458 return false; 445 459 } 446 460 … … 457 471 } 458 472 473 static bool completedreqMode(pxConfig *config) 474 { 475 PS_ASSERT_PTR_NON_NULL(config, false); 476 477 psMetadata *where = psMetadataAlloc(); 478 pxAddLabelSearchArgs(config, where, "-label", "label", "LIKE"); 479 480 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 481 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 482 483 psString query = pxDataGet("pstamptool_completedreq.sql"); 484 485 if (psListLength(where->list)) { 486 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 487 psStringAppend(&query, " AND %s", whereClause); 488 psFree(whereClause); 489 } 490 psFree(where); 491 492 psStringAppend(&query, " ORDER BY priority DESC, req_id"); 493 494 // treat limit == 0 as "no limit" 495 if (limit) { 496 psString limitString = psDBGenerateLimitSQL(limit); 497 psStringAppend(&query, " %s", limitString); 498 psFree(limitString); 499 } 500 501 if (!p_psDBRunQuery(config->dbh, query)) { 502 psError(PS_ERR_UNKNOWN, false, "database error"); 503 psFree(query); 504 return false; 505 } 506 507 psArray *output = p_psDBFetchResult(config->dbh); 508 if (!output) { 509 psError(PS_ERR_UNKNOWN, false, "database error"); 510 return false; 511 } 512 513 if (!psArrayLength(output)) { 514 psTrace("pstamptool", PS_LOG_INFO, "no rows found"); 515 psFree(output); 516 return true; 517 } 518 519 // negative simple so the default is true 520 if (!ippdbPrintMetadatas(stdout, output, "pstampRequest", !simple)) { 521 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 522 psFree(output); 523 return false; 524 } 525 526 psFree(output); 527 528 return true; 529 } 530 459 531 static bool updatereqMode(pxConfig *config) 460 532 { 461 533 PS_ASSERT_PTR_NON_NULL(config, false); 462 534 463 PXOPT_LOOKUP_S64(req_id, config->args, "-req_id", true, false); 464 PXOPT_LOOKUP_STR(state, config->args, "-state", false, false); 465 PXOPT_LOOKUP_STR(outProduct, config->args, "-outProduct", false, false); 466 PXOPT_LOOKUP_STR(fault, config->args, "-fault", false, false); 467 PXOPT_LOOKUP_STR(uri, config->args, "-uri", false, false); 468 PXOPT_LOOKUP_STR(name, config->args, "-name", false, false); 469 PXOPT_LOOKUP_STR(reqType, config->args, "-reqType", false, false); 470 471 psString query = NULL; 472 psStringAppend(&query, "UPDATE pstampRequest SET"); 473 535 // PXOPT_LOOKUP_S64(req_id, config->args, "-req_id", true, false); 536 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 537 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 538 PXOPT_LOOKUP_STR(outProduct, config->args, "-set_outProduct", false, false); 539 PXOPT_LOOKUP_S16(fault, config->args, "-set_fault", false, false); 540 PXOPT_LOOKUP_STR(uri, config->args, "-set_uri", false, false); 541 PXOPT_LOOKUP_STR(outdir, config->args, "-set_outdir", false, false); 542 PXOPT_LOOKUP_STR(name, config->args, "-set_name", false, false); 543 PXOPT_LOOKUP_STR(reqType, config->args, "-set_reqType", false, false); 544 PXOPT_LOOKUP_BOOL(clearfault,config->args, "-clearfault", false); 545 546 psMetadata *where = psMetadataAlloc(); 547 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 548 PXOPT_COPY_S64(config->args, where, "-req_id_max", "req_id", "<="); 549 PXOPT_COPY_S32(config->args, where, "-fault", "fault", "=="); 550 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 551 pxAddLabelSearchArgs(config, where, "-label", "pstampRequest.label", "LIKE"); 552 if (!psListLength(where->list)) { 553 psFree(where); 554 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 555 return false; 556 } 557 558 psString query = psStringCopy("UPDATE pstampRequest SET"); 559 560 psString stateCheck = NULL; 474 561 char c = ' '; 475 562 if (state) { 476 563 psStringAppend(&query, "%c state = '%s'", c, state); 477 564 c = ','; 565 if (!strcmp(state, "goto_cleaned")) { 566 psStringAppend(&stateCheck, " AND state != 'cleaned'"); 567 } 568 } 569 if (label) { 570 psStringAppend(&query, "%c label = '%s'", c, label); 571 c = ','; 478 572 } 479 573 if (outProduct) { … … 481 575 c = ','; 482 576 } 483 if (fault) { 484 psStringAppend(&query, "%c fault = %s", c, fault); 577 if (outdir) { 578 psStringAppend(&query, "%c outdir = '%s'", c, outdir); 579 c = ','; 580 } 581 if (clearfault) { 582 if (fault) { 583 psError(PXTOOLS_ERR_CONFIG, true, "only one of -fault and -clearfault is allowed"); 584 return false; 585 } 586 psStringAppend(&query, "%c fault = 0", c); 587 c = ','; 588 } else if (fault) { 589 psStringAppend(&query, "%c fault = %d", c, fault); 485 590 c = ','; 486 591 } … … 497 602 c = ','; 498 603 } 499 if (!state && !outProduct && !fault && !uri && !name && !reqType) { 500 psError(PS_ERR_UNKNOWN, true, "at least one of state, outProduct, fault, uri, name, and reqType must be specified"); 501 return false; 502 } 503 504 psStringAppend(&query, " WHERE req_id = %" PRId64, req_id); 604 if (c != ',') { 605 psError(PS_ERR_UNKNOWN, true, "at least one set option is required"); 606 return false; 607 } 608 609 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 610 psStringAppend(&query, "\nWHERE %s", whereClause); 611 psFree(whereClause); 612 psFree(where); 613 614 if (stateCheck) { 615 psStringAppend(&query, "%s", stateCheck); 616 } 505 617 506 618 if (!p_psDBRunQuery(config->dbh, query)) { … … 510 622 } 511 623 512 psU64 affected = psDBAffectedRows(config->dbh); 513 // note zero is not an error 514 if (affected > 1) { 515 psError(PS_ERR_UNKNOWN, false, "should have affected one row but %" 516 PRIu64 " rows were modified", affected); 517 return false; 518 } 624 // psU64 affected = psDBAffectedRows(config->dbh); 625 // psLogMsg("pstamptool", PS_LOG_INFO, "Updated %" PRIu64 " pstampRequests", affected); 519 626 520 627 return true; … … 528 635 529 636 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 530 PXOPT_COPY_S64(config->args, where, "-fault", " req_id", "==");637 PXOPT_COPY_S64(config->args, where, "-fault", "fault", "=="); 531 638 PXOPT_COPY_STR(config->args, where, "-state", "pstampRequest.state", "=="); 532 639 pxAddLabelSearchArgs(config, where, "-label", "pstampRequest.label", "LIKE"); … … 703 810 PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "=="); 704 811 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 705 pxAddLabelSearchArgs(config, where, "-label", " label", "LIKE");812 pxAddLabelSearchArgs(config, where, "-label", "pstampRequest.label", "LIKE"); 706 813 707 814 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); … … 722 829 psFree(where); 723 830 831 psStringAppend(&query, " ORDER BY priority DESC, req_id"); 832 724 833 // treat limit == 0 as "no limit" 725 834 if (limit) { … … 763 872 PS_ASSERT_PTR_NON_NULL(config, false); 764 873 765 PXOPT_LOOKUP_S64(job_id, config->args, "-job_id", true, false); 766 PXOPT_LOOKUP_STR(state, config->args, "-state", true, false); 767 PXOPT_LOOKUP_STR(fault, config->args, "-fault", false, false); 768 769 psString faultStr = NULL; 770 if (!fault) { 771 faultStr = psStringCopy(""); 772 } else { 773 psStringAppend(&faultStr, ", fault = '%s'", fault); 774 } 775 776 char *query ="UPDATE pstampJob" 777 " SET state = '%s' %s" 778 " WHERE job_id = %" PRId64; 779 780 if (!p_psDBRunQueryF(config->dbh, query, state, faultStr, job_id)) { 874 PXOPT_LOOKUP_S64(job_id, config->args, "-job_id", false, false); 875 PXOPT_LOOKUP_S64(dep_id, config->args, "-dep_id", false, false); 876 877 if (!job_id && !dep_id) { 878 psError(PS_ERR_UNKNOWN, true, "at least -job_id or -dep_id is required"); 879 return false; 880 } 881 882 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 883 PXOPT_LOOKUP_S32(fault, config->args, "-set_fault", false, false); 884 885 if (!state && !fault) { 886 psError(PS_ERR_UNKNOWN, true, "at least one of -set_state and -set_fault is required"); 887 return false; 888 } 889 890 psMetadata *where = psMetadataAlloc(); 891 892 PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "=="); 893 PXOPT_COPY_S64(config->args, where, "-dep_id", "dep_id", "=="); 894 895 psString query = pxDataGet("pstamptool_updatejob.sql"); 896 897 char c = ' '; 898 if (state) { 899 psStringAppend(&query, "\n %c pstampJob.state = '%s'", c, state); 900 c = ','; 901 } 902 if (fault) { 903 psStringAppend(&query, "\n %c pstampJob.fault = %d", c, fault); 904 c = ','; 905 } 906 907 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 908 psStringAppend(&query, " WHERE %s", whereClause); 909 psFree(whereClause); 910 psFree(where); 911 912 if (!p_psDBRunQuery(config->dbh, query)) { 781 913 psError(PS_ERR_UNKNOWN, false, "database error"); 782 914 psFree(query); 783 915 return false; 784 916 } 785 psFree( faultStr);917 psFree(query); 786 918 787 919 psU64 affected = psDBAffectedRows(config->dbh); 788 if (affected != 1) { 789 psError(PS_ERR_UNKNOWN, false, "should have affected one row but %" 790 PRIu64 " rows were modified", affected); 791 return false; 792 } 920 psLogMsg("pstamptool", PS_LOG_INFO, "Updated %" PRIu64 " pstampJobs", affected); 793 921 794 922 return true; … … 952 1080 PXOPT_LOOKUP_STR(stage, config->args, "-stage", true, false); 953 1081 PXOPT_LOOKUP_S64(stage_id, config->args, "-stage_id", true, false); 1082 PXOPT_LOOKUP_STR(component, config->args, "-component", true, false); 954 1083 PXOPT_LOOKUP_STR(imagedb, config->args, "-imagedb", true, false); 955 PXOPT_LOOKUP_STR(rlabel, config->args, "-rlabel", false, false); 956 PXOPT_LOOKUP_BOOL(no_magic, config->args, "-no_magic", false); 1084 PXOPT_LOOKUP_STR(rlabel, config->args, "-rlabel", true, false); 1085 PXOPT_LOOKUP_STR(outdir, config->args, "-outdir", true, false); 1086 PXOPT_LOOKUP_BOOL(need_magic, config->args, "-need_magic", false); 957 1087 PXOPT_LOOKUP_BOOL(no_create, config->args, "-no_create", false); 958 1088 … … 961 1091 PXOPT_COPY_STR(config->args, where, "-imagedb", "imagedb", "=="); 962 1092 PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "=="); 1093 PXOPT_COPY_STR(config->args, where, "-component", "component", "=="); 963 1094 964 1095 // start a transaction eraly so it will contain any row level locks … … 968 1099 } 969 1100 970 psString query = pxDataGet("pstamptool_ pendingdependent.sql");1101 psString query = pxDataGet("pstamptool_getdependent.sql"); 971 1102 if (!query) { 972 1103 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 973 1104 return false; 974 1105 } 975 psString whereClause = psDBGenerateWhere SQL(where, "WHERE");1106 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 976 1107 if (!no_create) { 977 1108 // This will lock the row until the transaction is committed 978 psStringAppend(&query, " %s FOR UPDATE", whereClause);1109 psStringAppend(&query, " AND %s FOR UPDATE", whereClause); 979 1110 } else { 980 psStringAppend(&query, " %s", whereClause);1111 psStringAppend(&query, " AND %s", whereClause); 981 1112 } 982 1113 psFree(whereClause); … … 1027 1158 stage, 1028 1159 stage_id, 1160 component, 1029 1161 imagedb, 1030 1162 rlabel, 1031 no_magic 1163 need_magic, 1164 outdir, 1165 0 // fault 1032 1166 )) { 1033 1167 if (!psDBRollback(config->dbh)) { … … 1038 1172 } 1039 1173 1174 // if we try and get this after commit zero is returned 1175 psS64 dep_id = psDBLastInsertID(config->dbh); 1176 if (!dep_id) { 1177 psError(PS_ERR_UNKNOWN, false, "psDBLastInsertID returned NULL"); 1178 if (!psDBRollback(config->dbh)) { 1179 psError(PS_ERR_UNKNOWN, false, "database error"); 1180 } 1181 return false; 1182 } 1183 1040 1184 if (!psDBCommit(config->dbh)) { 1041 1185 // rollback … … 1047 1191 } 1048 1192 1049 psS64 dep_id = psDBLastInsertID(config->dbh);1050 1193 printf("%" PRId64 "\n", dep_id); 1051 1194 … … 1058 1201 1059 1202 psMetadata *where = psMetadataAlloc(); 1203 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 1204 PXOPT_COPY_STR(config->args, where, "-imagedb", "imagedb", "=="); 1205 PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "=="); 1206 PXOPT_COPY_S64(config->args, where, "-dep_id", "dep_id", "=="); 1207 PXOPT_COPY_STR(config->args, where, "-rlabel", "rlabel", "=="); 1208 pxAddLabelSearchArgs(config, where, "-label", "pstampRequest.label", "=="); 1060 1209 1061 1210 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); … … 1069 1218 1070 1219 if (psListLength(where->list)) { 1071 psString whereClause = psDBGenerateWhereConditionSQL(where, "pstampDependent");1220 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1072 1221 psStringAppend(&query, " AND %s", whereClause); 1073 1222 psFree(whereClause); 1074 1223 } 1075 1224 psFree(where); 1225 1226 psStringAppend(&query, " ORDER BY priority DESC, req_id"); 1076 1227 1077 1228 // treat limit == 0 as "no limit" … … 1116 1267 1117 1268 PXOPT_LOOKUP_S64(dep_id, config->args, "-dep_id", true, false); 1118 PXOPT_LOOKUP_STR(state, config->args, "-set_state", true, false); 1119 1120 char *query ="UPDATE pstampDependent" 1121 " SET state = '%s'" 1122 " WHERE dep_id = %" PRId64; 1123 1124 if (!p_psDBRunQueryF(config->dbh, query, state, dep_id)) { 1269 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 1270 PXOPT_LOOKUP_S16(fault, config->args, "-set_fault", false, false); 1271 1272 if (!fault && !state) { 1273 psError(PS_ERR_UNKNOWN, true, "at least one of -set_state or fault is required"); 1274 return false; 1275 } 1276 psString query = psStringCopy("UPDATE pstampDependent SET"); 1277 bool needComma = false; 1278 if (state) { 1279 psStringAppend(&query, " state = '%s'", state); 1280 needComma = true; 1281 } 1282 if (fault) { 1283 psStringAppend(&query, "%s fault = %d", needComma ? ", " : "", fault); 1284 needComma = true; 1285 } 1286 psStringAppend(&query, " WHERE dep_id = %" PRId64, dep_id); 1287 1288 if (!p_psDBRunQuery(config->dbh, query)) { 1125 1289 psError(PS_ERR_UNKNOWN, false, "database error"); 1126 1290 psFree(query); … … 1137 1301 return true; 1138 1302 } 1303 static bool revertdependentMode(pxConfig *config) 1304 { 1305 PS_ASSERT_PTR_NON_NULL(config, false); 1306 1307 psMetadata *where = psMetadataAlloc(); 1308 PXOPT_COPY_S64(config->args, where, "-fault", "pstampDependent.fault", "=="); 1309 PXOPT_COPY_S64(config->args, where, "-dep_id", "dep_id", "=="); 1310 pxAddLabelSearchArgs(config, where, "-label", "pstampRequest.label", "=="); 1311 1312 if (!psListLength(where->list)) { 1313 psFree(where); 1314 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1315 return false; 1316 } 1317 psString query = pxDataGet("pstamptool_revertdependent.sql"); 1318 if (!query) { 1319 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1320 return false; 1321 } 1322 1323 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1324 psStringAppend(&query, " AND %s", whereClause); 1325 psFree(whereClause); 1326 psFree(where); 1327 1328 if (!p_psDBRunQuery(config->dbh, query)) { 1329 psError(PS_ERR_UNKNOWN, false, "database error"); 1330 psFree(query); 1331 return false; 1332 } 1333 1334 return true; 1335 } -
branches/pap/ippTools/src/pstamptool.h
r25793 r28003 34 34 PSTAMPTOOL_MODE_UPDATEREQ, 35 35 PSTAMPTOOL_MODE_REVERTREQ, 36 PSTAMPTOOL_MODE_PENDINGCLEANUP, 36 37 PSTAMPTOOL_MODE_ADDJOB, 37 38 PSTAMPTOOL_MODE_LISTJOB, … … 46 47 PSTAMPTOOL_MODE_PENDINGDEPENDENT, 47 48 PSTAMPTOOL_MODE_UPDATEDEPENDENT, 49 PSTAMPTOOL_MODE_REVERTDEPENDENT, 48 50 } pstamptoolMode; 49 51 -
branches/pap/ippTools/src/pstamptoolConfig.c
r27282 r28003 98 98 // -updatereq 99 99 psMetadata *updatereqArgs = psMetadataAlloc(); 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 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-fault", 0, "define request fault code", NULL); 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); 100 psMetadataAddS64(updatereqArgs, PS_LIST_TAIL, "-req_id", 0, "req_id for which to update", 0); 101 psMetadataAddS64(updatereqArgs, PS_LIST_TAIL, "-req_id_max", 0, "maximum req_id for which to update", 0); 102 psMetadataAddS16(updatereqArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 103 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-state", 0, "search by state", NULL); 104 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by pstampJob label (LIKE comparision)", NULL); 105 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-set_state", 0, "new state", NULL); 106 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-set_label", 0, "new label", NULL); 107 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-set_outProduct", 0, "new outProduct", NULL); 108 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-set_outdir", 0, "new outdir", NULL); 109 psMetadataAddS16(updatereqArgs, PS_LIST_TAIL, "-set_fault", 0, "new fault code", 0); 110 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-set_uri", 0, "new uri", NULL); 111 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-set_name", 0, "new name", NULL); 112 psMetadataAddStr(updatereqArgs, PS_LIST_TAIL, "-set_reqType", 0, "new reqType", NULL); 113 psMetadataAddBool(updatereqArgs, PS_LIST_TAIL, "-clearfault", 0, "set fault to zero", false); 107 114 108 115 // -revertreq … … 112 119 psMetadataAddStr(revertreqArgs, PS_LIST_TAIL, "-state", 0, "state to revert", NULL); 113 120 psMetadataAddStr(revertreqArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by pstampRequest label (LIKE comparision)", NULL); 121 122 // -pendingcleanup 123 psMetadata *pendingcleanupArgs = psMetadataAlloc(); 124 psMetadataAddS64(pendingcleanupArgs, PS_LIST_TAIL, "-req_id", 0, "define req_id", 0); 125 psMetadataAddS64(pendingcleanupArgs, PS_LIST_TAIL, "-ds_id", 0, "define ds_id", 0); 126 psMetadataAddStr(pendingcleanupArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by pstampRequest label (LIKE comparision)", NULL); 127 psMetadataAddU64(pendingcleanupArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 128 psMetadataAddBool(pendingcleanupArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 114 129 115 130 // -addjob … … 144 159 psMetadata *updatejobArgs = psMetadataAlloc(); 145 160 psMetadataAddS64(updatejobArgs, PS_LIST_TAIL, "-job_id", 0, "req_id for which to change state", 0); 146 psMetadataAddStr(updatejobArgs, PS_LIST_TAIL, "-state", 0, "new state", NULL); 147 psMetadataAddStr(updatejobArgs, PS_LIST_TAIL, "-fault", 0, "new result", NULL); 161 psMetadataAddS64(updatejobArgs, PS_LIST_TAIL, "-dep_id", 0, "dep_id for which to change state", 0); 162 psMetadataAddStr(updatejobArgs, PS_LIST_TAIL, "-set_state", 0, "new state", NULL); 163 psMetadataAddS16(updatejobArgs, PS_LIST_TAIL, "-set_fault", 0, "new result", 0); 148 164 149 165 // -revertjob … … 159 175 // -getdependent 160 176 psMetadata *getdependentArgs = psMetadataAlloc(); 161 psMetadataAddS64(getdependentArgs, PS_LIST_TAIL, "-stage_id", 0, "define id for dependent run (required)", 0); 162 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-stage", 0, "define stage for dependent run (required)", NULL); 163 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-imagedb", 0, "define imagedb for depenent run (required)", NULL); 164 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-rlabel", 0, "define label for dependent run", NULL); 165 psMetadataAddBool(getdependentArgs,PS_LIST_TAIL, "-no_magic", 0, "define no_magic", false); 166 psMetadataAddBool(getdependentArgs,PS_LIST_TAIL, "-no_create", 0, "if no run exists do not create one", false); 177 // arguabely all of these could be -set_ arguments, but since this mode is both a query and 178 // a create if doesn't exist I like it this way 179 psMetadataAddS64(getdependentArgs, PS_LIST_TAIL, "-stage_id", 0, "define stage id for dependent (required)", 0); 180 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-stage", 0, "define stage for dependent (required)", NULL); 181 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-component", 0, "define component for depenent (required)", NULL); 182 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-imagedb", 0, "define imagedb for depenent (required)", NULL); 183 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-rlabel", 0, "define label for dependent ", NULL); 184 psMetadataAddBool(getdependentArgs,PS_LIST_TAIL, "-need_magic", 0, "define need_magic", false); 185 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-outdir", 0, "define output directory for dependent (required)", NULL); 186 psMetadataAddBool(getdependentArgs,PS_LIST_TAIL, "-no_create", 0, "if no matching dependent do not create one", false); 167 187 168 188 // -updatedependent 169 189 psMetadata *updatedependentArgs = psMetadataAlloc(); 170 psMetadataAddS64(updatedependentArgs, PS_LIST_TAIL, "-dep_id", 0, "define id for dependent run (required)", 0); 171 psMetadataAddStr(updatedependentArgs, PS_LIST_TAIL, "-set_state", 0, "new value for state (required)", NULL); 190 psMetadataAddS64(updatedependentArgs, PS_LIST_TAIL, "-dep_id", 0, "define id for dependent (required)", 0); 191 psMetadataAddStr(updatedependentArgs, PS_LIST_TAIL, "-set_state", 0, "new value for state", NULL); 192 psMetadataAddS16(updatedependentArgs, PS_LIST_TAIL, "-set_fault", 0, "new value for fault", 0); 193 194 // -revertdependent 195 psMetadata *revertdependentArgs = psMetadataAlloc(); 196 psMetadataAddS64(revertdependentArgs, PS_LIST_TAIL, "-dep_id", 0, "define id for dependent", 0); 197 psMetadataAddStr(revertdependentArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label for dependent ", NULL); 198 psMetadataAddS16(revertdependentArgs, PS_LIST_TAIL, "-fault", 0, "define fault", 0); 172 199 173 200 // -pendingdependent 174 201 psMetadata *pendingdependentArgs = psMetadataAlloc(); 175 psMetadataAddS64(pendingdependentArgs, PS_LIST_TAIL, "-stage_id", 0, "define id for dependent run", 0); 176 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-stage", 0, "define stage for dependent run", NULL); 177 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-imagedb", 0, "define imagedb for depenent run", NULL); 178 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-rlabel", 0, "define label for dependent run", NULL); 179 psMetadataAddBool(pendingdependentArgs,PS_LIST_TAIL, "-no_magic", 0, "define no_magic", false); 180 psMetadataAddBool(pendingdependentArgs,PS_LIST_TAIL, "-no_create", 0, "if no run exists do not create one", false); 202 psMetadataAddS64(pendingdependentArgs, PS_LIST_TAIL, "-stage_id", 0, "define id for dependent", 0); 203 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-stage", 0, "define stage for dependent", NULL); 204 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-component", 0, "define component for dependent", NULL); 205 psMetadataAddS64(pendingdependentArgs, PS_LIST_TAIL, "-dep_id", 0, "define dep_id for dependent", 0); 206 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label for pstampRequest", NULL); 207 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-rlabel", 0, "define label for dependent", NULL); 208 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-imagedb", 0, "define imagedb for depenent", NULL); 181 209 psMetadataAddU64(pendingdependentArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 182 210 psMetadataAddBool(pendingdependentArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 216 244 PXOPT_ADD_MODE("-completedreq", "", PSTAMPTOOL_MODE_COMPLETEDREQ, completedreqArgs); 217 245 PXOPT_ADD_MODE("-revertreq", "", PSTAMPTOOL_MODE_REVERTREQ, revertreqArgs); 246 PXOPT_ADD_MODE("-pendingcleanup", "", PSTAMPTOOL_MODE_PENDINGCLEANUP, pendingcleanupArgs); 218 247 219 248 PXOPT_ADD_MODE("-addjob", "", PSTAMPTOOL_MODE_ADDJOB, addjobArgs); … … 230 259 PXOPT_ADD_MODE("-updatedependent", "", PSTAMPTOOL_MODE_UPDATEDEPENDENT, updatedependentArgs); 231 260 PXOPT_ADD_MODE("-pendingdependent","", PSTAMPTOOL_MODE_PENDINGDEPENDENT, pendingdependentArgs); 261 PXOPT_ADD_MODE("-revertdependent","", PSTAMPTOOL_MODE_REVERTDEPENDENT, revertdependentArgs); 232 262 233 263 PXOPT_ADD_MODE("-addproject", "", PSTAMPTOOL_MODE_ADDPROJECT, addprojectArgs); -
branches/pap/ippTools/src/pxchip.c
r27246 r28003 69 69 psMetadataAddF64(md, PS_LIST_TAIL, "-posang_min", 0, "search by min rotator position angle", NAN); 70 70 psMetadataAddF64(md, PS_LIST_TAIL, "-posang_max", 0, "search by max rotator position angle", NAN); 71 psMetadataAddF32(md, PS_LIST_TAIL, "-sun_angle_min", 0, "search by min solar angle", NAN);72 psMetadataAddF32(md, PS_LIST_TAIL, "-sun_angle_max", 0, "search by max solar angle", NAN);71 psMetadataAddF32(md, PS_LIST_TAIL, "-sun_angle_min", 0, "search by min solar angle", NAN); 72 psMetadataAddF32(md, PS_LIST_TAIL, "-sun_angle_max", 0, "search by max solar angle", NAN); 73 73 psMetadataAddStr(md, PS_LIST_TAIL, "-object", 0, "search by exposure object", NULL); 74 74 psMetadataAddStr(md, PS_LIST_TAIL, "-comment", 0, "search by comment field (LIKE comparison)", NULL); 75 psMetadataAddStr(md, PS_LIST_TAIL, "-obs_mode", 0, "search by observation mode", NULL);75 psMetadataAddStr(md, PS_LIST_TAIL, "-obs_mode", 0, "search by observation mode", NULL); 76 76 return true; 77 77 } … … 121 121 PXOPT_COPY_F64(config->args, where, "-posang_min", "rawExp.posang", ">="); 122 122 PXOPT_COPY_F64(config->args, where, "-posang_max", "rawExp.posang", "<"); 123 PXOPT_COPY_STR(config->args, where, "-object", "rawExp.object", " ==");123 PXOPT_COPY_STR(config->args, where, "-object", "rawExp.object", "LIKE"); 124 124 PXOPT_COPY_F32(config->args, where, "-sun_angle_min", "rawExp.sun_angle", ">="); 125 125 PXOPT_COPY_F32(config->args, where, "-sun_angle_max", "rawExp.sun_angle", "<"); -
branches/pap/ippTools/src/pxmagic.c
r26981 r28003 85 85 } 86 86 if (destreaked) { 87 psStringAppend(out, " AND %s.magicked >0", table);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/pap/ippTools/src/pxtools.h
r27391 r28003 286 286 PXOPT_COPY_PRIMITIVE(from, to, psU64, U64, oldname, newname, comment) 287 287 288 #define PXOPT_COPY_BOOL(from, to, oldname, newname, comment) \ 289 PXOPT_COPY_V(from, to, psBool, Bool, oldname, newname, comment) 288 290 289 291 /*** these PXOPT_ADD_WHERE macros are used to construct the default sql elements ***/ -
branches/pap/ippTools/src/regtool.c
r27536 r28003 350 350 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 351 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 } 352 356 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 353 357 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); … … 389 393 // list only faulted rows 390 394 psStringAppend(&query, " %s", "AND rawImfile.fault != 0"); 391 } else {395 } else if (!allfiles) { 392 396 // don't list faulted rows 393 397 psStringAppend(&query, " %s", "AND rawImfile.fault = 0"); -
branches/pap/ippTools/src/regtoolConfig.c
r27315 r28003 144 144 ADD_OPT(U64, processedimfileArgs, "-limit", "limit result set to N items", 0); 145 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); 146 147 ADD_OPT(Bool, processedimfileArgs, "-all", "list without search arguments", false); 147 148 ADD_OPT(Bool, processedimfileArgs, "-simple", "use the simple output format", false); -
branches/pap/ippTools/src/stacktool.c
r27679 r28003 155 155 PXOPT_COPY_F32(config->args, where, "-select_good_frac_min", "warpSkyfile.good_frac", ">="); 156 156 PXOPT_COPY_STR(config->args, where, "-select_skycell_id", "warpSkyfile.skycell_id", "=="); 157 PXOPT_COPY_STR(config->args, where, "-select_data_group", "warpRun.data_group", "=="); 157 158 pxAddLabelSearchArgs (config, where, "-select_label", "warpRun.label", "LIKE"); // define using warp label 158 159 -
branches/pap/ippTools/src/stacktoolConfig.c
r27121 r28003 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); 61 62 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_comment", 0, "search for comment (LIKE)", NULL); 62 63 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_inst", 0, "search for camera", NULL); -
branches/pap/ippTools/src/staticskytool.c
r27546 r28003 107 107 108 108 // optional 109 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false);110 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false);111 PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false);112 PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false);113 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false);109 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 110 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 111 PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false); 112 PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false); 113 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 114 114 PXOPT_LOOKUP_TIME(registered, config->args, "-set_registered", false, false); 115 115 … … 118 118 119 119 PXOPT_COPY_F32(config->args, where, "-select_good_frac_min", "stackSumSkyfile.good_frac", ">="); 120 PXOPT_COPY_STR(config->args, where, "-select_skycell_id", "stackRun.skycell_id","==");121 pxAddLabelSearchArgs(config, where, "-select_label", "stackRun.label","LIKE");122 pxAddLabelSearchArgs(config, where, "-select_filter", "stackRun.filter","LIKE");120 PXOPT_COPY_STR(config->args, where, "-select_skycell_id", "stackRun.skycell_id", "=="); 121 pxAddLabelSearchArgs(config, where, "-select_label", "stackRun.label", "LIKE"); 122 pxAddLabelSearchArgs(config, where, "-select_filter", "stackRun.filter", "LIKE"); 123 123 124 124 // these are used to build the HAVING restriction 125 PXOPT_COPY_S32(config->args, having, "-min_num", "num",">=");125 PXOPT_COPY_S32(config->args, having, "-min_num", "num", ">="); 126 126 PXOPT_COPY_S32(config->args, having, "-min_filter", "num_filter", ">="); 127 127 -
branches/pap/ippTools/src/staticskytoolConfig.c
r27546 r28003 46 46 47 47 // -definebyquery 48 // XXX need a 'ra_min,max', 'dec_min,max' : to do this, we need a table of skycell boundaries 48 49 psMetadata *definebyqueryArgs = psMetadataAlloc(); 49 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir (required)", NULL); 50 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_label", 0, "define label", NULL); 51 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data group", NULL); 52 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define dist group", NULL); 53 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 54 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction", NULL); 50 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_skycell_id", 0, "search for skycell_id", NULL); 51 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_tess_id", 0, "search for tess_id", NULL); 52 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_good_frac_min", 0, "define min good_frac", 0.0); 53 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_label", PS_META_DUPLICATE_OK, "search by stackRun label (LIKE comparison, multiple OK)", NULL); 54 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_filter", PS_META_DUPLICATE_OK, "search by filter (LIKE comparison, multiple OK)", NULL); 55 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir (required)", NULL); 56 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_label", 0, "define label", NULL); 57 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data group", NULL); 58 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define dist group", NULL); 59 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 60 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction", NULL); 55 61 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-set_registered", 0, "time detrend run was registered", now); 56 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_skycell_id", 0, "search for skycell_id", NULL);57 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_tess_id", 0, "search for tess_id", NULL);58 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_good_frac_min", 0, "define min good_frac", 0.0);59 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_label", PS_META_DUPLICATE_OK, "search by stackRun label (LIKE comparison, multiple OK)", NULL);60 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_filter", PS_META_DUPLICATE_OK, "search by filter (LIKE comparison, multiple OK)", NULL);61 62 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend", 0, "do not actually modify the database", false); 62 63 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 64 65 // -updaterun 65 66 psMetadata *updaterunArgs = psMetadataAlloc(); 66 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-s s_id", 0, "search by stack ID", 0);67 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-sky_id", 0, "search by stack ID", 0); 67 68 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "search by state", NULL); 68 69 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "search by label", 0); … … 75 76 // -inputs 76 77 psMetadata *inputsArgs = psMetadataAlloc(); 77 psMetadataAddS64(inputsArgs, PS_LIST_TAIL, "-s s_id", 0, "search by staticsky ID", 0);78 psMetadataAddS64(inputsArgs, PS_LIST_TAIL, "-sky_id", 0, "search by staticsky ID", 0); 78 79 psMetadataAddU64(inputsArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 79 80 psMetadataAddBool(inputsArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 81 82 // -todo 82 83 psMetadata *todoArgs = psMetadataAlloc(); 83 psMetadataAddS64(todoArgs, PS_LIST_TAIL, "-s s_id", 0, "search by staticsky ID", 0);84 psMetadataAddS64(todoArgs, PS_LIST_TAIL, "-sky_id", 0, "search by staticsky ID", 0); 84 85 psMetadataAddStr(todoArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by label", NULL); 85 86 psMetadataAddU64(todoArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); … … 88 89 // -addresult 89 90 psMetadata *addresultArgs = psMetadataAlloc(); 90 psMetadataAddS64(addresultArgs, PS_LIST_TAIL, "-s s_id", 0, "define stack ID (required)", 0);91 psMetadataAddS64(addresultArgs, PS_LIST_TAIL, "-sky_id", 0, "define stack ID (required)", 0); 91 92 psMetadataAddStr(addresultArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", 0); 92 93 psMetadataAddF32(addresultArgs, PS_LIST_TAIL, "-dtime_phot", 0, "define photometry time", NAN); … … 100 101 // -result 101 102 psMetadata *resultArgs= psMetadataAlloc(); 102 psMetadataAddS64(resultArgs, PS_LIST_TAIL, "-s s_id", 0, "search by staticsky ID", 0);103 psMetadataAddS64(resultArgs, PS_LIST_TAIL, "-sky_id", 0, "search by staticsky ID", 0); 103 104 psMetadataAddStr(resultArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tess ID", 0); 104 105 psMetadataAddStr(resultArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell ID", 0); … … 111 112 // -revert 112 113 psMetadata *revertArgs= psMetadataAlloc(); 113 psMetadataAddS64(revertArgs, PS_LIST_TAIL, "-s s_id", 0, "search by staticsky ID", 0);114 psMetadataAddS64(revertArgs, PS_LIST_TAIL, "-sky_id", 0, "search by staticsky ID", 0); 114 115 psMetadataAddStr(revertArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by label", 0); 115 116 psMetadataAddS16(revertArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); … … 118 119 // -updateresult 119 120 psMetadata *updateresultArgs = psMetadataAlloc(); 120 psMetadataAddS64(updateresultArgs, PS_LIST_TAIL, "-s s_id", 0, "define staticksky ID (required)", 0);121 psMetadataAddS64(updateresultArgs, PS_LIST_TAIL, "-sky_id", 0, "define staticksky ID (required)", 0); 121 122 psMetadataAddS16(updateresultArgs, PS_LIST_TAIL, "-fault", 0, "set fault code (required)", 0); 122 123 123 124 // -exportrun 124 125 psMetadata *exportrunArgs = psMetadataAlloc(); 125 psMetadataAddS64(exportrunArgs, PS_LIST_TAIL, "-s s_id", 0, "export this staticsky ID (required)", 0);126 psMetadataAddS64(exportrunArgs, PS_LIST_TAIL, "-sky_id", 0, "export this staticsky ID (required)", 0); 126 127 psMetadataAddStr(exportrunArgs, PS_LIST_TAIL, "-outfile", 0, "export to this file (required)", NULL); 127 128 psMetadataAddU64(exportrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); -
branches/pap/ippTools/src/warptool.c
r27503 r28003 59 59 static bool importrunMode(pxConfig *config); 60 60 static bool runstateMode(pxConfig *config); 61 static bool listrunMode(pxConfig *config); 62 static bool setskyfiletoupdateMode(pxConfig *config); 61 63 62 64 static bool parseAndInsertSkyCellMap(pxConfig *config, const char *mapfile); … … 110 112 MODECASE(WARPTOOL_MODE_IMPORTRUN, importrunMode); 111 113 MODECASE(WARPTOOL_MODE_RUNSTATE, runstateMode); 114 MODECASE(WARPTOOL_MODE_LISTRUN, listrunMode); 115 MODECASE(WARPTOOL_MODE_SETSKYFILETOUPDATE, setskyfiletoupdateMode); 112 116 113 117 default: … … 244 248 PXOPT_COPY_F64(config->args, where, "-posang_max", "rawExp.posang", "<"); 245 249 PXOPT_COPY_STR(config->args, where, "-object", "rawExp.object", "=="); 250 PXOPT_COPY_STR(config->args, where, "-comment", "rawExp.comment", "LIKE"); 251 PXOPT_COPY_STR(config->args, where, "-obs_mode", "rawExp.obs_mode", "LIKE"); 246 252 PXOPT_COPY_F32(config->args, where, "-sun_angle_min", "rawExp.sun_angle", ">="); 247 253 PXOPT_COPY_F32(config->args, where, "-sun_angle_max", "rawExp.sun_angle", "<"); … … 269 275 PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false); 270 276 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 277 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 271 278 272 279 // check mode … … 306 313 if (!psArrayLength(output)) { 307 314 psTrace("warptool", PS_LOG_INFO, "no rows found"); 315 psFree(output); 316 return true; 317 } 318 319 if (pretend) { 320 // negative simple so the default is true 321 if (!ippdbPrintMetadatas(stdout, output, "rawExp", !simple)) { 322 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 323 psFree(output); 324 return false; 325 } 308 326 psFree(output); 309 327 return true; … … 916 934 917 935 // treat limit == 0 as "no limit" 936 psString limitString = psStringCopy("\n"); 918 937 if (limit) { 919 psString limitString = psDBGenerateLimitSQL(limit); 938 // We apply the limit to both sides of the UNION 939 // to avoid slow queries and to the query itself 940 // to satisfy the user's requested limit 941 psStringAppend(&limitString, "%s", psDBGenerateLimitSQL(limit)); 920 942 psStringAppend(&query, " %s", limitString); 921 psFree(limitString);922 } 923 943 } 944 945 #define TWO_WHERES 924 946 #ifdef TWO_WHERES 925 if (!p_psDBRunQueryF(config->dbh, query, whereStr, whereStr)) {947 if (!p_psDBRunQueryF(config->dbh, query, whereStr, limitString, whereStr, limitString)) { 926 948 psError(PS_ERR_UNKNOWN, false, "database error"); 927 949 psFree(query); … … 935 957 } 936 958 #endif 959 psFree(limitString); 937 960 psFree(whereStr); 938 961 psFree(query); … … 994 1017 PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false); 995 1018 PXOPT_LOOKUP_F32(good_frac, config->args, "-good_frac", false, false); 996 PXOPT_LOOKUP_S64(magicked, config->args, "- magicked", false, false);1019 PXOPT_LOOKUP_S64(magicked, config->args, "-set_magicked", false, false); 997 1020 998 1021 // default values … … 1242 1265 if (psListLength(where->list)) { 1243 1266 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1244 psStringAppend(&query, " AND%s", whereClause);1267 psStringAppend(&query, " WHERE %s", whereClause); 1245 1268 psFree(whereClause); 1246 1269 } else if (!all && !where2) { … … 1248 1271 return false; 1249 1272 } 1273 1274 if (where2) { 1275 if (psListLength(where->list)) { 1276 psStringAppend(&query, " %s", where2); 1277 } else { 1278 psStringAppend(&query, " WHERE 1 %s", where2); 1279 } 1280 } 1250 1281 psFree(where); 1251 1252 if (where2) {1253 psStringAppend(&query, " %s", where2);1254 }1255 1282 1256 1283 // treat limit == 0 as "no limit" … … 1322 1349 } 1323 1350 1324 if (!psDBTransaction(config->dbh)) { 1325 psError(PS_ERR_UNKNOWN, false, "database error"); 1326 psFree(where); 1327 return false; 1328 } 1329 1330 // Delete product 1331 int numDeleted; // Number deleted 1332 { 1333 psString query = pxDataGet("warptool_revertwarped_delete.sql"); 1334 if (!query) { 1335 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1336 if (!psDBRollback(config->dbh)) { 1337 psError(PS_ERR_UNKNOWN, false, "database error"); 1338 } 1339 return false; 1340 } 1341 1342 if (psListLength(where->list)) { 1343 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1344 psStringAppend(&query, " AND %s", whereClause); 1345 psFree(whereClause); 1346 } 1347 1348 if (!p_psDBRunQuery(config->dbh, query)) { 1349 psError(PS_ERR_UNKNOWN, false, "database error"); 1350 psFree(query); 1351 if (!psDBRollback(config->dbh)) { 1352 psError(PS_ERR_UNKNOWN, false, "database error"); 1353 } 1354 return false; 1355 } 1351 psString query = pxDataGet("warptool_revertwarped_delete.sql"); 1352 if (!query) { 1353 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1354 return false; 1355 } 1356 psString query_updated = pxDataGet("warptool_revertwarped_updated.sql"); 1357 if (!query_updated) { 1358 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1359 return false; 1360 } 1361 1362 if (psListLength(where->list)) { 1363 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1364 psStringAppend(&query, " AND %s", whereClause); 1365 psStringAppend(&query_updated, " AND %s", whereClause); 1366 psFree(whereClause); 1367 } 1368 psFree(where); 1369 1370 if (!p_psDBRunQuery(config->dbh, query)) { 1371 psError(PS_ERR_UNKNOWN, false, "database error"); 1356 1372 psFree(query); 1357 1358 numDeleted = psDBAffectedRows(config->dbh); 1359 } 1373 return false; 1374 } 1375 psFree(query); 1376 1377 int numDeleted = psDBAffectedRows(config->dbh); 1360 1378 1361 1379 psLogMsg("warptool", PS_LOG_INFO, "Deleted %d warpSkyfiles", numDeleted); 1362 1380 1363 psFree(where); 1364 1365 if (!psDBCommit(config->dbh)) { 1366 psError(PS_ERR_UNKNOWN, false, "database error"); 1367 return false; 1368 } 1381 // fix any faulted warpSkyfiles in data_state 'update' 1382 1383 if (!p_psDBRunQuery(config->dbh, query_updated)) { 1384 psError(PS_ERR_UNKNOWN, false, "database error"); 1385 psFree(query_updated); 1386 return false; 1387 } 1388 psFree(query_updated); 1389 1390 int numUpdated = psDBAffectedRows(config->dbh); 1391 1392 psLogMsg("warptool", PS_LOG_INFO, "Updated %d warpSkyfiles", numUpdated); 1369 1393 1370 1394 return true; … … 1665 1689 } 1666 1690 1667 char *set_magicked_skyfile = "";1668 char *set_magicked_run = "";1691 psString set_magicked_skyfile = psStringCopy(""); 1692 psString set_magicked_run = psStringCopy(""); 1669 1693 if (!strcmp(data_state, "full")) { 1670 set_magicked_skyfile = "\n , warpSkyfile.magicked = IF((warpSkyfile.magicked < 0 AND chipRun.magicked = 0), warpSkyfile.magicked, chipRun.magicked)"; 1671 set_magicked_run = "\n, warpRun.magicked = IF((warpRun.magicked < 0 AND chipRun.magicked = 0), warpRun.magicked, chipRun.magicked)"; 1672 1694 // magicked is only an argument for for -tofullskyfile 1695 PXOPT_LOOKUP_S64(magicked, config->args, "-set_magicked", false, false); 1696 if (magicked) { 1697 psStringAppend(&set_magicked_skyfile, "\n , warpSkyfile.magicked = %" PRId64, magicked); 1698 psStringAppend(&set_magicked_run, "\n, warpRun.magicked = %" PRId64, magicked); 1699 } 1673 1700 } else if (!strcmp(data_state, "cleaned") || !strcmp(data_state, "purged")) { 1674 set_magicked_skyfile = "\n, warpSkyfile.magicked = IF(warpSkyfile.magicked = 0, 0, -1)"; 1675 set_magicked_run = "\n, warpRun.magicked = IF(warpRun.magicked = 0, 0, -1)"; 1701 // if magicked is currently nonzero set it to -1 1702 // Set warpRun.magicked when the first skyfile is cleaned 1703 psStringAppend(&set_magicked_skyfile, "\n, warpSkyfile.magicked = IF(warpSkyfile.magicked = 0, 0, -1), warpRun.magicked = IF(warpRun.magicked = 0, 0, -1)"); 1676 1704 } 1677 1705 … … 1686 1714 } 1687 1715 psFree(query); 1716 psFree(set_magicked_skyfile); 1688 1717 1689 1718 query = pxDataGet("warptool_change_run_state.sql"); … … 1696 1725 return false; 1697 1726 } 1727 psFree(set_magicked_run); 1698 1728 1699 1729 if (!psDBCommit(config->dbh)) { … … 2026 2056 return true; 2027 2057 } 2058 2059 static bool listrunMode(pxConfig *config) 2060 { 2061 PS_ASSERT_PTR_NON_NULL(config, false); 2062 2063 psMetadata *where = psMetadataAlloc(); 2064 PXOPT_COPY_S64(config->args, where, "-warp_id", "warpRun.warp_id", "=="); 2065 PXOPT_COPY_STR(config->args, where, "-tess_id", "warpRun.tess_id", "=="); 2066 PXOPT_COPY_STR(config->args, where, "-state", "warpRun.state", "=="); 2067 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "=="); 2068 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); 2069 PXOPT_COPY_S64(config->args, where, "-fake_id", "fakeRun.fake_id", "=="); 2070 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawExp.dateobs", ">="); 2071 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawExp.dateobs", "<="); 2072 PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "LIKE"); 2073 PXOPT_COPY_S64(config->args, where, "-magicked", "warpRun.magicked", "=="); 2074 pxAddLabelSearchArgs (config, where, "-label", "warpRun.label", "LIKE"); 2075 pxAddLabelSearchArgs (config, where, "-data_group", "warpRun.data_group", "LIKE"); 2076 pxAddLabelSearchArgs (config, where, "-dist_group", "warpRun.dist_group", "LIKE"); 2077 2078 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 2079 2080 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 2081 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 2082 PXOPT_LOOKUP_BOOL(pstamp_order, config->args, "-pstamp_order", false); 2083 2084 // find all rawImfiles matching the default query 2085 psString query = pxDataGet("warptool_listrun.sql"); 2086 if (!query) { 2087 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 2088 return false; 2089 } 2090 2091 // generate where strings for arguments that require extra processing 2092 // beyond PXOPT_COPY* 2093 psString where2 = NULL; 2094 if (!pxmagicAddWhere(config, &where2, "warpRun")) { 2095 psError(psErrorCodeLast(), false, "pxMagicAddWhere failed"); 2096 return false; 2097 } 2098 if (!pxspaceAddWhere(config, &where2, "rawExp")) { 2099 psError(psErrorCodeLast(), false, "pxSpaceAddWhere failed"); 2100 return false; 2101 } 2102 2103 if (psListLength(where->list)) { 2104 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 2105 psStringAppend(&query, " WHERE %s", whereClause); 2106 psFree(whereClause); 2107 } else if (!all && !where2) { 2108 psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required"); 2109 return false; 2110 } 2111 2112 if (where2) { 2113 if (psListLength(where->list)) { 2114 psStringAppend(&query, " %s", where2); 2115 } else { 2116 psStringAppend(&query, " WHERE 1 %s", where2); 2117 } 2118 } 2119 psFree(where); 2120 2121 if (pstamp_order) { 2122 // put runs in order of exposure id with newest chip Runs first 2123 // The postage stamp parser depends on this behavior 2124 psStringAppend(&query, "\nORDER by exp_id, warp_id DESC"); 2125 } 2126 2127 2128 // treat limit == 0 as "no limit" 2129 if (limit) { 2130 psString limitString = psDBGenerateLimitSQL(limit); 2131 psStringAppend(&query, " %s", limitString); 2132 psFree(limitString); 2133 } 2134 2135 if (!p_psDBRunQuery(config->dbh, query)) { 2136 psError(PS_ERR_UNKNOWN, false, "database error"); 2137 psFree(query); 2138 return false; 2139 } 2140 psFree(query); 2141 2142 psArray *output = p_psDBFetchResult(config->dbh); 2143 if (!output) { 2144 psErrorCode err = psErrorCodeLast(); 2145 switch (err) { 2146 case PS_ERR_DB_CLIENT: 2147 psError(PXTOOLS_ERR_SYS, false, "database error"); 2148 case PS_ERR_DB_SERVER: 2149 psError(PXTOOLS_ERR_PROG, false, "database error"); 2150 default: 2151 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 2152 } 2153 2154 return false; 2155 } 2156 if (!psArrayLength(output)) { 2157 psTrace("warptool", PS_LOG_INFO, "no rows found"); 2158 psFree(output); 2159 return true; 2160 } 2161 2162 if (psArrayLength(output)) { 2163 // negative simple so the default is true 2164 if (!ippdbPrintMetadatas(stdout, output, "warpRun", !simple)) { 2165 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 2166 psFree(output); 2167 return false; 2168 } 2169 } 2170 2171 psFree(output); 2172 2173 return true; 2174 } 2175 2176 // a very specfic function to queue a cleaned warpSkyfile to be updated 2177 static bool setskyfiletoupdateMode(pxConfig *config) 2178 { 2179 PS_ASSERT_PTR_NON_NULL(config, NULL); 2180 2181 PXOPT_LOOKUP_S64(warp_id, config->args, "-warp_id", true, false); 2182 PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", false, false); 2183 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 2184 2185 psString query = pxDataGet("warptool_setskyfiletoupdate.sql"); 2186 if (!query) { 2187 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 2188 return false; 2189 } 2190 2191 psString setHook = psStringCopy(""); 2192 if (label) { 2193 psStringAppend(&setHook, "\n , warpRun.label = '%s'", label); 2194 } 2195 2196 if (skycell_id) { 2197 psStringAppend(&query, " AND (warpSkyfile.skycell_id = '%s')", skycell_id); 2198 } 2199 2200 if (!p_psDBRunQueryF(config->dbh, query, setHook, warp_id)) { 2201 psError(PS_ERR_UNKNOWN, false, "database error"); 2202 return false; 2203 } 2204 2205 psFree(setHook); 2206 psFree(query); 2207 2208 return true; 2209 } -
branches/pap/ippTools/src/warptool.h
r25822 r28003 55 55 WARPTOOL_MODE_IMPORTRUN, 56 56 WARPTOOL_MODE_RUNSTATE, 57 WARPTOOL_MODE_LISTRUN, 58 WARPTOOL_MODE_SETSKYFILETOUPDATE, 57 59 } warptoolMode; 58 60 -
branches/pap/ippTools/src/warptoolConfig.c
r27389 r28003 89 89 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-posang_max", 0, "search by max rotator position angle", NAN); 90 90 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-object", 0, "search by exposure object", NULL); 91 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-sun_angle_min", 0, "search by min solar angle", NAN); 92 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-sun_angle_max", 0, "search by max solar angle", NAN); 91 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-comment", 0, "search by comment field (LIKE comparison)", NULL); 92 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-obs_mode", 0, "search by observation mode", NULL); 93 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-sun_angle_min", 0, "search by min solar angle", NAN); 94 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-sun_angle_max", 0, "search by max solar angle", NAN); 93 95 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-reduction", 0, "search by fakeRun reduction class", NULL); 94 96 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search on fakeRun label", NULL); … … 106 108 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 107 109 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 110 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend", 0, "do not actually modify the database", false); 108 111 109 112 // -definerun … … 217 220 psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-hostname", 0, "define hostname", 0); 218 221 psMetadataAddF32(addwarpedArgs, PS_LIST_TAIL, "-good_frac", 0, "define %% of good pixels", NAN); 219 psMetadataAddS64(addwarpedArgs, PS_LIST_TAIL, "- magicked", 0, "define if this skycell has been magicked", 0);222 psMetadataAddS64(addwarpedArgs, PS_LIST_TAIL, "-set_magicked", 0, "define if this skycell has been magicked", 0); 220 223 psMetadataAddS16(addwarpedArgs, PS_LIST_TAIL, "-fault", 0, "set fault code", 0); 221 224 psMetadataAddS16(addwarpedArgs, PS_LIST_TAIL, "-quality", 0, "set quality", 0); … … 236 239 psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by warpRun label", NULL); 237 240 psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by warpRun data_group", NULL); 241 psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-dist_group", PS_META_DUPLICATE_OK, "search by warpRun dist_group", NULL); 238 242 // add magic related arguments 239 243 pxmagicAddArguments(warpedArgs); … … 244 248 psMetadataAddU64(warpedArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 245 249 psMetadataAddBool(warpedArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 250 251 // -listrun 252 psMetadata *listrunArgs = psMetadataAlloc(); 253 psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warptool ID", 0); 254 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tessellation ID", NULL); 255 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-state", 0, "search by state", NULL); 256 psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure tag", 0); 257 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exposure tag", 0); 258 psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-fake_id", 0, "search by phase 3 version of exposure tag", 0); 259 psMetadataAddTime(listrunArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 260 psMetadataAddTime(listrunArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<=)", NULL); 261 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-filter", 0, "search for exposures by filter", NULL); 262 psMetadataAddS16(listrunArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 263 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by warpRun label", NULL); 264 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by warpRun data_group", NULL); 265 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-dist_group", PS_META_DUPLICATE_OK, "search by warpRun dist_group", NULL); 266 // add magic related arguments 267 pxmagicAddArguments(listrunArgs); 268 // add arguments for spatial search 269 pxspaceAddArguments(listrunArgs); 270 271 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-pstamp_order", 0, "order results for postage stamp server", false); 272 273 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-all", 0, "search without arguments", false); 274 psMetadataAddU64(listrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 275 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 246 276 247 277 // -revertwarped … … 315 345 psMetadataAddS64(tofullskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, "warptool ID to update", 0); 316 346 psMetadataAddStr(tofullskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL); 347 psMetadataAddS64(tofullskyfileArgs, PS_LIST_TAIL, "-set_magicked", 0, "new value for magicked", 0); 317 348 318 349 // -updateskyfile … … 345 376 psMetadataAddU64(runstateArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 346 377 psMetadataAddBool(runstateArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 378 379 // -setskyfiletoupdate 380 psMetadata *setskyfiletoupdateArgs = psMetadataAlloc(); 381 psMetadataAddS64(setskyfiletoupdateArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warptool ID (required)", 0); 382 psMetadataAddStr(setskyfiletoupdateArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by tessellation ID", NULL); 383 psMetadataAddStr(setskyfiletoupdateArgs, PS_LIST_TAIL, "-set_label", 0, "new value for warpRun.label", NULL); 347 384 348 385 … … 364 401 PXOPT_ADD_MODE("-advancerun", "", WARPTOOL_MODE_ADVANCERUN, advancerunArgs); 365 402 PXOPT_ADD_MODE("-warped", "", WARPTOOL_MODE_WARPED, warpedArgs); 403 PXOPT_ADD_MODE("-listrun", "", WARPTOOL_MODE_LISTRUN, listrunArgs); 366 404 PXOPT_ADD_MODE("-runstate", "", WARPTOOL_MODE_RUNSTATE, runstateArgs); 367 405 PXOPT_ADD_MODE("-revertwarped", "", WARPTOOL_MODE_REVERTWARPED, revertwarpedArgs); … … 377 415 PXOPT_ADD_MODE("-tofullskyfile", "set skyfile as full (updated)", WARPTOOL_MODE_TOFULLSKYFILE, tofullskyfileArgs); 378 416 PXOPT_ADD_MODE("-updateskyfile", "update fault code for skyfile", WARPTOOL_MODE_UPDATESKYFILE, updateskyfileArgs); 417 PXOPT_ADD_MODE("-setskyfiletoupdate", "set cleaned skyfile to be updated", WARPTOOL_MODE_SETSKYFILETOUPDATE, setskyfiletoupdateArgs); 379 418 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", WARPTOOL_MODE_EXPORTRUN, exportrunArgs); 380 419 PXOPT_ADD_MODE("-importrun", "import run from metadata file", WARPTOOL_MODE_IMPORTRUN, importrunArgs);
Note:
See TracChangeset
for help on using the changeset viewer.
