Changeset 27517 for branches/eam_branches/20100225/ippTools/src/regtool.c
- Timestamp:
- Mar 29, 2010, 3:55:49 PM (16 years ago)
- Location:
- branches/eam_branches/20100225
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
ippTools/src/regtool.c (modified) (17 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/20100225
- Property svn:mergeinfo changed
-
branches/eam_branches/20100225/ippTools/src/regtool.c
r26981 r27517 37 37 static bool revertprocessedimfileMode(pxConfig *config); 38 38 static bool updateprocessedimfileMode(pxConfig *config); 39 static bool pendingcompressimfileMode(pxConfig *config); 39 40 // exp 40 41 static bool pendingexpMode(pxConfig *config); … … 44 45 static bool updateprocessedexpMode(pxConfig *config); 45 46 static bool cleardupexpMode(pxConfig *config); 47 static bool finishcompressexpMode(pxConfig *config); 48 49 static bool updatebyqueryMode(pxConfig *config); 50 46 51 static bool exportrunMode(pxConfig *config); 47 52 static bool importrunMode(pxConfig *config); … … 77 82 MODECASE(REGTOOL_MODE_REVERTPROCESSEDEXP, revertprocessedexpMode); 78 83 MODECASE(REGTOOL_MODE_UPDATEPROCESSEDEXP, updateprocessedexpMode); 84 MODECASE(REGTOOL_MODE_UPDATEBYQUERY, updatebyqueryMode); 85 MODECASE(REGTOOL_MODE_PENDINGCOMPRESSIMFILE, pendingcompressimfileMode); 86 MODECASE(REGTOOL_MODE_FINISHCOMPRESSEXP, finishcompressexpMode); 79 87 MODECASE(REGTOOL_MODE_CLEARDUPEXP, cleardupexpMode); 80 88 MODECASE(REGTOOL_MODE_EXPORTRUN, exportrunMode); … … 189 197 PXOPT_LOOKUP_STR(obs_mode, config->args, "-obs_mode", false, false); 190 198 PXOPT_LOOKUP_STR(obs_group, config->args, "-obs_group", false, false); 199 PXOPT_LOOKUP_STR(data_state, config->args, "-data_state", false, false); 191 200 192 201 PXOPT_LOOKUP_F32(airmass, config->args, "-airmass", false, false); … … 255 264 class_id, 256 265 uri, 266 data_state, 257 267 exp_type, 258 268 filelevel, … … 333 343 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "dateobs", ">="); 334 344 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "dateobs", "<="); 335 PXOPT_COPY_STR(config->args, where, "-filter", "filter", " ==");345 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE"); 336 346 PXOPT_COPY_STR(config->args, where, "-exp_type", "exp_type", "=="); 337 347 PXOPT_COPY_STR(config->args, where, "-obs_mode", "obs_mode", "=="); 338 PXOPT_COPY_S 64(config->args, where, "-magicked", "magicked", "==");348 PXOPT_COPY_STR(config->args, where, "-data_state", "data_state", "=="); 339 349 340 350 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); … … 347 357 psString where2 = NULL; 348 358 if (!pxmagicAddWhere(config, &where2, "rawImfile")) { 349 psError(psErrorCodeLast(), false, "px SpaceAddWhere failed");359 psError(psErrorCodeLast(), false, "pxmagicAddWhere failed"); 350 360 return false; 351 361 } 352 362 if (!pxspaceAddWhere(config, &where2, "rawImfile")) { 353 psError(psErrorCodeLast(), false, "px SpaceAddWhere failed");363 psError(psErrorCodeLast(), false, "pxspaceAddWhere failed"); 354 364 return false; 355 365 } … … 491 501 492 502 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 493 /* PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false); */494 503 PXOPT_LOOKUP_S16(burntool_state, config->args, "-burntool_state", false, false); 495 496 if ((fault == INT16_MAX) && !isfinite(burntool_state)) { 497 psError(PS_ERR_UNKNOWN, false, "one of -fault or -burntool_state must be selected"); 504 PXOPT_LOOKUP_S32(set_bytes, config->args, "-set_bytes", false, false); 505 PXOPT_LOOKUP_STR(set_md5sum, config->args, "-set_md5sum", false, false); 506 PXOPT_LOOKUP_STR(set_state, config->args, "-set_state", false, false); 507 508 if ((fault == INT16_MAX) && !isfinite(burntool_state) && !(set_state)) { 509 psError(PS_ERR_UNKNOWN, false, "one of -fault or -burntool_state or -set_state must be selected"); 498 510 return false; 499 511 } … … 514 526 return false; 515 527 } 516 } 517 518 if (isfinite(burntool_state)) { 519 psString query = pxDataGet("regtool_updateprocessedimfile.sql"); 520 if (!query) { 521 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 522 return false; 523 } 524 525 if (!p_psDBRunQueryF(config->dbh, query, burntool_state, exp_id, class_id)) { 526 psError(PS_ERR_UNKNOWN, false, "database error"); 527 psFree(query); 528 return false; 529 } 530 psFree(query); 528 psFree (where); 529 return(true); 531 530 } 532 531 psFree (where); 533 532 533 psString setvalues = NULL; 534 if (burntool_state != INT16_MAX) { 535 psStringAppend(&setvalues,"rawImfile.burntool_state = %d",burntool_state); 536 } 537 if (set_bytes != INT32_MAX) { 538 if (setvalues) { 539 psStringAppend(&setvalues,","); 540 } 541 psStringAppend(&setvalues,"rawImfile.bytes = %d",set_bytes); 542 } 543 if (set_md5sum) { 544 if (setvalues) { 545 psStringAppend(&setvalues,","); 546 } 547 psStringAppend(&setvalues,"rawImfile.md5sum = '%s'",set_md5sum); 548 } 549 if (set_state) { 550 if (setvalues) { 551 psStringAppend(&setvalues,","); 552 } 553 psStringAppend(&setvalues,"rawImfile.data_state = '%s'",set_state); 554 } 555 556 psString query = pxDataGet("regtool_updateprocessedimfile.sql"); 557 if (!query) { 558 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 559 return false; 560 } 561 562 // printf(query,setvalues,exp_id,class_id); 563 if (!p_psDBRunQueryF(config->dbh, query, setvalues, exp_id,class_id)) { 564 psError(PS_ERR_UNKNOWN, false, "database error"); 565 psFree(query); 566 psFree(setvalues); 567 return false; 568 } 569 psFree(setvalues); 570 psFree(query); 571 534 572 return true; 573 } 574 575 static bool pendingcompressimfileMode(pxConfig *config) { 576 PS_ASSERT_PTR_NON_NULL(config, false); 577 578 psMetadata *where = psMetadataAlloc(); 579 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 580 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 581 582 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 583 if (whereClause) { 584 psStringPrepend(&whereClause, "\n AND "); 585 } 586 PXOPT_LOOKUP_BOOL(compress, config->args, "-compress", false); 587 PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false); 588 589 if ((compress && clean) || (!compress && !clean)) { 590 psStringAppend(&whereClause, "\n AND ((data_state = 'goto_compressed' AND state = 'goto_compressed')\n OR (data_state = 'goto_lossy' AND state = 'goto_lossy')) "); 591 } 592 else if (compress) { 593 psStringAppend(&whereClause, "\n AND ((data_state = 'goto_compressed' AND state = 'goto_compressed')) "); 594 } 595 else if (clean) { 596 psStringAppend(&whereClause, "\n AND ((data_state = 'goto_lossy' AND state = 'goto_lossy')) "); 597 } 598 else { 599 psStringAppend(&whereClause, "\n AND ((data_state = 'goto_compressed' AND state = 'goto_compressed')\n OR (data_state = 'goto_lossy' AND state = 'goto_lossy')) "); 600 } 601 602 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 603 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 604 605 psString query = pxDataGet("regtool_pendingcompressimfile.sql"); 606 if (!query) { 607 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 608 return(false); 609 } 610 psString limitString = NULL; 611 if (limit) { 612 limitString = psDBGenerateLimitSQL(limit); 613 psStringPrepend(&limitString, "\n"); 614 } 615 // printf(query,whereClause,limitString); 616 if (!p_psDBRunQueryF(config->dbh, query, whereClause, limitString ? limitString : "")) { 617 psError(PXTOOLS_ERR_PROG, false, "database error"); 618 psFree(limitString); 619 psFree(query); 620 psFree(whereClause); 621 psFree(where); 622 return(false); 623 } 624 psFree(limitString); 625 psFree(query); 626 psFree(whereClause); 627 psFree(where); 628 629 psArray *output = p_psDBFetchResult(config->dbh); 630 if (!output) { 631 psErrorCode err = psErrorCodeLast(); 632 switch (err) { 633 case PS_ERR_DB_CLIENT: 634 psError(PXTOOLS_ERR_SYS, false, "database error"); 635 case PS_ERR_DB_SERVER: 636 psError(PXTOOLS_ERR_PROG, false, "database error"); 637 default: 638 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 639 } 640 641 return false; 642 } 643 if (!psArrayLength(output)) { 644 psTrace("regtool", PS_LOG_INFO, "no rows found"); 645 psFree(output); 646 return true; 647 } 648 649 // negate simple so the default is true 650 if (!ippdbPrintMetadatas(stdout, output, "regPendingCompressImfile", !simple)) { 651 psError(PXTOOLS_ERR_PROG, false, "failed to print array"); 652 psFree(output); 653 return false; 654 } 655 656 psFree(output); 657 658 return true; 535 659 } 536 660 … … 626 750 PXOPT_LOOKUP_STR(exp_type, config->args, "-exp_type", false, false); 627 751 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", false, false); 752 PXOPT_LOOKUP_STR(state, config->args, "-state", false, false); 628 753 PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false); 629 754 PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", false, false); … … 787 912 filelevel, 788 913 workdir, 914 state, 789 915 reduction, 790 916 dvodb, … … 930 1056 PXOPT_COPY_STR(config->args, where, "-inst", "camera", "=="); 931 1057 PXOPT_COPY_STR(config->args, where, "-telescope", "telescope", "=="); 932 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "dateobs", ">="); 933 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "dateobs", "<="); 1058 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "dateobs", ">="); 1059 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "dateobs", "<="); 1060 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 934 1061 PXOPT_COPY_STR(config->args, where, "-exp_tag", "exp_tag", "=="); 935 1062 PXOPT_COPY_STR(config->args, where, "-exp_type", "exp_type", "=="); 936 1063 PXOPT_COPY_STR(config->args, where, "-filelevel", "filelevel", "=="); 937 1064 PXOPT_COPY_STR(config->args, where, "-reduction", "reduction", "=="); 938 PXOPT_COPY_STR(config->args, where, "-filter", "filter", " ==");1065 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE"); 939 1066 PXOPT_COPY_F32(config->args, where, "-airmass_min", "airmass", ">="); 940 1067 PXOPT_COPY_F32(config->args, where, "-airmass_max", "airmass", "<"); … … 965 1092 PXOPT_COPY_F32(config->args, where, "-sun_angle_max", "sun_angle", "<"); 966 1093 1094 psString where2 = NULL; 1095 if (!pxmagicAddWhere(config, &where2, "rawExp")) { 1096 psError(psErrorCodeLast(), false, "pxmagicAddWhere failed"); 1097 return false; 1098 } 1099 if (!pxspaceAddWhere(config, &where2, "rawExp")) { 1100 psError(psErrorCodeLast(), false, "pxSpaceAddWhere failed"); 1101 return false; 1102 } 1103 967 1104 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 968 1105 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 970 1107 971 1108 if (psListLength(where->list)) { 972 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp");973 psStringAppend(&query, " AND %s", whereClause);974 psFree(whereClause);1109 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp"); 1110 psStringAppend(&query, " AND %s", whereClause); 1111 psFree(whereClause); 975 1112 } 976 1113 psFree(where); 977 1114 1115 if (where2) { 1116 psStringAppend(&query, " %s ", where2); 1117 psFree(where2); 1118 } 1119 978 1120 if (faulted) { 979 // list only faulted rows980 psStringAppend(&query, " %s", "AND rawExp.fault != 0");1121 // list only faulted rows 1122 psStringAppend(&query, " %s", "AND rawExp.fault != 0"); 981 1123 } else { 982 // don't list faulted rows983 psStringAppend(&query, " %s", "AND rawExp.fault = 0");1124 // don't list faulted rows 1125 psStringAppend(&query, " %s", "AND rawExp.fault = 0"); 984 1126 } 985 1127 986 1128 // treat limit == 0 as "no limit" 987 1129 if (limit) { 988 psString limitString = psDBGenerateLimitSQL(limit);989 psStringAppend(&query, " %s", limitString);990 psFree(limitString);1130 psString limitString = psDBGenerateLimitSQL(limit); 1131 psStringAppend(&query, " %s", limitString); 1132 psFree(limitString); 991 1133 } 992 1134 993 1135 if (!p_psDBRunQuery(config->dbh, query)) { 994 psError(PS_ERR_UNKNOWN, false, "database error");995 return false;1136 psError(PS_ERR_UNKNOWN, false, "database error"); 1137 return false; 996 1138 } 997 1139 psFree(query); … … 999 1141 psArray *output = p_psDBFetchResult(config->dbh); 1000 1142 if (!output) { 1001 psErrorCode err = psErrorCodeLast();1002 switch (err) {1003 case PS_ERR_DB_CLIENT:1004 psError(PXTOOLS_ERR_SYS, false, "database error");1005 case PS_ERR_DB_SERVER:1006 psError(PXTOOLS_ERR_PROG, false, "database error");1007 default:1008 psError(PXTOOLS_ERR_PROG, false, "unknown error");1009 }1010 1011 return false;1143 psErrorCode err = psErrorCodeLast(); 1144 switch (err) { 1145 case PS_ERR_DB_CLIENT: 1146 psError(PXTOOLS_ERR_SYS, false, "database error"); 1147 case PS_ERR_DB_SERVER: 1148 psError(PXTOOLS_ERR_PROG, false, "database error"); 1149 default: 1150 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 1151 } 1152 1153 return false; 1012 1154 } 1013 1155 if (!psArrayLength(output)) { 1014 psTrace("regtool", PS_LOG_INFO, "no rows found"); 1156 psTrace("regtool", PS_LOG_INFO, "no rows found"); 1157 psFree(output); 1158 return true; 1159 } 1160 1161 if (psArrayLength(output)) { 1162 // negative simple so the default is true 1163 if (!ippdbPrintMetadatas(stdout, output, "rawExp", !simple)) { 1164 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1015 1165 psFree(output); 1016 return true; 1017 } 1018 1019 if (psArrayLength(output)) { 1020 // negative simple so the default is true 1021 if (!ippdbPrintMetadatas(stdout, output, "rawExp", !simple)) { 1022 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1023 psFree(output); 1024 return false; 1025 } 1166 return false; 1167 } 1026 1168 } 1027 1169 … … 1033 1175 static bool revertprocessedexpMode(pxConfig *config) 1034 1176 { 1035 PS_ASSERT_PTR_NON_NULL(config, false); 1036 1037 psMetadata *where = psMetadataAlloc(); 1038 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1039 PXOPT_COPY_S16(config->args, where, "-fault", "fault", "=="); 1040 PXOPT_COPY_S64(config->args, where, "-exp_id_begin", "exp_id", ">="); 1041 PXOPT_COPY_S64(config->args, where, "-exp_id_end", "exp_id", "<="); 1042 1043 psString query = pxDataGet("regtool_revertprocessedexp.sql"); 1044 if (!query) { 1045 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1046 psFree(where); 1047 return false; 1048 } 1049 1050 if (psListLength(where->list)) { 1051 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp"); 1052 psStringAppend(&query, " AND %s", whereClause); 1053 psFree(whereClause); 1054 } else { 1055 psFree(where); 1056 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1057 return false; 1058 } 1177 PS_ASSERT_PTR_NON_NULL(config, false); 1178 1179 psMetadata *where = psMetadataAlloc(); 1180 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1181 PXOPT_COPY_S16(config->args, where, "-fault", "fault", "=="); 1182 PXOPT_COPY_S64(config->args, where, "-exp_id_begin", "exp_id", ">="); 1183 PXOPT_COPY_S64(config->args, where, "-exp_id_end", "exp_id", "<="); 1184 1185 psString query = pxDataGet("regtool_revertprocessedexp.sql"); 1186 if (!query) { 1187 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1059 1188 psFree(where); 1060 1061 if (!p_psDBRunQuery(config->dbh, query)) { 1062 psError(PS_ERR_UNKNOWN, false, "database error"); 1063 psFree(query); 1064 return false; 1065 } 1189 return false; 1190 } 1191 1192 if (psListLength(where->list)) { 1193 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp"); 1194 psStringAppend(&query, " AND %s", whereClause); 1195 psFree(whereClause); 1196 } else { 1197 psFree(where); 1198 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1199 return false; 1200 } 1201 psFree(where); 1202 1203 if (!p_psDBRunQuery(config->dbh, query)) { 1204 psError(PS_ERR_UNKNOWN, false, "database error"); 1066 1205 psFree(query); 1067 1068 int numUpdated = psDBAffectedRows(config->dbh); 1069 1070 psLogMsg("regtool", PS_LOG_INFO, "Updated %d rawExp", numUpdated); 1071 1072 return true; 1206 return false; 1207 } 1208 psFree(query); 1209 1210 int numUpdated = psDBAffectedRows(config->dbh); 1211 1212 psLogMsg("regtool", PS_LOG_INFO, "Updated %d rawExp", numUpdated); 1213 1214 return true; 1073 1215 } 1074 1216 … … 1076 1218 static bool updateprocessedexpMode(pxConfig *config) 1077 1219 { 1078 PS_ASSERT_PTR_NON_NULL(config, false); 1079 1080 psMetadata *where = psMetadataAlloc(); 1081 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1082 1083 PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false); 1084 1085 if (!pxSetFaultCode(config->dbh, "rawExp", where, fault)) { 1086 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 1087 psFree(where); 1088 return false; 1089 } 1220 PS_ASSERT_PTR_NON_NULL(config, false); 1221 1222 psMetadata *where = psMetadataAlloc(); 1223 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1224 1225 PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false); 1226 1227 if (!pxSetFaultCode(config->dbh, "rawExp", where, fault)) { 1228 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 1090 1229 psFree(where); 1091 1092 return true; 1093 } 1230 return false; 1231 } 1232 psFree(where); 1233 1234 return true; 1235 } 1236 1237 1238 static bool finishcompressexpMode(pxConfig *config) { 1239 1240 PS_ASSERT_PTR_NON_NULL(config, false); 1241 1242 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1243 1244 psMetadata *where = psMetadataAlloc(); 1245 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1246 1247 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1248 1249 psString query = pxDataGet("regtool_finishcompressexp.sql"); 1250 if (!query) { 1251 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1252 return(false); 1253 } 1254 if (where && psListLength(where->list)) { 1255 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1256 psStringAppend(&query, " %s ", whereClause); 1257 psFree(whereClause); 1258 } 1259 psFree(where); 1260 1261 if (limit) { 1262 psString limitString = psDBGenerateLimitSQL(limit); 1263 psStringAppend(&query, " %s ", limitString); 1264 psFree(limitString); 1265 } 1266 // printf(query); 1267 // return(false); 1268 if (!p_psDBRunQuery(config->dbh, query)) { 1269 psError(PS_ERR_UNKNOWN, false, "database error"); 1270 psFree(query); 1271 return(false); 1272 } 1273 psFree(query); 1274 1275 psArray *output = p_psDBFetchResult(config->dbh); 1276 if (!output) { 1277 psError(PS_ERR_UNKNOWN, false, "database error"); 1278 return(false); 1279 } 1280 if (!psArrayLength(output)) { 1281 psTrace("chiptool", PS_LOG_INFO, "no rows found"); 1282 psFree(output); 1283 return(true); 1284 } 1285 1286 for (long i = 0; i < psArrayLength(output); i++) { 1287 psMetadata *md = output->data[i]; 1288 1289 rawExpRow *row = rawExpObjectFromMetadata(md); 1290 if (!psDBTransaction(config->dbh)) { 1291 psError(PS_ERR_UNKNOWN, false, "database error"); 1292 return(false); 1293 } 1294 1295 if (strcmp(row->state,"goto_compressed") == 0) { 1296 if (!pxrawExpSetState(config,row->exp_id, "compressed")) { 1297 psError(PS_ERR_UNKNOWN, false, "failed to set rawExp.state for exp_id: %" PRId64, row->exp_id); 1298 psFree(row); 1299 psFree(output); 1300 return(false); 1301 } 1302 } 1303 else if (strcmp(row->state,"goto_lossy") == 0) { 1304 if (!pxrawExpSetState(config,row->exp_id, "lossy")) { 1305 psError(PS_ERR_UNKNOWN, false, "failed to set rawExp.state for exp_id: %" PRId64, row->exp_id); 1306 psFree(row); 1307 psFree(output); 1308 return(false); 1309 } 1310 } 1311 if (!psDBCommit(config->dbh)) { 1312 psError(PS_ERR_UNKNOWN, false, "database error"); 1313 return false; 1314 } 1315 psFree(row); 1316 } 1317 1318 psFree(output); 1319 return(true); 1320 } 1321 1322 static bool updatebyqueryMode(pxConfig *config) { 1323 PS_ASSERT_PTR_NON_NULL(config, false); 1324 1325 PXOPT_LOOKUP_STR(set_state, config->args, "-set_state", true, false); 1326 1327 // XX test this out; need to make this consistent with the list in regtoolConfig.c 1328 psMetadata *where = psMetadataAlloc(); 1329 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "=="); 1330 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); 1331 PXOPT_COPY_STR(config->args, where, "-inst", "rawExp.camera", "=="); 1332 PXOPT_COPY_STR(config->args, where, "-telescope", "rawExp.telescope", "=="); 1333 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawExp.dateobs", ">="); 1334 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawExp.dateobs", "<="); 1335 PXOPT_COPY_STR(config->args, where, "-exp_tag", "rawExp.exp_tag", "=="); 1336 PXOPT_COPY_STR(config->args, where, "-exp_type", "rawExp.exp_type", "=="); 1337 PXOPT_COPY_STR(config->args, where, "-filelevel", "rawExp.filelevel", "=="); 1338 PXOPT_COPY_STR(config->args, where, "-state", "rawExp.state", "=="); 1339 PXOPT_COPY_STR(config->args, where, "-reduction", "rawExp.reduction", "=="); 1340 PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "=="); 1341 PXOPT_COPY_F32(config->args, where, "-airmass_min", "rawExp.airmass", ">="); 1342 PXOPT_COPY_F32(config->args, where, "-airmass_max", "rawExp.airmass", "<"); 1343 PXOPT_COPY_RADEC(config->args, where, "-ra_min", "rawExp.ra", ">="); 1344 PXOPT_COPY_RADEC(config->args, where, "-ra_max", "rawExp.ra", "<"); 1345 PXOPT_COPY_RADEC(config->args, where, "-decl_min", "rawExp.decl", ">="); 1346 PXOPT_COPY_RADEC(config->args, where, "-decl_max", "rawExp.decl", "<"); 1347 PXOPT_COPY_F32(config->args, where, "-exp_time_min", "rawExp.exp_time", ">="); 1348 PXOPT_COPY_F32(config->args, where, "-exp_time_max", "rawExp.exp_time", "<"); 1349 PXOPT_COPY_F32(config->args, where, "-sat_pixel_frac_min", "rawExp.sat_pixel_frac", ">="); 1350 PXOPT_COPY_F32(config->args, where, "-sat_pixel_frac_max", "rawExp.sat_pixel_frac", "<"); 1351 PXOPT_COPY_F64(config->args, where, "-bg_min", "rawExp.bg", ">="); 1352 PXOPT_COPY_F64(config->args, where, "-bg_max", "rawExp.bg", "<"); 1353 PXOPT_COPY_F64(config->args, where, "-bg_stdev_min", "rawExp.bg_stdev", ">="); 1354 PXOPT_COPY_F64(config->args, where, "-bg_stdev_max", "rawExp.bg_stdev", "<"); 1355 PXOPT_COPY_F64(config->args, where, "-bg_mean_stdev_min", "rawExp.bg_mean_stdev", ">="); 1356 PXOPT_COPY_F64(config->args, where, "-bg_mean_stdev_max", "rawExp.bg_mean_stdev", "<"); 1357 PXOPT_COPY_F64(config->args, where, "-alt_min", "rawExp.alt", ">="); 1358 PXOPT_COPY_F64(config->args, where, "-alt_max", "rawExp.alt", "<"); 1359 PXOPT_COPY_F64(config->args, where, "-az_min", "rawExp.az", ">="); 1360 PXOPT_COPY_F64(config->args, where, "-az_max", "rawExp.az", "<"); 1361 PXOPT_COPY_F64(config->args, where, "-ccd_temp_min", "rawExp.ccd_temp", ">="); 1362 PXOPT_COPY_F64(config->args, where, "-ccd_temp_max", "rawExp.ccd_temp", "<"); 1363 PXOPT_COPY_F64(config->args, where, "-posang_min", "rawExp.posang", ">="); 1364 PXOPT_COPY_F64(config->args, where, "-posang_max", "rawExp.posang", "<"); 1365 PXOPT_COPY_F32(config->args, where, "-sun_angle_min", "rawExp.sun_angle", ">="); 1366 PXOPT_COPY_F32(config->args, where, "-sun_angle_max", "rawExp.sun_angle", "<"); 1367 PXOPT_COPY_STR(config->args, where, "-object", "rawExp.object", "=="); 1368 PXOPT_COPY_STR(config->args, where, "-comment", "rawExp.comment", "LIKE"); 1369 PXOPT_COPY_STR(config->args, where, "-obs_mode", "rawExp.obs_mode", "LIKE"); 1370 1371 1372 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1373 psStringPrepend(&whereClause,"\n AND "); 1374 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1375 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1376 1377 psString limitString = NULL; 1378 if (limit) { 1379 limitString = psDBGenerateLimitSQL(limit); 1380 psStringPrepend(&limitString, "\n"); 1381 } 1382 // Update the imfiles first, because if you select by state, you'll clobber things 1383 psString query = pxDataGet("regtool_updatebyqueryimfile.sql"); 1384 if (!query) { 1385 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1386 return(false); 1387 } 1388 1389 // printf(query,set_state,whereClause,limitString); 1390 if (!p_psDBRunQueryF(config->dbh, query, set_state, whereClause, limitString ? limitString : "")) { 1391 psError(PXTOOLS_ERR_PROG, false, "database error"); 1392 psFree(limitString); 1393 psFree(query); 1394 psFree(whereClause); 1395 psFree(where); 1396 return(false); 1397 } 1398 1399 psFree(query); 1400 // Now up date the exposure. 1401 query = pxDataGet("regtool_updatebyquery.sql"); 1402 if (!query) { 1403 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1404 return(false); 1405 } 1406 if (!p_psDBRunQueryF(config->dbh, query, set_state,whereClause, limitString ? limitString : "")) { 1407 psError(PXTOOLS_ERR_PROG, false, "database error"); 1408 psFree(limitString); 1409 psFree(query); 1410 psFree(whereClause); 1411 psFree(where); 1412 return(false); 1413 } 1414 1415 psFree(limitString); 1416 psFree(query); 1417 psFree(whereClause); 1418 psFree(where); 1419 1420 return true; 1421 } 1422 1094 1423 1095 1424
Note:
See TracChangeset
for help on using the changeset viewer.
