Changeset 27838 for branches/tap_branches/ippTools/src/regtool.c
- Timestamp:
- May 3, 2010, 8:41:49 AM (16 years ago)
- Location:
- branches/tap_branches
- Files:
-
- 3 edited
-
. (modified) (1 prop)
-
ippTools/src (modified) (1 prop)
-
ippTools/src/regtool.c (modified) (31 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/tap_branches
- Property svn:mergeinfo changed
-
branches/tap_branches/ippTools/src
- Property svn:ignore
-
old new 16 16 difftool 17 17 disttool 18 dqstatstool 18 19 faketool 19 20 flatcorr
-
- Property svn:ignore
-
branches/tap_branches/ippTools/src/regtool.c
r25835 r27838 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); … … 117 125 psString query = pxDataGet("regtool_pendingimfile.sql"); 118 126 if (!query) { 119 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");127 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 120 128 return false; 121 129 } … … 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); 341 351 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 352 PXOPT_LOOKUP_BOOL(allfiles, config->args, "-allfiles", false); 353 if (allfiles) { 354 faulted = false; 355 } 342 356 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 343 357 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); … … 347 361 psString where2 = NULL; 348 362 if (!pxmagicAddWhere(config, &where2, "rawImfile")) { 349 psError( PXTOOLS_ERR_DATA, false, "pxSpaceAddWhere failed");363 psError(psErrorCodeLast(), false, "pxmagicAddWhere failed"); 350 364 return false; 351 365 } 352 366 if (!pxspaceAddWhere(config, &where2, "rawImfile")) { 353 psError( PXTOOLS_ERR_DATA, false, "pxSpaceAddWhere failed");367 psError(psErrorCodeLast(), false, "pxspaceAddWhere failed"); 354 368 return false; 355 369 } … … 357 371 psString query = pxDataGet("regtool_processedimfile.sql"); 358 372 if (!query) { 359 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");373 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 360 374 psFree(where); 361 375 return false; … … 367 381 psFree(whereClause); 368 382 } else if (!all && !where2) { 369 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");383 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 370 384 return false; 371 385 } … … 379 393 // list only faulted rows 380 394 psStringAppend(&query, " %s", "AND rawImfile.fault != 0"); 381 } else {395 } else if (!allfiles) { 382 396 // don't list faulted rows 383 397 psStringAppend(&query, " %s", "AND rawImfile.fault = 0"); … … 452 466 psString query = pxDataGet("regtool_revertprocessedimfile.sql"); 453 467 if (!query) { 454 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");468 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 455 469 psFree(where); 456 470 return false; … … 463 477 } else { 464 478 psFree(where); 465 psError(PXTOOLS_ERR_ DATA, false, "search parameters are required");479 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 466 480 return false; 467 481 } … … 491 505 492 506 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 493 /* PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false); */494 507 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"); 498 return false; 499 } 500 if ((fault != INT16_MAX) && isfinite(burntool_state)) { 508 PXOPT_LOOKUP_S32(set_bytes, config->args, "-set_bytes", false, false); 509 PXOPT_LOOKUP_STR(set_md5sum, config->args, "-set_md5sum", false, false); 510 PXOPT_LOOKUP_STR(set_state, config->args, "-set_state", false, false); 511 512 if ((fault == INT16_MAX) && !isfinite(burntool_state) && !(set_state)) { 513 psError(PS_ERR_UNKNOWN, false, "one of -fault or -burntool_state or -set_state must be selected"); 514 return false; 515 } 516 if ((fault != INT16_MAX) && isfinite(burntool_state)) { 501 517 psError(PS_ERR_UNKNOWN, false, "only one of -fault or -burntool_state must be selected"); 502 518 return false; … … 508 524 509 525 if (fault != INT16_MAX) { 510 // this is fairly dangerous : can set all if the where is not set... 511 if (!pxSetFaultCode(config->dbh, "rawImfile", where, fault)) { 512 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 513 psFree (where); 514 return false; 515 } 516 } 517 518 if (isfinite(burntool_state)) { 519 psString query = pxDataGet("regtool_updateprocessedimfile.sql"); 520 if (!query) { 521 psError(PXTOOLS_ERR_DATA, 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); 526 // this is fairly dangerous : can set all if the where is not set... 527 if (!pxSetFaultCode(config->dbh, "rawImfile", where, fault)) { 528 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 529 psFree (where); 530 return false; 531 } 532 psFree (where); 533 return(true); 531 534 } 532 535 psFree (where); 533 536 537 psString setvalues = NULL; 538 if (burntool_state != INT16_MAX) { 539 psStringAppend(&setvalues,"rawImfile.burntool_state = %d",burntool_state); 540 } 541 if (set_bytes != INT32_MAX) { 542 if (setvalues) { 543 psStringAppend(&setvalues,","); 544 } 545 psStringAppend(&setvalues,"rawImfile.bytes = %d",set_bytes); 546 } 547 if (set_md5sum) { 548 if (setvalues) { 549 psStringAppend(&setvalues,","); 550 } 551 psStringAppend(&setvalues,"rawImfile.md5sum = '%s'",set_md5sum); 552 } 553 if (set_state) { 554 if (setvalues) { 555 psStringAppend(&setvalues,","); 556 } 557 psStringAppend(&setvalues,"rawImfile.data_state = '%s'",set_state); 558 } 559 560 psString query = pxDataGet("regtool_updateprocessedimfile.sql"); 561 if (!query) { 562 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 563 return false; 564 } 565 566 // printf(query,setvalues,exp_id,class_id); 567 if (!p_psDBRunQueryF(config->dbh, query, setvalues, exp_id,class_id)) { 568 psError(PS_ERR_UNKNOWN, false, "database error"); 569 psFree(query); 570 psFree(setvalues); 571 return false; 572 } 573 psFree(setvalues); 574 psFree(query); 575 534 576 return true; 577 } 578 579 static bool pendingcompressimfileMode(pxConfig *config) { 580 PS_ASSERT_PTR_NON_NULL(config, false); 581 582 psMetadata *where = psMetadataAlloc(); 583 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 584 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 585 586 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 587 if (whereClause) { 588 psStringPrepend(&whereClause, "\n AND "); 589 } 590 PXOPT_LOOKUP_BOOL(compress, config->args, "-compress", false); 591 PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false); 592 593 if ((compress && clean) || (!compress && !clean)) { 594 psStringAppend(&whereClause, "\n AND ((data_state = 'goto_compressed' AND state = 'goto_compressed')\n OR (data_state = 'goto_lossy' AND state = 'goto_lossy')) "); 595 } 596 else if (compress) { 597 psStringAppend(&whereClause, "\n AND ((data_state = 'goto_compressed' AND state = 'goto_compressed')) "); 598 } 599 else if (clean) { 600 psStringAppend(&whereClause, "\n AND ((data_state = 'goto_lossy' AND state = 'goto_lossy')) "); 601 } 602 else { 603 psStringAppend(&whereClause, "\n AND ((data_state = 'goto_compressed' AND state = 'goto_compressed')\n OR (data_state = 'goto_lossy' AND state = 'goto_lossy')) "); 604 } 605 606 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 607 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 608 609 psString query = pxDataGet("regtool_pendingcompressimfile.sql"); 610 if (!query) { 611 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 612 return(false); 613 } 614 psString limitString = NULL; 615 if (limit) { 616 limitString = psDBGenerateLimitSQL(limit); 617 psStringPrepend(&limitString, "\n"); 618 } 619 // printf(query,whereClause,limitString); 620 if (!p_psDBRunQueryF(config->dbh, query, whereClause, limitString ? limitString : "")) { 621 psError(PXTOOLS_ERR_PROG, false, "database error"); 622 psFree(limitString); 623 psFree(query); 624 psFree(whereClause); 625 psFree(where); 626 return(false); 627 } 628 psFree(limitString); 629 psFree(query); 630 psFree(whereClause); 631 psFree(where); 632 633 psArray *output = p_psDBFetchResult(config->dbh); 634 if (!output) { 635 psErrorCode err = psErrorCodeLast(); 636 switch (err) { 637 case PS_ERR_DB_CLIENT: 638 psError(PXTOOLS_ERR_SYS, false, "database error"); 639 case PS_ERR_DB_SERVER: 640 psError(PXTOOLS_ERR_PROG, false, "database error"); 641 default: 642 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 643 } 644 645 return false; 646 } 647 if (!psArrayLength(output)) { 648 psTrace("regtool", PS_LOG_INFO, "no rows found"); 649 psFree(output); 650 return true; 651 } 652 653 // negate simple so the default is true 654 if (!ippdbPrintMetadatas(stdout, output, "regPendingCompressImfile", !simple)) { 655 psError(PXTOOLS_ERR_PROG, false, "failed to print array"); 656 psFree(output); 657 return false; 658 } 659 660 psFree(output); 661 662 return true; 535 663 } 536 664 … … 549 677 psString query = pxDataGet("regtool_pendingexp.sql"); 550 678 if (!query) { 551 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");679 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 552 680 return false; 553 681 } … … 626 754 PXOPT_LOOKUP_STR(exp_type, config->args, "-exp_type", false, false); 627 755 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", false, false); 756 PXOPT_LOOKUP_STR(state, config->args, "-state", false, false); 628 757 PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false); 629 758 PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", false, false); … … 687 816 psString query = pxDataGet("regtool_pendingexp.sql"); 688 817 if (!query) { 689 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");818 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 690 819 return false; 691 820 } … … 787 916 filelevel, 788 917 workdir, 918 state, 789 919 reduction, 790 920 dvodb, … … 920 1050 psString query = pxDataGet("regtool_processedexp.sql"); 921 1051 if (!query) { 922 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1052 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 923 1053 return false; 924 1054 } … … 930 1060 PXOPT_COPY_STR(config->args, where, "-inst", "camera", "=="); 931 1061 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", "<="); 1062 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "dateobs", ">="); 1063 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "dateobs", "<="); 1064 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 934 1065 PXOPT_COPY_STR(config->args, where, "-exp_tag", "exp_tag", "=="); 935 1066 PXOPT_COPY_STR(config->args, where, "-exp_type", "exp_type", "=="); 936 1067 PXOPT_COPY_STR(config->args, where, "-filelevel", "filelevel", "=="); 937 1068 PXOPT_COPY_STR(config->args, where, "-reduction", "reduction", "=="); 938 PXOPT_COPY_STR(config->args, where, "-filter", "filter", " ==");1069 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE"); 939 1070 PXOPT_COPY_F32(config->args, where, "-airmass_min", "airmass", ">="); 940 1071 PXOPT_COPY_F32(config->args, where, "-airmass_max", "airmass", "<"); … … 965 1096 PXOPT_COPY_F32(config->args, where, "-sun_angle_max", "sun_angle", "<"); 966 1097 1098 psString where2 = NULL; 1099 if (!pxmagicAddWhere(config, &where2, "rawExp")) { 1100 psError(psErrorCodeLast(), false, "pxmagicAddWhere failed"); 1101 return false; 1102 } 1103 if (!pxspaceAddWhere(config, &where2, "rawExp")) { 1104 psError(psErrorCodeLast(), false, "pxSpaceAddWhere failed"); 1105 return false; 1106 } 1107 967 1108 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 968 1109 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 970 1111 971 1112 if (psListLength(where->list)) { 972 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp");973 psStringAppend(&query, " AND %s", whereClause);974 psFree(whereClause);1113 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp"); 1114 psStringAppend(&query, " AND %s", whereClause); 1115 psFree(whereClause); 975 1116 } 976 1117 psFree(where); 977 1118 1119 if (where2) { 1120 psStringAppend(&query, " %s ", where2); 1121 psFree(where2); 1122 } 1123 978 1124 if (faulted) { 979 // list only faulted rows980 psStringAppend(&query, " %s", "AND rawExp.fault != 0");1125 // list only faulted rows 1126 psStringAppend(&query, " %s", "AND rawExp.fault != 0"); 981 1127 } else { 982 // don't list faulted rows983 psStringAppend(&query, " %s", "AND rawExp.fault = 0");1128 // don't list faulted rows 1129 psStringAppend(&query, " %s", "AND rawExp.fault = 0"); 984 1130 } 985 1131 986 1132 // treat limit == 0 as "no limit" 987 1133 if (limit) { 988 psString limitString = psDBGenerateLimitSQL(limit);989 psStringAppend(&query, " %s", limitString);990 psFree(limitString);1134 psString limitString = psDBGenerateLimitSQL(limit); 1135 psStringAppend(&query, " %s", limitString); 1136 psFree(limitString); 991 1137 } 992 1138 993 1139 if (!p_psDBRunQuery(config->dbh, query)) { 994 psError(PS_ERR_UNKNOWN, false, "database error");995 return false;1140 psError(PS_ERR_UNKNOWN, false, "database error"); 1141 return false; 996 1142 } 997 1143 psFree(query); … … 999 1145 psArray *output = p_psDBFetchResult(config->dbh); 1000 1146 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;1147 psErrorCode err = psErrorCodeLast(); 1148 switch (err) { 1149 case PS_ERR_DB_CLIENT: 1150 psError(PXTOOLS_ERR_SYS, false, "database error"); 1151 case PS_ERR_DB_SERVER: 1152 psError(PXTOOLS_ERR_PROG, false, "database error"); 1153 default: 1154 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 1155 } 1156 1157 return false; 1012 1158 } 1013 1159 if (!psArrayLength(output)) { 1014 psTrace("regtool", PS_LOG_INFO, "no rows found"); 1160 psTrace("regtool", PS_LOG_INFO, "no rows found"); 1161 psFree(output); 1162 return true; 1163 } 1164 1165 if (psArrayLength(output)) { 1166 // negative simple so the default is true 1167 if (!ippdbPrintMetadatas(stdout, output, "rawExp", !simple)) { 1168 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1015 1169 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 } 1170 return false; 1171 } 1026 1172 } 1027 1173 … … 1033 1179 static bool revertprocessedexpMode(pxConfig *config) 1034 1180 { 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_DATA, 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_DATA, false, "search parameters are required"); 1057 return false; 1058 } 1181 PS_ASSERT_PTR_NON_NULL(config, false); 1182 1183 psMetadata *where = psMetadataAlloc(); 1184 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1185 PXOPT_COPY_S16(config->args, where, "-fault", "fault", "=="); 1186 PXOPT_COPY_S64(config->args, where, "-exp_id_begin", "exp_id", ">="); 1187 PXOPT_COPY_S64(config->args, where, "-exp_id_end", "exp_id", "<="); 1188 1189 psString query = pxDataGet("regtool_revertprocessedexp.sql"); 1190 if (!query) { 1191 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1059 1192 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 } 1193 return false; 1194 } 1195 1196 if (psListLength(where->list)) { 1197 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp"); 1198 psStringAppend(&query, " AND %s", whereClause); 1199 psFree(whereClause); 1200 } else { 1201 psFree(where); 1202 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1203 return false; 1204 } 1205 psFree(where); 1206 1207 if (!p_psDBRunQuery(config->dbh, query)) { 1208 psError(PS_ERR_UNKNOWN, false, "database error"); 1066 1209 psFree(query); 1067 1068 int numUpdated = psDBAffectedRows(config->dbh); 1069 1070 psLogMsg("regtool", PS_LOG_INFO, "Updated %d rawExp", numUpdated); 1071 1072 return true; 1210 return false; 1211 } 1212 psFree(query); 1213 1214 int numUpdated = psDBAffectedRows(config->dbh); 1215 1216 psLogMsg("regtool", PS_LOG_INFO, "Updated %d rawExp", numUpdated); 1217 1218 return true; 1073 1219 } 1074 1220 … … 1076 1222 static bool updateprocessedexpMode(pxConfig *config) 1077 1223 { 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 } 1224 PS_ASSERT_PTR_NON_NULL(config, false); 1225 1226 psMetadata *where = psMetadataAlloc(); 1227 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1228 1229 PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false); 1230 1231 if (!pxSetFaultCode(config->dbh, "rawExp", where, fault)) { 1232 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 1090 1233 psFree(where); 1091 1092 return true; 1093 } 1234 return false; 1235 } 1236 psFree(where); 1237 1238 return true; 1239 } 1240 1241 1242 static bool finishcompressexpMode(pxConfig *config) { 1243 1244 PS_ASSERT_PTR_NON_NULL(config, false); 1245 1246 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1247 1248 psMetadata *where = psMetadataAlloc(); 1249 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1250 1251 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1252 1253 psString query = pxDataGet("regtool_finishcompressexp.sql"); 1254 if (!query) { 1255 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1256 return(false); 1257 } 1258 if (where && psListLength(where->list)) { 1259 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1260 psStringAppend(&query, " %s ", whereClause); 1261 psFree(whereClause); 1262 } 1263 psFree(where); 1264 1265 if (limit) { 1266 psString limitString = psDBGenerateLimitSQL(limit); 1267 psStringAppend(&query, " %s ", limitString); 1268 psFree(limitString); 1269 } 1270 // printf(query); 1271 // return(false); 1272 if (!p_psDBRunQuery(config->dbh, query)) { 1273 psError(PS_ERR_UNKNOWN, false, "database error"); 1274 psFree(query); 1275 return(false); 1276 } 1277 psFree(query); 1278 1279 psArray *output = p_psDBFetchResult(config->dbh); 1280 if (!output) { 1281 psError(PS_ERR_UNKNOWN, false, "database error"); 1282 return(false); 1283 } 1284 if (!psArrayLength(output)) { 1285 psTrace("chiptool", PS_LOG_INFO, "no rows found"); 1286 psFree(output); 1287 return(true); 1288 } 1289 1290 for (long i = 0; i < psArrayLength(output); i++) { 1291 psMetadata *md = output->data[i]; 1292 1293 rawExpRow *row = rawExpObjectFromMetadata(md); 1294 if (!psDBTransaction(config->dbh)) { 1295 psError(PS_ERR_UNKNOWN, false, "database error"); 1296 return(false); 1297 } 1298 1299 if (strcmp(row->state,"goto_compressed") == 0) { 1300 if (!pxrawExpSetState(config,row->exp_id, "compressed")) { 1301 psError(PS_ERR_UNKNOWN, false, "failed to set rawExp.state for exp_id: %" PRId64, row->exp_id); 1302 psFree(row); 1303 psFree(output); 1304 return(false); 1305 } 1306 } 1307 else if (strcmp(row->state,"goto_lossy") == 0) { 1308 if (!pxrawExpSetState(config,row->exp_id, "lossy")) { 1309 psError(PS_ERR_UNKNOWN, false, "failed to set rawExp.state for exp_id: %" PRId64, row->exp_id); 1310 psFree(row); 1311 psFree(output); 1312 return(false); 1313 } 1314 } 1315 if (!psDBCommit(config->dbh)) { 1316 psError(PS_ERR_UNKNOWN, false, "database error"); 1317 return false; 1318 } 1319 psFree(row); 1320 } 1321 1322 psFree(output); 1323 return(true); 1324 } 1325 1326 static bool updatebyqueryMode(pxConfig *config) { 1327 PS_ASSERT_PTR_NON_NULL(config, false); 1328 1329 PXOPT_LOOKUP_STR(set_state, config->args, "-set_state", true, false); 1330 1331 // XX test this out; need to make this consistent with the list in regtoolConfig.c 1332 psMetadata *where = psMetadataAlloc(); 1333 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "=="); 1334 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); 1335 PXOPT_COPY_STR(config->args, where, "-inst", "rawExp.camera", "=="); 1336 PXOPT_COPY_STR(config->args, where, "-telescope", "rawExp.telescope", "=="); 1337 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawExp.dateobs", ">="); 1338 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawExp.dateobs", "<="); 1339 PXOPT_COPY_STR(config->args, where, "-exp_tag", "rawExp.exp_tag", "=="); 1340 PXOPT_COPY_STR(config->args, where, "-exp_type", "rawExp.exp_type", "=="); 1341 PXOPT_COPY_STR(config->args, where, "-filelevel", "rawExp.filelevel", "=="); 1342 PXOPT_COPY_STR(config->args, where, "-state", "rawExp.state", "=="); 1343 PXOPT_COPY_STR(config->args, where, "-reduction", "rawExp.reduction", "=="); 1344 PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "=="); 1345 PXOPT_COPY_F32(config->args, where, "-airmass_min", "rawExp.airmass", ">="); 1346 PXOPT_COPY_F32(config->args, where, "-airmass_max", "rawExp.airmass", "<"); 1347 PXOPT_COPY_RADEC(config->args, where, "-ra_min", "rawExp.ra", ">="); 1348 PXOPT_COPY_RADEC(config->args, where, "-ra_max", "rawExp.ra", "<"); 1349 PXOPT_COPY_RADEC(config->args, where, "-decl_min", "rawExp.decl", ">="); 1350 PXOPT_COPY_RADEC(config->args, where, "-decl_max", "rawExp.decl", "<"); 1351 PXOPT_COPY_F32(config->args, where, "-exp_time_min", "rawExp.exp_time", ">="); 1352 PXOPT_COPY_F32(config->args, where, "-exp_time_max", "rawExp.exp_time", "<"); 1353 PXOPT_COPY_F32(config->args, where, "-sat_pixel_frac_min", "rawExp.sat_pixel_frac", ">="); 1354 PXOPT_COPY_F32(config->args, where, "-sat_pixel_frac_max", "rawExp.sat_pixel_frac", "<"); 1355 PXOPT_COPY_F64(config->args, where, "-bg_min", "rawExp.bg", ">="); 1356 PXOPT_COPY_F64(config->args, where, "-bg_max", "rawExp.bg", "<"); 1357 PXOPT_COPY_F64(config->args, where, "-bg_stdev_min", "rawExp.bg_stdev", ">="); 1358 PXOPT_COPY_F64(config->args, where, "-bg_stdev_max", "rawExp.bg_stdev", "<"); 1359 PXOPT_COPY_F64(config->args, where, "-bg_mean_stdev_min", "rawExp.bg_mean_stdev", ">="); 1360 PXOPT_COPY_F64(config->args, where, "-bg_mean_stdev_max", "rawExp.bg_mean_stdev", "<"); 1361 PXOPT_COPY_F64(config->args, where, "-alt_min", "rawExp.alt", ">="); 1362 PXOPT_COPY_F64(config->args, where, "-alt_max", "rawExp.alt", "<"); 1363 PXOPT_COPY_F64(config->args, where, "-az_min", "rawExp.az", ">="); 1364 PXOPT_COPY_F64(config->args, where, "-az_max", "rawExp.az", "<"); 1365 PXOPT_COPY_F64(config->args, where, "-ccd_temp_min", "rawExp.ccd_temp", ">="); 1366 PXOPT_COPY_F64(config->args, where, "-ccd_temp_max", "rawExp.ccd_temp", "<"); 1367 PXOPT_COPY_F64(config->args, where, "-posang_min", "rawExp.posang", ">="); 1368 PXOPT_COPY_F64(config->args, where, "-posang_max", "rawExp.posang", "<"); 1369 PXOPT_COPY_F32(config->args, where, "-sun_angle_min", "rawExp.sun_angle", ">="); 1370 PXOPT_COPY_F32(config->args, where, "-sun_angle_max", "rawExp.sun_angle", "<"); 1371 PXOPT_COPY_STR(config->args, where, "-object", "rawExp.object", "=="); 1372 PXOPT_COPY_STR(config->args, where, "-comment", "rawExp.comment", "LIKE"); 1373 PXOPT_COPY_STR(config->args, where, "-obs_mode", "rawExp.obs_mode", "LIKE"); 1374 1375 1376 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1377 psStringPrepend(&whereClause,"\n AND "); 1378 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1379 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1380 1381 psString limitString = NULL; 1382 if (limit) { 1383 limitString = psDBGenerateLimitSQL(limit); 1384 psStringPrepend(&limitString, "\n"); 1385 } 1386 // Update the imfiles first, because if you select by state, you'll clobber things 1387 psString query = pxDataGet("regtool_updatebyqueryimfile.sql"); 1388 if (!query) { 1389 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1390 return(false); 1391 } 1392 1393 // printf(query,set_state,whereClause,limitString); 1394 if (!p_psDBRunQueryF(config->dbh, query, set_state, whereClause, limitString ? limitString : "")) { 1395 psError(PXTOOLS_ERR_PROG, false, "database error"); 1396 psFree(limitString); 1397 psFree(query); 1398 psFree(whereClause); 1399 psFree(where); 1400 return(false); 1401 } 1402 1403 psFree(query); 1404 // Now up date the exposure. 1405 query = pxDataGet("regtool_updatebyquery.sql"); 1406 if (!query) { 1407 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1408 return(false); 1409 } 1410 if (!p_psDBRunQueryF(config->dbh, query, set_state,whereClause, limitString ? limitString : "")) { 1411 psError(PXTOOLS_ERR_PROG, false, "database error"); 1412 psFree(limitString); 1413 psFree(query); 1414 psFree(whereClause); 1415 psFree(where); 1416 return(false); 1417 } 1418 1419 psFree(limitString); 1420 psFree(query); 1421 psFree(whereClause); 1422 psFree(where); 1423 1424 return true; 1425 } 1426 1094 1427 1095 1428 … … 1111 1444 psError(PS_ERR_UNKNOWN, false, "database error"); 1112 1445 } 1113 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1446 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1114 1447 return false; 1115 1448 } … … 1137 1470 psError(PS_ERR_UNKNOWN, false, "database error"); 1138 1471 } 1139 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1472 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1140 1473 return false; 1141 1474 } … … 1218 1551 } 1219 1552 1553 if (!pxExportVersion(config, f)) { 1554 psError(PS_ERR_UNKNOWN, false, "failed to write dbversion to output file"); 1555 return false; 1556 } 1557 1220 1558 psMetadata *where = psMetadataAlloc(); 1221 1559 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); … … 1229 1567 psString query = pxDataGet(tables[i].sqlFilename); 1230 1568 if (!query) { 1231 psError(PXTOOLS_ERR_ DATA, false, "failed to retreive SQL statement");1569 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1232 1570 return false; 1233 1571 } … … 1287 1625 1288 1626 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 1627 1628 if (!pxCheckImportVersion(config, input)) { 1629 psError(PS_ERR_UNKNOWN, false, "pxCheckImportVersion failed"); 1630 return false; 1631 } 1632 1289 1633 1290 1634 fprintf (stdout, "---- input ----\n");
Note:
See TracChangeset
for help on using the changeset viewer.
