Changeset 24174 for trunk/ippTools
- Timestamp:
- May 13, 2009, 12:37:33 PM (17 years ago)
- Location:
- trunk
- Files:
-
- 4 deleted
- 23 edited
- 7 copied
-
. (modified) (1 prop)
-
ippTools/configure.ac (modified) (1 diff)
-
ippTools/share/Makefile.am (modified) (1 diff)
-
ippTools/share/chiptool_export_imfile.sql (modified) (1 prop)
-
ippTools/share/chiptool_export_processed_imfile.sql (modified) (1 prop)
-
ippTools/share/difftool_definebyquery.sql (deleted)
-
ippTools/share/difftool_definebyquery_part1.sql (deleted)
-
ippTools/share/difftool_definebyquery_part2.sql (deleted)
-
ippTools/share/difftool_definebyquery_temp_create.sql (deleted)
-
ippTools/share/difftool_definewarpstack.sql (copied) (copied from branches/pap_magic/ippTools/share/difftool_definewarpstack.sql )
-
ippTools/share/difftool_definewarpstack_part1.sql (copied) (copied from branches/pap_magic/ippTools/share/difftool_definewarpstack_part1.sql )
-
ippTools/share/difftool_definewarpstack_part2.sql (copied) (copied from branches/pap_magic/ippTools/share/difftool_definewarpstack_part2.sql )
-
ippTools/share/difftool_definewarpstack_temp_create.sql (copied) (copied from branches/pap_magic/ippTools/share/difftool_definewarpstack_temp_create.sql )
-
ippTools/share/difftool_definewarpwarp_select.sql (modified) (2 diffs)
-
ippTools/share/difftool_definewarpwarp_temp_create.sql (copied) (copied from branches/pap_magic/ippTools/share/difftool_definewarpwarp_temp_create.sql )
-
ippTools/share/difftool_definewarpwarp_temp_insert.sql (copied) (copied from branches/pap_magic/ippTools/share/difftool_definewarpwarp_temp_insert.sql )
-
ippTools/share/difftool_definewarpwarp_test.sql (copied) (copied from branches/pap_magic/ippTools/share/difftool_definewarpwarp_test.sql )
-
ippTools/share/difftool_skyfile.sql (modified) (1 diff)
-
ippTools/share/difftool_todiffskyfile.sql (modified) (1 diff)
-
ippTools/share/magicdstool_todestreak.sql (modified) (6 diffs)
-
ippTools/share/magictool_definebyquery_insert.sql (modified) (1 diff)
-
ippTools/share/magictool_definebyquery_select.sql (modified) (1 diff)
-
ippTools/share/magictool_inputs.sql (modified) (1 diff)
-
ippTools/share/magictool_inputskyfile.sql (modified) (1 diff)
-
ippTools/share/magictool_toprocess_inputs.sql (modified) (1 diff)
-
ippTools/share/magictool_toprocess_tree.sql (modified) (1 diff)
-
ippTools/share/magictool_totree.sql (modified) (1 diff)
-
ippTools/share/pxadmin_create_tables.sql (modified) (6 diffs)
-
ippTools/share/pxadmin_drop_tables.sql (modified) (1 diff)
-
ippTools/src/difftool.c (modified) (21 diffs)
-
ippTools/src/difftool.h (modified) (1 diff)
-
ippTools/src/difftoolConfig.c (modified) (5 diffs)
-
ippTools/src/magictool.c (modified) (17 diffs)
-
ippTools/src/magictoolConfig.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/pap_magic (added) merged: 24120,24132-24136,24145,24147-24154,24156-24164,24168-24173
- Property svn:mergeinfo changed
-
trunk/ippTools/configure.ac
r23884 r24174 18 18 PKG_CHECK_MODULES([PSLIB], [pslib >= 1.1.0]) 19 19 PKG_CHECK_MODULES([PSMODULES], [psmodules >= 1.1.0]) 20 PKG_CHECK_MODULES([IPPDB], [ippdb >= 1.1.5 2])20 PKG_CHECK_MODULES([IPPDB], [ippdb >= 1.1.53]) 21 21 22 22 PXTOOLS_CFLAGS="${PSLIB_CFLAGS=} ${PSMODULES_CFLAGS=} ${IPPDB_CFLAGS=}" -
trunk/ippTools/share/Makefile.am
r24111 r24174 81 81 dettool_tostacked.sql \ 82 82 difftool_completed_runs.sql \ 83 difftool_definebyquery_part1.sql \ 84 difftool_definebyquery_part2.sql \ 85 difftool_definebyquery_temp_create.sql \ 83 difftool_definewarpstack_part1.sql \ 84 difftool_definewarpstack_part2.sql \ 85 difftool_definewarpstack_temp_create.sql \ 86 difftool_definewarpwarp_temp_create.sql \ 87 difftool_definewarpwarp_temp_insert.sql \ 86 88 difftool_definewarpwarp_select.sql \ 87 89 difftool_definewarpwarp_insert.sql \ -
trunk/ippTools/share/chiptool_export_imfile.sql
- Property svn:mergeinfo changed
/trunk/ippTools/share/chiptool_export_imfile.sql merged: 23690-23696
- Property svn:mergeinfo changed
-
trunk/ippTools/share/chiptool_export_processed_imfile.sql
- Property svn:mergeinfo changed
/trunk/ippTools/share/chiptool_export_processed_imfile.sql merged: 23690-23696
- Property svn:mergeinfo changed
-
trunk/ippTools/share/difftool_definewarpwarp_select.sql
r23503 r24174 1 1 SELECT 2 2 inputWarpRun.warp_id AS input_warp_id, 3 inputWarpRun.tess_id AS tess_id, 3 4 inputRawExp.exp_id AS input_exp_id, 4 inputWarpRun.tess_id AS tess_id,5 -- The following trick pulls out the warp_id that has the smallest distance 5 6 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 6 7 FROM warpRun AS inputWarpRun … … 9 10 JOIN chipRun AS inputChipRun USING(chip_id) 10 11 JOIN rawExp AS inputRawExp USING(exp_id) 11 -- To find exposures that haven't been diffed :%s LEFT JOIN diffRun ON diffRun.exp_id = inputRawExp.exp_id12 -- To find exposures that haven't been diffed, insert newline here:%s LEFT JOIN diffs USING(exp_id) 12 13 JOIN warpRun AS templateWarpRun 13 14 ON templateWarpRun.warp_id != inputWarpRun.warp_id -- Don't use self as template! -
trunk/ippTools/share/difftool_skyfile.sql
r24112 r24174 8 8 stack1, 9 9 warp2, 10 stack2, 11 exp_id 10 stack2 12 11 FROM diffRun 13 JOIN diffSkyfile 14 USING(diff_id) 15 JOIN diffInputSkyfile 16 USING (diff_id, skycell_id) 12 JOIN diffSkyfile USING(diff_id) 13 JOIN diffInputSkyfile USING(diff_id, skycell_id) 17 14 JOIN warpRun 18 15 ON warpRun.warp_id = diffInputSkyfile.warp1 19 JOIN rawExp 20 USING(exp_id) 16 JOIN fakeRun USING(fake_id) 17 JOIN camRun USING(cam_id) 18 JOIN chipRun USING(chip_id) 19 JOIN rawExp USING(exp_id) -
trunk/ippTools/share/difftool_todiffskyfile.sql
r23688 r24174 9 9 diffRun.tess_id, 10 10 diffRun.label, 11 diffRun.state 11 diffRun.state, 12 diffRun.bothways 12 13 FROM diffRun 13 14 JOIN diffInputSkyfile USING(diff_id) -
trunk/ippTools/share/magicdstool_todestreak.sql
r23974 r24174 13 13 rawImfile.uri as uri, 14 14 NULL as path_base, 15 magicRun.inverse, 15 16 camProcessedExp.path_base as cam_path_base, 16 17 outroot, … … 44 45 chipProcessedImfile.uri, 45 46 chipProcessedImfile.path_base, 47 magicRun.inverse, 46 48 camProcessedExp.path_base as cam_path_base, 47 49 outroot, … … 51 53 FROM magicDSRun 52 54 JOIN magicMask USING (magic_id) 55 JOIN magicRun USING(magic_id) 53 56 JOIN camProcessedExp USING(cam_id) 54 57 JOIN chipRun ON chip_id = stage_id … … 79 82 warpSkyfile.uri, 80 83 warpSkyfile.path_base, 84 magicRun.inverse, 81 85 NULL as cam_path_base, 82 86 outroot, … … 113 117 magicRun.diff_id as stage_id, 114 118 diffSkyfile.skycell_id as component, 115 diffSkyfile.uri,119 NULL AS uri, 116 120 diffSkyfile.path_base, 121 magicRun.inverse, 117 122 NULL as cam_path_base, 118 123 outroot, … … 126 131 JOIN magicInputSkyfile USING(magic_id) 127 132 JOIN diffSkyfile 128 ON magic InputSkyfile.diff_id = diffSkyfile.diff_id133 ON magicRun.diff_id = diffSkyfile.diff_id 129 134 AND magicInputSkyfile.node = diffSkyfile.skycell_id 130 135 LEFT JOIN magicDSFile -
trunk/ippTools/share/magictool_definebyquery_insert.sql
r23688 r24174 3 3 SELECT 4 4 @MAGIC_ID@, -- Update this with the appropriate magic_id 5 diff_id,6 5 skycell_id 7 6 FROM diffSkyfile -
trunk/ippTools/share/magictool_definebyquery_select.sql
r20973 r24174 1 1 -- Get a list of exposures on which magic may be performed 2 SELECT 2 SELECT 3 3 exp_id, 4 MAX(diffRun.diff_id) AS diff_id 5 FROM diffRun 6 JOIN rawExp USING(exp_id) 4 MAX(diffWarps.diff_id) AS diff_id, 5 -- The following trick pulls out the 'inverse' value for the maximum diff_id 6 CONVERT(SUBSTRING_INDEX(GROUP_CONCAT(diffWarps.inverse ORDER BY diffWarps.diff_id), ',', 1), UNSIGNED) AS inverse 7 FROM ( 8 -- Forward diffs 9 SELECT 10 diffRun.diff_id, 11 warp1 AS warp_id, 12 0 AS inverse 13 FROM diffRun 14 JOIN diffInputSkyfile USING(diff_id) 15 WHERE diffInputSkyfile.warp1 IS NOT NULL 16 AND diffRun.exposure = 1 17 -- WHERE hook %s 18 UNION 19 -- Backward diffs 20 SELECT 21 diffRun.diff_id, 22 warp2 AS warp_id, 23 1 AS inverse 24 FROM diffRun 25 JOIN diffInputSkyfile USING(diff_id) 26 WHERE diffInputSkyfile.warp2 IS NOT NULL 27 AND diffRun.exposure = 1 28 AND diffRun.bothways = 1 29 -- WHERE hook %s 30 ) AS diffWarps 31 JOIN warpRun USING(warp_id) 32 JOIN fakeRun USING(fake_id) 33 JOIN camRun USING(cam_id) 34 JOIN chipRun USING(chip_id) 7 35 LEFT JOIN magicRun USING(exp_id) 8 36 -- WHERE hook %s -
trunk/ippTools/share/magictool_inputs.sql
r23886 r24174 1 SELECT * 2 FROM ( 3 -- Single skycells 1 -- Get input details for a magic node 4 2 SELECT 5 3 magicRun.magic_id, 6 magicRun.state, 7 magicInputSkyfile.node, 8 diffSkyfile.diff_id, 9 diffSkyfile.uri, 10 diffSkyfile.path_base, 11 diffSkyfile.fault, 12 diffSkyfile.quality 4 magicRun.inverse, -- Using the inverse subtraction? 5 magicRun.diff_id, 6 magicInputs.node, 7 -- Only one of diff_path_base and magic_path_base should be non-NULL 8 -- If diff_path_base is non-NULL, then only one of warp_path_base and stack_path_base should be non-NULL 9 magicInputs.diff_path_base, -- path_base for the diff (if any) 10 magicInputs.warp_path_base, -- path_base for the template warp (if any) 11 magicInputs.stack_path_base, -- path_base for the template stack (if any) 12 magicInputs.magic_path_base -- path_base for child nodes (if any) 13 13 FROM magicRun 14 JOIN magicInputSkyfile 15 USING(magic_id) 16 JOIN diffSkyfile 17 ON magicInputSkyfile.diff_id = diffSkyfile.diff_id 18 AND magicInputSkyfile.node = diffSkyfile.skycell_id 19 UNION 20 -- Merged skycells 21 SELECT 22 magicRun.magic_id, 23 magicRun.state, 24 magicTree.node, 25 0, -- no diff_id 26 magicNodeResult.uri, 27 NULL, -- magicNodeResult doesn't have a path_base 28 magicNodeResult.fault, 29 0 as quality 30 FROM magicTree 31 JOIN magicRun 32 USING(magic_id) 33 JOIN magicNodeResult 34 ON magicTree.magic_id = magicNodeResult.magic_id 35 AND magicTree.dep = magicNodeResult.node 36 ) as Foo 37 WHERE 38 fault = 0 39 AND quality = 0 14 JOIN ( 15 -- Single skycells: have uri=NULL 16 SELECT 17 magic_id, 18 magicRun.diff_id, 19 skycell_id AS node, 20 diffSkyfile.path_base AS diff_path_base, 21 warpSkyfile.path_base AS warp_path_base, 22 stackSumSkyfile.path_base AS stack_path_base, 23 NULL AS magic_path_base 24 FROM magicRun 25 JOIN magicTree USING(magic_id) 26 JOIN magicInputSkyfile USING(magic_id, node) 27 JOIN diffRun USING(diff_id) 28 JOIN diffSkyfile 29 ON diffSkyfile.diff_id = magicRun.diff_id 30 AND diffSkyfile.skycell_id = magicInputSkyfile.node 31 JOIN ( 32 -- Template for non-inverse 33 SELECT 34 magic_id, 35 skycell_id, 36 warp1 AS warp_id, 37 stack1 AS stack_id 38 FROM magicRun 39 JOIN diffInputSkyfile USING(diff_id) 40 WHERE magicRun.inverse = 0 41 -- WHERE hook (magicRun.magic_id, diffInputSkyfile.skycell_id) %s 42 UNION 43 -- Template for inverse 44 SELECT 45 magic_id, 46 skycell_id, 47 warp2 AS warp_id, 48 stack2 AS stack_id 49 FROM magicRun 50 JOIN diffInputSkyfile USING(diff_id) 51 WHERE magicRun.inverse = 1 52 -- WHERE hook (magicRun.magic_id, diffInputSkyfile.skycell_id) %s 53 ) AS diffTemplates USING(magic_id, skycell_id) 54 LEFT JOIN warpSkyfile USING(warp_id, skycell_id) 55 LEFT JOIN stackSumSkyfile USING(stack_id) 56 -- WHERE hook (magicRun.magic_id, magicTree.node) %s 57 UNION 58 -- Merged skycells: have diff_id=0, various_path_base=NULL 59 SELECT 60 magicTree.magic_id, 61 0 AS diff_id, 62 magicTree.dep, 63 NULL AS diff_path_base, 64 NULL AS warp_path_base, 65 NULL AS stack_path_base, 66 magicNodeResult.path_base AS magic_path_base 67 FROM magicTree 68 JOIN magicRun USING(magic_id) 69 JOIN magicNodeResult 70 ON magicTree.magic_id = magicNodeResult.magic_id 71 AND magicTree.dep = magicNodeResult.node 72 -- WHERE hook (magicRun.magic_id, magicTree.node) %s 73 ) AS magicInputs USING(magic_id) -
trunk/ippTools/share/magictool_inputskyfile.sql
r23389 r24174 1 1 SELECT 2 2 magicInputSkyfile.*, 3 diffSkyfile.uri 3 magicRun.inverse, 4 diffSkyfile.path_base 4 5 FROM magicRun 5 JOIN magicInputSkyfile 6 USING(magic_id) 6 JOIN magicInputSkyfile USING(magic_id) 7 7 JOIN diffSkyfile 8 ON magicInputSkyfile.diff_id = diffSkyfile.diff_id9 AND magicInputSkyfile.node = diffSkyfile.skycell_id8 ON diffSkyfile.diff_id = magicRun.diff_id 9 AND diffSkyfile.skycell_id = magicInputSkyfile.node 10 10 WHERE 11 11 magicRun.state = 'new' -
trunk/ippTools/share/magictool_toprocess_inputs.sql
r23971 r24174 1 SELECT * FROM 2 (SELECT 1 SELECT 3 2 magicTree.*, 3 magicRun.workdir, 4 4 rawExp.exp_id, 5 5 rawExp.camera, 6 -- diffSkyfile.path_base,7 magicRun.workdir,8 6 -- convert magic_id into a boolean value (1 or 0) 9 7 -- note that the type stays a 64 bit int 10 magicNodeResult.magic_id IS TRUE as done, 11 magicNodeResult.fault IS TRUE as bad, 12 warpSkyfile.uri as template_uri 13 FROM magicTree 14 JOIN magicRun USING(magic_id) 8 magicNodeResult.magic_id IS TRUE AS done, 9 magicNodeResult.fault IS TRUE AS bad 10 FROM magicRun 11 JOIN magicTree USING(magic_id) 15 12 JOIN magicInputSkyfile USING(magic_id, node) 16 JOIN diffSkyfile17 ON magicInputSkyfile.diff_id = diffSkyfile.diff_id18 AND magicInputSkyfile.node = diffSkyfile.skycell_id19 JOIN diffInputSkyfile20 ON diffSkyfile.diff_id = diffInputSkyfile.diff_id21 AND diffSkyfile.skycell_id = diffInputSkyfile.skycell_id22 JOIN warpSkyfile23 ON diffInputSkyfile.warp2 = warpSkyfile.warp_id24 AND diffInputSkyfile.skycell_id = warpSkyfile.skycell_id25 13 JOIN rawExp USING(exp_id) 26 LEFT JOIN magicNodeResult 27 ON magicTree.magic_id = magicNodeResult.magic_id 28 AND magicTree.node = magicNodeResult.node 14 JOIN diffSkyfile -- only get nodes that match a skycell 15 ON diffSkyfile.diff_id = magicRun.diff_id 16 AND diffSkyfile.skycell_id = magicInputSkyfile.node 17 LEFT JOIN magicNodeResult USING(magic_id, node) 29 18 WHERE 30 19 magicRun.state = 'new' 31 20 AND magicNodeResult.magic_id IS NULL 32 21 AND magicNodeResult.node IS NULL 33 -- where hook 1 %s 34 UNION 35 SELECT 36 magicTree.*, 37 rawExp.exp_id, 38 rawExp.camera, 39 -- diffSkyfile.path_base, 40 magicRun.workdir, 41 -- convert magic_id into a boolean value (1 or 0) 42 -- note that the type stays a 64 bit int 43 magicNodeResult.magic_id IS TRUE as done, 44 magicNodeResult.fault IS TRUE as bad, 45 stackSumSkyfile.uri as template_uri 46 FROM magicTree 47 JOIN magicRun USING(magic_id) 48 JOIN magicInputSkyfile USING(magic_id, node) 49 JOIN diffSkyfile 50 ON magicInputSkyfile.diff_id = diffSkyfile.diff_id 51 AND magicInputSkyfile.node = diffSkyfile.skycell_id 52 JOIN diffInputSkyfile 53 ON diffSkyfile.diff_id = diffInputSkyfile.diff_id 54 AND diffSkyfile.skycell_id = diffInputSkyfile.skycell_id 55 JOIN stackSumSkyfile 56 ON diffInputSkyfile.stack2 = stackSumSkyfile.stack_id 57 JOIN rawExp USING(exp_id) 58 LEFT JOIN magicNodeResult 59 ON magicTree.magic_id = magicNodeResult.magic_id 60 AND magicTree.node = magicNodeResult.node 61 WHERE 62 magicRun.state = 'new' 63 AND magicNodeResult.magic_id IS NULL 64 AND magicNodeResult.node IS NULL 65 -- where hook 2 %s 66 ) as foo 22 -- WHERE hook %s -
trunk/ippTools/share/magictool_toprocess_tree.sql
r23971 r24174 1 1 SELECT 2 2 magicTree.*, 3 exp_id,4 camera,5 3 magicRun.workdir, 4 rawExp.exp_id, 5 rawExp.camera, 6 6 -- convert magic_id into a boolean value (1 or 0) 7 7 -- note that the type stays a 64 bit int 8 magicNodeResult.magic_id IS TRUE as done, 9 magicNodeResult.fault IS TRUE as bad, 10 'notused' as template_uri 8 magicNodeResult.magic_id IS TRUE AS done, 9 magicNodeResult.fault IS TRUE AS bad 11 10 FROM magicTree 12 11 JOIN magicRun USING(magic_id) 13 12 JOIN rawExp USING(exp_id) 14 LEFT JOIN magicNodeResult 15 ON magicTree.magic_id = magicNodeResult.magic_id 16 AND magicTree.node = magicNodeResult.node 13 LEFT JOIN magicNodeResult USING(magic_id, node) 17 14 WHERE 18 15 magicRun.state = 'new' 19 -- wherehook %s16 -- WHERE hook %s 20 17 ORDER BY 21 18 magicRun.magic_id -
trunk/ippTools/share/magictool_totree.sql
r23389 r24174 6 6 ra, 7 7 decl, 8 tess_id8 diffRun.tess_id 9 9 FROM magicRun 10 JOIN diffRun USING(diff_id) 10 11 JOIN rawExp USING(exp_id) 11 12 LEFT JOIN magicTree -
trunk/ippTools/share/pxadmin_create_tables.sql
r24125 r24174 877 877 KEY(state), 878 878 KEY(skycell_id), 879 KEY(tess_id) 879 KEY(tess_id), 880 KEY(label) 880 881 ) ENGINE=innodb DEFAULT CHARSET=latin1; 881 882 … … 933 934 registered DATETIME, 934 935 tess_id VARCHAR(64), 935 exp_id BIGINT, 936 bothways TINYINT DEFAULT 0, 937 exposure TINYINT DEFAULT 0, 936 938 magicked TINYINT, 937 939 PRIMARY KEY(diff_id), … … 939 941 KEY(state), 940 942 KEY(tess_id), 943 KEY(label), 941 944 FOREIGN KEY(exp_id) REFERENCES rawExp(exp_id) 942 945 ) ENGINE=innodb DEFAULT CHARSET=latin1; … … 969 972 diff_id BIGINT, 970 973 skycell_id VARCHAR(64), 971 uri VARCHAR(255),972 974 path_base VARCHAR(255), 973 975 data_state VARCHAR(64), … … 1006 1008 exp_id BIGINT, 1007 1009 diff_id BIGINT, 1010 inverse TINYINT NOT NULL DEFAULT 0, 1008 1011 state VARCHAR(64), 1009 1012 workdir VARCHAR(255), … … 1046 1049 magic_id BIGINT, 1047 1050 node VARCHAR(64), 1048 uriVARCHAR(255),1051 path_base VARCHAR(255), 1049 1052 fault SMALLINT, 1050 1053 PRIMARY KEY(magic_id, node), -
trunk/ippTools/share/pxadmin_drop_tables.sql
r23894 r24174 48 48 DROP TABLE IF EXISTS magicNodeResult; 49 49 DROP TABLE IF EXISTS magicMask; 50 DROP TABLE IF EXISTS magicSkyfileMask;51 50 DROP TABLE IF EXISTS magicDSRun; 52 51 DROP TABLE IF EXISTS magicDSFile; -
trunk/ippTools/src/difftool.c
r24059 r24174 40 40 static bool revertdiffskyfileMode(pxConfig *config); 41 41 static bool definepoprunMode(pxConfig *config); 42 static bool define byqueryMode(pxConfig *config);42 static bool definewarpstackMode(pxConfig *config); 43 43 static bool definewarpwarpMode(pxConfig *config); 44 44 static bool pendingcleanuprunMode(pxConfig *config); … … 79 79 MODECASE(DIFFTOOL_MODE_REVERTDIFFSKYFILE, revertdiffskyfileMode); 80 80 MODECASE(DIFFTOOL_MODE_DEFINEPOPRUN, definepoprunMode); 81 MODECASE(DIFFTOOL_MODE_DEFINE BYQUERY, definebyqueryMode);81 MODECASE(DIFFTOOL_MODE_DEFINEWARPSTACK, definewarpstackMode); 82 82 MODECASE(DIFFTOOL_MODE_DEFINEWARPWARP, definewarpwarpMode); 83 83 MODECASE(DIFFTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunMode); … … 116 116 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); 117 117 PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", true, false); 118 PXOPT_LOOKUP_BOOL(bothways, config->args, "-bothways", false); 119 PXOPT_LOOKUP_BOOL(exposure, config->args, "-exposure", false); 118 120 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 119 121 PXOPT_LOOKUP_STR(reduction, config->args, "-reduction", false, false); 120 PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", false, false);121 122 122 123 // default … … 133 134 registered, 134 135 tess_id, 135 exp_id, 136 bothways, 137 exposure, 136 138 false 137 139 ); … … 487 489 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 488 490 PXOPT_LOOKUP_S16(quality, config->args, "-quality", false, false); 489 PXOPT_LOOKUP_STR(uri, config->args, "-uri", (fault == 0), false);490 491 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", (fault == 0), false); 491 492 … … 521 522 diff_id, 522 523 skycell_id, 523 uri,524 524 path_base, 525 525 "full", … … 771 771 psS64 template_warp_id, // Warp identifier for template image, PS_MAX_S64 for none 772 772 psS64 template_stack_id, // Stack identifier for template image, PS_MAX_S64 for none 773 psS64 exp_id, // exposure id for input_warp_id (if defined)774 773 pxConfig *config // Configuration 775 774 ) … … 802 801 registered, 803 802 tess_id, 804 exp_id, 803 false, 804 false, 805 805 false // magicked 806 806 ); … … 882 882 PXOPT_LOOKUP_S64(input_warp_id, config->args, "-input_warp_id", false, false); 883 883 PXOPT_LOOKUP_S64(input_stack_id, config->args, "-input_stack_id", false, false); 884 PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", false, false);885 884 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 886 885 … … 902 901 psError(PS_ERR_BAD_PARAMETER_VALUE, true, 903 902 "No input has been defined (-input_stack_id or -input_warp_id)"); 904 return false;905 }906 if (input_warp_id && !exp_id) {907 psError(PS_ERR_BAD_PARAMETER_VALUE, true,908 "-exp_id is required with -input_warp_id.");909 903 return false; 910 904 } … … 917 911 template_warp_id ? template_warp_id : PS_MAX_S64, 918 912 template_stack_id ? template_stack_id : PS_MAX_S64, 919 exp_id ? exp_id : PS_MAX_S64,920 913 config)) { 921 914 psError(PS_ERR_UNKNOWN, false, "failed to create populated diffRun"); … … 935 928 936 929 937 static bool define byqueryMode(pxConfig *config)930 static bool definewarpstackMode(pxConfig *config) 938 931 { 939 932 PS_ASSERT_PTR_NON_NULL(config, false); … … 960 953 PXOPT_LOOKUP_BOOL(reRun, config->args, "-rerun", false); 961 954 PXOPT_LOOKUP_BOOL(available, config->args, "-available", false); 955 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 962 956 963 957 // find all things to queue 964 psString query = pxDataGet("difftool_define byquery_part1.sql");958 psString query = pxDataGet("difftool_definewarpstack_part1.sql"); 965 959 if (!query) { 966 960 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); … … 1057 1051 } 1058 1052 1053 if (pretend) { 1054 // negative simple so the default is true 1055 if (!ippdbPrintMetadatas(stdout, output, "diffRun", !simple)) { 1056 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1057 psFree(output); 1058 return false; 1059 } 1060 psFree(output); 1061 return true; 1062 } 1063 1059 1064 // create temporary table 1060 query = pxDataGet("difftool_define byquery_temp_create.sql");1065 query = pxDataGet("difftool_definewarpstack_temp_create.sql"); 1061 1066 if (!p_psDBRunQuery(config->dbh, query)) { 1062 1067 psError(PS_ERR_UNKNOWN, false, "database error"); … … 1070 1075 query = NULL; 1071 1076 1072 psString skycell_query = pxDataGet("difftool_define byquery_part2.sql");1077 psString skycell_query = pxDataGet("difftool_definewarpstack_part2.sql"); 1073 1078 1074 1079 psArray *list = psArrayAllocEmpty(16); // List of runs, to print … … 1183 1188 registered, 1184 1189 tess_id, 1185 exp_id, 1190 true, 1191 false, 1186 1192 false // magicked 1187 1193 ); … … 1284 1290 // Haversine formula for great circle distance 1285 1291 PXOPT_COPY_F32(config->args, selectWhere, "-distance", 1286 "DEGREES(2*ASIN(SQRT(POW(SIN(inputRawExp.decl - templateRawExp.decl),2) + COS(inputRawExp.decl)*COS(templateRawExp.decl)*POW(SIN(inputRawExp.ra - templateRawExp.ra),2))))", "<="); 1292 "DEGREES(2*ASIN(SQRT(POW(SIN(inputRawExp.decl - templateRawExp.decl),2) + " 1293 "COS(inputRawExp.decl)*COS(templateRawExp.decl)*" 1294 "POW(SIN(inputRawExp.ra - templateRawExp.ra),2))))", "<="); 1287 1295 1288 1296 PXOPT_LOOKUP_BOOL(backwards, config->args, "-backwards", false); … … 1308 1316 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 1309 1317 1318 if (!psDBTransaction(config->dbh)) { 1319 psError(PS_ERR_UNKNOWN, false, "database error"); 1320 psFree(selectWhere); 1321 psFree(insertWhere); 1322 return false; 1323 } 1324 1325 if (!rerun) { 1326 // Need to build table of exposures with diffs 1327 psString tempCreate = pxDataGet("difftool_definewarpwarp_temp_create.sql"); // Create temp table SQL 1328 if (!tempCreate) { 1329 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1330 psFree(selectWhere); 1331 psFree(insertWhere); 1332 if (!psDBRollback(config->dbh)) { 1333 psError(PS_ERR_UNKNOWN, false, "database error"); 1334 } 1335 return false; 1336 } 1337 1338 if (!p_psDBRunQuery(config->dbh, tempCreate)) { 1339 psError(PS_ERR_UNKNOWN, false, "Unable to create temp table: %s", tempCreate); 1340 psFree(tempCreate); 1341 psFree(selectWhere); 1342 psFree(insertWhere); 1343 if (!psDBRollback(config->dbh)) { 1344 psError(PS_ERR_UNKNOWN, false, "database error"); 1345 } 1346 return false; 1347 } 1348 psFree(tempCreate); 1349 1350 psString tempInsert = pxDataGet("difftool_definewarpwarp_temp_insert.sql"); // Insert to temp table 1351 if (!tempInsert) { 1352 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1353 psFree(selectWhere); 1354 psFree(insertWhere); 1355 if (!psDBRollback(config->dbh)) { 1356 psError(PS_ERR_UNKNOWN, false, "database error"); 1357 } 1358 return false; 1359 } 1360 1361 psString where = psStringCopy(""); // WHERE for insertion 1362 if (label) { 1363 psStringAppend(&where, "\nAND diffRun.label = '%s'", label); 1364 } 1365 1366 if (!p_psDBRunQueryF(config->dbh, tempInsert, where, where)) { 1367 psError(PS_ERR_UNKNOWN, false, "Unable to insert into temp table: %s", tempInsert); 1368 psFree(tempInsert); 1369 psFree(where); 1370 psFree(selectWhere); 1371 psFree(insertWhere); 1372 if (!psDBRollback(config->dbh)) { 1373 psError(PS_ERR_UNKNOWN, false, "database error"); 1374 } 1375 return false; 1376 } 1377 psFree(where); 1378 psFree(tempInsert); 1379 } 1380 1381 // Get list of warps to diff 1310 1382 psString select = pxDataGet("difftool_definewarpwarp_select.sql"); 1311 1383 if (!select) { 1312 1384 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1385 psFree(selectWhere); 1386 psFree(insertWhere); 1387 if (!psDBRollback(config->dbh)) { 1388 psError(PS_ERR_UNKNOWN, false, "database error"); 1389 } 1313 1390 return false; 1314 1391 } … … 1323 1400 psFree(selectWhere); 1324 1401 1325 if (!rerun) {1326 psStringAppend(&whereClause, "\n%s (diffRun.diff_id IS NULL", whereClause ? "AND" : "WHERE");1327 if (label) {1328 psStringAppend(&whereClause, " OR diffRun.label != '%s'", label);1329 }1330 psStringAppend(&whereClause, ")");1331 }1332 1333 1402 if (!available) { 1334 1403 psStringAppend(&whereClause, "\n%s inputWarpRun.state = 'full'", whereClause ? "AND" : "WHERE"); 1335 1404 } 1336 1405 1337 if (!psDBTransaction(config->dbh)) { 1338 psError(PS_ERR_UNKNOWN, false, "database error"); 1339 psFree(select); 1340 psFree(whereClause); 1341 psFree(insertWhere); 1342 return false; 1406 if (!rerun) { 1407 psStringAppend(&whereClause, "\n%s diffs.diff_id IS NULL", whereClause ? "AND" : "WHERE"); 1343 1408 } 1344 1409 1345 1410 if (!p_psDBRunQueryF(config->dbh, select, 1346 !rerun ? "\n" : "", // Activate LEFT JOIN against diff Run?1411 !rerun ? "\n" : "", // Activate LEFT JOIN against diffs? 1347 1412 whereClause)) { 1348 1413 psError(PS_ERR_UNKNOWN, false, "Unable to run query: %s [WITH] %s", select, whereClause); … … 1414 1479 psMetadata *row = results->data[i]; // Result row from query 1415 1480 1416 psS64 exp_id = psMetadataLookupS64(NULL, row, "input_exp_id");1417 1481 psS64 input_id = psMetadataLookupS64(NULL, row, "input_warp_id"); 1418 1482 const char *template = psMetadataLookupStr(NULL, row, "template_warp_id"); 1419 1483 const char *tess_id = psMetadataLookupStr(NULL, row, "tess_id"); 1420 if (! exp_id || !input_id || !template || !tess_id) {1484 if (!input_id || !template || !tess_id) { 1421 1485 psError(PXTOOLS_ERR_PROG, false, "Identifiers not found"); 1422 1486 psFree(list); … … 1430 1494 1431 1495 diffRunRow *run = diffRunRowAlloc(0, "reg", workdir, label, reduction, NULL, registered, 1432 tess_id, exp_id, false); // Run to insert1496 tess_id, true, true, false); // Run to insert 1433 1497 if (!diffRunInsertObject(config->dbh, run)) { 1434 1498 psError(PS_ERR_UNKNOWN, false, "database error"); -
trunk/ippTools/src/difftool.h
r23502 r24174 34 34 DIFFTOOL_MODE_REVERTDIFFSKYFILE, 35 35 DIFFTOOL_MODE_DEFINEPOPRUN, 36 DIFFTOOL_MODE_DEFINE BYQUERY,36 DIFFTOOL_MODE_DEFINEWARPSTACK, 37 37 DIFFTOOL_MODE_DEFINEWARPWARP, 38 38 DIFFTOOL_MODE_PENDINGCLEANUPRUN, -
trunk/ippTools/src/difftoolConfig.c
r23940 r24174 49 49 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 50 50 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-tess_id", 0, "define tessellation ID (required)", NULL); 51 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-bothways", 0, "do the subtraction both ways?", false); 52 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-exposure", 0, "subtraction for entire exposure?", false); 51 53 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 52 54 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-reduction", 0, "define reduction class", NULL); … … 90 92 psMetadataAddS16(adddiffskyfileArgs, PS_LIST_TAIL, "-fault", 0, "set fault code", 0); 91 93 psMetadataAddS16(adddiffskyfileArgs, PS_LIST_TAIL, "-quality", 0, "set quality", 0); 92 psMetadataAddStr(adddiffskyfileArgs, PS_LIST_TAIL, "-uri", 0, "define URI of file", 0);93 94 psMetadataAddStr(adddiffskyfileArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", 0); 94 95 psMetadataAddF64(adddiffskyfileArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); … … 142 143 psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-reduction", 0, "define reduction class", NULL); 143 144 psMetadataAddBool(definepoprunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 144 psMetadataAddS64(definepoprunArgs, PS_LIST_TAIL, "-exp_id", 0, "define exposure ID for template", 0);145 145 psMetadataAddS64(definepoprunArgs, PS_LIST_TAIL, "-template_warp_id", 0, "define warp ID for template", 0); 146 146 psMetadataAddS64(definepoprunArgs, PS_LIST_TAIL, "-template_stack_id", 0, "define stack ID for template", 0); … … 148 148 psMetadataAddS64(definepoprunArgs, PS_LIST_TAIL, "-input_stack_id", 0, "define stack ID for input", 0); 149 149 150 // -definebyquery 151 psMetadata *definebyqueryArgs = psMetadataAlloc(); 152 psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warp ID", 0); 153 psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 154 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell ID", NULL); 155 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tess ID", NULL); 156 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-filter", 0, "search by filter", NULL); 157 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-stack_label", 0, "search by stack label", NULL); 158 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-warp_label", 0, "search by warp label", NULL); 159 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-good_frac", 0, "minimum good fraction of skycell", NAN); 160 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 161 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 162 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-reduction", 0, "define reduction class", NULL); 163 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 164 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-new-templates", 0, "also search for diffs with new template", false); 165 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-rerun", 0, "define new run even if one exists", false); 166 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-available", 0, "define new run even if warpRun has some faults", false); 167 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 150 // -definewarpstack 151 psMetadata *definewarpstackArgs = psMetadataAlloc(); 152 psMetadataAddS64(definewarpstackArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warp ID", 0); 153 psMetadataAddS64(definewarpstackArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 154 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell ID", NULL); 155 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tess ID", NULL); 156 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-filter", 0, "search by filter", NULL); 157 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-stack_label", 0, "search by stack label", NULL); 158 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-warp_label", 0, "search by warp label", NULL); 159 psMetadataAddF32(definewarpstackArgs, PS_LIST_TAIL, "-good_frac", 0, "minimum good fraction of skycell", NAN); 160 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 161 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 162 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-reduction", 0, "define reduction class", NULL); 163 psMetadataAddTime(definewarpstackArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 164 psMetadataAddBool(definewarpstackArgs, PS_LIST_TAIL, "-new-templates", 0, "also search for diffs with new template", false); 165 psMetadataAddBool(definewarpstackArgs, PS_LIST_TAIL, "-rerun", 0, "define new run even if one exists", false); 166 psMetadataAddBool(definewarpstackArgs, PS_LIST_TAIL, "-available", 0, "define new run even if warpRun has some faults", false); 167 psMetadataAddBool(definewarpstackArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 168 psMetadataAddBool(definewarpstackArgs, PS_LIST_TAIL, "-pretend", 0, "list results but to not queue", false); 168 169 169 170 // -definewarpwarp … … 239 240 PXOPT_ADD_MODE("-revertdiffskyfile","", DIFFTOOL_MODE_REVERTDIFFSKYFILE, revertdiffskyfileArgs); 240 241 PXOPT_ADD_MODE("-definepoprun", "", DIFFTOOL_MODE_DEFINEPOPRUN, definepoprunArgs); 241 PXOPT_ADD_MODE("-define byquery", "", DIFFTOOL_MODE_DEFINEBYQUERY, definebyqueryArgs);242 PXOPT_ADD_MODE("-definewarpstack", "", DIFFTOOL_MODE_DEFINEWARPSTACK, definewarpstackArgs); 242 243 PXOPT_ADD_MODE("-definewarpwarp", "", DIFFTOOL_MODE_DEFINEWARPWARP, definewarpwarpArgs); 243 244 PXOPT_ADD_MODE("-pendingcleanuprun", "show runs that need to be cleaned up", DIFFTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunArgs); -
trunk/ippTools/src/magictool.c
r23970 r24174 127 127 PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false); 128 128 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 129 130 psMetadata *where = psMetadataAlloc(); 131 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 132 PXOPT_COPY_STR(config->args, where, "-diff_label", "diffRun.label", "=="); 133 129 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 130 131 psMetadata *diffWhere = psMetadataAlloc(); // WHERE conditions for diffRuns 132 PXOPT_COPY_STR(config->args, diffWhere, "-diff_label", "diffRun.label", "=="); 133 PXOPT_COPY_S64(config->args, diffWhere, "-diff_id", "diff_id", "=="); 134 135 psMetadata *queryWhere = psMetadataAlloc(); // WHERE conditions for everything else 136 PXOPT_COPY_S64(config->args, queryWhere, "-exp_id", "exp_id", "=="); 134 137 135 138 // Get list of exposures ready to magic … … 146 149 PXOPT_LOOKUP_BOOL(rerun, config->args, "-rerun", false); 147 150 148 psString queryWhere = NULL; // WHERE conditions for entire query 151 psString diffWhereStr = NULL; // WHERE conditions for diffRuns 152 psString queryWhereStr = NULL; // WHERE conditions for entire query 149 153 if (!available) { 150 psStringAppend(& queryWhere, " \nWHEREdiffRun.state = 'full'");151 } else {152 // what if no skycells for the diff run completed?153 } 154 psStringAppend(&diffWhereStr, "\nAND diffRun.state = 'full'"); 155 } 156 // what if no skycells for the diff run completed? 157 154 158 if (!rerun) { 155 const char *newWhere = " magic_id IS NULL"; // String to add 156 if (queryWhere) { 157 psStringAppend(&queryWhere, " AND %s", newWhere); 158 } else { 159 psStringAppend(&queryWhere, "\nWHERE %s", newWhere); 160 } 161 } 159 psStringAppend(&queryWhereStr, "\n%s magic_id IS NULL", queryWhereStr ? "AND" : "WHERE"); 160 } 161 162 162 // now add the user specified qualifiers 163 if (psListLength( where->list)) {164 psString whereClause = psDBGenerateWhereConditionSQL( where, NULL);165 psStringAppend(& queryWhere, "\n%s %s", queryWhere == NULL ? "WHERE" : "AND", whereClause);163 if (psListLength(diffWhere->list)) { 164 psString whereClause = psDBGenerateWhereConditionSQL(diffWhere, NULL); 165 psStringAppend(&diffWhereStr, "\nAND %s", whereClause); 166 166 psFree(whereClause); 167 167 } 168 psFree(where); 169 if (!queryWhere) { 170 psStringAppend(&queryWhere, " "); 171 } 172 173 if (!p_psDBRunQueryF(config->dbh, query, queryWhere)) { 168 if (psListLength(queryWhere->list)) { 169 psString whereClause = psDBGenerateWhereConditionSQL(queryWhere, NULL); 170 psStringAppend(&queryWhereStr, "\n%s %s", queryWhereStr ? "AND" : "WHERE", whereClause); 171 psFree(whereClause); 172 } 173 psFree(diffWhere); 174 psFree(queryWhere); 175 176 // Ensure the WHERE strings have something 177 if (!diffWhereStr) { 178 diffWhereStr = psStringCopy(""); 179 } 180 if (!queryWhereStr) { 181 queryWhereStr = psStringCopy(""); 182 } 183 184 if (!p_psDBRunQueryF(config->dbh, query, diffWhereStr, diffWhereStr, queryWhereStr)) { 174 185 psError(PS_ERR_UNKNOWN, false, "database error"); 175 psFree(queryWhere); 186 psFree(diffWhereStr); 187 psFree(queryWhereStr); 176 188 psFree(query); 177 189 return false; 178 190 } 179 psFree(queryWhere); 191 psFree(diffWhereStr); 192 psFree(queryWhereStr); 180 193 psFree(query); 181 194 } … … 201 214 } 202 215 216 217 if (pretend) { 218 // negative simple so the default is true 219 if (!ippdbPrintMetadatas(stdout, output, "diffRun", !simple)) { 220 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 221 psFree(output); 222 return false; 223 } 224 psFree(output); 225 return true; 226 } 227 228 203 229 // Parse the list of exposures ready to magic 204 205 230 if (!psDBTransaction(config->dbh)) { 206 231 psError(PS_ERR_UNKNOWN, false, "database error"); … … 215 240 psS64 exp_id = psMetadataLookupS64(NULL, row, "exp_id"); // Exposure identifier 216 241 psS64 diff_id = psMetadataLookupS64(NULL, row, "diff_id"); // difference identifier 242 bool inverse = psMetadataLookupU64(NULL, row, "inverse"); // Inverse subtraction? Note types! 217 243 218 244 // create a new magicRun for this group 219 magicRunRow *run = magicRunRowAlloc(0, exp_id, diff_id, "new", workdir, "dirty", label, dvodb, registered, 0); 245 magicRunRow *run = magicRunRowAlloc(0, exp_id, diff_id, inverse, "new", workdir, "dirty", label, 246 dvodb, registered, 0); 220 247 if (!run) { 221 248 psAbort("failed to alloc magicRun object"); … … 296 323 297 324 // optional 325 PXOPT_LOOKUP_BOOL(inverse, config->args, "-inverse", false); 298 326 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 299 327 PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false); … … 305 333 exp_id, 306 334 diff_id ? diff_id : PS_MAX_S64, 335 inverse, 307 336 "reg", // state 308 337 workdir, … … 363 392 // required 364 393 PXOPT_LOOKUP_S64(magic_id, config->args, "-magic_id", true, false); 365 PXOPT_LOOKUP_S64(diff_id, config->args, "-diff_id", true, false);366 394 PXOPT_LOOKUP_STR(node, config->args, "-node", true, false); 367 395 … … 369 397 config->dbh, 370 398 magic_id, 371 diff_id,372 399 node 373 400 ); … … 563 590 PXOPT_COPY_S16(config->args, where, "-fault", "fault", "=="); 564 591 565 psString query = psStringCopy("UPDATE magicRun SET fault = 0, state = ' run' WHERE fault != 0");592 psString query = psStringCopy("UPDATE magicRun SET fault = 0, state = 'new' WHERE fault != 0"); 566 593 567 594 if (psListLength(where->list)) { … … 584 611 PS_ASSERT_PTR_NON_NULL(config, false); 585 612 586 psMetadata *where = psMetadataAlloc(); 587 PXOPT_COPY_S64(config->args, where, "-magic_id", "magic_id", "=="); 588 PXOPT_COPY_STR(config->args, where, "-node", "node", "=="); 613 // Regrettably, there are multiple WHERE hooks which call the same things different names 614 psMetadata *templatesWhere = psMetadataAlloc(); // WHERE for selecting template 615 psMetadata *magicWhere = psMetadataAlloc(); // WHERE for selecting magic runs 616 617 PXOPT_COPY_S64(config->args, templatesWhere, "-magic_id", "magicRun.magic_id", "=="); 618 PXOPT_COPY_STR(config->args, templatesWhere, "-node", "diffInputSkyfile.skycell_id", "=="); 619 620 PXOPT_COPY_S64(config->args, magicWhere, "-magic_id", "magicRun.magic_id", "=="); 621 PXOPT_COPY_STR(config->args, magicWhere, "-node", "magicTree.node", "=="); 589 622 590 623 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); … … 597 630 } 598 631 599 if (psListLength(where->list)) { 600 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 601 psStringAppend(&query, " AND %s", whereClause); 632 psString templatesWhereStr = psStringCopy(""); // WHERE for selecting template 633 psString magicWhereStr = psStringCopy(""); // WHERE for selecting magic runs 634 635 if (psListLength(templatesWhere->list)) { 636 psString whereClause = psDBGenerateWhereConditionSQL(templatesWhere, NULL); 637 psStringAppend(&templatesWhereStr, "\nAND %s", whereClause); 602 638 psFree(whereClause); 603 639 } 604 psFree(where); 640 psFree(templatesWhere); 641 642 if (psListLength(magicWhere->list)) { 643 psString whereClause = psDBGenerateWhereConditionSQL(magicWhere, NULL); 644 psStringAppend(&magicWhereStr, "\nWHERE %s", whereClause); 645 psFree(whereClause); 646 } 647 psFree(magicWhere); 605 648 606 649 // treat limit == 0 as "no limit" … … 611 654 } 612 655 613 if (!p_psDBRunQuery(config->dbh, query)) { 614 psError(PS_ERR_UNKNOWN, false, "database error"); 656 if (!p_psDBRunQueryF(config->dbh, query, 657 templatesWhereStr, templatesWhereStr, 658 magicWhereStr, magicWhereStr)) { 659 psError(PS_ERR_UNKNOWN, false, "database error"); 660 psFree(templatesWhereStr); 661 psFree(magicWhereStr); 615 662 psFree(query); 616 663 return false; 617 664 } 665 psFree(templatesWhereStr); 666 psFree(magicWhereStr); 618 667 psFree(query); 619 668 … … 704 753 705 754 bool status = false; 706 psS 32 done = psMetadataLookupS32(&status, data, "done");755 psS64 done = psMetadataLookupS64(&status, data, "done"); 707 756 if (!status) { 708 757 psAbort("failed to lookup value for done column"); 709 758 } 710 psS 16 bad = psMetadataLookupS16(&status, data, "bad");759 psS64 bad = psMetadataLookupS64(&status, data, "bad"); 711 760 if (!status) { 712 761 psAbort("failed to lookup value for bad column"); … … 738 787 739 788 psMetadata *where = psMetadataAlloc(); 740 PXOPT_COPY_S64(config->args, where, "-magic_id", "magic _id", "==");789 PXOPT_COPY_S64(config->args, where, "-magic_id", "magicRun.magic_id", "=="); 741 790 pxAddLabelSearchArgs (config, where, "-label", "magicRun.label", "=="); 742 791 … … 794 843 if (limit) { 795 844 if (psArrayLength(output) >= limit) { 796 // we've found enough (not that limit was applied to the query so '> limit' won't happen)845 // we've found enough (note that limit was applied to the query so '> limit' won't happen) 797 846 // negative simple so the default is true 798 847 if (!ippdbPrintMetadatas(stdout, output, "magicMe", !simple)) { … … 936 985 937 986 // optional 938 PXOPT_LOOKUP_STR( uri, config->args, "-uri", false, false);987 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false); 939 988 940 989 // default values … … 944 993 magic_id, 945 994 node, 946 uri,995 path_base, 947 996 fault 948 997 )) { -
trunk/ippTools/src/magictoolConfig.c
r23969 r24174 53 53 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-dvodb", 0, "define dvodb", NULL); 54 54 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 55 psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-diff_id", 0, "search diff_id", 0); 55 56 psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-exp_id", 0, "search exp_id", 0); 56 57 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-diff_label", 0, "select diff label", NULL); … … 58 59 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-rerun", 0, "generate new run even if existing?", false); 59 60 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 61 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend", 0, "list results but do not queue", false); 60 62 61 63 // -definerun … … 65 67 // following argument is for compatability 66 68 psMetadataAddS64(definerunArgs, PS_LIST_TAIL, "-diff_id", 0, "define diff_id", 0); 69 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-inverse", 0, "use the inverse subtraction?", false); 67 70 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 68 71 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-dvodb", 0, "define dvodb", NULL); … … 78 81 psMetadata *addinputskyfileArgs = psMetadataAlloc(); 79 82 psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-magic_id", 0, "define magictool ID (required)", 0); 80 psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "define difftool ID (required)", 0);81 83 psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-node", 0, "define symbolic node name (required)", NULL); 82 84 … … 125 127 psMetadataAddS64(addresultArgs, PS_LIST_TAIL, "-magic_id", 0, "define magictool ID (required)", 0); 126 128 psMetadataAddStr(addresultArgs, PS_LIST_TAIL, "-node", 0, "define symbolic node name (required)", NULL); 127 psMetadataAddStr(addresultArgs, PS_LIST_TAIL, "- uri", 0, "define URI", NULL);129 psMetadataAddStr(addresultArgs, PS_LIST_TAIL, "-path_base", 0, "define path_base", NULL); 128 130 psMetadataAddS16(addresultArgs, PS_LIST_TAIL, "-fault", 0, "set fault code", 0); 129 131
Note:
See TracChangeset
for help on using the changeset viewer.
