Changeset 28304 for branches/czw_branch/20100519/ippTools/src
- Timestamp:
- Jun 10, 2010, 6:28:51 PM (16 years ago)
- Location:
- branches/czw_branch/20100519
- Files:
-
- 25 edited
-
. (modified) (1 prop)
-
ippTools/src (modified) (1 prop)
-
ippTools/src/addtool.c (modified) (14 diffs)
-
ippTools/src/addtool.h (modified) (1 diff)
-
ippTools/src/addtoolConfig.c (modified) (5 diffs)
-
ippTools/src/camtool.c (modified) (7 diffs)
-
ippTools/src/difftool.c (modified) (2 diffs)
-
ippTools/src/disttool.c (modified) (7 diffs)
-
ippTools/src/disttoolConfig.c (modified) (1 diff)
-
ippTools/src/flatcorr.c (modified) (1 diff)
-
ippTools/src/magictool.c (modified) (1 diff)
-
ippTools/src/pstamptool.c (modified) (8 diffs)
-
ippTools/src/pstamptool.h (modified) (1 diff)
-
ippTools/src/pstamptoolConfig.c (modified) (2 diffs)
-
ippTools/src/pxadd.c (modified) (2 diffs)
-
ippTools/src/pxadd.h (modified) (1 diff)
-
ippTools/src/pxcam.c (modified) (2 diffs)
-
ippTools/src/pxchip.c (modified) (1 diff)
-
ippTools/src/pxtools.c (modified) (15 diffs)
-
ippTools/src/stacktool.c (modified) (8 diffs)
-
ippTools/src/stacktool.h (modified) (1 diff)
-
ippTools/src/stacktoolConfig.c (modified) (3 diffs)
-
ippTools/src/staticskytool.c (modified) (9 diffs)
-
ippTools/src/staticskytoolConfig.c (modified) (1 diff)
-
ippTools/src/warptool.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/czw_branch/20100519
- Property svn:mergeinfo changed
-
branches/czw_branch/20100519/ippTools/src
- Property svn:ignore
-
old new 38 38 stamp-h1 39 39 warptool 40 40 staticskytool
-
- Property svn:ignore
-
branches/czw_branch/20100519/ippTools/src/addtool.c
r27773 r28304 40 40 static bool maskedMode(pxConfig *config); 41 41 static bool unblockMode(pxConfig *config); 42 static bool addminidvodbrunMode(pxConfig *config); 43 static bool updateminidvodbrunMode(pxConfig *config); 44 static bool listminidvodbrunMode(pxConfig *config); 45 static bool flipminidvodbrunMode(pxConfig *config); 46 static bool checkminidvodbrunaddrunMode(pxConfig *config); 47 static bool addminidvodbprocessedMode(pxConfig *config); 48 static bool listminidvodbprocessedMode(pxConfig *config); 49 static bool revertminidvodbprocessedMode(pxConfig *config); 50 static bool updateminidvodbprocessedMode(pxConfig *config); 51 52 42 53 43 54 # define MODECASE(caseName, func) \ … … 69 80 MODECASE(ADDTOOL_MODE_MASKED, maskedMode); 70 81 MODECASE(ADDTOOL_MODE_UNBLOCK, unblockMode); 82 MODECASE(ADDTOOL_MODE_ADDMINIDVODBRUN, addminidvodbrunMode); 83 MODECASE(ADDTOOL_MODE_UPDATEMINIDVODBRUN, updateminidvodbrunMode); 84 MODECASE(ADDTOOL_MODE_LISTMINIDVODBRUN, listminidvodbrunMode); 85 MODECASE(ADDTOOL_MODE_FLIPMINIDVODBRUN, flipminidvodbrunMode); 86 MODECASE(ADDTOOL_MODE_CHECKMINIDVODBRUNADDRUN, checkminidvodbrunaddrunMode); 87 MODECASE(ADDTOOL_MODE_ADDMINIDVODBPROCESSED,addminidvodbprocessedMode); 88 MODECASE(ADDTOOL_MODE_LISTMINIDVODBPROCESSED,listminidvodbprocessedMode); 89 MODECASE(ADDTOOL_MODE_REVERTMINIDVODBPROCESSED,revertminidvodbprocessedMode); 90 MODECASE(ADDTOOL_MODE_UPDATEMINIDVODBPROCESSED,updateminidvodbprocessedMode); 91 71 92 default: 72 93 psAbort("invalid option (this should not happen)"); … … 102 123 PXOPT_COPY_STR(config->args, where, "-reduction", "camRun.reduction", "=="); 103 124 125 104 126 if (!psListLength(where->list)) { 105 127 psFree(where); … … 114 136 PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false); 115 137 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 138 PXOPT_LOOKUP_STR(minidvodb_name, config->args, "-set_minidvodb_name", false, false); 139 PXOPT_LOOKUP_STR(minidvodb_group, config->args, "-set_minidvodb_group", false, false); 116 140 PXOPT_LOOKUP_BOOL(image_only, config->args, "-image_only", false); 141 PXOPT_LOOKUP_BOOL(minidvodb, config->args, "-set_minidvodb", false); 117 142 PXOPT_LOOKUP_BOOL(destreaked, config->args, "-destreaked", false); 118 143 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 119 144 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 145 146 120 147 121 148 // find the cam_id of all the exposures that we want to queue up. … … 245 272 dvodb ? dvodb : row->dvodb, 246 273 note ? note : NULL, 247 image_only 274 image_only, 275 minidvodb, 276 minidvodb_group, 277 minidvodb_name 248 278 )) { 249 279 if (!psDBRollback(config->dbh)) { 250 psError(PS_ERR_UNKNOWN, false, "database error ");280 psError(PS_ERR_UNKNOWN, false, "database error sfg"); 251 281 } 252 282 psError(PS_ERR_UNKNOWN, false, … … 291 321 292 322 // pxUpdateRun gets parameters from config->args and runs the update query 293 bool result = pxUpdateRun(config, where, &query, "addRun", "add_id", 323 bool result = pxUpdateRun(config, where, &query, "addRun", "add_id", 294 324 "addProcessedExp", false); 295 325 … … 374 404 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false); 375 405 PXOPT_LOOKUP_F32(dtime_addstar, config->args, "-dtime_addstar", false, false); 406 PXOPT_LOOKUP_STR(dvodb_path, config->args, "-dvodb_path", false, false); 407 PXOPT_LOOKUP_STR(minidvodb_name, config->args, "-minidvodb_name", false, false); 376 408 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 377 409 … … 399 431 return false; 400 432 } 433 401 434 psFree(query); 402 435 … … 424 457 dtime_addstar, 425 458 path_base, 459 dvodb_path, 426 460 fault 427 461 ); … … 437 471 return false; 438 472 } 473 474 //if there is a minidvodb_name, set it in addRun (it's not known until it is processed) 475 if (minidvodb_name) { 476 psString setName = NULL; 477 psStringAppend (&setName, "UPDATE addRun set minidvodb_name = '%s' where add_id = %" PRId64, minidvodb_name, row->add_id); 478 if (!p_psDBRunQuery(config->dbh, setName)) { 479 if (!psDBRollback(config->dbh)) { 480 psError(PS_ERR_UNKNOWN, false, "database error"); 481 } 482 psError(PS_ERR_UNKNOWN, false, "database error"); 483 484 return false; 485 } 486 } 487 488 489 490 439 491 440 492 // since there is only one exp per 'new' set addRun.state = 'full' … … 522 574 523 575 if (!p_psDBRunQuery(config->dbh, query)) { 524 psError(PS_ERR_UNKNOWN, false, "database error");576 psError(PS_ERR_UNKNOWN, false, "database error"); 525 577 psFree(query); 526 578 return false; … … 576 628 577 629 { 578 psString query = pxDataGet("addtool_re set_faulted_runs.sql");630 psString query = pxDataGet("addtool_revertprocessedexp.sql"); 579 631 if (!query) { 632 // rollback 633 if (!psDBRollback(config->dbh)) { 634 psError(PS_ERR_UNKNOWN, false, "database error"); 635 } 580 636 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 581 637 psFree(where); … … 602 658 psFree(query); 603 659 } 604 605 {606 psString query = pxDataGet("addtool_revertprocessedexp.sql");607 if (!query) {608 // rollback609 if (!psDBRollback(config->dbh)) {610 psError(PS_ERR_UNKNOWN, false, "database error");611 }612 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");613 psFree(where);614 return false;615 }616 617 // use psDBGenerateWhereConditionalSQL with AND ... because the SQL ends in a WHERE618 if (where && psListLength(where->list)) {619 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);620 psStringAppend(&query, " AND %s", whereClause);621 psFree(whereClause);622 }623 624 if (!p_psDBRunQuery(config->dbh, query)) {625 // rollback626 if (!psDBRollback(config->dbh)) {627 psError(PS_ERR_UNKNOWN, false, "database error");628 }629 psError(PS_ERR_UNKNOWN, false, "database error");630 psFree(query);631 psFree(where);632 return false;633 }634 psFree(query);635 }636 660 psFree(where); 637 661 … … 733 757 return true; 734 758 } 759 760 static bool addminidvodbrunMode(pxConfig *config) 761 { 762 PS_ASSERT_PTR_NON_NULL(config, NULL); 763 764 // required 765 766 PXOPT_LOOKUP_STR(minidvodb_group, config->args, "-set_minidvodb_group", true, false); 767 PXOPT_LOOKUP_STR(mergedvodb_path, config->args, "-set_mergedvodb_path", true, false); 768 769 //optional 770 PXOPT_LOOKUP_STR(minidvodb_name, config->args, "-set_minidvodb_name", false, false); 771 PXOPT_LOOKUP_STR(minidvodb_path, config->args, "-set_minidvodb_path", false, false); 772 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 773 774 if (!psDBTransaction(config->dbh)) { 775 psError(PS_ERR_UNKNOWN, false, "database error"); 776 return false; 777 } 778 779 psString minidvodbpath = "NULL"; 780 781 // I don't know how to get around the complaints of minidvodb_path can't be null. this 'fixes' it, but someone smarter can fix it properly. 782 if (minidvodb_path) { 783 minidvodbpath = minidvodb_path; 784 } 785 786 if (!minidvodbRunInsert(config->dbh, 787 0, // job_id 788 minidvodb_name, 789 minidvodb_group, 790 minidvodbpath, 791 mergedvodb_path, 792 "new", 793 0 794 )) { 795 psError(PS_ERR_UNKNOWN, false, "database error"); 796 return false; 797 } 798 799 psU64 affected = psDBAffectedRows(config->dbh); 800 if (affected != 1) { 801 psError(PS_ERR_UNKNOWN, false, 802 "should have affected one row but %" PRIu64 " rows were modified", 803 affected); 804 return false; 805 } 806 807 psS64 minidvodb_id = psDBLastInsertID(config->dbh); 808 printf("%" PRId64 "\n", minidvodb_id); 809 810 811 if (!minidvodb_name) { 812 psStringAppend(&minidvodb_name, "%s.%" PRIu64,minidvodb_group,minidvodb_id); 813 } 814 815 if (!minidvodb_path) { 816 psStringAppend(&minidvodb_path,"%s/%s",mergedvodb_path,minidvodb_name); 817 } 818 819 psString query = NULL; 820 821 psStringAppend(&query, "UPDATE minidvodbRun SET minidvodb_path = '%s', minidvodb_name = '%s' where minidvodb_id = %" PRIu64";", minidvodb_path, minidvodb_name, minidvodb_id); 822 823 if (!p_psDBRunQuery(config->dbh, query)) { 824 psError(PS_ERR_UNKNOWN, false, "database error"); 825 psFree(query); 826 return false; 827 } 828 829 if (!psDBCommit(config->dbh)) { 830 psError(PS_ERR_UNKNOWN, false, "database error"); 831 return false; 832 } 833 834 return true; 835 } 836 837 static bool updateminidvodbrunMode(pxConfig *config) { 838 PS_ASSERT_PTR_NON_NULL(config, false); 839 840 psMetadata *where = psMetadataAlloc(); 841 PXOPT_COPY_S64(config->args, where, "-minidvodb_id", "minidvodb_id", "=="); 842 PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidvodb_name", "=="); 843 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 844 PXOPT_COPY_STR(config->args, where, "-minidvodb_path", "minidvodb_path", "=="); 845 PXOPT_COPY_STR(config->args, where, "-mergedvodb_path", "mergedvodb_path", "=="); 846 PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "minidvodb_group", "=="); 847 848 PXOPT_LOOKUP_STR(minidvodb_name, config->args, "-set_minidvodb_name", false, false); 849 PXOPT_LOOKUP_STR(minidvodb_path, config->args, "-set_minidvodb_path", false, false); 850 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 851 PXOPT_LOOKUP_STR(mergedvodb_path, config->args, "-set_mergedvodb_path", false, false); 852 PXOPT_LOOKUP_STR(minidvodb_group, config->args, "-set_minidvodb_group", false, false); 853 854 855 if (!psListLength(where->list)) { 856 psFree(where); 857 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 858 return false; 859 } 860 861 psString query = psStringCopy("UPDATE minidvodbRun SET "); 862 int cnt = 0; 863 psString comma = ","; 864 if (minidvodb_name) { 865 psStringAppend(&query, " minidvodb_name = '%s'", minidvodb_name); 866 cnt++; 867 } 868 869 if (minidvodb_path) { 870 if (cnt) { 871 psStringAppend(&query, "%s", comma); 872 } 873 874 psStringAppend(&query, " minidvodb_path = '%s'", minidvodb_path); 875 cnt++; 876 } 877 878 if (state) { 879 if (cnt) { 880 psStringAppend(&query, "%s", comma); 881 } 882 psStringAppend(&query, " state = '%s'", state); 883 cnt++; 884 } 885 886 if (mergedvodb_path) { 887 if (cnt) { 888 psStringAppend(&query, "%s", comma); 889 } 890 psStringAppend(&query, " mergedvodb_path = '%s'", mergedvodb_path); 891 cnt++; 892 } 893 894 if (minidvodb_group) { 895 if (cnt) { 896 psStringAppend(&query, "%s", comma); 897 } 898 psStringAppend(&query, " minidvodb_group = '%s'", minidvodb_group); 899 cnt++; 900 } 901 902 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 903 psStringAppend(&query, " WHERE %s", whereClause); 904 905 if (!p_psDBRunQuery(config->dbh, query)) { 906 psError(PS_ERR_UNKNOWN, false, "database error"); 907 psFree(query); 908 return false; 909 } 910 911 psFree(query); 912 psFree(where); 913 914 return true; 915 916 } 917 918 static bool flipminidvodbrunMode(pxConfig *config) { 919 PS_ASSERT_PTR_NON_NULL(config, false); 920 921 psMetadata *where = psMetadataAlloc(); 922 PXOPT_LOOKUP_STR(minidvodb_group, config->args, "-minidvodb_group",true, false); 923 PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "minidvodb_group", "=="); 924 925 //this flips the new - > active 926 // and the active - > waiting in one action 927 928 929 // the first query looks to find things that are new and where all the fields are filled (ie, ready to be flipped to active) 930 931 // start a transaction eraly so it will contain any row level locks 932 if (!psDBTransaction(config->dbh)) { 933 psError(PS_ERR_UNKNOWN, false, "database error"); 934 return false; 935 } 936 937 psString firstquery = psStringCopy("SELECT * from minidvodbRun where state = 'new' and minidvodb_name is NOT NULL and minidvodb_group IS NOT NULL and minidvodb_path IS NOT NULL and mergedvodb_path IS NOT NULL"); 938 939 psString firstwhereClause = psDBGenerateWhereConditionSQL(where, NULL); 940 psStringAppend(&firstquery, " AND %s", firstwhereClause); 941 942 943 944 if (!p_psDBRunQuery(config->dbh, firstquery)) { 945 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 946 if (!psDBRollback(config->dbh)) { 947 psError(PS_ERR_UNKNOWN, false, "database error"); 948 } 949 return false; 950 } 951 psFree(firstquery); 952 953 //we don't care what the stuff is that is found, just that there is stuff. This is a check to see that there is something in the 'new' state, before flipping (so that if there is nothing in new, it won't flip the active to waiting. the flipminidvo is just to make it easy to flip from new -> active. 954 955 psArray *output = p_psDBFetchResult(config->dbh); 956 if (!output) { 957 psError(PS_ERR_UNKNOWN, false, "database error"); 958 return false; 959 } 960 if (!psArrayLength(output)) { 961 psTrace("addtool", PS_LOG_INFO, "no rows found"); 962 psFree(output); 963 return true; 964 } 965 966 967 //ok, there's something, so flip active -> waiting 968 969 psString query = psStringCopy("UPDATE minidvodbRun SET state = 'waiting' WHERE state = 'active' "); 970 971 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 972 psStringAppend(&query, " AND %s", whereClause); 973 974 975 if (!p_psDBRunQuery(config->dbh, query)) { 976 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 977 if (!psDBRollback(config->dbh)) { 978 psError(PS_ERR_UNKNOWN, false, "database error"); 979 } 980 return false; 981 } 982 983 984 //now flip new -> active 985 psString query2 = psStringCopy("UPDATE minidvodbRun SET state = 'active' WHERE state = 'new' AND minidvodb_name is NOT NULL and minidvodb_group IS NOT NULL and minidvodb_path IS NOT NULL and mergedvodb_path IS NOT NULL "); 986 psStringAppend(&query2, " AND minidvodb_group = '%s' limit 1;", minidvodb_group); 987 if (!p_psDBRunQuery(config->dbh, query2)) { 988 psError(PS_ERR_UNKNOWN, false, "database error"); 989 if (!psDBRollback(config->dbh)) { 990 psError(PS_ERR_UNKNOWN, false, "database error"); 991 } 992 psFree(query); 993 return false; 994 } 995 996 997 if (!psDBCommit(config->dbh)) { 998 psError(PS_ERR_UNKNOWN, false, "database error"); 999 if (!psDBRollback(config->dbh)) { 1000 psError(PS_ERR_UNKNOWN, false, "database error"); 1001 } 1002 psFree(query); 1003 return false; 1004 } 1005 psFree(query2); 1006 psFree(where); 1007 1008 return true; 1009 1010 } 1011 1012 1013 static bool checkminidvodbrunaddrunMode(pxConfig *config) { 1014 PS_ASSERT_PTR_NON_NULL(config, false); 1015 psMetadata *where = psMetadataAlloc(); 1016 1017 //this checks to see if a minidvod_group/name is has completed addRun processing 1018 PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "minidvodbRun.minidvodb_group", "=="); 1019 PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidvodbRun.minidvodb_name", "=="); 1020 PXOPT_COPY_STR(config->args, where, "-state", "minidvodbRun.state", "=="); 1021 1022 1023 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1024 PXOPT_LOOKUP_BOOL(all_addrun_states, config->args, "-all_addrun_states", false); 1025 //this doesn't care what state the addRun is in (useful for counting addRuns) 1026 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1027 1028 if (!psListLength(where->list)) { 1029 psFree(where); 1030 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1031 return false; 1032 } 1033 1034 psString query = pxDataGet("addtool_checkminidvodbaddrun.sql"); 1035 1036 if (!query) { 1037 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1038 return false; 1039 } 1040 1041 1042 if (psListLength(where->list)) { 1043 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1044 psStringAppend(&query, " WHERE %s", whereClause); 1045 psFree(whereClause); 1046 } 1047 1048 if (!all_addrun_states) { 1049 psStringAppend(&query, " AND (cnt2 = cnt) "); 1050 } 1051 1052 if (limit) { 1053 psString limitString = psDBGenerateLimitSQL(limit); 1054 psStringAppend(&query, " %s", limitString); 1055 psFree(limitString); 1056 } 1057 1058 1059 if (!p_psDBRunQuery(config->dbh, query)) { 1060 psError(PS_ERR_UNKNOWN, false, "database error"); 1061 psFree(query); 1062 return false; 1063 } 1064 psFree(query); 1065 psArray *output = p_psDBFetchResult(config->dbh); 1066 if (!output) { 1067 psError(PS_ERR_UNKNOWN, false, "database error"); 1068 return false; 1069 } 1070 if (!psArrayLength(output)) { 1071 psTrace("addtool", PS_LOG_INFO, "no rows found"); 1072 psFree(output); 1073 return true; 1074 } 1075 1076 if (!ippdbPrintMetadatas(stdout, output, "minidvodbRun", !simple)) { 1077 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1078 psFree(output); 1079 return false; 1080 } 1081 1082 psFree(output); 1083 1084 return true; 1085 } 1086 1087 1088 1089 static bool listminidvodbrunMode(pxConfig *config) { 1090 PS_ASSERT_PTR_NON_NULL(config, false); 1091 psMetadata *where = psMetadataAlloc(); 1092 1093 PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidvodbRun.minidvodb_name", "LIKE"); 1094 PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "minidvodbRun.minidvodb_group", "=="); 1095 PXOPT_COPY_S64(config->args, where, "-minidvodb_id", "minidvodbRun.minidvodb_id", "=="); 1096 1097 PXOPT_COPY_STR(config->args, where, "-state", "minidvodbRun.state", "=="); 1098 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1099 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1100 1101 1102 if (!psListLength(where->list)) { 1103 psFree(where); 1104 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1105 return false; 1106 } 1107 1108 psString query = pxDataGet("addtool_find_minidvodbrun.sql"); 1109 1110 if (!query) { 1111 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1112 return false; 1113 } 1114 1115 if (psListLength(where->list)) { 1116 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1117 psStringAppend(&query, " WHERE %s", whereClause); 1118 psFree(whereClause); 1119 } 1120 1121 if (limit) { 1122 psString limitString = psDBGenerateLimitSQL(limit); 1123 psStringAppend(&query, " %s", limitString); 1124 psFree(limitString); 1125 } 1126 1127 if (!p_psDBRunQuery(config->dbh, query)) { 1128 psError(PS_ERR_UNKNOWN, false, "database error"); 1129 psFree(query); 1130 return false; 1131 } 1132 1133 psFree(query); 1134 psArray *output = p_psDBFetchResult(config->dbh); 1135 if (!output) { 1136 psError(PS_ERR_UNKNOWN, false, "database error"); 1137 return false; 1138 } 1139 if (!psArrayLength(output)) { 1140 psTrace("addtool", PS_LOG_INFO, "no rows found"); 1141 psFree(output); 1142 return true; 1143 } 1144 1145 if (!ippdbPrintMetadatas(stdout, output, "minidvodbRun", !simple)) { 1146 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1147 psFree(output); 1148 return false; 1149 } 1150 1151 psFree(output); 1152 1153 return true; 1154 } 1155 1156 static bool addminidvodbprocessedMode(pxConfig *config) { 1157 1158 PS_ASSERT_PTR_NON_NULL(config, false); 1159 1160 // required 1161 PXOPT_LOOKUP_U64(minidvodb_id, config->args, "-minidvodb_id", true, false); 1162 PXOPT_LOOKUP_STR(mergedvodb_path, config->args, "-mergedvodb_path", true, false); 1163 PXOPT_LOOKUP_STR(minidvodb_group, config->args, "-minidvodb_group", true, false); 1164 1165 // optional 1166 PXOPT_LOOKUP_U64(merge_order, config->args, "-merge_order", false, false); 1167 PXOPT_LOOKUP_F32(dtime_relphot, config->args, "-dtime_relphot", false, false); 1168 PXOPT_LOOKUP_F32(dtime_resort, config->args, "-dtime_resort", false, false); 1169 PXOPT_LOOKUP_F32(dtime_merge, config->args, "-dtime_merge", false, false); 1170 PXOPT_LOOKUP_TIME(epoch, config->args, "-epoch", false, false); 1171 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 1172 //generate restrictions 1173 psMetadata *where = psMetadataAlloc(); 1174 PXOPT_COPY_S64(config->args, where, "-minidvodb_id", "minidvodbRun.minidvodb_id", "=="); 1175 1176 1177 if (!psDBTransaction(config->dbh)) { 1178 psError(PS_ERR_UNKNOWN, false, "database error"); 1179 return false; 1180 } 1181 1182 1183 psString query = pxDataGet("addtool_find_pendingmergeprocess.sql"); 1184 if (!query) { 1185 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1186 return false; 1187 } 1188 // use psDBGenerateWhereSQL because the SQL yields an intermediate table 1189 if (psListLength(where->list)) { 1190 psString whereClaus = psDBGenerateWhereConditionSQL(where, NULL); 1191 psStringAppend(&query, " AND %s", whereClaus); 1192 psFree(whereClaus); 1193 } 1194 psFree(where); 1195 1196 if (!p_psDBRunQuery(config->dbh, query)) { 1197 psError(PS_ERR_UNKNOWN, false, "database error"); 1198 psFree(query); 1199 return false; 1200 } 1201 psFree(query); 1202 1203 psArray *output = p_psDBFetchResult(config->dbh); 1204 if (!output) { 1205 psError(PS_ERR_UNKNOWN, false, "database error"); 1206 return false; 1207 } 1208 if (!psArrayLength(output)) { 1209 psTrace("addtool", PS_LOG_INFO, "no rows found"); 1210 psFree(output); 1211 return true; 1212 } 1213 1214 minidvodbRunRow *pendingRow = minidvodbRunObjectFromMetadata(output->data[0]); 1215 psFree(output); 1216 minidvodbProcessedRow *row = minidvodbProcessedRowAlloc( 1217 pendingRow->minidvodb_id, 1218 merge_order, 1219 dtime_resort, 1220 dtime_relphot, 1221 dtime_merge, 1222 epoch, 1223 mergedvodb_path, 1224 fault 1225 ); 1226 1227 if (!minidvodbProcessedInsertObject(config->dbh, row)) { 1228 // rollback 1229 if (!psDBRollback(config->dbh)) { 1230 psError(PS_ERR_UNKNOWN, false, "database error"); 1231 } 1232 psError(PS_ERR_UNKNOWN, false, "database error"); 1233 psFree(row); 1234 psFree(pendingRow); 1235 return false; 1236 } 1237 1238 1239 1240 1241 //this finds the # of merged things (for the merge order) 1242 psString query3 = NULL; 1243 psStringAppend(&query3, "select count(*) from minidvodbRun join minidvodbProcessed using (minidvodb_id) where state = 'merged' and minidvodb_group = '%s';", minidvodb_group); 1244 1245 if (!p_psDBRunQuery(config->dbh, query3)) { 1246 // rollback 1247 if (!psDBRollback(config->dbh)) { 1248 psError(PS_ERR_UNKNOWN, false, "database error"); 1249 } 1250 psError(PS_ERR_UNKNOWN, false, "database error"); 1251 psFree(query3); 1252 return false; 1253 } 1254 psArray *output2 = p_psDBFetchResult(config->dbh); 1255 if (!output2) { 1256 psError(PS_ERR_UNKNOWN, false, "database error"); 1257 return false; 1258 } 1259 if (!psArrayLength(output2)) { 1260 psTrace("addtool", PS_LOG_INFO, "no rows found"); 1261 psFree(output); 1262 return true; 1263 } 1264 bool status; 1265 psS64 m_order = psMetadataLookupS64(&status, output2->data[0], "count(*)"); 1266 if (!status) { 1267 1268 psAbort("failed to lookup value for count column"); 1269 return false; 1270 } 1271 psString final = NULL; 1272 psStringAppend(&final, "%" PRIu64, m_order); 1273 //return false; 1274 psFree(query3); 1275 psFree(output2); 1276 1277 1278 1279 //update the merge_order 1280 1281 psString query4 = NULL; 1282 psStringAppend(&query4, "update minidvodbProcessed set merge_order = %"PRIu64,m_order); 1283 psStringAppend(&query4," where minidvodb_id = %" PRIu64, minidvodb_id); 1284 printf("%s", query4); 1285 if (!p_psDBRunQuery(config->dbh, query4)) { 1286 // rollback 1287 if (!psDBRollback(config->dbh)) { 1288 psError(PS_ERR_UNKNOWN, false, "database error"); 1289 } 1290 psError(PS_ERR_UNKNOWN, false, "database error"); 1291 psFree(query4); 1292 return false; 1293 } 1294 // 1295 psFree(query4); 1296 1297 1298 1299 // since there is only one exp per 'new' set mindvodbRun.state = 'merged' 1300 1301 psString query2 = NULL ; 1302 psStringAppend(&query2, "UPDATE minidvodbRun SET state = 'merged' WHERE minidvodb_id = %'" PRIu64, row->minidvodb_id); 1303 1304 if (!p_psDBRunQuery(config->dbh, query2)) { 1305 // rollback 1306 if (!psDBRollback(config->dbh)) { 1307 psError(PS_ERR_UNKNOWN, false, "database error"); 1308 } 1309 psError(PS_ERR_UNKNOWN, false, "database error"); 1310 psFree(query2); 1311 return false; 1312 } 1313 1314 1315 1316 1317 1318 1319 1320 1321 psFree(row); 1322 psFree(pendingRow); 1323 1324 1325 1326 1327 1328 //commit the changes 1329 if (!psDBCommit(config->dbh)) { 1330 psError(PS_ERR_UNKNOWN, false, "database error"); 1331 return false; 1332 } 1333 1334 1335 //print the merge_order (why not!) 1336 printf("%s", final); 1337 psFree(final); 1338 1339 return true; 1340 } 1341 1342 1343 1344 static bool listminidvodbprocessedMode(pxConfig *config) { 1345 psMetadata *where = psMetadataAlloc(); 1346 PXOPT_COPY_S64(config->args, where, "-minidvodb_id", "minidvodbProcessed.minidvodb_id", "=="); 1347 PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidvodbProcessed.minidvodb_name", "=="); 1348 PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "minidvodbProcessed.minidvodb_group", "=="); 1349 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1350 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1351 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 1352 if (!psListLength(where->list)) { 1353 psFree(where); 1354 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1355 return false; 1356 } 1357 1358 psString query = pxDataGet("addtool_find_minidvodbprocessed.sql"); 1359 if (!query) { 1360 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1361 return false; 1362 } 1363 1364 if (psListLength(where->list)) { 1365 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1366 psStringAppend(&query, " WHERE %s", whereClause); 1367 psFree(whereClause); 1368 } 1369 1370 // we either add AND (condition) or WHERE (condition): 1371 if (where->list && faulted) { 1372 // list only faulted rows 1373 psStringAppend(&query, " %s", " AND minidvodbProcessed.fault != 0"); 1374 } 1375 if (where->list && !faulted) { 1376 // don't list faulted rows 1377 psStringAppend(&query, " %s", " AND minidvodbProcessed.fault = 0"); 1378 } 1379 if (!where->list && faulted) { 1380 // list only faulted rows 1381 psStringAppend(&query, " %s", " WHERE minidvodbProcessed.fault != 0"); 1382 } 1383 if (!where->list && !faulted) { 1384 // don't list faulted rows 1385 psStringAppend(&query, " %s", " WHERE minidvodbProcessed.fault = 0"); 1386 } 1387 psFree(where); 1388 1389 // order by epoch 1390 psStringAppend(&query, " ORDER BY minidvodb_id"); 1391 1392 // treat limit == 0 as "no limit" 1393 if (limit) { 1394 psString limitString = psDBGenerateLimitSQL(limit); 1395 psStringAppend(&query, " %s", limitString); 1396 psFree(limitString); 1397 } 1398 1399 if (!p_psDBRunQuery(config->dbh, query)) { 1400 psError(PS_ERR_UNKNOWN, false, "database error "); 1401 psFree(query); 1402 return false; 1403 } 1404 psFree(query); 1405 1406 psArray *output = p_psDBFetchResult(config->dbh); 1407 if (!output) { 1408 psError(PS_ERR_UNKNOWN, false, "database error"); 1409 return false; 1410 } 1411 if (!psArrayLength(output)) { 1412 psTrace("addtool", PS_LOG_INFO, "no rows found"); 1413 psFree(output); 1414 return true; 1415 } 1416 1417 // negate simple so the default is true 1418 if (!ippdbPrintMetadatas(stdout, output, "minidvodbProcessed", !simple)) { 1419 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1420 psFree(output); 1421 return false; 1422 } 1423 1424 psFree(output); 1425 1426 return true; 1427 } 1428 1429 1430 1431 static bool revertminidvodbprocessedMode(pxConfig *config) { 1432 psMetadata *where = psMetadataAlloc(); 1433 PS_ASSERT_PTR_NON_NULL(config, false); 1434 PXOPT_COPY_S64(config->args, where, "-minidvodb_id", "minidvodbProcessed.minidvodb_id", "=="); 1435 PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "addRun.minidvodb_group", "=="); 1436 1437 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { 1438 psFree(where); 1439 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1440 return false; 1441 } 1442 1443 if (!psDBTransaction(config->dbh)) { 1444 psError(PS_ERR_UNKNOWN, false, "database error"); 1445 psFree(where); 1446 return false; 1447 } 1448 1449 { 1450 psString query = pxDataGet("addtool_revertminidvodbprocessed.sql"); 1451 if (!query) { 1452 // rollback 1453 if (!psDBRollback(config->dbh)) { 1454 psError(PS_ERR_UNKNOWN, false, "database error"); 1455 } 1456 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1457 psFree(where); 1458 return false; 1459 } 1460 1461 // use psDBGenerateWhereConditionalSQL with AND ... because the SQL ends in a WHERE 1462 if (where && psListLength(where->list)) { 1463 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1464 psStringAppend(&query, " AND %s", whereClause); 1465 psFree(whereClause); 1466 } 1467 1468 if (!p_psDBRunQuery(config->dbh, query)) { 1469 // rollback 1470 if (!psDBRollback(config->dbh)) { 1471 psError(PS_ERR_UNKNOWN, false, "database error"); 1472 } 1473 psError(PS_ERR_UNKNOWN, false, "database error"); 1474 psFree(query); 1475 psFree(where); 1476 return false; 1477 } 1478 psFree(query); 1479 } 1480 psFree(where); 1481 1482 if (!psDBCommit(config->dbh)) { 1483 psError(PS_ERR_UNKNOWN, false, "database error"); 1484 return false; 1485 } 1486 1487 return true; 1488 } 1489 1490 1491 1492 static bool updateminidvodbprocessedMode(pxConfig *config) { 1493 PS_ASSERT_PTR_NON_NULL(config, false); 1494 psMetadata *where = psMetadataAlloc(); 1495 1496 PXOPT_LOOKUP_U64(minidvodb_id, config->args, "-minidvodb_id", true, false); 1497 PXOPT_LOOKUP_U64(merge_order, config->args, "-set_merge_order", false, false); 1498 PXOPT_LOOKUP_S16(fault, config->args, "-set_fault", false, false); 1499 PXOPT_LOOKUP_F32(dtime_relphot, config->args, "-set_dtime_relphot", false, false); 1500 PXOPT_LOOKUP_F32(dtime_resort, config->args, "-set_dtime_resort", false, false); 1501 PXOPT_LOOKUP_F32(dtime_merge, config->args, "-set_dtime_merge", false, false); 1502 1503 PXOPT_COPY_S64(config->args, where, "-minidvodb_id", "minidvodbProcessed.minidvodb_id", "=="); 1504 PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidvodbRun.minidvodb_name", "=="); 1505 1506 1507 if (!psListLength(where->list)) { 1508 psFree(where); 1509 psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required"); 1510 return false; 1511 } 1512 1513 psString query = psStringCopy("UPDATE minidvodbProcessed JOIN minidvodbRun USING (minidvodb_id) SET "); 1514 int cnt = 0; 1515 psString comma = ","; 1516 if (fault) { 1517 psStringAppend(&query, " fault = %d", fault); 1518 cnt++; 1519 } 1520 1521 if (merge_order) { 1522 if (cnt) { 1523 psStringAppend(&query, "%s", comma); 1524 } 1525 1526 psStringAppend(&query, " merge_order = %" PRId64, merge_order); 1527 cnt++; 1528 } 1529 1530 if (dtime_relphot) { 1531 if (cnt) { 1532 psStringAppend(&query, "%s", comma); 1533 } 1534 psStringAppend(&query, " dtime_relphot = %f", dtime_relphot); 1535 cnt++; 1536 } 1537 1538 if (dtime_resort) { 1539 if (cnt) { 1540 psStringAppend(&query, "%s", comma); 1541 } 1542 psStringAppend(&query, " dtime_resort = %f", dtime_resort); 1543 cnt++; 1544 } 1545 1546 if (dtime_merge) { 1547 if (cnt) { 1548 psStringAppend(&query, "%s", comma); 1549 } 1550 psStringAppend(&query, " dtime_merge = %f", dtime_merge); 1551 cnt++; 1552 } 1553 1554 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1555 psStringAppend(&query, " WHERE %s", whereClause); 1556 1557 if (!p_psDBRunQuery(config->dbh, query)) { 1558 psError(PS_ERR_UNKNOWN, false, "database error"); 1559 psFree(query); 1560 return false; 1561 } 1562 1563 psFree(query); 1564 psFree(where); 1565 1566 return true; 1567 } 1568 1569 -
branches/czw_branch/20100519/ippTools/src/addtool.h
r25299 r28304 39 39 ADDTOOL_MODE_DONECLEANUP, 40 40 ADDTOOL_MODE_EXPORTRUN, 41 ADDTOOL_MODE_IMPORTRUN 41 ADDTOOL_MODE_IMPORTRUN, 42 ADDTOOL_MODE_ADDMINIDVODBRUN, 43 ADDTOOL_MODE_UPDATEMINIDVODBRUN, 44 ADDTOOL_MODE_LISTMINIDVODBRUN, 45 ADDTOOL_MODE_FLIPMINIDVODBRUN, 46 ADDTOOL_MODE_CHECKMINIDVODBRUNADDRUN, 47 ADDTOOL_MODE_ADDMINIDVODBPROCESSED, 48 ADDTOOL_MODE_LISTMINIDVODBPROCESSED, 49 ADDTOOL_MODE_REVERTMINIDVODBPROCESSED, 50 ADDTOOL_MODE_UPDATEMINIDVODBPROCESSED 42 51 } addtoolMode; 43 52 -
branches/czw_branch/20100519/ippTools/src/addtoolConfig.c
r27773 r28304 63 63 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend", 0, "do not actually modify the database", false); 64 64 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 65 65 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-set_minidvodb", 0, "use minidvodb", false); 66 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_minidvodb_group", 0, "define minidvodb_group", NULL); 67 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_minidvodb_name", 0, "define minidvodb_bname", NULL); 66 68 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_data_group", 0, "define new data_group", NULL); 67 69 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define new dist_group", NULL); … … 84 86 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define new dist_group", NULL); 85 87 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_note", 0, "define new note", NULL); 88 86 89 // -pendingexp 87 90 psMetadata *pendingexpArgs = psMetadataAlloc(); … … 98 101 psMetadataAddS64(addprocessedexpArgs, PS_LIST_TAIL, "-add_id", 0, "define addtool ID (required)", 0); 99 102 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL); 103 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-dvodb_path", 0, "define base output location", NULL); 104 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-minidvodb_name", 0, "define minidvodb_name", NULL); 100 105 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-dtime_addstar", 0, "define elapsed time for DVO insertion (seconds)", NAN); 101 106 psMetadataAddS16(addprocessedexpArgs, PS_LIST_TAIL, "-fault", 0, "set fault code", 0); … … 142 147 psMetadataAddStr(unblockArgs, PS_LIST_TAIL, "-label", 0, "name of a label to unmask (required)", NULL); 143 148 149 // -addminidvodbruns 150 psMetadata *addminidvodbrunArgs = psMetadataAlloc(); 151 psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_name", 0, "define minidvodb_name", NULL); 152 psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_group", 0, "define minidvodb_group (required)", NULL); 153 psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_path", 0, "define path for minidvodb", NULL); 154 psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_mergedvodb_path", 0, "define path for the merged dvodb (required)", NULL); 155 psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_state", 0, "define state", NULL); 156 157 // -updateminidvodbruns 158 psMetadata *updateminidvodbrunArgs = psMetadataAlloc(); 159 psMetadataAddU64(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_id", 0, "search by minidvodb_id ", 0); 160 psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_group", 0, "search by minidvodb_name (LIKE)", NULL); 161 psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_name", 0, "search by minidvodb_name (LIKE)", NULL); 162 psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_path", 0, "search by path for minidvodb", NULL); 163 psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-mergedvodb_path", 0, "search by path for the merged dvodb", NULL); 164 psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-state", 0, "search by state", NULL); 165 psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_name", 0, "define minidvodb_name", NULL); 166 psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_path", 0, "define path for minidvodb", NULL); 167 psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_mergedvodb_path", 0, "define path for minidvodb", NULL); 168 psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_group", 0, "define path for the merged dvodb", NULL); 169 psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_state", 0, "define state", NULL); 170 171 // -listminidvodbrunArgs 172 psMetadata *listminidvodbrunArgs = psMetadataAlloc(); 173 psMetadataAddU64(listminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_id", 0, "search by minidvodb_id", 0); 174 psMetadataAddStr(listminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_name", 0, "search by minidvodb_name (LIKE)", NULL); 175 psMetadataAddStr(listminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_group", 0, "search by minidvodb.minidvodb_group", NULL); 176 psMetadataAddStr(listminidvodbrunArgs, PS_LIST_TAIL, "-state", 0, "search by state", NULL); 177 psMetadataAddU64(listminidvodbrunArgs, PS_LIST_TAIL, "-limit", 0, "limit to N items", 0); 178 psMetadataAddBool(listminidvodbrunArgs, PS_LIST_TAIL, "-simple", 0, "simple output", false); 179 180 //psMetadataAddBool(listminidvodbrunArgs, PS_LIST_TAIL, "-finished_addrun", 0, "limit to minidvodbs with completed addRuns (none in new state)", false); 181 psMetadata *flipminidvodbrunArgs = psMetadataAlloc(); 182 psMetadataAddStr(flipminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_group", 0, "for the supplied minidvodb_group (required): flip the current 'new' to 'active', the current 'active' to 'waiting'", NULL); 183 184 psMetadata *checkminidvodbrunaddrunArgs = psMetadataAlloc(); 185 psMetadataAddStr(checkminidvodbrunaddrunArgs, PS_LIST_TAIL, "-minidvodb_group", 0, "for the supplied minidvodb_group (required): check if the addRun stage is complete (all in addRun.state = full) ", NULL); 186 psMetadataAddStr(checkminidvodbrunaddrunArgs, PS_LIST_TAIL, "-minidvodb_name", 0, "for the supplied minidvodb_name: check if the addRun stage is complete (all in addRun.state = full) ", NULL); 187 psMetadataAddStr(checkminidvodbrunaddrunArgs, PS_LIST_TAIL, "-state", 0, "limit by minidvodbRun state ", NULL); 188 psMetadataAddU64(checkminidvodbrunaddrunArgs, PS_LIST_TAIL, "-limit", 0, "limit to N items", 0); 189 psMetadataAddBool(checkminidvodbrunaddrunArgs, PS_LIST_TAIL, "-simple", 0, "simple output", false); 190 psMetadataAddBool(checkminidvodbrunaddrunArgs, PS_LIST_TAIL, "-all_addrun_states", 0, "list all minidvodbRun.minidvodb_names, not just ones that have complete addRuns", false); 191 192 psMetadata *addminidvodbprocessedArgs = psMetadataAlloc(); 193 psMetadataAddU64(addminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_id", 0, "define minidvodb_id (required)", 0); 194 psMetadataAddU64(addminidvodbprocessedArgs, PS_LIST_TAIL, "-merge_order", 0, "define merge order", 0); 195 psMetadataAddF32(addminidvodbprocessedArgs, PS_LIST_TAIL, "-dtime_relphot", 0, "define elapsed time for relphot (seconds)", NAN); 196 psMetadataAddF32(addminidvodbprocessedArgs, PS_LIST_TAIL, "-dtime_resort", 0, "define elapsed time for resort (seconds)", NAN); 197 psMetadataAddF32(addminidvodbprocessedArgs, PS_LIST_TAIL, "-dtime_merge", 0, "define elapsed time for DVO merge (seconds)", NAN); 198 psMetadataAddTime(addminidvodbprocessedArgs, PS_LIST_TAIL, "-epoch", 0, "time merge is finished", NULL); 199 psMetadataAddStr(addminidvodbprocessedArgs, PS_LIST_TAIL, "-mergedvodb_path",0, "path of merged dvodb", NULL); 200 psMetadataAddStr(addminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_group",0, "minidvodb_group", NULL); 201 psMetadataAddS16(addminidvodbprocessedArgs, PS_LIST_TAIL, "-fault", 0, "set fault code", 0); 202 203 psMetadata *listminidvodbprocessedArgs = psMetadataAlloc(); 204 psMetadataAddU64(listminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_id", 0, "search by minidvodb_id", 0); 205 psMetadataAddStr(listminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_name", 0, "search by minidvodb_name", NULL); 206 psMetadataAddStr(listminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_group", 0, "search by minidvodb.minidvodb_group", NULL); 207 psMetadataAddU64(listminidvodbprocessedArgs, PS_LIST_TAIL, "-limit", 0, "limit to N items", 0); 208 psMetadataAddBool(listminidvodbprocessedArgs, PS_LIST_TAIL, "-simple", 0, "simple output", false); 209 psMetadataAddBool(listminidvodbprocessedArgs, PS_LIST_TAIL, "-faulted", 0, "limit to faulted state", false); 210 211 psMetadata *revertminidvodbprocessedArgs = psMetadataAlloc(); 212 psMetadataAddU64(revertminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_id", 0, "search by minidvodb_id", 0); 213 psMetadataAddStr(revertminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_group", 0, "search by addRun.minidvodb_group", NULL); 214 215 psMetadata *updateminidvodbprocessedArgs = psMetadataAlloc(); 216 psMetadataAddU64(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_id", 0, "search by minidvodb_id", 0); 217 psMetadataAddStr(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_name", 0, "search by minidvodb_name", NULL); 218 psMetadataAddS16(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_fault", 0, "set fault code", 0); 219 psMetadataAddU64(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_merge_order", 0, "define merge order", 0); 220 psMetadataAddF32(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_dtime_relphot", 0, "define elapsed time for relphot (seconds)", 0); 221 psMetadataAddF32(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_dtime_resort", 0, "define elapsed time for resort (seconds)", 0); 222 psMetadataAddF32(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_dtime_merge", 0, "define elapsed time for DVO merge (seconds)", 0); 223 144 224 psMetadata *argSets = psMetadataAlloc(); 145 225 psMetadata *modes = psMetadataAlloc(); … … 154 234 PXOPT_ADD_MODE("-block", "set a label block", ADDTOOL_MODE_BLOCK, blockArgs); 155 235 PXOPT_ADD_MODE("-masked", "show blocked labels", ADDTOOL_MODE_MASKED, maskedArgs); 156 PXOPT_ADD_MODE("-unblock", "remove a label block", ADDTOOL_MODE_UNBLOCK, unblockArgs); 236 PXOPT_ADD_MODE("-addminidvodbrun", "create minidvodbs ", ADDTOOL_MODE_ADDMINIDVODBRUN, addminidvodbrunArgs); 237 PXOPT_ADD_MODE("-updateminidvodbrun", "change minidvodb properties", ADDTOOL_MODE_UPDATEMINIDVODBRUN, updateminidvodbrunArgs); 238 PXOPT_ADD_MODE("-listminidvodbrun", "list minidvodbs", ADDTOOL_MODE_LISTMINIDVODBRUN, listminidvodbrunArgs); 239 PXOPT_ADD_MODE("-flipminidvodbrun", "flip minidvodbs", ADDTOOL_MODE_FLIPMINIDVODBRUN, flipminidvodbrunArgs); 240 PXOPT_ADD_MODE("-checkminidvodbrunaddrun", "check minidvodbs to see if addRuns are completed", ADDTOOL_MODE_CHECKMINIDVODBRUNADDRUN, checkminidvodbrunaddrunArgs); 241 PXOPT_ADD_MODE("-addminidvodbprocessed","add a processed minidvodb", ADDTOOL_MODE_ADDMINIDVODBPROCESSED, addminidvodbprocessedArgs); 242 PXOPT_ADD_MODE("-listminidvodbprocessed","list processed minidvodbs", ADDTOOL_MODE_LISTMINIDVODBPROCESSED, listminidvodbprocessedArgs); 243 PXOPT_ADD_MODE("-revertminidvodbprocessed","revert processed minidvobs", ADDTOOL_MODE_REVERTMINIDVODBPROCESSED, revertminidvodbprocessedArgs); 244 PXOPT_ADD_MODE("-updateminidvodbprocessed","change processed minidvodb properties",ADDTOOL_MODE_UPDATEMINIDVODBPROCESSED, updateminidvodbprocessedArgs); 245 246 247 157 248 158 249 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
branches/czw_branch/20100519/ippTools/src/camtool.c
r28164 r28304 503 503 504 504 /* psTrace("czw.test",1,"Received versions: pslib %s psmodules %s psphot %s psastro %s ppstats %s ppImage %s streaks %s\n", */ 505 /* ver_pslib,ver_psmodules,ver_psphot,ver_psastro,ver_ppstats,ver_ppimage,ver_streaks); */505 /* ver_pslib,ver_psmodules,ver_psphot,ver_psastro,ver_ppstats,ver_ppimage,ver_streaks); */ 506 506 psString software_ver = NULL; 507 507 if ((ver_pslib)&&(ver_psmodules)) { … … 637 637 path_base, 638 638 fault, 639 software_ver,640 maskfrac_ref_npix,641 maskfrac_ref_static,642 maskfrac_ref_dynamic,643 maskfrac_ref_magic,644 maskfrac_ref_advisory,645 maskfrac_max_npix,646 maskfrac_max_static,647 maskfrac_max_dynamic,648 maskfrac_max_magic,649 maskfrac_max_advisory,650 quality639 software_ver, 640 maskfrac_ref_npix, 641 maskfrac_ref_static, 642 maskfrac_ref_dynamic, 643 maskfrac_ref_magic, 644 maskfrac_ref_advisory, 645 maskfrac_max_npix, 646 maskfrac_max_static, 647 maskfrac_max_dynamic, 648 maskfrac_max_magic, 649 maskfrac_max_advisory, 650 quality 651 651 ); 652 652 … … 677 677 if (!pxSetRunSoftware(config, "camRun", "cam_id", cam_id, software_ver)) { 678 678 if (!psDBRollback(config->dbh)) { 679 psError(PS_ERR_UNKNOWN, false, "database error");679 psError(PS_ERR_UNKNOWN, false, "database error"); 680 680 } 681 681 psError(PS_ERR_UNKNOWN, false, "failed to set camRun.software_ver for cam_id: %" PRId64, 682 cam_id);682 cam_id); 683 683 psFree(output); 684 684 return(false); … … 687 687 if (maskfrac_ref_npix) { 688 688 if (!pxCamSetRunMaskfrac(config, "camRun", "cam_id",cam_id, 689 (float) maskfrac_ref_npix, maskfrac_ref_static,690 maskfrac_ref_dynamic, maskfrac_ref_magic, maskfrac_ref_advisory,691 (float) maskfrac_max_npix, maskfrac_max_static,692 maskfrac_max_dynamic, maskfrac_max_magic, maskfrac_max_advisory)) {693 if (!psDBRollback(config->dbh)) {694 psError(PS_ERR_UNKNOWN, false, "database error");695 }696 psError(PS_ERR_UNKNOWN, false, "failed to set camRun.maskstats for cam_id: %" PRId64,697 cam_id);698 psFree(output);699 return(false);689 (float) maskfrac_ref_npix, maskfrac_ref_static, 690 maskfrac_ref_dynamic, maskfrac_ref_magic, maskfrac_ref_advisory, 691 (float) maskfrac_max_npix, maskfrac_max_static, 692 maskfrac_max_dynamic, maskfrac_max_magic, maskfrac_max_advisory)) { 693 if (!psDBRollback(config->dbh)) { 694 psError(PS_ERR_UNKNOWN, false, "database error"); 695 } 696 psError(PS_ERR_UNKNOWN, false, "failed to set camRun.maskstats for cam_id: %" PRId64, 697 cam_id); 698 psFree(output); 699 return(false); 700 700 } 701 701 } … … 709 709 return false; 710 710 } 711 711 712 712 psFree(row); 713 713 714 714 // EAM: NULL for end_stage means go as far as possible 715 715 // Also, we can run fake even if tess_id is not defined 716 if (pendingRow->end_stage && psStrcasestr(pendingRow->end_stage, "cam")) { 716 // but stop if quality is non-zero. 717 if ((quality > 0) || (pendingRow->end_stage && psStrcasestr(pendingRow->end_stage, "cam"))) { 717 718 psFree(pendingRow); 718 719 if (!psDBCommit(config->dbh)) { … … 893 894 894 895 { 895 psString query = pxDataGet("camtool_re set_faulted_runs.sql");896 psString query = pxDataGet("camtool_revertprocessedexp.sql"); 896 897 if (!query) { 898 // rollback 899 if (!psDBRollback(config->dbh)) { 900 psError(PS_ERR_UNKNOWN, false, "database error"); 901 } 897 902 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 898 903 psFree(where); … … 919 924 psFree(query); 920 925 } 921 922 {923 psString query = pxDataGet("camtool_revertprocessedexp.sql");924 if (!query) {925 // rollback926 if (!psDBRollback(config->dbh)) {927 psError(PS_ERR_UNKNOWN, false, "database error");928 }929 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");930 psFree(where);931 return false;932 }933 934 // use psDBGenerateWhereConditionalSQL with AND ... because the SQL ends in a WHERE935 if (where && psListLength(where->list)) {936 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);937 psStringAppend(&query, " AND %s", whereClause);938 psFree(whereClause);939 }940 941 if (!p_psDBRunQuery(config->dbh, query)) {942 // rollback943 if (!psDBRollback(config->dbh)) {944 psError(PS_ERR_UNKNOWN, false, "database error");945 }946 psError(PS_ERR_UNKNOWN, false, "database error");947 psFree(query);948 psFree(where);949 return false;950 }951 psFree(query);952 }953 926 psFree(where); 954 927 -
branches/czw_branch/20100519/ippTools/src/difftool.c
r28245 r28304 2290 2290 if (psListLength(where->list)) { 2291 2291 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 2292 psStringAppend(&query, " WHERE%s", whereClause);2292 psStringAppend(&query, " AND %s", whereClause); 2293 2293 psFree(whereClause); 2294 2294 } else if (!all && !where2) { … … 2301 2301 psStringAppend(&query, " %s", where2); 2302 2302 } else { 2303 psStringAppend(&query, " WHERE1 %s", where2);2303 psStringAppend(&query, " AND 1 %s", where2); 2304 2304 } 2305 2305 } -
branches/czw_branch/20100519/ippTools/src/disttool.c
r27542 r28304 148 148 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 149 149 150 if (use_alternate) { 150 if (use_alternate) { 151 151 if (strcmp(stage, "raw")) { 152 152 psError(PXTOOLS_ERR_SYS, true, "alternate inputs only supported for raw stage"); … … 299 299 query = pxDataGet("disttool_definebyquery_SSdiff.sql"); 300 300 if (!query) { 301 psError(PXTOOLS_ERR_SYS, false, "failed to retrieve SQL statement");302 psFree(where);303 return(false);301 psError(PXTOOLS_ERR_SYS, false, "failed to retrieve SQL statement"); 302 psFree(where); 303 return(false); 304 304 } 305 305 306 306 if (label) { 307 psStringAppend(&query, " AND (diffRun.label = '%s') ", label);307 psStringAppend(&query, " AND (diffRun.label = '%s') ", label); 308 308 } 309 309 if (dist_group) { 310 psStringAppend(&query, " AND (diffRun.dist_group = '%s') ", dist_group);310 psStringAppend(&query, " AND (diffRun.dist_group = '%s') ", dist_group); 311 311 } 312 312 313 no_magic = true; 313 no_magic = true; 314 314 } else { 315 315 psError(PS_ERR_UNKNOWN, true, "unknown value for stage: %s", stage); … … 470 470 PXOPT_COPY_STR(config->args, where, "-data_group", "distRun.data_group", "LIKE"); 471 471 PXOPT_COPY_STR(config->args, where, "-dist_group", "distTarget.dist_group", "=="); 472 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 472 PXOPT_COPY_TIME(config->args, where, "-time_stamp_begin", "distRun.time_stamp", ">="); 473 PXOPT_COPY_TIME(config->args, where, "-time_stamp_end", "distRun.time_stamp", "<="); 474 475 PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false); 476 PXOPT_LOOKUP_BOOL(full, config->args, "-full", false); 477 if (clean && full) { 478 psFree(where); 479 psError(PXTOOLS_ERR_CONFIG, true, "-clean and -full are contradictory parameters"); 480 return false; 481 } 473 482 474 483 if (!psListLength(where->list)) { … … 491 500 } 492 501 502 psString extraWhere = NULL; 493 503 psString query = psStringCopy("UPDATE distRun join distTarget using(target_id, stage) SET distRun.time_stamp = UTC_TIMESTAMP()"); 494 504 … … 498 508 if (state) { 499 509 psStringAppend(&query, " , distRun.state = '%s'", state); 510 if (!strcmp(state, "goto_cleaned")) { 511 // don't queue for clean up if run has already already cleaned 512 psStringAppend(&extraWhere, " AND (distRun.state != 'cleaned' AND distRun.state != 'goto_cleaned')"); 513 } 500 514 } 501 515 … … 521 535 psFree(whereClause); 522 536 psFree(where); 537 538 if (extraWhere) { 539 psStringAppend(&query, "%s", extraWhere); 540 } 541 if (clean) { 542 psStringAppend(&query, " AND (distRun.clean)"); 543 } else if (full) { 544 psStringAppend(&query, " AND (!distRun.clean)"); 545 } 523 546 524 547 if (!p_psDBRunQuery(config->dbh, query)) { … … 1680 1703 return false; 1681 1704 } 1682 1705 1683 1706 1684 1707 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); -
branches/czw_branch/20100519/ippTools/src/disttoolConfig.c
r27542 r28304 79 79 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-data_group", 0, "limit updates to data_group", NULL); 80 80 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-dist_group", 0, "limit updates to data_group", NULL); 81 psMetadataAddTime(updaterunArgs, PS_LIST_TAIL, "-time_stamp_begin", 0, "limit updates by time_stamp (>=)", NULL); 82 psMetadataAddTime(updaterunArgs, PS_LIST_TAIL, "-time_stamp_end", 0, "limit updates by time_stamp (<=)", NULL); 83 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL,"-clean", 0, "limit updates to clean distRuns", false); 84 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL,"-full", 0, "limit updates to not clean distRuns", false); 81 85 psMetadataAddS16(updaterunArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0); 86 82 87 // -revertrun 83 88 psMetadata *revertrunArgs = psMetadataAlloc(); -
branches/czw_branch/20100519/ippTools/src/flatcorr.c
r26981 r28304 671 671 row->dvodb, 672 672 NULL, // note is not propagated 673 0)) { 673 0, 674 0, //The minidvodb stuff is off 675 NULL, 676 NULL)) { 674 677 if (!psDBRollback(config->dbh)) { 675 678 psError(PS_ERR_UNKNOWN, false, "database error"); -
branches/czw_branch/20100519/ippTools/src/magictool.c
r28041 r28304 1367 1367 (strncmp(state, "new", 4) == 0) 1368 1368 || (strncmp(state, "full", 5) == 0) 1369 || (strncmp(state, "drop", 5) == 0) 1369 1370 || (strncmp(state, "reg", 4) == 0) 1370 1371 ) -
branches/czw_branch/20100519/ippTools/src/pstamptool.c
r27969 r28304 30 30 #include "pxdata.h" 31 31 #include "pstamptool.h" 32 #include "pstamp.h" 32 33 33 34 static bool adddatastoreMode(pxConfig *config); … … 53 54 static bool updatedependentMode(pxConfig *config); 54 55 static bool revertdependentMode(pxConfig *config); 56 static bool getwebrequestnumMode(pxConfig *config); 55 57 56 58 # define MODECASE(caseName, func) \ … … 95 97 MODECASE(PSTAMPTOOL_MODE_UPDATEDEPENDENT, updatedependentMode); 96 98 MODECASE(PSTAMPTOOL_MODE_REVERTDEPENDENT, revertdependentMode); 99 MODECASE(PSTAMPTOOL_MODE_GETWEBREQUESTNUM, getwebrequestnumMode); 97 100 default: 98 101 psAbort("invalid option (this should not happen)"); … … 939 942 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 940 943 941 // By default only revert faults < 10which are our "ipp exit codes"944 // By default only revert faults < PSTAMP_FIRST_ERROR_CODE which are our "ipp exit codes" 942 945 // codes larger than that are the pstamp request interface. 943 946 // Don't fault those unless -fault waa provided 944 psString faultClause = "";947 psString faultClause = psStringCopy(""); 945 948 if (!fault) { 946 faultClause = " \nAND (pstampJob.fault < 10)";949 psStringAppend(&faultClause, " \nAND (pstampJob.fault < %d)", PSTAMP_FIRST_ERROR_CODE); 947 950 } 948 951 … … 961 964 962 965 if (!p_psDBRunQueryF(config->dbh, query, faultClause)) { 963 psError(PS_ERR_UNKNOWN, false, "database error"); 964 return false; 965 } 966 psFree(faultClause); 967 psFree(query); 968 psError(PS_ERR_UNKNOWN, false, "database error"); 969 return false; 970 } 971 972 psFree(faultClause); 966 973 967 974 return true; … … 1133 1140 psFree(output); 1134 1141 return false; 1142 } 1143 psS32 fault = psMetadataLookupS64(NULL, dep, "fault"); 1144 if (fault > 0) { 1145 fprintf(stderr, "existing dependent has fault %d\n", fault); 1146 exit (fault); 1135 1147 } 1136 1148 printf("%" PRId64 "\n", dep_id); … … 1315 1327 return false; 1316 1328 } 1329 1330 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 1331 1317 1332 psString query = pxDataGet("pstamptool_revertdependent.sql"); 1318 1333 if (!query) { … … 1326 1341 psFree(where); 1327 1342 1328 if (!p_psDBRunQuery(config->dbh, query)) { 1329 psError(PS_ERR_UNKNOWN, false, "database error"); 1330 psFree(query); 1331 return false; 1332 } 1333 1334 return true; 1335 } 1343 if (!fault) { 1344 // unless asked to clear a specific fault value, restrict reverts to fault codes 1345 // that are less than the minimum fault in the API 1346 psStringAppend(&query, " AND (pstampDependent.fault < %d)", PSTAMP_FIRST_ERROR_CODE); 1347 } 1348 1349 if (!p_psDBRunQuery(config->dbh, query)) { 1350 psError(PS_ERR_UNKNOWN, false, "database error"); 1351 psFree(query); 1352 return false; 1353 } 1354 1355 return true; 1356 } 1357 1358 static bool getwebrequestnumMode(pxConfig *config) 1359 { 1360 PS_ASSERT_PTR_NON_NULL(config, false); 1361 1362 if (!pstampWebRequestInsert(config->dbh, 0 )) { 1363 psError(PS_ERR_UNKNOWN, false, "failed to insert pstampWebRequest"); 1364 return false; 1365 } 1366 1367 psS64 req_id = psDBLastInsertID(config->dbh); 1368 1369 printf("%" PRId64 "\n", req_id); 1370 1371 return true; 1372 } -
branches/czw_branch/20100519/ippTools/src/pstamptool.h
r27874 r28304 48 48 PSTAMPTOOL_MODE_UPDATEDEPENDENT, 49 49 PSTAMPTOOL_MODE_REVERTDEPENDENT, 50 PSTAMPTOOL_MODE_GETWEBREQUESTNUM, 50 51 } pstamptoolMode; 51 52 -
branches/czw_branch/20100519/ippTools/src/pstamptoolConfig.c
r27874 r28304 235 235 psMetadataAddBool(projectArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 236 236 237 // -getwebrequestnum 238 psMetadata *getwebrequestnumArgs = psMetadataAlloc(); 239 237 240 psMetadata *argSets = psMetadataAlloc(); 238 241 psMetadata *modes = psMetadataAlloc(); … … 264 267 PXOPT_ADD_MODE("-modproject", "", PSTAMPTOOL_MODE_MODPROJECT, modprojectArgs); 265 268 PXOPT_ADD_MODE("-project", "", PSTAMPTOOL_MODE_PROJECT, projectArgs); 269 PXOPT_ADD_MODE("-getwebrequestnum","", PSTAMPTOOL_MODE_GETWEBREQUESTNUM, getwebrequestnumArgs); 266 270 267 271 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
branches/czw_branch/20100519/ippTools/src/pxadd.c
r26981 r28304 130 130 char *dvodb, 131 131 char *note, 132 bool image_only) 132 bool image_only, 133 bool minidvodb, 134 char *minidvodb_group, 135 char *minidvodb_name) 133 136 { 134 137 PS_ASSERT_PTR_NON_NULL(config, false); … … 158 161 note ? note : "NULL", 159 162 image_only, 163 minidvodb, 164 minidvodb_group, 165 minidvodb_name, 160 166 (long long) cam_id 161 167 )) { 162 psError(PS_ERR_UNKNOWN, false, "database error");168 psError(PS_ERR_UNKNOWN, false, "database error %s", query); 163 169 return false; 164 170 } -
branches/czw_branch/20100519/ippTools/src/pxadd.h
r25835 r28304 38 38 char *dvodb, 39 39 char *note, 40 bool image_only); 40 bool image_only, 41 bool minidvodb, 42 char *minidvodb_group, 43 char *minidvodb_name); 41 44 42 45 #endif // PXADD_H -
branches/czw_branch/20100519/ippTools/src/pxcam.c
r28043 r28304 152 152 char *tess_id, 153 153 char *end_stage, 154 psS64 magicked,154 psS64 magicked, 155 155 char *note) 156 156 { … … 172 172 // different on 32/64 173 173 if (!p_psDBRunQueryF(config->dbh, query, 174 "new", // state 175 workdir ? workdir : "NULL", 176 "dirty", //workdir_state 177 label ? label : "NULL", 178 data_group ? data_group : "NULL", 179 dist_group ? dist_group : "NULL", 180 recipe ? recipe : "NULL", 181 expgroup ? expgroup : "NULL", 182 dvodb ? dvodb : "NULL", 183 tess_id ? tess_id : "NULL", 184 end_stage ? end_stage : "NULL", 185 (long long) magicked, 186 "NULL", // This shouldn't be propagated 187 "NULL", 188 "NULL", 189 "NULL", 190 "NULL", 191 "NULL", 174 "new", // state 175 workdir ? workdir : "NULL", 176 "dirty", //workdir_state 177 label ? label : "NULL", 178 data_group ? data_group : "NULL", 179 dist_group ? dist_group : "NULL", 180 recipe ? recipe : "NULL", 181 expgroup ? expgroup : "NULL", 182 dvodb ? dvodb : "NULL", 183 tess_id ? tess_id : "NULL", 184 end_stage ? end_stage : "NULL", 185 (long long) magicked, 186 // Here follows the software version and mask statistics which shouldn't be propagated 187 "NULL", 188 "NULL", 189 "NULL", 190 "NULL", 191 "NULL", 192 "NULL", 193 "NULL", 194 "NULL", 195 "NULL", 196 "NULL", 197 "NULL", 192 198 note ? note : "NULL", 193 199 (long long)chip_id -
branches/czw_branch/20100519/ippTools/src/pxchip.c
r28043 r28304 40 40 psMetadataAddStr(md, PS_LIST_TAIL, "-telescope", 0, "search for telescope", NULL); 41 41 psMetadataAddTime(md, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 42 psMetadataAddTime(md, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (< )", NULL);42 psMetadataAddTime(md, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<=)", NULL); 43 43 psMetadataAddStr(md, PS_LIST_TAIL, "-exp_tag", 0, "search by exp_tag", NULL); 44 44 psMetadataAddStr(md, PS_LIST_TAIL, "-exp_type", 0, "search by exp_type", NULL); -
branches/czw_branch/20100519/ippTools/src/pxtools.c
r28164 r28304 48 48 } 49 49 50 psString pxMergeCodeVersions(psString version1, psString version2) { 50 psString pxMergeCodeVersions(psString version1, psString version2) 51 { 52 if (!version1 && !version2) { 53 return NULL; 54 } 55 56 if (!version1) { 57 return psStringCopy(version2); 58 } 59 if (!version2) { 60 return psStringCopy(version1); 61 } 62 63 bool mod1 = false, mod2 = false; // Modified versions? 64 if (strchr(version1, 'M')) { 65 psStringSubstitute(&version1, "M", ""); 66 mod1 = true; 67 } 68 if (strchr(version2, 'M')) { 69 psStringSubstitute(&version2, "M", ""); 70 mod2 = true; 71 } 72 73 int num1 = strtol(version1, NULL, 10); 74 int num2 = strtol(version2, NULL, 10); 75 int numO = PS_MAX(num1, num2); 76 51 77 psString out = NULL; 52 53 bool mod1 = false; 54 bool mod2 = false; 55 56 psS32 num1; 57 psS32 num2; 58 psS32 numO; 59 60 if (!version1) { 61 psStringAppend(&out, "%s", version2); 62 return(out); 63 } 64 if (!version2) { 65 psStringAppend(&out, "%s", version1); 66 return(out); 67 } 68 69 if (strchr(version1,'M')) { 70 psStringSubstitute(&version1,"M",""); 71 mod1 = true; 72 } 73 if (strchr(version2,'M')) { 74 psStringSubstitute(&version2,"M",""); 75 mod2 = true; 76 } 77 78 num1 = strtol(version1,NULL,10); 79 num2 = strtol(version2,NULL,10); 80 81 if (num1 >= num2) { 82 numO = num1; 83 } 84 else { 85 numO = num2; 86 } 87 88 psStringAppend(&out,"%" PRId32,numO); 78 psStringAppend(&out, "%" PRId32, numO); 89 79 if (mod1 || mod2) { 90 psStringAppend(&out,"M");91 } 92 return (out);80 psStringAppend(&out, "M"); 81 } 82 return out; 93 83 } 94 84 95 85 bool pxCoalesceRunStatus(pxConfig *config, const psString dbQFile, psS64 stage_id, psString *software_ver, 96 psS64 *maskfrac_npix, psF32 *maskfrac_static, psF32 *maskfrac_dynamic, 97 psF32 *maskfrac_magic, psF32 *maskfrac_advisory) { 86 psS64 *maskfrac_npix, psF32 *maskfrac_static, psF32 *maskfrac_dynamic, 87 psF32 *maskfrac_magic, psF32 *maskfrac_advisory) 88 { 98 89 psString query = pxDataGet(dbQFile); 99 /* psString text_id = NULL; */ 100 /* psStringAppend(&text_id," %" PRId64,stage_id); */ 101 /* psStringSubstitute(&query,text_id,"@STAGE_ID@"); */ 102 /* psFree(text_id); */ 90 if (!query) { 91 psError(psErrorCodeLast(), false, "Unable to read query"); 92 return false; 93 } 103 94 if (!p_psDBRunQueryF(config->dbh, query, stage_id)) { 104 psError(PS_ERR_UNKNOWN, false, "database error");105 psFree(query);106 return(false);95 psError(psErrorCodeLast(), false, "database error"); 96 psFree(query); 97 return false; 107 98 } 108 99 psFree(query); 100 109 101 psArray *output = p_psDBFetchResult(config->dbh); 110 102 if (!output) { 111 psError(PS_ERR_UNKNOWN, false, "database error"); 112 return(false); 113 } 114 103 psError(psErrorCodeLast(), false, "database error"); 104 return false; 105 } 106 107 *maskfrac_npix = 0; 108 *maskfrac_static = 0.0; 109 *maskfrac_dynamic = 0.0; 110 *maskfrac_magic = 0.0; 111 *maskfrac_advisory = 0.0; 112 115 113 for (long i = 0; i < psArrayLength(output); i++) { 116 psMetadata *row = output->data[i]; 117 118 psS32 this_npix = psMetadataLookupS32(NULL, row, "maskfrac_npix"); 119 psF32 this_static = psMetadataLookupF32(NULL, row, "maskfrac_static"); 120 psF32 this_dynamic = psMetadataLookupF32(NULL, row, "maskfrac_dynamic"); 121 psF32 this_magic = psMetadataLookupF32(NULL, row, "maskfrac_magic"); 122 psF32 this_advisory = psMetadataLookupF32(NULL, row, "maskfrac_advisory"); 123 psString this_version = psMetadataLookupStr(NULL, row, "software_ver"); 124 125 *software_ver = pxMergeCodeVersions(*software_ver,this_version); 126 /* printf("%ld : %d %f %f %f %f <-> %ld %f %f %f %f\n",i,this_npix,this_static,this_dynamic,this_magic,this_advisory, */ 127 /* *maskfrac_npix,*maskfrac_static,*maskfrac_dynamic,*maskfrac_magic,*maskfrac_advisory); */ 128 if (this_npix > 0) { 129 *maskfrac_static = ((*maskfrac_static * *maskfrac_npix) + (this_npix * this_static)) / (this_npix + *maskfrac_npix); 130 *maskfrac_dynamic = ((*maskfrac_dynamic * *maskfrac_npix) + (this_npix * this_dynamic)) / (this_npix + *maskfrac_npix); 131 *maskfrac_magic = ((*maskfrac_magic * *maskfrac_npix) + (this_npix * this_magic)) / (this_npix + *maskfrac_npix); 132 *maskfrac_advisory = ((*maskfrac_advisory * *maskfrac_npix) + (this_npix * this_advisory)) / (this_npix + *maskfrac_npix); 133 *maskfrac_npix += this_npix; 134 } 114 psMetadata *row = output->data[i]; 115 116 psS32 this_npix = psMetadataLookupS32(NULL, row, "maskfrac_npix"); 117 psF32 this_static = psMetadataLookupF32(NULL, row, "maskfrac_static"); 118 psF32 this_dynamic = psMetadataLookupF32(NULL, row, "maskfrac_dynamic"); 119 psF32 this_magic = psMetadataLookupF32(NULL, row, "maskfrac_magic"); 120 psF32 this_advisory = psMetadataLookupF32(NULL, row, "maskfrac_advisory"); 121 122 psTrace("pxtools", 3, "Mask stats: %d %f %f %f %f\n", 123 this_npix, this_static, this_dynamic, this_magic, this_advisory); 124 125 if (this_npix == 0 || this_npix == PS_MAX_S32) { 126 continue; 127 } 128 if (!isfinite(this_static) || !isfinite(this_dynamic) || 129 !isfinite(this_magic) || !isfinite(this_advisory)) { 130 continue; 131 } 132 133 psString this_version = psMetadataLookupStr(NULL, row, "software_ver"); 134 *software_ver = pxMergeCodeVersions(*software_ver,this_version); 135 136 *maskfrac_npix += this_npix; 137 *maskfrac_static += this_npix * this_static; 138 *maskfrac_dynamic += this_npix * this_dynamic; 139 *maskfrac_magic += this_npix * this_magic; 140 *maskfrac_advisory += this_npix * this_advisory; 135 141 } 136 142 psFree(output); 137 return(true); 138 } 139 140 bool pxSetRunSoftware(pxConfig *config, const psString tableName, const psString stage_id_name, const psS64 stage_id, 141 psString software_ver) { 143 144 if (*maskfrac_npix > 0) { 145 *maskfrac_static /= *maskfrac_npix; 146 *maskfrac_dynamic /= *maskfrac_npix; 147 *maskfrac_magic /= *maskfrac_npix; 148 *maskfrac_advisory /= *maskfrac_npix; 149 } 150 151 return true; 152 } 153 154 bool pxSetRunSoftware(pxConfig *config, const psString tableName, const psString stage_id_name, 155 const psS64 stage_id, psString software_ver) 156 { 142 157 char *query = "UPDATE %s SET software_ver = '%s' WHERE %s = %" PRId64; 143 /* printf(query,tableName,software_ver,stage_id_name,stage_id); */ 144 if (!p_psDBRunQueryF(config->dbh,query,tableName,software_ver,stage_id_name,stage_id)) { 145 psError(PS_ERR_UNKNOWN, false, 146 "failed to set software version for %s %" PRId64,stage_id_name,stage_id); 147 return(false); 148 } 149 150 return(true); 151 } 152 153 bool pxSetRunMaskfrac(pxConfig *config, const psString tableName, const psString stage_id_name, const psS64 stage_id, 154 psS64 maskfrac_npix, psF32 maskfrac_static, psF32 maskfrac_dynamic, 155 psF32 maskfrac_magic, psF32 maskfrac_advisory) { 156 char *query = "UPDATE %s SET maskfrac_npix = %f, maskfrac_static = %f, maskfrac_dynamic = %f, maskfrac_magic = %f, maskfrac_advisory = %f WHERE %s = %" PRId64; 157 if (!p_psDBRunQueryF(config->dbh,query,tableName,(float) maskfrac_npix,maskfrac_static, 158 maskfrac_dynamic, maskfrac_magic,maskfrac_advisory,stage_id_name,stage_id)) { 159 psError(PS_ERR_UNKNOWN, false, 160 "failed to set maskfrac stats for %s %" PRId64,stage_id_name,stage_id); 161 return(false); 162 } 163 164 165 166 return(true); 167 } 168 169 bool pxCamSetRunMaskfrac(pxConfig *config, const psString tableName, const psString stage_id_name, const psS64 stage_id, 170 psS64 maskfrac_ref_npix, psF32 maskfrac_ref_static, psF32 maskfrac_ref_dynamic, 171 psF32 maskfrac_ref_magic, psF32 maskfrac_ref_advisory, 172 psS64 maskfrac_max_npix, psF32 maskfrac_max_static, psF32 maskfrac_max_dynamic, 173 psF32 maskfrac_max_magic, psF32 maskfrac_max_advisory) { 174 char *query = "UPDATE %s SET maskfrac_ref_npix = %f, maskfrac_ref_static = %f, maskfrac_ref_dynamic = %f, maskfrac_ref_magic = %f, maskfrac_ref_advisory = %f, maskfrac_max_npix = %f, maskfrac_max_static = %f, maskfrac_max_dynamic = %f, maskfrac_max_magic = %f, maskfrac_max_advisory = %f WHERE %s = %" PRId64; 175 if (!p_psDBRunQueryF(config->dbh,query,tableName,(float) maskfrac_ref_npix,maskfrac_ref_static, 176 maskfrac_ref_dynamic, maskfrac_ref_magic,maskfrac_ref_advisory, 177 (float) maskfrac_max_npix,maskfrac_max_static, 178 maskfrac_max_dynamic, maskfrac_max_magic,maskfrac_max_advisory, 179 stage_id_name,stage_id)) { 180 psError(PS_ERR_UNKNOWN, false, 181 "failed to set maskfrac stats for %s %" PRId64,stage_id_name,stage_id); 182 return(false); 158 if (!p_psDBRunQueryF(config->dbh, query, tableName, software_ver, stage_id_name, stage_id)) { 159 psError(psErrorCodeLast(), false, 160 "failed to set software version for %s %" PRId64, stage_id_name, stage_id); 161 return false; 162 } 163 164 return true; 165 } 166 167 bool pxSetRunMaskfrac(pxConfig *config, const psString tableName, const psString stage_id_name, 168 const psS64 stage_id, psS64 maskfrac_npix, psF32 maskfrac_static, 169 psF32 maskfrac_dynamic, psF32 maskfrac_magic, psF32 maskfrac_advisory) 170 { 171 char *query = "UPDATE %s SET maskfrac_npix = %f, maskfrac_static = %f, maskfrac_dynamic = %f, " 172 "maskfrac_magic = %f, maskfrac_advisory = %f WHERE %s = %" PRId64; 173 if (!p_psDBRunQueryF(config->dbh, query, tableName, (float)maskfrac_npix, maskfrac_static, 174 maskfrac_dynamic, maskfrac_magic, maskfrac_advisory, stage_id_name, stage_id)) { 175 psError(psErrorCodeLast(), false, 176 "failed to set maskfrac stats for %s %" PRId64,stage_id_name,stage_id); 177 return false; 178 } 179 180 181 182 return true; 183 } 184 185 bool pxCamSetRunMaskfrac(pxConfig *config, const psString tableName, 186 const psString stage_id_name, const psS64 stage_id, 187 psS64 maskfrac_ref_npix, psF32 maskfrac_ref_static, psF32 maskfrac_ref_dynamic, 188 psF32 maskfrac_ref_magic, psF32 maskfrac_ref_advisory, 189 psS64 maskfrac_max_npix, psF32 maskfrac_max_static, psF32 maskfrac_max_dynamic, 190 psF32 maskfrac_max_magic, psF32 maskfrac_max_advisory) { 191 char *query = "UPDATE %s SET maskfrac_ref_npix = %f, maskfrac_ref_static = %f, maskfrac_ref_dynamic = %f, " 192 "maskfrac_ref_magic = %f, maskfrac_ref_advisory = %f, maskfrac_max_npix = %f, maskfrac_max_static = %f, " 193 "maskfrac_max_dynamic = %f, maskfrac_max_magic = %f, maskfrac_max_advisory = %f WHERE %s = %" PRId64; 194 if (!p_psDBRunQueryF(config->dbh, query, tableName, (float)maskfrac_ref_npix, maskfrac_ref_static, 195 maskfrac_ref_dynamic, maskfrac_ref_magic, maskfrac_ref_advisory, 196 (float)maskfrac_max_npix, maskfrac_max_static, 197 maskfrac_max_dynamic, maskfrac_max_magic, maskfrac_max_advisory, 198 stage_id_name, stage_id)) { 199 psError(psErrorCodeLast(), false, 200 "failed to set maskfrac stats for %s %" PRId64,stage_id_name,stage_id); 201 return false; 183 202 } 184 185 186 187 return(true); 203 204 return true; 188 205 } 189 206 … … 222 239 psMetadataItem *item = psMetadataLookup(config->args, name); 223 240 if (!item) { 224 psError( PS_ERR_UNKNOWN, false, "failed to lookup value for %s", name);241 psError(psErrorCodeLast(), false, "failed to lookup value for %s", name); 225 242 return false; 226 243 } … … 239 256 item->comment = psStringCopy (op); 240 257 if (!psMetadataAddItem(where, item, PS_LIST_TAIL, PS_META_DUPLICATE_OK)) { 241 psError( PS_ERR_UNKNOWN, false, "failed to add item %s", field);258 psError(psErrorCodeLast(), false, "failed to add item %s", field); 242 259 psFree(where); 243 260 return false; … … 272 289 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 273 290 291 if ((state)&&(!strcmp(state, "update"))) { 292 fprintf(stderr, "'-updaterun -set_state update' is not supported."); 293 if (!strcmp(runTable, "chipRun")) { 294 fprintf(stderr, " Use -setimfiletoupdate.\n"); 295 } else { 296 fprintf(stderr, " Use -setskyfiletoupdate.\n"); 297 } 298 exit(1); 299 } 300 274 301 psString dist_group = NULL; 275 302 if (has_dist_group) { … … 293 320 char *comma = ","; 294 321 295 # define addColumn(_tab, _val) \296 do { \297 if (_val) {\298 psStringAppend(pQuery, "%s %s.%s = '%s'", separator, _tab, #_val, _val); \299 separator = comma;\300 }\322 # define addColumn(_tab, _val) \ 323 do { \ 324 if (_val) { \ 325 psStringAppend(pQuery, "%s %s.%s = '%s'", separator, _tab, #_val, _val); \ 326 separator = comma; \ 327 } \ 301 328 } while (0) 302 329 … … 331 358 332 359 if (!p_psDBRunQueryF(config->dbh, *pQuery, joinHook)) { 333 psError( PS_ERR_UNKNOWN, false, "database error");360 psError(psErrorCodeLast(), false, "database error"); 334 361 return false; 335 362 } … … 343 370 344 371 if (!p_psDBRunQuery(config->dbh, query)) { 345 psError( PS_ERR_UNKNOWN, false, "database error");372 psError(psErrorCodeLast(), false, "database error"); 346 373 return false; 347 374 } … … 349 376 psArray *output = p_psDBFetchResult(config->dbh); 350 377 if (!output) { 351 psError( PS_ERR_UNKNOWN, false, "database error");378 psError(psErrorCodeLast(), false, "database error"); 352 379 return false; 353 380 } 354 381 if (!psArrayLength(output)) { 355 382 psFree(output); 356 psError(P S_ERR_UNKNOWN, true, "no rows in dbversion");383 psError(PXTOOLS_ERR_PROG, true, "no rows in dbversion"); 357 384 return false; 358 385 } 359 386 if (psArrayLength(output) > 1) { 360 psError(P S_ERR_UNKNOWN, true, "unexpected number of rows found in dbversion: %ld",387 psError(PXTOOLS_ERR_PROG, true, "unexpected number of rows found in dbversion: %ld", 361 388 psArrayLength(output)); 362 389 return false; … … 373 400 psArray *array = NULL; 374 401 if (!pxLookupVersion(config, &array)) { 375 psError( PS_ERR_UNKNOWN, false, "pxLookupVersion failed");402 psError(psErrorCodeLast(), false, "pxLookupVersion failed"); 376 403 return NULL; 377 404 } 378 405 psMetadata *md = array->data[0]; 379 406 if (!md) { 380 psError(P S_ERR_UNKNOWN, true, "output of pxLookupVersion is null");407 psError(PXTOOLS_ERR_PROG, true, "output of pxLookupVersion is null"); 381 408 return NULL; 382 409 } … … 394 421 psArray *array = NULL; 395 422 if (!pxLookupVersion(config, &array) || !array) { 396 psError( PS_ERR_UNKNOWN, false, "pxLookupVersion failed");423 psError(psErrorCodeLast(), false, "pxLookupVersion failed"); 397 424 return false; 398 425 } 399 426 if (!ippdbPrintMetadatas(file, array, "dbversion", true)) { 400 psError( PS_ERR_UNKNOWN, false, "failed to print array");427 psError(psErrorCodeLast(), false, "failed to print array"); 401 428 psFree(array); 402 429 return false; … … 414 441 psMetadataItem *multi_item = psMetadataLookup(input, "dbversion"); 415 442 if (!multi_item || (multi_item->type != PS_DATA_METADATA_MULTI)) { 416 psError(P S_ERR_UNKNOWN, true, "dbversion multi not found in input");443 psError(PXTOOLS_ERR_PROG, true, "dbversion multi not found in input"); 417 444 return false; 418 445 } … … 420 447 psMetadataItem *dbversion = psListGet(multi_item->data.list, 0); 421 448 if (!dbversion) { 422 psError(P S_ERR_UNKNOWN, true, "dbversion not found in input");449 psError(PXTOOLS_ERR_PROG, true, "dbversion not found in input"); 423 450 return false; 424 451 } … … 429 456 psString schema_version = pxGetDBVersion(config); 430 457 if (!schema_version) { 431 psError( PS_ERR_UNKNOWN, false, "pxGetDBVersion failed");458 psError(psErrorCodeLast(), false, "pxGetDBVersion failed"); 432 459 return false; 433 460 } … … 435 462 psString import_version = psMetadataLookupStr(NULL, md, "schema_version"); 436 463 if (import_version && strcmp(import_version, schema_version)) { 437 psError(P S_ERR_UNKNOWN, true, "input file schema_version: %s does not match data base: %s",438 import_version, schema_version);464 psError(PXTOOLS_ERR_PROG, true, "input file schema_version: %s does not match data base: %s", 465 import_version, schema_version); 439 466 return false; 440 467 } else if (!import_version) { 441 psError(P S_ERR_UNKNOWN, true, "input file schema_version is NULL");468 psError(PXTOOLS_ERR_PROG, true, "input file schema_version is NULL"); 442 469 return false; 443 470 } else { … … 445 472 } 446 473 } else { 447 psError(P S_ERR_UNKNOWN, true, "Unexpected config dump format");448 return false; 449 } 450 451 return true; 452 } 474 psError(PXTOOLS_ERR_PROG, true, "Unexpected config dump format"); 475 return false; 476 } 477 478 return true; 479 } -
branches/czw_branch/20100519/ippTools/src/stacktool.c
r28245 r28304 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); 42 43 static bool tosummaryMode(pxConfig *config); … … 77 78 MODECASE(STACKTOOL_MODE_ADDSUMSKYFILE, addsumskyfileMode); 78 79 MODECASE(STACKTOOL_MODE_SUMSKYFILE, sumskyfileMode); 80 MODECASE(STACKTOOL_MODE_SASSSKYFILE, sassskyfileMode); 79 81 MODECASE(STACKTOOL_MODE_REVERTSUMSKYFILE, revertsumskyfileMode); 80 82 MODECASE(STACKTOOL_MODE_TOSUMMARY, tosummaryMode); … … 116 118 psString idString = NULL; 117 119 psStringAppend(&idString, "%" PRId64, stack_id); 118 psStringSubstitute(&select,idString, "@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@"); 119 126 psFree(idString); 120 127 … … 143 150 return(NULL); 144 151 } 145 psMetadata *outrow = NULL;152 psMetadata *outrow = psMetadataAlloc(); 146 153 for (long i = 0; i < output->n; i++) { 147 154 psMetadata *row = output->data[i]; 148 if (!psMetadataCopy(row,outrow)) { 149 psError(PS_ERR_UNKNOWN, false, "Failed to copy row to return"); 150 return(NULL); 151 } 152 } 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 153 181 psFree(output); 154 182 stackAssociationRow *sassRow = stackAssociationObjectFromMetadata(outrow); … … 1063 1091 psMetadata *where = psMetadataAlloc(); 1064 1092 PXOPT_COPY_S64(config->args, where, "-stack_id", "stackSumSkyfile.stack_id", "=="); 1065 PXOPT_COPY_S64(config->args, where, "-sass_id", "stackAssociationMap.sass_id", "==");1066 1093 PXOPT_COPY_STR(config->args, where, "-tess_id", "stackRun.tess_id", "=="); 1067 1094 PXOPT_COPY_STR(config->args, where, "-skycell_id", "stackRun.skycell_id", "=="); … … 1082 1109 1083 1110 psString query = pxDataGet("stacktool_sumskyfile.sql"); 1111 if (!query) { 1112 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 1113 return false; 1114 } 1115 1116 if (psListLength(where->list)) { 1117 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1118 psStringAppend(&query, " WHERE %s", whereClause); 1119 psFree(whereClause); 1120 } else if (!all) { 1121 psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required"); 1122 return false; 1123 } 1124 1125 psFree(where); 1126 1127 // treat limit == 0 as "no limit" 1128 if (limit) { 1129 psString limitString = psDBGenerateLimitSQL(limit); 1130 psStringAppend(&query, " %s", limitString); 1131 psFree(limitString); 1132 } 1133 1134 if (!p_psDBRunQuery(config->dbh, query)) { 1135 psError(PS_ERR_UNKNOWN, false, "database error"); 1136 psFree(query); 1137 return false; 1138 } 1139 psFree(query); 1140 1141 psArray *output = p_psDBFetchResult(config->dbh); 1142 if (!output) { 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; 1154 } 1155 if (!psArrayLength(output)) { 1156 psTrace("stacktool", PS_LOG_INFO, "no rows found"); 1157 psFree(output); 1158 return true; 1159 } 1160 1161 if (psArrayLength(output)) { 1162 if (!ippdbPrintMetadatas(stdout, output, "stackSumSkyfile", !simple)) { 1163 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1164 psFree(output); 1165 return false; 1166 } 1167 } 1168 1169 psFree(output); 1170 1171 return true; 1172 } 1173 1174 static bool sassskyfileMode(pxConfig *config) 1175 { 1176 PS_ASSERT_PTR_NON_NULL(config, false); 1177 1178 psMetadata *where = psMetadataAlloc(); 1179 PXOPT_COPY_S64(config->args, where, "-sass_id", "stackAssociation.sass_id", "=="); 1180 PXOPT_COPY_STR(config->args, where, "-tess_id", "stackAssociation.tess_id", "=="); 1181 PXOPT_COPY_STR(config->args, where, "-projection_cell", "stackAssociation.projection_cell", "=="); 1182 PXOPT_COPY_STR(config->args, where, "-filter", "stackAssociation.filter", "LIKE"); 1183 PXOPT_COPY_STR(config->args, where, "-data_group", "stackAssociation.data_group", "LIKE"); 1184 1185 // The following three selectors are incompatible with the sql so omit them 1186 // PXOPT_COPY_S64(config->args, where, "-warp_id", "warpRun.warp_id", "=="); 1187 // PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "=="); 1188 // PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); 1189 1190 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 1191 1192 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1193 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1194 1195 psString query = pxDataGet("stacktool_sassskyfile.sql"); 1084 1196 if (!query) { 1085 1197 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); … … 1318 1430 PS_ASSERT_PTR_NON_NULL(config, NULL); 1319 1431 1320 PXOPT_LOOKUP_S64(s tack_id, config->args, "-stack_id", true, false);1432 PXOPT_LOOKUP_S64(sass_id, config->args, "-sass_id", true, false); 1321 1433 PXOPT_LOOKUP_STR(projection_cell, config->args, "-projection_cell", true, false); 1322 1434 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", true, false); … … 1327 1439 return(false); 1328 1440 } 1329 if (!p_psDBRunQueryF(config->dbh, query, s tack_id, projection_cell, path_base)) {1441 if (!p_psDBRunQueryF(config->dbh, query, sass_id, projection_cell, path_base)) { 1330 1442 psError(PS_ERR_UNKNOWN, false, "database error"); 1331 1443 psFree(query); -
branches/czw_branch/20100519/ippTools/src/stacktool.h
r28164 r28304 33 33 STACKTOOL_MODE_ADDSUMSKYFILE, 34 34 STACKTOOL_MODE_SUMSKYFILE, 35 STACKTOOL_MODE_SASSSKYFILE, 35 36 STACKTOOL_MODE_REVERTSUMSKYFILE, 36 37 STACKTOOL_MODE_TOSUMMARY, -
branches/czw_branch/20100519/ippTools/src/stacktoolConfig.c
r28245 r28304 197 197 psMetadataAddBool(sumskyfileArgs, PS_LIST_TAIL, "-all", 0, "enable search without arguments", false); 198 198 199 // -sassskyfile 200 psMetadata *sassskyfileArgs = psMetadataAlloc(); 201 psMetadataAddS64(sassskyfileArgs, PS_LIST_TAIL, "-sass_id", 0, "search by stack association ID", 0); 202 psMetadataAddStr(sassskyfileArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tess ID", 0); 203 psMetadataAddStr(sassskyfileArgs, PS_LIST_TAIL, "-projection_cell", 0, "search by projection cell", 0); 204 205 psMetadataAddStr(sassskyfileArgs, PS_LIST_TAIL, "-data_group", 0, "search by stackAssociation.data_group (LIKE comparison)", NULL); 206 psMetadataAddStr(sassskyfileArgs, PS_LIST_TAIL, "-filter", 0, "search by filter (LIKE comparison)", NULL); 207 psMetadataAddU64(sassskyfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 208 psMetadataAddBool(sassskyfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 209 psMetadataAddBool(sassskyfileArgs, PS_LIST_TAIL, "-all", 0, "enable search without arguments", false); 210 199 211 // -revertsumskyfile 200 212 psMetadata *revertsumskyfileArgs= psMetadataAlloc(); … … 221 233 // -addsummary 222 234 psMetadata *addsummaryArgs = psMetadataAlloc(); 223 psMetadataAddS64(addsummaryArgs, PS_LIST_TAIL, "-s tack_id", 0, "set stackID", 0);235 psMetadataAddS64(addsummaryArgs, PS_LIST_TAIL, "-sass_id", 0, "set stack Association ID", 0); 224 236 psMetadataAddStr(addsummaryArgs, PS_LIST_TAIL, "-projection_cell", 0, "set projection cell", NULL); 225 237 psMetadataAddStr(addsummaryArgs, PS_LIST_TAIL, "-path_base", 0, "set summary path base", NULL); … … 273 285 PXOPT_ADD_MODE("-addsumskyfile", "", STACKTOOL_MODE_ADDSUMSKYFILE, addsumskyfileArgs); 274 286 PXOPT_ADD_MODE("-sumskyfile", "list results of stackRun", STACKTOOL_MODE_SUMSKYFILE, sumskyfileArgs); 287 PXOPT_ADD_MODE("-sassskyfile", "list results of stackAssociation", STACKTOOL_MODE_SASSSKYFILE, sassskyfileArgs); 275 288 PXOPT_ADD_MODE("-revertsumskyfile","", STACKTOOL_MODE_REVERTSUMSKYFILE, revertsumskyfileArgs); 276 289 PXOPT_ADD_MODE("-pendingcleanuprun", "show runs that need to be cleaned up", STACKTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunArgs); -
branches/czw_branch/20100519/ippTools/src/staticskytool.c
r28164 r28304 42 42 static bool importrunMode(pxConfig *config); 43 43 44 static bool setstaticskyRunState(pxConfig *config, psS64 sky_id, const char *state); 45 44 46 # define MODECASE(caseName, func) \ 45 47 case caseName: \ … … 129 131 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 130 132 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 133 PXOPT_LOOKUP_BOOL(check_inputs, config->args, "-check_inputs", false); 131 134 132 135 psString select = pxDataGet("staticskytool_definebyquery_select.sql"); … … 255 258 psWarning("staticskytool ERROR: no rows found for known tess_id, skycell_id?"); 256 259 continue; 260 } 261 262 if (check_inputs) { 263 // negative simple so the default is true 264 if (!ippdbPrintMetadatas(stdout, inputs, "staticskyInput", !simple)) { 265 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 266 psFree(output); 267 psFree(where); 268 return false; 269 } 270 psFree(inputs); 271 continue; 257 272 } 258 273 … … 550 565 } 551 566 567 if (!fault) { 568 if (!setstaticskyRunState(config, sky_id, "full")) { 569 if (!psDBRollback(config->dbh)) { 570 psError(PS_ERR_UNKNOWN, false, "database error"); 571 } 572 psError(PS_ERR_UNKNOWN, false, "failed to change staticskyRun state"); 573 return false; 574 } 575 } 576 552 577 // point of no return 553 578 if (!psDBCommit(config->dbh)) { … … 643 668 PS_ASSERT_PTR_NON_NULL(config, false); 644 669 645 # if (0)646 670 psMetadata *where = psMetadataAlloc(); 647 PXOPT_COPY_S64(config->args, where, "-s tack_id", "stackSumSkyfile.stack_id", "==");648 pxAddLabelSearchArgs(config, where, "-label", "sta ckRun.label", "==");649 PXOPT_COPY_S16(config->args, where, "-fault", "sta ckSumSkyfile.fault", "==");671 PXOPT_COPY_S64(config->args, where, "-sky_id", "staticskyResult.sky_id", "=="); 672 pxAddLabelSearchArgs(config, where, "-label", "staticskyRun.label", "=="); 673 PXOPT_COPY_S16(config->args, where, "-fault", "staticskyResult.fault", "=="); 650 674 651 675 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { … … 656 680 657 681 // Delete product 658 psString delete = pxDataGet("staticskytool_revert sumskyfile_delete.sql");682 psString delete = pxDataGet("staticskytool_revert.sql"); 659 683 if (!delete) { 660 684 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); … … 680 704 681 705 psFree(where); 682 # endif683 684 706 return true; 685 707 } 686 708 687 # if (0)688 static bool updateresultState(pxConfig *config)689 {690 // check that state is a valid string value691 if (!pxIsValidState(state)) {692 psError(PS_ERR_UNKNOWN, false, "invalid stackRun state: %s", state);693 return false;694 }695 696 char *query = "UPDATE stackRun SET state = '%s' WHERE stack_id = %"PRId64;697 if (!p_psDBRunQueryF(config->dbh, query, state, stack_id)) {698 psError(PS_ERR_UNKNOWN, false,699 "failed to change state for stack_id %"PRId64, stack_id);700 return false;701 }702 return true;703 }704 # endif705 706 709 static bool updateresult(pxConfig *config) 707 710 { 708 711 PS_ASSERT_PTR_NON_NULL(config, false); 709 712 710 # if (0)711 713 PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false); 712 714 713 715 psMetadata *where = psMetadataAlloc(); 714 PXOPT_COPY_S64(config->args, where, "-s tack_id", "stack_id", "==");715 716 if (!pxSetFaultCode(config->dbh, "sta ckSumSkyfile", where, fault)) {716 PXOPT_COPY_S64(config->args, where, "-sky_id", "sky_id", "=="); 717 718 if (!pxSetFaultCode(config->dbh, "staticskyResult", where, fault)) { 717 719 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 718 720 psFree (where); … … 720 722 } 721 723 psFree (where); 722 723 # endif724 724 return true; 725 725 } … … 898 898 # endif 899 899 return true; 900 } 901 902 static bool setstaticskyRunState(pxConfig *config, psS64 sky_id, const char *state) 903 { 904 PS_ASSERT_PTR_NON_NULL(state, false); 905 906 // check that state is a valid string value 907 if (!pxIsValidState(state)) { 908 psError(PS_ERR_UNKNOWN, false, "invalid staticskyRun state: %s", state); 909 return false; 910 } 911 912 char *query = "UPDATE staticskyRun SET state = '%s' WHERE sky_id = %"PRId64; 913 if (!p_psDBRunQueryF(config->dbh, query, state, sky_id)) { 914 psError(PS_ERR_UNKNOWN, false, "failed to change state for sky_id %"PRId64, sky_id); 915 return false; 916 } 917 return true; 918 900 919 } 901 920 -
branches/czw_branch/20100519/ippTools/src/staticskytoolConfig.c
r28164 r28304 61 61 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-set_registered", 0, "time detrend run was registered", now); 62 62 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend", 0, "do not actually modify the database", false); 63 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-check_inputs", 0, "list inputs, do not modify database", false); 63 64 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 64 65 -
branches/czw_branch/20100519/ippTools/src/warptool.c
r28245 r28304 430 430 } 431 431 432 psString query = psStringCopy("UPDATE warpRun JOIN warpSkyfile USING(warp_id) JOIN fakeRun USING(fake_id) JOIN camRun USING(cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id)");432 psString query = psStringCopy("UPDATE warpRun"); 433 433 434 434 // pxUpdateRun gets parameters from config->args and updates
Note:
See TracChangeset
for help on using the changeset viewer.
