Changeset 28338 for branches/czw_branch/20100519/ippTools/src/pubtool.c
- Timestamp:
- Jun 15, 2010, 1:12:26 PM (16 years ago)
- Location:
- branches/czw_branch/20100519
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
ippTools/src/pubtool.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/czw_branch/20100519
- Property svn:mergeinfo changed
/trunk merged: 28308-28311,28313,28317,28319-28332,28335-28337
- Property svn:mergeinfo changed
-
branches/czw_branch/20100519/ippTools/src/pubtool.c
r27071 r28338 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_BOOL(rerun, config->args, "-rerun", false); 176 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 177 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 178 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 160 179 161 180 psString query = pxDataGet("pubtool_definerun.sql"); // Query to run 162 181 if (!query) { 163 182 psError(PXTOOLS_ERR_SYS, false, "Failed to retreive SQL statement"); 164 psFree(where); 165 return false; 183 psFree(diffWhere); 184 psFree(camWhere); 185 return false; 186 } 187 188 if (!rerun) { 189 psStringAppend(&query, "\nWHERE publishRun.client_id IS NULL"); 190 } 191 192 if (limit) { 193 psString limitString = psDBGenerateLimitSQL(limit); 194 psStringAppend(&query, "\n%s", limitString); 195 psFree(limitString); 166 196 } 167 197 168 198 if (!psDBTransaction(config->dbh)) { 169 199 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); 200 psFree(diffWhere); 201 psFree(camWhere); 202 return false; 203 } 204 205 psString whereDiff = psStringCopy(""); // Additional constraints to add to query 206 if (psListLength(diffWhere->list)) { 207 psString clause = psDBGenerateWhereConditionSQL(diffWhere, NULL); 208 psStringAppend(&whereDiff, "\n AND %s", clause); 178 209 psFree(clause); 179 210 } 180 psFree(where); 181 182 if (!p_psDBRunQueryF(config->dbh, query, whereClause, whereClause)) { 211 psFree(diffWhere); 212 213 psString whereCam = psStringCopy(""); // Additional constraints to add to query 214 if (psListLength(camWhere->list)) { 215 psString clause = psDBGenerateWhereConditionSQL(camWhere, NULL); 216 psStringAppend(&whereCam, "\n AND %s", clause); 217 psFree(clause); 218 } 219 psFree(camWhere); 220 221 if (!p_psDBRunQueryF(config->dbh, query, whereDiff, whereCam)) { 183 222 psError(PS_ERR_UNKNOWN, false, "Database error"); 184 223 psFree(query); 185 psFree(whereClause); 224 psFree(whereDiff); 225 psFree(whereCam); 186 226 if (!psDBRollback(config->dbh)) { 187 227 psError(PS_ERR_UNKNOWN, false, "Database error"); … … 190 230 } 191 231 psFree(query); 192 psFree(whereClause); 232 psFree(whereDiff); 233 psFree(whereCam); 193 234 194 235 psArray *output = p_psDBFetchResult(config->dbh); // Output of SELECT statement … … 202 243 if (!psArrayLength(output)) { 203 244 psTrace("pubtool", PS_LOG_INFO, "No rows found"); 245 psFree(output); 246 return true; 247 } 248 249 if (pretend) { 250 if (!ippdbPrintMetadatas(stdout, output, "publishRun", !simple)) { 251 psError(psErrorCodeLast(), false, "Failed to print array"); 252 psFree(output); 253 return false; 254 } 204 255 psFree(output); 205 256 return true; … … 241 292 PXOPT_COPY_STR(config->args, where, "-stage", "publishClient.stage", "=="); 242 293 PXOPT_COPY_STR(config->args, where, "-comment", "publishClient.comment", "LIKE"); 243 PXOPT_COPY_STR(config->args, where, "-label", "publishRun.label", "==");294 pxAddLabelSearchArgs(config, where, "-label", "label", "=="); 244 295 245 296 // optional
Note:
See TracChangeset
for help on using the changeset viewer.
