Changeset 27743
- Timestamp:
- Apr 23, 2010, 11:24:56 AM (16 years ago)
- Location:
- trunk/ippTools
- Files:
-
- 1 added
- 4 edited
-
share/difftool_listrun.sql (added)
-
share/difftool_skyfile.sql (modified) (1 diff)
-
src/difftool.c (modified) (10 diffs)
-
src/difftool.h (modified) (1 diff)
-
src/difftoolConfig.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/share/difftool_skyfile.sql
r26986 r27743 7 7 diffRun.label, 8 8 diffRun.bothways, 9 diffRun.diff_mode, 9 10 warp1, 10 11 stack1, -
trunk/ippTools/src/difftool.c
r27723 r27743 57 57 static bool toscrubbedskyfileMode(pxConfig *config); 58 58 static bool tofullskyfileMode(pxConfig *config); 59 static bool listrunMode(pxConfig *config); 59 60 60 61 … … 101 102 MODECASE(DIFFTOOL_MODE_TOSCRUBBEDSKYFILE, toscrubbedskyfileMode); 102 103 MODECASE(DIFFTOOL_MODE_TOFULLSKYFILE, tofullskyfileMode); 104 MODECASE(DIFFTOOL_MODE_LISTRUN, listrunMode); 103 105 104 106 default: … … 194 196 PXOPT_COPY_S64(config->args, where, "-diff_id", "diff_id", "=="); 195 197 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 198 PXOPT_COPY_STR(config->args, where, "-data_group","data_group", "=="); 196 199 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 197 200 if (!psListLength(where->list)) { … … 702 705 pxAddLabelSearchArgs (config, where, "-data_group", "diffRun.data_group", "LIKE"); 703 706 707 PXOPT_LOOKUP_BOOL(pstamp_order, config->args, "-pstamp_order", false); 704 708 PXOPT_LOOKUP_BOOL(template, config->args, "-template", false); 705 709 if (!template) { … … 745 749 psFree(where); 746 750 751 if (pstamp_order) { 752 if (template) { 753 psStringAppend(&query, " ORDER BY rawTemplate.exp_id, diff_id DESC"); 754 } else { 755 psStringAppend(&query, " ORDER BY rawInput.exp_id, diff_id DESC"); 756 } 757 } 758 747 759 // treat limit == 0 as "no limit" 748 760 if (limit) { … … 971 983 return false; 972 984 } 973 psS16 diff_mode = 0;985 psS16 diff_mode = IPP_DIFF_MODE_UNDEFINED; 974 986 if ((input_warp_id != PS_MAX_S64) && (template_warp_id != PS_MAX_S64)) { 975 diff_mode = 1;987 diff_mode = IPP_DIFF_MODE_WARP_WARP; 976 988 } 977 989 else if ((input_warp_id != PS_MAX_S64) && (template_stack_id != PS_MAX_S64)) { 978 diff_mode = 2;990 diff_mode = IPP_DIFF_MODE_WARP_STACK; 979 991 } 980 992 else if ((input_stack_id != PS_MAX_S64) && (template_warp_id != PS_MAX_S64)) { 981 diff_mode = 3;993 diff_mode = IPP_DIFF_MODE_STACK_WARP; 982 994 } 983 995 else if ((input_stack_id != PS_MAX_S64) && (template_stack_id != PS_MAX_S64)) { 984 diff_mode = 4;996 diff_mode = IPP_DIFF_MODE_STACK_STACK; 985 997 } 986 998 … … 1431 1443 true, // exposure 1432 1444 0, // magicked 1433 2, // diff_mode for warp-stack difference1445 IPP_DIFF_MODE_WARP_STACK, 1434 1446 note 1435 1447 ); … … 1783 1795 true, // exposure 1784 1796 false, // magicked 1785 1, // diff_mode for warp-warp diff1797 IPP_DIFF_MODE_WARP_WARP, 1786 1798 note); // Run to insert 1787 1799 if (!diffRunInsertObject(config->dbh, run)) { … … 2065 2077 false, // exposure 2066 2078 0, // magicked 2067 4,// diff_mode2079 IPP_DIFF_MODE_STACK_STACK, // diff_mode 2068 2080 note 2069 2081 ); … … 2626 2638 return true; 2627 2639 } 2640 2641 static bool listrunMode(pxConfig *config) 2642 { 2643 PS_ASSERT_PTR_NON_NULL(config, false); 2644 2645 psMetadata *where = psMetadataAlloc(); 2646 PXOPT_COPY_S64(config->args, where, "-diff_id", "diffRun.diff_id", "=="); 2647 PXOPT_COPY_STR(config->args, where, "-tess_id", "diffRun.tess_id", "=="); 2648 PXOPT_COPY_S64(config->args, where, "-magicked", "diffRun.magicked", "=="); 2649 pxAddLabelSearchArgs (config, where, "-label", "diffRun.label", "LIKE"); 2650 pxAddLabelSearchArgs (config, where, "-data_group", "diffRun.data_group", "LIKE"); 2651 pxAddLabelSearchArgs (config, where, "-dist_group", "diffRun.dist_group", "LIKE"); 2652 2653 PXOPT_LOOKUP_BOOL(template, config->args, "-template", false); 2654 if (!template) { 2655 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawInput.exp_id", "=="); 2656 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawInput.exp_name", "=="); 2657 PXOPT_COPY_STR(config->args, where, "-warp_id", "warpInput.warp_id", "=="); 2658 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawInput.dateobs", ">="); 2659 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawInput.dateobs", "<="); 2660 PXOPT_COPY_STR(config->args, where, "-filter", "rawInput.filter", "LIKE"); 2661 } else { 2662 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawTemplate.exp_id", "=="); 2663 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawTemplate.exp_name", "=="); 2664 PXOPT_COPY_STR(config->args, where, "-warp_id", "warpTemplate.warp_id", "=="); 2665 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawTemplate.dateobs", ">="); 2666 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawTemplate.dateobs", "<="); 2667 PXOPT_COPY_STR(config->args, where, "-filter", "rawTemplate.filter", "LIKE"); 2668 } 2669 2670 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 2671 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 2672 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 2673 PXOPT_LOOKUP_BOOL(pstamp_order, config->args, "-pstamp_order", false); 2674 2675 2676 psString where2 = NULL; 2677 pxmagicAddWhere(config, &where2, "diffRun"); 2678 pxspaceAddWhere(config, &where2, template ? "rawTemplate" : "rawInput"); 2679 psString query = pxDataGet("difftool_listrun.sql"); 2680 if (!query) { 2681 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 2682 return false; 2683 } 2684 2685 if (psListLength(where->list)) { 2686 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 2687 psStringAppend(&query, " WHERE %s", whereClause); 2688 psFree(whereClause); 2689 } else if (where2) { 2690 psStringAppend(&query, " WHERE diffRun.diff_id is not null %s", where2); 2691 } else if (!all) { 2692 psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required"); 2693 return false; 2694 } 2695 psFree(where); 2696 2697 if (pstamp_order) { 2698 if (template) { 2699 psStringAppend(&query, " ORDER BY rawTemplate.exp_id, diff_id DESC"); 2700 } else { 2701 psStringAppend(&query, " ORDER BY rawInput.exp_id, diff_id DESC"); 2702 } 2703 } 2704 2705 // treat limit == 0 as "no limit" 2706 if (limit) { 2707 psString limitString = psDBGenerateLimitSQL(limit); 2708 psStringAppend(&query, " %s", limitString); 2709 psFree(limitString); 2710 } 2711 2712 if (!p_psDBRunQuery(config->dbh, query)) { 2713 psError(PS_ERR_UNKNOWN, false, "database error"); 2714 psFree(query); 2715 return false; 2716 } 2717 psFree(query); 2718 2719 psArray *output = p_psDBFetchResult(config->dbh); 2720 if (!output) { 2721 psErrorCode err = psErrorCodeLast(); 2722 switch (err) { 2723 case PS_ERR_DB_CLIENT: 2724 psError(PXTOOLS_ERR_SYS, false, "database error"); 2725 case PS_ERR_DB_SERVER: 2726 psError(PXTOOLS_ERR_PROG, false, "database error"); 2727 default: 2728 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 2729 } 2730 2731 return false; 2732 } 2733 if (!psArrayLength(output)) { 2734 psTrace("difftool", PS_LOG_INFO, "no rows found"); 2735 psFree(output); 2736 return true; 2737 } 2738 2739 if (psArrayLength(output)) { 2740 // negative simple so the default is true 2741 if (!ippdbPrintMetadatas(stdout, output, "diffRun", !simple)) { 2742 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 2743 psFree(output); 2744 return false; 2745 } 2746 } 2747 2748 psFree(output); 2749 2750 return true; 2751 } -
trunk/ippTools/src/difftool.h
r26927 r27743 47 47 DIFFTOOL_MODE_TOPURGEDSKYFILE, 48 48 DIFFTOOL_MODE_TOSCRUBBEDSKYFILE, 49 DIFFTOOL_MODE_TOFULLSKYFILE 50 49 DIFFTOOL_MODE_TOFULLSKYFILE, 50 DIFFTOOL_MODE_LISTRUN 51 51 } difftoolMode; 52 52 -
trunk/ippTools/src/difftoolConfig.c
r27444 r27743 65 65 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "set state", NULL); 66 66 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "define by label instead of diff ID", 0); 67 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-data_group", 0, "define by data_group instead of diff ID", 0); 67 68 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_label", 0, "define new value for label", 0); 68 69 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "define new state", NULL); … … 147 148 psMetadataAddStr(diffskyfileArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by diffRun label (LIKE comparison)", NULL); 148 149 psMetadataAddStr(diffskyfileArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by diffRun data_group (LIKE comparison)", NULL); 150 psMetadataAddStr(diffskyfileArgs, PS_LIST_TAIL, "-dist_group", PS_META_DUPLICATE_OK, "search by diffRun dist_group (LIKE comparison)", NULL); 149 151 psMetadataAddS16(diffskyfileArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 150 152 pxmagicAddArguments(diffskyfileArgs); 151 153 pxspaceAddArguments(diffskyfileArgs); 152 154 155 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-pstamp_order", 0, "order results for postage stamp server", false); 153 156 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-all", 0, "search without arguments", false); 154 157 psMetadataAddU64(diffskyfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 155 158 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 159 160 // -listrun 161 psMetadata *listrunArgs = psMetadataAlloc(); 162 psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-diff_id", 0, "search by diff ID", 0); 163 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tessellation ID", NULL); 164 psMetadataAddStr(listrunArgs , PS_LIST_TAIL, "-warp_id", 0, "search by warp_id", NULL); 165 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-template", 0, "apply exposure args to template of bothways diff", false); 166 psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 167 psMetadataAddStr(listrunArgs , PS_LIST_TAIL, "-exp_name", 0, "search by exposure name", NULL); 168 psMetadataAddTime(listrunArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 169 psMetadataAddTime(listrunArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<=)", NULL); 170 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); 171 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by diffRun label (LIKE comparison)", NULL); 172 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by diffRun data_group (LIKE comparison)", NULL); 173 psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-dist_group", PS_META_DUPLICATE_OK, "search by diffRun dist_group (LIKE comparison)", NULL); 174 pxmagicAddArguments(listrunArgs); 175 pxspaceAddArguments(listrunArgs); 176 177 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-pstamp_order", 0, "order results for postage stamp server", false); 178 179 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-all", 0, "search without arguments", false); 180 psMetadataAddU64(listrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 181 psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 182 156 183 157 184 // -revertdiffskyfile … … 348 375 PXOPT_ADD_MODE("-advance", "", DIFFTOOL_MODE_ADVANCE, advanceArgs); 349 376 PXOPT_ADD_MODE("-diffskyfile", "", DIFFTOOL_MODE_DIFFSKYFILE, diffskyfileArgs); 377 PXOPT_ADD_MODE("-listrun", "", DIFFTOOL_MODE_LISTRUN, listrunArgs); 350 378 PXOPT_ADD_MODE("-revertdiffskyfile","", DIFFTOOL_MODE_REVERTDIFFSKYFILE, revertdiffskyfileArgs); 351 379 PXOPT_ADD_MODE("-definepoprun", "", DIFFTOOL_MODE_DEFINEPOPRUN, definepoprunArgs);
Note:
See TracChangeset
for help on using the changeset viewer.
