Changeset 28484 for branches/pap/ippTools/src/stacktool.c
- Timestamp:
- Jun 24, 2010, 2:59:09 PM (16 years ago)
- Location:
- branches/pap
- Files:
-
- 3 edited
-
. (modified) (1 prop)
-
ippTools/src (modified) (1 prop)
-
ippTools/src/stacktool.c (modified) (22 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/pap
- Property svn:mergeinfo changed
-
branches/pap/ippTools/src
- Property svn:ignore
-
old new 39 39 warptool 40 40 staticskytool 41 42 41 bgtool 42 diffphottool
-
- Property svn:ignore
-
branches/pap/ippTools/src/stacktool.c
r28043 r28484 39 39 static bool addsumskyfileMode(pxConfig *config); 40 40 static bool sumskyfileMode(pxConfig *config); 41 static bool sassskyfileMode(pxConfig *config); 41 42 static bool revertsumskyfileMode(pxConfig *config); 43 static bool tosummaryMode(pxConfig *config); 44 static bool addsummaryMode(pxConfig *config); 42 45 static bool pendingcleanuprunMode(pxConfig *config); 43 46 static bool pendingcleanupskyfileMode(pxConfig *config); … … 75 78 MODECASE(STACKTOOL_MODE_ADDSUMSKYFILE, addsumskyfileMode); 76 79 MODECASE(STACKTOOL_MODE_SUMSKYFILE, sumskyfileMode); 80 MODECASE(STACKTOOL_MODE_SASSSKYFILE, sassskyfileMode); 77 81 MODECASE(STACKTOOL_MODE_REVERTSUMSKYFILE, revertsumskyfileMode); 82 MODECASE(STACKTOOL_MODE_TOSUMMARY, tosummaryMode); 83 MODECASE(STACKTOOL_MODE_ADDSUMMARY, addsummaryMode); 78 84 MODECASE(STACKTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunMode); 79 85 MODECASE(STACKTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileMode); … … 102 108 exit(exit_status); 103 109 } 110 //stackAssociationRow *association = pxStackAssociationDefine(data_group,tess_id,filter,skycell_id); 111 stackAssociationRow *pxStackAssociationDefine(pxConfig *config, psS64 stack_id) { 112 psString select = pxDataGet("stacktool_associationdefine_select.sql"); 113 if (!select) { 114 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 115 return false; 116 } 117 118 psString idString = NULL; 119 psStringAppend(&idString, "%" PRId64, stack_id); 120 // Copy string to get around the issue with psStringSubstitute not believing 121 // that select is a psString. 122 psString rep = psStringCopy(select); 123 psFree(select); 124 select = rep; 125 psStringSubstitute(&select, idString, "@STACK_ID@"); 126 psFree(idString); 127 128 if (!p_psDBRunQuery(config->dbh, select)) { 129 psError(PS_ERR_UNKNOWN,false, "database error"); 130 psFree(select); 131 return(NULL); 132 } 133 psFree(select); 134 psArray *output = p_psDBFetchResult(config->dbh); 135 if (!output) { 136 psErrorCode err = psErrorCodeLast(); 137 switch (err) { 138 case PS_ERR_DB_CLIENT: 139 psError(PXTOOLS_ERR_SYS, false, "database error"); 140 case PS_ERR_DB_SERVER: 141 psError(PXTOOLS_ERR_PROG, false, "database error"); 142 default: 143 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 144 } 145 return(NULL); 146 } 147 if (psArrayLength(output) != 1) { 148 psWarning("stacktool: incorrect number of rows found"); 149 psFree(output); 150 return(NULL); 151 } 152 psMetadata *outrow = psMetadataAlloc(); 153 for (long i = 0; i < output->n; i++) { 154 psMetadata *row = output->data[i]; 155 156 printf("%" PRId64 " %s %s %s %s\n",psMetadataLookupS64(NULL,row,"sass_id"), 157 psMetadataLookupStr(NULL,row,"data_group"), 158 psMetadataLookupStr(NULL,row,"tess_id"), 159 psMetadataLookupStr(NULL,row,"filter"), 160 psMetadataLookupStr(NULL,row,"projection_cell")); 161 162 if (psMetadataLookupS64(NULL,row,"sass_id") == PS_MAX_S64) { 163 psMetadataAddS64(outrow,PS_LIST_TAIL,"sass_id",PS_META_REPLACE,"",0); 164 } 165 else { 166 psMetadataAddS64(outrow,PS_LIST_TAIL,"sass_id",PS_META_REPLACE,"",psMetadataLookupS64(NULL,row,"sass_id")); 167 } 168 psMetadataAddStr(outrow,PS_LIST_TAIL,"data_group",PS_META_REPLACE,"",psMetadataLookupStr(NULL,row,"data_group")); 169 psMetadataAddStr(outrow,PS_LIST_TAIL,"tess_id",PS_META_REPLACE,"",psMetadataLookupStr(NULL,row,"tess_id")); 170 psMetadataAddStr(outrow,PS_LIST_TAIL,"filter",PS_META_REPLACE,"",psMetadataLookupStr(NULL,row,"filter")); 171 psMetadataAddStr(outrow,PS_LIST_TAIL,"projection_cell",PS_META_REPLACE,"", 172 psMetadataLookupStr(NULL,row,"projection_cell")); 173 } 174 printf("%" PRId64 " %s %s %s %s\n",psMetadataLookupS64(NULL,outrow,"sass_id"), 175 psMetadataLookupStr(NULL,outrow,"data_group"), 176 psMetadataLookupStr(NULL,outrow,"tess_id"), 177 psMetadataLookupStr(NULL,outrow,"filter"), 178 psMetadataLookupStr(NULL,outrow,"projection_cell")); 179 180 181 psFree(output); 182 stackAssociationRow *sassRow = stackAssociationObjectFromMetadata(outrow); 183 psFree(outrow); 184 return(sassRow); 185 } 186 187 188 189 104 190 105 191 … … 151 237 PXOPT_COPY_F32(config->args, where, "-select_iq_m4_min", "camProcessedExp.iq_m4", ">="); 152 238 PXOPT_COPY_F32(config->args, where, "-select_iq_m4_max", "camProcessedExp.iq_m4", "<="); 239 PXOPT_COPY_F32(config->args, where, "-select_zpt_obs_min", "camProcessedExp.zpt_obs", ">="); 240 PXOPT_COPY_F32(config->args, where, "-select_zpt_obs_max", "camProcessedExp.zpt_obs", "<="); 153 241 154 242 PXOPT_COPY_STR(config->args, where, "-select_exp_type", "rawExp.exp_type", "=="); … … 370 458 tess_id, 371 459 filter, 372 NULL, // software_ver460 NULL, // software_ver 373 461 note); 374 462 … … 395 483 psFree(run); 396 484 485 //CZW Add an association entry here. 486 // Define the requested association, and insert it if it doesn't already exist 487 stackAssociationRow *association = pxStackAssociationDefine(config,stack_id); 488 psS64 sass_id; 489 if (!association->sass_id) { 490 psTrace("stacktool.association",2,"No required Association found. Adding."); 491 492 if (!stackAssociationInsertObject(config->dbh,association)) { 493 if (!psDBRollback(config->dbh)) { 494 psError(PS_ERR_UNKNOWN, false, "database error"); 495 } 496 psError(PS_ERR_UNKNOWN, false, "database error"); 497 psFree(output); 498 psFree(run); 499 psFree(insert); 500 psFree(list); 501 psFree(association); 502 if (!psDBRollback(config->dbh)) { 503 psError(PS_ERR_UNKNOWN, false, "database error"); 504 } 505 return(false); 506 } 507 sass_id = psDBLastInsertID(config->dbh); 508 association->sass_id = sass_id; 509 } 510 // Insert the map entry for this row. 511 stackAssociationMapRow *maprow = stackAssociationMapRowAlloc(sass_id,stack_id); 512 if (!stackAssociationMapInsertObject(config->dbh,maprow)) { 513 if (!psDBRollback(config->dbh)) { 514 psError(PS_ERR_UNKNOWN, false, "database error"); 515 } 516 psError(PS_ERR_UNKNOWN, false, "database error"); 517 psFree(output); 518 psFree(run); 519 psFree(insert); 520 psFree(list); 521 psFree(association); 522 if (!psDBRollback(config->dbh)) { 523 psError(PS_ERR_UNKNOWN, false, "database error"); 524 } 525 return(false); 526 } 527 528 397 529 // Create a suitable insertion query for this run 398 530 psString thisInsert = psStringCopy(insert); … … 527 659 tess_id, 528 660 filter, 529 NULL, // software_ver661 NULL, // software_ver 530 662 note); 531 663 … … 552 684 run->stack_id = psDBLastInsertID(config->dbh); 553 685 686 //CZW Add an association entry here. 687 554 688 // insert the stackInputSkyfile rows 555 689 psListIterator *iter = psListIteratorAlloc(warp_ids->data.list, 0, false); … … 603 737 #endif 604 738 psMetadata *where = psMetadataAlloc(); 605 PXOPT_COPY_S64(config->args, where, "-stack_id", "stack_id", "=="); 606 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 607 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 739 PXOPT_COPY_S64(config->args, where, "-stack_id", "stackRun.stack_id", "=="); 740 PXOPT_COPY_STR(config->args, where, "-label", "stackRun.label", "=="); 741 PXOPT_COPY_STR(config->args, where, "-state", "stackRun.state", "=="); 742 PXOPT_COPY_STR(config->args, where, "-sass_id", "stackAssociationMap.sass_id", "=="); 608 743 if (!psListLength(where->list)) { 609 744 psFree(where); … … 612 747 } 613 748 749 //CZW join against stackAssociationMap 614 750 psString query = psStringCopy("UPDATE stackRun"); 615 751 … … 854 990 855 991 psTrace("czw.test",1,"Received versions: pslib %s psmodules %s psphot %s ppstats %s ppstack %s streaks %s\n", 856 ver_pslib,ver_psmodules,ver_psphot,ver_ppstats,ver_ppstack,ver_streaks);992 ver_pslib,ver_psmodules,ver_psphot,ver_ppstats,ver_ppstack,ver_streaks); 857 993 psString software_ver = NULL; 858 994 if ((ver_pslib)&&(ver_psmodules)) { … … 871 1007 software_ver = pxMergeCodeVersions(software_ver,ver_streaks); 872 1008 } 873 1009 874 1010 // default values 875 1011 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); … … 911 1047 good_frac, 912 1048 fault, 913 software_ver,1049 software_ver, 914 1050 quality 915 1051 )) { … … 922 1058 923 1059 if (fault == 0) { 924 // Set stackRun software if we are finished.925 if (!pxSetRunSoftware(config, "stackRun", "stack_id", stack_id, software_ver)) {926 if (!psDBRollback(config->dbh)) {927 psError(PS_ERR_UNKNOWN, false, "database error");928 }929 psError(PS_ERR_UNKNOWN, false, "failed to set stackRun.software_ver for stack_id: %" PRId64,930 stack_id);931 return(false);932 }1060 // Set stackRun software if we are finished. 1061 if (!pxSetRunSoftware(config, "stackRun", "stack_id", stack_id, software_ver)) { 1062 if (!psDBRollback(config->dbh)) { 1063 psError(PS_ERR_UNKNOWN, false, "database error"); 1064 } 1065 psError(PS_ERR_UNKNOWN, false, "failed to set stackRun.software_ver for stack_id: %" PRId64, 1066 stack_id); 1067 return(false); 1068 } 933 1069 934 1070 if (!setstackRunState(config, stack_id, "full")) { … … 1038 1174 } 1039 1175 1040 1041 static bool revertsumskyfileMode(pxConfig *config) 1176 static bool sassskyfileMode(pxConfig *config) 1042 1177 { 1043 1178 PS_ASSERT_PTR_NON_NULL(config, false); 1044 1179 1045 1180 psMetadata *where = psMetadataAlloc(); 1046 PXOPT_COPY_S64(config->args, where, "-stack_id", "stackSumSkyfile.stack_id", "=="); 1047 pxAddLabelSearchArgs(config, where, "-label", "stackRun.label", "=="); 1048 PXOPT_COPY_S16(config->args, where, "-fault", "stackSumSkyfile.fault", "=="); 1049 1050 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { 1051 psFree(where); 1052 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1053 return false; 1054 } 1055 1056 // Delete product 1057 psString delete = pxDataGet("stacktool_revertsumskyfile_delete.sql"); 1058 if (!delete) { 1181 PXOPT_COPY_S64(config->args, where, "-sass_id", "stackAssociation.sass_id", "=="); 1182 PXOPT_COPY_STR(config->args, where, "-tess_id", "stackAssociation.tess_id", "=="); 1183 PXOPT_COPY_STR(config->args, where, "-projection_cell", "stackAssociation.projection_cell", "=="); 1184 PXOPT_COPY_STR(config->args, where, "-filter", "stackAssociation.filter", "LIKE"); 1185 PXOPT_COPY_STR(config->args, where, "-data_group", "stackAssociation.data_group", "LIKE"); 1186 1187 // The following three selectors are incompatible with the sql so omit them 1188 // PXOPT_COPY_S64(config->args, where, "-warp_id", "warpRun.warp_id", "=="); 1189 // PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "=="); 1190 // PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); 1191 1192 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 1193 1194 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1195 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1196 1197 psString query = pxDataGet("stacktool_sassskyfile.sql"); 1198 if (!query) { 1059 1199 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1060 1200 return false; … … 1063 1203 if (psListLength(where->list)) { 1064 1204 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1065 psStringAppend(& delete, " AND%s", whereClause);1205 psStringAppend(&query, " WHERE %s", whereClause); 1066 1206 psFree(whereClause); 1067 } 1068 1069 if (!p_psDBRunQuery(config->dbh, delete)) { 1070 psError(PS_ERR_UNKNOWN, false, "database error"); 1071 psFree(delete); 1072 psFree(where); 1073 return false; 1074 } 1075 psFree(delete); 1076 1077 int numRows = psDBAffectedRows(config->dbh); // Number of row affected 1078 psLogMsg("stacktool", PS_LOG_INFO, "Deleted %d rows", numRows); 1079 1080 psFree(where); 1081 1082 return true; 1083 } 1084 1085 1086 static bool setstackRunState(pxConfig *config, psS64 stack_id, const char *state) 1087 { 1088 PS_ASSERT_PTR_NON_NULL(state, false); 1089 1090 // check that state is a valid string value 1091 if (!pxIsValidState(state)) { 1092 psError(PS_ERR_UNKNOWN, false, "invalid stackRun state: %s", state); 1093 return false; 1094 } 1095 1096 char *query = "UPDATE stackRun SET state = '%s' WHERE stack_id = %"PRId64; 1097 if (!p_psDBRunQueryF(config->dbh, query, state, stack_id)) { 1098 psError(PS_ERR_UNKNOWN, false, 1099 "failed to change state for stack_id %"PRId64, stack_id); 1100 return false; 1101 } 1102 1103 return true; 1104 } 1105 1106 #ifdef notdef 1107 static bool setstackRunStateByLabel(pxConfig *config, const char *label, const char *state) 1108 { 1109 PS_ASSERT_PTR_NON_NULL(state, false); 1110 1111 // check that state is a valid string value 1112 if (!pxIsValidState(state)) { 1113 psError(PS_ERR_UNKNOWN, false, "invalid stackRun state: %s", state); 1114 return false; 1115 } 1116 1117 char *query = "UPDATE stackRun SET state = '%s' WHERE label = '%s'"; 1118 if (!p_psDBRunQueryF(config->dbh, query, state, label)) { 1119 psError(PS_ERR_UNKNOWN, false, 1120 "failed to change state for label %s", label); 1121 return false; 1122 } 1123 1124 return true; 1125 } 1126 #endif 1127 1128 static bool pendingcleanuprunMode(pxConfig *config) 1129 { 1130 PS_ASSERT_PTR_NON_NULL(config, NULL); 1131 1132 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1133 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1134 1135 psMetadata *where = psMetadataAlloc(); 1136 pxAddLabelSearchArgs (config, where, "-label", "stackRun.label", "=="); 1137 1138 psString query = pxDataGet("stacktool_pendingcleanuprun.sql"); 1139 if (!query) { 1140 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1141 return false; 1142 } 1143 1144 if (where && psListLength(where->list)) { 1145 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1146 psStringAppend(&query, " AND %s", whereClause); 1147 psFree(whereClause); 1148 } 1207 } else if (!all) { 1208 psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required"); 1209 return false; 1210 } 1211 1149 1212 psFree(where); 1150 1213 … … 1165 1228 psArray *output = p_psDBFetchResult(config->dbh); 1166 1229 if (!output) { 1167 psError(PS_ERR_UNKNOWN, false, "database error"); 1230 psErrorCode err = psErrorCodeLast(); 1231 switch (err) { 1232 case PS_ERR_DB_CLIENT: 1233 psError(PXTOOLS_ERR_SYS, false, "database error"); 1234 case PS_ERR_DB_SERVER: 1235 psError(PXTOOLS_ERR_PROG, false, "database error"); 1236 default: 1237 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 1238 } 1239 1168 1240 return false; 1169 1241 } … … 1174 1246 } 1175 1247 1248 if (psArrayLength(output)) { 1249 if (!ippdbPrintMetadatas(stdout, output, "stackSumSkyfile", !simple)) { 1250 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1251 psFree(output); 1252 return false; 1253 } 1254 } 1255 1256 psFree(output); 1257 1258 return true; 1259 } 1260 1261 1262 static bool revertsumskyfileMode(pxConfig *config) 1263 { 1264 PS_ASSERT_PTR_NON_NULL(config, false); 1265 1266 psMetadata *where = psMetadataAlloc(); 1267 PXOPT_COPY_S64(config->args, where, "-stack_id", "stackSumSkyfile.stack_id", "=="); 1268 pxAddLabelSearchArgs(config, where, "-label", "stackRun.label", "=="); 1269 PXOPT_COPY_S16(config->args, where, "-fault", "stackSumSkyfile.fault", "=="); 1270 1271 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { 1272 psFree(where); 1273 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1274 return false; 1275 } 1276 1277 // Delete product 1278 psString delete = pxDataGet("stacktool_revertsumskyfile_delete.sql"); 1279 if (!delete) { 1280 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1281 return false; 1282 } 1283 1284 if (psListLength(where->list)) { 1285 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1286 psStringAppend(&delete, " AND %s", whereClause); 1287 psFree(whereClause); 1288 } 1289 1290 if (!p_psDBRunQuery(config->dbh, delete)) { 1291 psError(PS_ERR_UNKNOWN, false, "database error"); 1292 psFree(delete); 1293 psFree(where); 1294 return false; 1295 } 1296 psFree(delete); 1297 1298 int numRows = psDBAffectedRows(config->dbh); // Number of row affected 1299 psLogMsg("stacktool", PS_LOG_INFO, "Deleted %d rows", numRows); 1300 1301 psFree(where); 1302 1303 return true; 1304 } 1305 1306 1307 static bool setstackRunState(pxConfig *config, psS64 stack_id, const char *state) 1308 { 1309 PS_ASSERT_PTR_NON_NULL(state, false); 1310 1311 // check that state is a valid string value 1312 if (!pxIsValidState(state)) { 1313 psError(PS_ERR_UNKNOWN, false, "invalid stackRun state: %s", state); 1314 return false; 1315 } 1316 1317 char *query = "UPDATE stackRun SET state = '%s' WHERE stack_id = %"PRId64; 1318 if (!p_psDBRunQueryF(config->dbh, query, state, stack_id)) { 1319 psError(PS_ERR_UNKNOWN, false, 1320 "failed to change state for stack_id %"PRId64, stack_id); 1321 return false; 1322 } 1323 1324 return true; 1325 } 1326 1327 #ifdef notdef 1328 static bool setstackRunStateByLabel(pxConfig *config, const char *label, const char *state) 1329 { 1330 PS_ASSERT_PTR_NON_NULL(state, false); 1331 1332 // check that state is a valid string value 1333 if (!pxIsValidState(state)) { 1334 psError(PS_ERR_UNKNOWN, false, "invalid stackRun state: %s", state); 1335 return false; 1336 } 1337 1338 char *query = "UPDATE stackRun SET state = '%s' WHERE label = '%s'"; 1339 if (!p_psDBRunQueryF(config->dbh, query, state, label)) { 1340 psError(PS_ERR_UNKNOWN, false, 1341 "failed to change state for label %s", label); 1342 return false; 1343 } 1344 1345 return true; 1346 } 1347 #endif 1348 static bool tosummaryMode(pxConfig *config) { 1349 PS_ASSERT_PTR_NON_NULL(config, NULL); 1350 1351 psMetadata *where = psMetadataAlloc(); 1352 PXOPT_COPY_S64(config->args, where, "-stack_id", "stackSumSkyfile.warp_id", "=="); 1353 PXOPT_COPY_S64(config->args, where, "-sass_id", "stackAssociationMap.sass_id", "=="); 1354 PXOPT_COPY_STR(config->args, where, "-tess_id", "stackSumSkyfile.tess_id", "=="); 1355 PXOPT_COPY_STR(config->args, where, "-state", "stackRun.state", "=="); 1356 PXOPT_COPY_STR(config->args, where, "-filter", "stackRun.filter", "LIKE"); 1357 pxAddLabelSearchArgs (config, where, "-label", "stackRun.label", "LIKE"); 1358 pxAddLabelSearchArgs (config, where, "-data_group", "stackRun.data_group", "LIKE"); 1359 1360 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 1361 1362 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1363 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1364 1365 // find all rawImfiles matching the default query 1366 psString query = pxDataGet("stacktool_tosummary.sql"); 1367 if (!query) { 1368 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1369 return false; 1370 } 1371 1372 // generate where strings for arguments that require extra processing 1373 // beyond PXOPT_COPY* 1374 if (psListLength(where->list)) { 1375 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1376 psStringAppend(&query, " AND %s", whereClause); 1377 psFree(whereClause); 1378 } else if (!all) { 1379 psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required"); 1380 return false; 1381 } 1382 1383 psFree(where); 1384 1385 // treat limit == 0 as "no limit" 1386 if (limit) { 1387 psString limitString = psDBGenerateLimitSQL(limit); 1388 psStringAppend(&query, " %s", limitString); 1389 psFree(limitString); 1390 } 1391 1392 if (!p_psDBRunQuery(config->dbh, query)) { 1393 psError(PS_ERR_UNKNOWN, false, "database error"); 1394 psFree(query); 1395 return false; 1396 } 1397 psFree(query); 1398 1399 psArray *output = p_psDBFetchResult(config->dbh); 1400 if (!output) { 1401 psErrorCode err = psErrorCodeLast(); 1402 switch (err) { 1403 case PS_ERR_DB_CLIENT: 1404 psError(PXTOOLS_ERR_SYS, false, "database error"); 1405 case PS_ERR_DB_SERVER: 1406 psError(PXTOOLS_ERR_PROG, false, "database error"); 1407 default: 1408 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 1409 } 1410 1411 return false; 1412 } 1413 if (!psArrayLength(output)) { 1414 psTrace("stacktool", PS_LOG_INFO, "no rows found"); 1415 psFree(output); 1416 return true; 1417 } 1418 1419 if (psArrayLength(output)) { 1176 1420 // negative simple so the default is true 1177 if (!ippdbPrintMetadatas(stdout, output, "stackPendingCleanupRun", !simple)) { 1178 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1179 psFree(output); 1180 return false; 1181 } 1182 1183 psFree(output); 1184 1185 return true; 1186 } 1187 1188 static bool pendingcleanupskyfileMode(pxConfig *config) 1421 if (!ippdbPrintMetadatas(stdout, output, "stackRun", !simple)) { 1422 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1423 psFree(output); 1424 return false; 1425 } 1426 } 1427 1428 psFree(output); 1429 return(true); 1430 } 1431 static bool addsummaryMode(pxConfig *config) { 1432 PS_ASSERT_PTR_NON_NULL(config, NULL); 1433 1434 PXOPT_LOOKUP_S64(sass_id, config->args, "-sass_id", true, false); 1435 PXOPT_LOOKUP_STR(projection_cell, config->args, "-projection_cell", true, false); 1436 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", true, false); 1437 1438 psString query = pxDataGet("stacktool_addsummary.sql"); 1439 if (!query) { 1440 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1441 return(false); 1442 } 1443 if (!p_psDBRunQueryF(config->dbh, query, sass_id, projection_cell, path_base)) { 1444 psError(PS_ERR_UNKNOWN, false, "database error"); 1445 psFree(query); 1446 return(false); 1447 } 1448 psS64 numUpdated = psDBAffectedRows(config->dbh); 1449 1450 if (numUpdated != 1) { 1451 psError(PS_ERR_UNKNOWN, false, "should have affected 1 row"); 1452 psFree(query); 1453 return false; 1454 } 1455 1456 psFree(query); 1457 1458 // Print anything here? 1459 1460 return(true); 1461 } 1462 1463 static bool pendingcleanuprunMode(pxConfig *config) 1189 1464 { 1190 1465 PS_ASSERT_PTR_NON_NULL(config, NULL); 1191 1466 1192 PXOPT_LOOKUP_S64(stack_id, config->args, "-stack_id", false, false);1193 1467 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1194 1468 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1195 1469 1196 1470 psMetadata *where = psMetadataAlloc(); 1197 if (stack_id) {1198 PXOPT_COPY_S64(config->args, where, "-stack_id", "stack_id", "==");1199 }1471 PXOPT_COPY_S64(config->args, where, "-stack_id", "stackRun.stack_id", "=="); 1472 PXOPT_COPY_S64(config->args, where, "-sass_id", "stackAssociationMap.sass_id", "=="); 1473 1200 1474 pxAddLabelSearchArgs (config, where, "-label", "stackRun.label", "=="); 1201 1475 1202 psString query = pxDataGet("stacktool_pendingcleanup skyfile.sql");1476 psString query = pxDataGet("stacktool_pendingcleanuprun.sql"); 1203 1477 if (!query) { 1204 1478 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); … … 1239 1513 1240 1514 // negative simple so the default is true 1241 if (!ippdbPrintMetadatas(stdout, output, "stackPendingCleanup Skyfile", !simple)) {1515 if (!ippdbPrintMetadatas(stdout, output, "stackPendingCleanupRun", !simple)) { 1242 1516 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1243 1517 psFree(output); … … 1250 1524 } 1251 1525 1252 1253 static bool donecleanupMode(pxConfig *config) 1526 static bool pendingcleanupskyfileMode(pxConfig *config) 1254 1527 { 1255 1528 PS_ASSERT_PTR_NON_NULL(config, NULL); 1256 1529 1530 PXOPT_LOOKUP_S64(stack_id, config->args, "-stack_id", false, false); 1257 1531 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1258 1532 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1259 1533 1260 1534 psMetadata *where = psMetadataAlloc(); 1261 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 1262 1263 psString query = pxDataGet("stacktool_donecleanup.sql"); 1535 if (stack_id) { 1536 PXOPT_COPY_S64(config->args, where, "-stack_id", "stack_id", "=="); 1537 } 1538 pxAddLabelSearchArgs (config, where, "-label", "stackRun.label", "=="); 1539 1540 psString query = pxDataGet("stacktool_pendingcleanupskyfile.sql"); 1264 1541 if (!query) { 1265 1542 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); … … 1300 1577 1301 1578 // negative simple so the default is true 1579 if (!ippdbPrintMetadatas(stdout, output, "stackPendingCleanupSkyfile", !simple)) { 1580 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1581 psFree(output); 1582 return false; 1583 } 1584 1585 psFree(output); 1586 1587 return true; 1588 } 1589 1590 1591 static bool donecleanupMode(pxConfig *config) 1592 { 1593 PS_ASSERT_PTR_NON_NULL(config, NULL); 1594 1595 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1596 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1597 1598 psMetadata *where = psMetadataAlloc(); 1599 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 1600 PXOPT_COPY_STR(config->args, where, "-sass_id", "sass_id", "=="); 1601 1602 psString query = pxDataGet("stacktool_donecleanup.sql"); 1603 if (!query) { 1604 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1605 return false; 1606 } 1607 1608 if (where && psListLength(where->list)) { 1609 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1610 psStringAppend(&query, " AND %s", whereClause); 1611 psFree(whereClause); 1612 } 1613 psFree(where); 1614 1615 // treat limit == 0 as "no limit" 1616 if (limit) { 1617 psString limitString = psDBGenerateLimitSQL(limit); 1618 psStringAppend(&query, " %s", limitString); 1619 psFree(limitString); 1620 } 1621 1622 if (!p_psDBRunQuery(config->dbh, query)) { 1623 psError(PS_ERR_UNKNOWN, false, "database error"); 1624 psFree(query); 1625 return false; 1626 } 1627 psFree(query); 1628 1629 psArray *output = p_psDBFetchResult(config->dbh); 1630 if (!output) { 1631 psError(PS_ERR_UNKNOWN, false, "database error"); 1632 return false; 1633 } 1634 if (!psArrayLength(output)) { 1635 psTrace("stacktool", PS_LOG_INFO, "no rows found"); 1636 psFree(output); 1637 return true; 1638 } 1639 1640 // negative simple so the default is true 1302 1641 if (!ippdbPrintMetadatas(stdout, output, "stackDoneCleanup", !simple)) { 1303 1642 psError(PS_ERR_UNKNOWN, false, "failed to print array"); … … 1329 1668 } 1330 1669 1670 //CZW I have not added sass information to the export/import run modes yet. 1331 1671 bool exportrunMode(pxConfig *config) 1332 1672 {
Note:
See TracChangeset
for help on using the changeset viewer.
