Changeset 28374
- Timestamp:
- Jun 16, 2010, 4:10:56 PM (16 years ago)
- Location:
- tags/ipp-20100610/ippTools
- Files:
-
- 4 edited
-
share/pubtool_definerun.sql (modified) (3 diffs)
-
share/pubtool_pending.sql (modified) (2 diffs)
-
src/pubtool.c (modified) (4 diffs)
-
src/pubtoolConfig.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tags/ipp-20100610/ippTools/share/pubtool_definerun.sql
r27041 r28374 1 1 -- Get runs to publish 2 SELECT 2 SELECT DISTINCT 3 3 client_id, 4 4 stage_id, … … 6 6 FROM ( 7 7 -- Get diffs to publish 8 SELECT 8 SELECT DISTINCT 9 9 client_id, 10 10 diff_id AS stage_id, 11 label AS src_label11 diffRun.label AS src_label 12 12 FROM publishClient 13 13 JOIN diffRun 14 JOIN diffInputSkyfile USING(diff_id) 15 JOIN warpRun ON warpRun.warp_id = diffInputSkyfile.warp1 -- Only JOINing input, not reference! 16 JOIN fakeRun USING(fake_id) 17 JOIN camRun USING(cam_id) 18 JOIN chipRun USING(chip_id) 19 JOIN rawExp USING(exp_id) 14 20 WHERE publishClient.stage = 'diff' 15 21 AND publishClient.active = 1 16 AND diffRun.state = 'full'17 AND (diffRun.magicked >0 OR diffRun.diff_mode = 4 OR publishClient.magicked = 0)22 AND diffRun.state IN ('full', 'cleaned', 'goto_cleaned') 23 AND (diffRun.magicked != 0 OR diffRun.diff_mode = 4 OR publishClient.magicked = 0) 18 24 -- WHERE hook %s 19 25 UNION … … 22 28 client_id, 23 29 cam_id AS stage_id, 24 label AS src_label30 camRun.label AS src_label 25 31 FROM publishClient 26 32 JOIN camRun 33 JOIN chipRun USING(chip_id) 34 JOIN rawExp USING(exp_id) 27 35 WHERE publishClient.stage = 'camera' 28 36 AND publishClient.active = 1 29 AND camRun.state = 'full'30 AND (camRun.magicked >0 OR publishClient.magicked = 0)37 AND camRun.state IN ('full', 'cleaned', 'goto_cleaned') 38 AND (camRun.magicked != 0 OR publishClient.magicked = 0) 31 39 -- WHERE hook %s 32 40 ) AS publishToDo 33 41 -- Only get stuff that hasn't been published 34 42 LEFT JOIN publishRun USING(client_id, stage_id) 35 WHERE publishRun.client_id IS NULL -
tags/ipp-20100610/ippTools/share/pubtool_pending.sql
r27052 r28374 26 26 AND publishClient.active = 1 27 27 AND publishRun.state = 'new' 28 AND diffRun.state = 'full'29 AND (diffRun.magicked >0 OR diffRun.diff_mode = 4 OR publishClient.magicked = 0)28 AND diffRun.state IN ('full', 'cleaned', 'goto_cleaned') 29 AND (diffRun.magicked != 0 OR diffRun.diff_mode = 4 OR publishClient.magicked = 0) 30 30 -- WHERE hook %s 31 31 UNION … … 47 47 AND publishClient.active = 1 48 48 AND publishRun.state ='new' 49 AND camRun.state = 'full'50 AND (camRun.magicked >0 OR publishClient.magicked = 0)49 AND camRun.state IN ('full', 'cleaned', 'goto_cleaned') 50 AND (camRun.magicked != 0 OR publishClient.magicked = 0) 51 51 -- WHERE hook %s 52 52 ) AS publishToDo -
tags/ipp-20100610/ippTools/src/pubtool.c
r27071 r28374 151 151 PS_ASSERT_PTR_NON_NULL(config, false); 152 152 153 psMetadata *where = psMetadataAlloc(); // WHERE conditions 153 psMetadata *diffWhere = psMetadataAlloc(); // WHERE conditions for diffs 154 psMetadata *camWhere = psMetadataAlloc(); // WHERE conditions for cams 154 155 155 156 // required 156 157 157 158 // optional 158 PXOPT_COPY_S64(config->args, where, "-client_id", "client_id", "=="); 159 pxAddLabelSearchArgs(config, where, "-label", "label", "=="); // define using newExp label 159 PXOPT_COPY_S64(config->args, diffWhere, "-client_id", "client_id", "=="); 160 pxAddLabelSearchArgs(config, diffWhere, "-label", "diffRun.label", "=="); 161 pxAddLabelSearchArgs(config, diffWhere, "-data_group", "diffRun.data_group", "LIKE"); 162 PXOPT_COPY_TIME(config->args, diffWhere, "-dateobs_begin", "rawExp.dateobs", ">="); 163 PXOPT_COPY_TIME(config->args, diffWhere, "-dateobs_end", "rawExp.dateobs", "<="); 164 PXOPT_COPY_STR(config->args, diffWhere, "-filter", "rawExp.filter", "LIKE"); 165 PXOPT_COPY_STR(config->args, diffWhere, "-obs_mode", "rawExp.obs_mode", "LIKE"); 166 167 PXOPT_COPY_S64(config->args, camWhere, "-client_id", "client_id", "=="); 168 pxAddLabelSearchArgs(config, camWhere, "-label", "camRun.label", "=="); 169 pxAddLabelSearchArgs(config, camWhere, "-data_group", "camRun.data_group", "LIKE"); 170 PXOPT_COPY_TIME(config->args, camWhere, "-dateobs_begin", "rawExp.dateobs", ">="); 171 PXOPT_COPY_TIME(config->args, camWhere, "-dateobs_end", "rawExp.dateobs", "<="); 172 PXOPT_COPY_STR(config->args, camWhere, "-filter", "rawExp.filter", "LIKE"); 173 PXOPT_COPY_STR(config->args, camWhere, "-obs_mode", "rawExp.obs_mode", "LIKE"); 174 175 PXOPT_LOOKUP_STR(set_label, config->args, "-set_label", false, false); 176 PXOPT_LOOKUP_BOOL(rerun, config->args, "-rerun", false); 177 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 178 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 179 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 160 180 161 181 psString query = pxDataGet("pubtool_definerun.sql"); // Query to run 162 182 if (!query) { 163 183 psError(PXTOOLS_ERR_SYS, false, "Failed to retreive SQL statement"); 164 psFree(where); 165 return false; 184 psFree(diffWhere); 185 psFree(camWhere); 186 return false; 187 } 188 189 if (!rerun) { 190 psStringAppend(&query, "\nWHERE publishRun.client_id IS NULL"); 191 } 192 193 if (limit) { 194 psString limitString = psDBGenerateLimitSQL(limit); 195 psStringAppend(&query, "\n%s", limitString); 196 psFree(limitString); 166 197 } 167 198 168 199 if (!psDBTransaction(config->dbh)) { 169 200 psError(PS_ERR_UNKNOWN, false, "Database error"); 170 psFree(where); 171 return false; 172 } 173 174 psString whereClause = psStringCopy(""); // Additional constraints to add to query 175 if (psListLength(where->list)) { 176 psString clause = psDBGenerateWhereConditionSQL(where, NULL); 177 psStringAppend(&whereClause, "\n AND %s", clause); 201 psFree(diffWhere); 202 psFree(camWhere); 203 return false; 204 } 205 206 psString whereDiff = psStringCopy(""); // Additional constraints to add to query 207 if (psListLength(diffWhere->list)) { 208 psString clause = psDBGenerateWhereConditionSQL(diffWhere, NULL); 209 psStringAppend(&whereDiff, "\n AND %s", clause); 178 210 psFree(clause); 179 211 } 180 psFree(where); 181 182 if (!p_psDBRunQueryF(config->dbh, query, whereClause, whereClause)) { 212 psFree(diffWhere); 213 214 psString whereCam = psStringCopy(""); // Additional constraints to add to query 215 if (psListLength(camWhere->list)) { 216 psString clause = psDBGenerateWhereConditionSQL(camWhere, NULL); 217 psStringAppend(&whereCam, "\n AND %s", clause); 218 psFree(clause); 219 } 220 psFree(camWhere); 221 222 if (!p_psDBRunQueryF(config->dbh, query, whereDiff, whereCam)) { 183 223 psError(PS_ERR_UNKNOWN, false, "Database error"); 184 224 psFree(query); 185 psFree(whereClause); 225 psFree(whereDiff); 226 psFree(whereCam); 186 227 if (!psDBRollback(config->dbh)) { 187 228 psError(PS_ERR_UNKNOWN, false, "Database error"); … … 190 231 } 191 232 psFree(query); 192 psFree(whereClause); 233 psFree(whereDiff); 234 psFree(whereCam); 193 235 194 236 psArray *output = p_psDBFetchResult(config->dbh); // Output of SELECT statement … … 206 248 } 207 249 250 if (pretend) { 251 if (!ippdbPrintMetadatas(stdout, output, "publishRun", !simple)) { 252 psError(psErrorCodeLast(), false, "Failed to print array"); 253 psFree(output); 254 return false; 255 } 256 psFree(output); 257 return true; 258 } 259 208 260 for (int i = 0; i < output->n; i++) { 209 261 psMetadata *row = output->data[i]; // Row of interest 210 262 psS64 client = psMetadataLookupS64(NULL, row, "client_id"); // Client identifier 211 263 psS64 stage = psMetadataLookupS64(NULL, row, "stage_id"); // Stage identifier 212 c har *label = psMetadataLookupStr(NULL, row, "src_label"); // label from correct source213 214 if (!publishRunInsert(config->dbh, 0, client, stage, label, "new")) {264 const char *label = psMetadataLookupStr(NULL, row, "src_label"); // label from correct source 265 266 if (!publishRunInsert(config->dbh, 0, client, stage, set_label ? set_label : label, "new")) { 215 267 psError(PS_ERR_UNKNOWN, false, "Unable to add fileset"); 216 268 psFree(output); … … 241 293 PXOPT_COPY_STR(config->args, where, "-stage", "publishClient.stage", "=="); 242 294 PXOPT_COPY_STR(config->args, where, "-comment", "publishClient.comment", "LIKE"); 243 PXOPT_COPY_STR(config->args, where, "-label", "publishRun.label", "==");295 pxAddLabelSearchArgs(config, where, "-label", "publishRun.label", "=="); 244 296 245 297 // optional -
tags/ipp-20100610/ippTools/src/pubtoolConfig.c
r27311 r28374 62 62 // -definerun 63 63 psMetadata *definerunArgs = psMetadataAlloc(); 64 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_label", 0, "set label", NULL); 64 65 psMetadataAddS64(definerunArgs, PS_LIST_TAIL, "-client_id", 0, "search by client_id", 0); 65 66 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "set and search by label", NULL); 67 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by data_group", NULL); 68 psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 69 psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<=)", NULL); 70 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); 71 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-obs_mode", 0, "search by observation mode", NULL); 72 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-rerun", 0, "Re-run publish?", false); 73 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-pretend", 0, "Pretend to define?", false); 74 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple", 0, "use simple output format?", false); 75 psMetadataAddU64(definerunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set", 0); 66 76 67 77 // -pending … … 70 80 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-stage", 0, "search on source", NULL); 71 81 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-comment", 0, "search on comment (LIKE)", NULL); 72 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-label", 0, "search on label", NULL);82 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search on label", NULL); 73 83 psMetadataAddBool(pendingArgs, PS_LIST_TAIL, "-simple", 0, "use simple output format?", false); 74 84 psMetadataAddU64(pendingArgs, PS_LIST_TAIL, "-limit", 0, "limit result set", 0);
Note:
See TracChangeset
for help on using the changeset viewer.
