Changeset 18643 for branches/eam_branch_20080719/ippTools/src/stacktool.c
- Timestamp:
- Jul 21, 2008, 12:12:59 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branch_20080719/ippTools/src/stacktool.c
r18579 r18643 40 40 static bool sumskyfileMode(pxConfig *config); 41 41 static bool revertsumskyfileMode(pxConfig *config); 42 static bool pendingcleanuprunMode(pxConfig *config); 43 static bool pendingcleanupskyfileMode(pxConfig *config); 44 static bool donecleanupMode(pxConfig *config); 42 45 43 46 static bool setstackRunState(pxConfig *config, psS64 stack_id, const char *state); … … 61 64 62 65 switch (config->mode) { 63 MODECASE(STACKTOOL_MODE_DEFINEBYQUERY, definebyqueryMode); 64 MODECASE(STACKTOOL_MODE_DEFINERUN, definerunMode); 65 MODECASE(STACKTOOL_MODE_UPDATERUN, updaterunMode); 66 MODECASE(STACKTOOL_MODE_ADDINPUTSKYFILE, addinputskyfileMode); 67 MODECASE(STACKTOOL_MODE_INPUTSKYFILE, inputskyfileMode); 68 MODECASE(STACKTOOL_MODE_TOSUM, tosumMode); 69 MODECASE(STACKTOOL_MODE_ADDSUMSKYFILE, addsumskyfileMode); 70 MODECASE(STACKTOOL_MODE_SUMSKYFILE, sumskyfileMode); 71 MODECASE(STACKTOOL_MODE_REVERTSUMSKYFILE, revertsumskyfileMode); 66 MODECASE(STACKTOOL_MODE_DEFINEBYQUERY, definebyqueryMode); 67 MODECASE(STACKTOOL_MODE_DEFINERUN, definerunMode); 68 MODECASE(STACKTOOL_MODE_UPDATERUN, updaterunMode); 69 MODECASE(STACKTOOL_MODE_ADDINPUTSKYFILE, addinputskyfileMode); 70 MODECASE(STACKTOOL_MODE_INPUTSKYFILE, inputskyfileMode); 71 MODECASE(STACKTOOL_MODE_TOSUM, tosumMode); 72 MODECASE(STACKTOOL_MODE_ADDSUMSKYFILE, addsumskyfileMode); 73 MODECASE(STACKTOOL_MODE_SUMSKYFILE, sumskyfileMode); 74 MODECASE(STACKTOOL_MODE_REVERTSUMSKYFILE, revertsumskyfileMode); 75 MODECASE(STACKTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunMode); 76 MODECASE(STACKTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileMode); 77 MODECASE(STACKTOOL_MODE_DONECLEANUP, donecleanupMode); 72 78 default: 73 79 psAbort("invalid option (this should not happen)"); … … 802 808 return true; 803 809 } 810 811 static bool pendingcleanuprunMode(pxConfig *config) 812 { 813 PS_ASSERT_PTR_NON_NULL(config, NULL); 814 815 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 816 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 817 818 psMetadata *where = psMetadataAlloc(); 819 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 820 821 psString query = pxDataGet("stacktool_pendingcleanuprun.sql"); 822 if (!query) { 823 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 824 return false; 825 } 826 827 if (where && psListLength(where->list)) { 828 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 829 psStringAppend(&query, " AND %s", whereClause); 830 psFree(whereClause); 831 } 832 psFree(where); 833 834 // treat limit == 0 as "no limit" 835 if (limit) { 836 psString limitString = psDBGenerateLimitSQL(limit); 837 psStringAppend(&query, " %s", limitString); 838 psFree(limitString); 839 } 840 841 if (!p_psDBRunQuery(config->dbh, query)) { 842 psError(PS_ERR_UNKNOWN, false, "database error"); 843 psFree(query); 844 return false; 845 } 846 psFree(query); 847 848 psArray *output = p_psDBFetchResult(config->dbh); 849 if (!output) { 850 psError(PS_ERR_UNKNOWN, false, "database error"); 851 return false; 852 } 853 if (!psArrayLength(output)) { 854 psTrace("stacktool", PS_LOG_INFO, "no rows found"); 855 psFree(output); 856 return true; 857 } 858 859 // negative simple so the default is true 860 if (!ippdbPrintMetadatas(stdout, output, "stackPendingCleanupRun", !simple)) { 861 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 862 psFree(output); 863 return false; 864 } 865 866 psFree(output); 867 868 return true; 869 } 870 871 static bool pendingcleanupskyfileMode(pxConfig *config) 872 { 873 PS_ASSERT_PTR_NON_NULL(config, NULL); 874 875 PXOPT_LOOKUP_S64(stack_id, config->args, "-stack_id", false, false); 876 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 877 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 878 879 psMetadata *where = psMetadataAlloc(); 880 if (stack_id) { 881 PXOPT_COPY_S64(config->args, where, "-stack_id", "stack_id", "=="); 882 } 883 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 884 885 psString query = pxDataGet("stacktool_pendingcleanupskyfile.sql"); 886 if (!query) { 887 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 888 return false; 889 } 890 891 if (where && psListLength(where->list)) { 892 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 893 psStringAppend(&query, " AND %s", whereClause); 894 psFree(whereClause); 895 } 896 psFree(where); 897 898 // treat limit == 0 as "no limit" 899 if (limit) { 900 psString limitString = psDBGenerateLimitSQL(limit); 901 psStringAppend(&query, " %s", limitString); 902 psFree(limitString); 903 } 904 905 if (!p_psDBRunQuery(config->dbh, query)) { 906 psError(PS_ERR_UNKNOWN, false, "database error"); 907 psFree(query); 908 return false; 909 } 910 psFree(query); 911 912 psArray *output = p_psDBFetchResult(config->dbh); 913 if (!output) { 914 psError(PS_ERR_UNKNOWN, false, "database error"); 915 return false; 916 } 917 if (!psArrayLength(output)) { 918 psTrace("stacktool", PS_LOG_INFO, "no rows found"); 919 psFree(output); 920 return true; 921 } 922 923 // negative simple so the default is true 924 if (!ippdbPrintMetadatas(stdout, output, "stackPendingCleanupSkyfile", !simple)) { 925 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 926 psFree(output); 927 return false; 928 } 929 930 psFree(output); 931 932 return true; 933 } 934 935 936 static bool donecleanupMode(pxConfig *config) 937 { 938 PS_ASSERT_PTR_NON_NULL(config, NULL); 939 940 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 941 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 942 943 psMetadata *where = psMetadataAlloc(); 944 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 945 946 psString query = pxDataGet("stacktool_donecleanup.sql"); 947 if (!query) { 948 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 949 return false; 950 } 951 952 if (where && psListLength(where->list)) { 953 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 954 psStringAppend(&query, " AND %s", whereClause); 955 psFree(whereClause); 956 } 957 psFree(where); 958 959 // treat limit == 0 as "no limit" 960 if (limit) { 961 psString limitString = psDBGenerateLimitSQL(limit); 962 psStringAppend(&query, " %s", limitString); 963 psFree(limitString); 964 } 965 966 if (!p_psDBRunQuery(config->dbh, query)) { 967 psError(PS_ERR_UNKNOWN, false, "database error"); 968 psFree(query); 969 return false; 970 } 971 psFree(query); 972 973 psArray *output = p_psDBFetchResult(config->dbh); 974 if (!output) { 975 psError(PS_ERR_UNKNOWN, false, "database error"); 976 return false; 977 } 978 if (!psArrayLength(output)) { 979 psTrace("stacktool", PS_LOG_INFO, "no rows found"); 980 psFree(output); 981 return true; 982 } 983 984 // negative simple so the default is true 985 if (!ippdbPrintMetadatas(stdout, output, "stackDoneCleanup", !simple)) { 986 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 987 psFree(output); 988 return false; 989 } 990 991 psFree(output); 992 993 return true; 994 }
Note:
See TracChangeset
for help on using the changeset viewer.
