Changeset 18328
- Timestamp:
- Jun 26, 2008, 10:59:02 AM (18 years ago)
- Location:
- trunk/ippTools
- Files:
-
- 2 added
- 4 edited
-
share/Makefile.am (modified) (1 diff)
-
share/regtool_create_dup_table.sql (added)
-
share/regtool_populate_dup_table.sql (added)
-
src/regtool.c (modified) (3 diffs)
-
src/regtool.h (modified) (1 diff)
-
src/regtoolConfig.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/share/Makefile.am
r18314 r18328 74 74 pztool_revert_downloadimfile_faults.sql \ 75 75 pztool_revert_fileset_faults.sql \ 76 regtool_create_dup_table.sql \ 76 77 regtool_pendingexp.sql \ 77 78 regtool_pendingimfile.sql \ 79 regtool_populate_dup_table.sql \ 78 80 regtool_processedexp.sql \ 79 81 regtool_processedimfile.sql \ -
trunk/ippTools/src/regtool.c
r17872 r18328 43 43 static bool revertprocessedexpMode(pxConfig *config); 44 44 static bool updateprocessedexpMode(pxConfig *config); 45 static bool cleardupexpMode(pxConfig *config); 45 46 46 47 # define MODECASE(caseName, func) \ … … 74 75 MODECASE(REGTOOL_MODE_REVERTPROCESSEDEXP, revertprocessedexpMode); 75 76 MODECASE(REGTOOL_MODE_UPDATEPROCESSEDEXP, updateprocessedexpMode); 77 MODECASE(REGTOOL_MODE_CLEARDUPEXP, cleardupexpMode); 76 78 default: 77 79 psAbort("invalid option (this should not happen)"); … … 941 943 return true; 942 944 } 945 946 947 static bool cleardupexpMode(pxConfig *config) 948 { 949 PS_ASSERT_PTR_NON_NULL(config, false); 950 951 if (!psDBTransaction(config->dbh)) { 952 psError(PS_ERR_UNKNOWN, false, "database error"); 953 return false; 954 } 955 956 // create temp table of exp_ids to be removed 957 { 958 psString query = pxDataGet("regtool_create_dup_table.sql"); 959 if (!query) { 960 // rollback 961 if (!psDBRollback(config->dbh)) { 962 psError(PS_ERR_UNKNOWN, false, "database error"); 963 } 964 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 965 return false; 966 } 967 968 if (!p_psDBRunQuery(config->dbh, query)) { 969 // rollback 970 if (!psDBRollback(config->dbh)) { 971 psError(PS_ERR_UNKNOWN, false, "database error"); 972 } 973 psError(PS_ERR_UNKNOWN, false, "database error"); 974 psFree(query); 975 return false; 976 } 977 psFree(query); 978 } 979 980 // populate that table 981 // XXX note that this query currently doesn't not correctly handle the case 982 // where there is more than one duplicate 983 { 984 psString query = pxDataGet("regtool_populate_dup_table.sql"); 985 if (!query) { 986 // rollback 987 if (!psDBRollback(config->dbh)) { 988 psError(PS_ERR_UNKNOWN, false, "database error"); 989 } 990 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 991 return false; 992 } 993 994 if (!p_psDBRunQuery(config->dbh, query)) { 995 // rollback 996 if (!psDBRollback(config->dbh)) { 997 psError(PS_ERR_UNKNOWN, false, "database error"); 998 } 999 psError(PS_ERR_UNKNOWN, false, "database error"); 1000 psFree(query); 1001 return false; 1002 } 1003 psFree(query); 1004 } 1005 1006 if (!p_psDBRunQuery(config->dbh, "DELETE FROM rawImfile USING rawImfile, duplicate WHERE duplicate.exp_id = rawImfile.exp_id")) { 1007 // rollback 1008 if (!psDBRollback(config->dbh)) { 1009 psError(PS_ERR_UNKNOWN, false, "database error"); 1010 } 1011 psError(PS_ERR_UNKNOWN, false, "database error"); 1012 return false; 1013 } 1014 1015 if (!p_psDBRunQuery(config->dbh, "DELETE FROM rawExp USING rawExp, duplicate WHERE duplicate.exp_id = rawExp.exp_id")) { 1016 // rollback 1017 if (!psDBRollback(config->dbh)) { 1018 psError(PS_ERR_UNKNOWN, false, "database error"); 1019 } 1020 psError(PS_ERR_UNKNOWN, false, "database error"); 1021 return false; 1022 } 1023 1024 if (!p_psDBRunQuery(config->dbh, "DELETE FROM newImfile USING newImfile, duplicate WHERE duplicate.exp_id = newImfile.exp_id")) { 1025 // rollback 1026 if (!psDBRollback(config->dbh)) { 1027 psError(PS_ERR_UNKNOWN, false, "database error"); 1028 } 1029 psError(PS_ERR_UNKNOWN, false, "database error"); 1030 return false; 1031 } 1032 1033 if (!p_psDBRunQuery(config->dbh, "DELETE FROM newExp USING newExp, duplicate WHERE duplicate.exp_id = newExp.exp_id")) { 1034 // rollback 1035 if (!psDBRollback(config->dbh)) { 1036 psError(PS_ERR_UNKNOWN, false, "database error"); 1037 } 1038 psError(PS_ERR_UNKNOWN, false, "database error"); 1039 return false; 1040 } 1041 1042 if (!psDBCommit(config->dbh)) { 1043 psError(PS_ERR_UNKNOWN, false, "database error"); 1044 return false; 1045 } 1046 1047 return true; 1048 } -
trunk/ippTools/src/regtool.h
r14098 r18328 35 35 REGTOOL_MODE_REVERTPROCESSEDEXP, 36 36 REGTOOL_MODE_UPDATEPROCESSEDEXP, 37 REGTOOL_MODE_CLEARDUPEXP, 37 38 } regtoolMode; 38 39 -
trunk/ippTools/src/regtoolConfig.c
r18172 r18328 268 268 psMetadataAddS16(updatedprocessedexpArgs, PS_LIST_TAIL, "-code", 0, "set fault code (required)", INT16_MAX); 269 269 270 // -cleardupexp 271 psMetadata *cleardupexpArgs = psMetadataAlloc(); 272 270 273 psMetadata *argSets = psMetadataAlloc(); 271 274 psMetadata *modes = psMetadataAlloc(); 272 275 273 276 PXOPT_ADD_MODE("-pendingimfile", "", REGTOOL_MODE_PENDINGIMFILE, pendingimfileArgs); 274 PXOPT_ADD_MODE("-addprocessedimfile", "", REGTOOL_MODE_ADDPROCESSEDIMFILE, addprocessedimfileArgs);277 PXOPT_ADD_MODE("-addprocessedimfile", "", REGTOOL_MODE_ADDPROCESSEDIMFILE, addprocessedimfileArgs); 275 278 PXOPT_ADD_MODE("-processedimfile", "", REGTOOL_MODE_PROCESSEDIMFILE, processedimfileArgs); 276 279 PXOPT_ADD_MODE("-revertprocessedimfile", "", REGTOOL_MODE_REVERTPROCESSEDIMFILE, revertprocessedimfileArgs); 277 PXOPT_ADD_MODE("-updateprocessedimfile", "", REGTOOL_MODE_UPDATEPROCESSEDIMFILE, updateprocessedimfileArgs);278 PXOPT_ADD_MODE("-pendingexp", "", REGTOOL_MODE_PENDINGEXP,pendingexpArgs);279 PXOPT_ADD_MODE("-addprocessedexp", "", REGTOOL_MODE_ADDPROCESSEDEXP, addprocessedexpArgs);280 PXOPT_ADD_MODE("-processedexp", "", REGTOOL_MODE_PROCESSEDEXP, processedexpArgs);280 PXOPT_ADD_MODE("-updateprocessedimfile", "", REGTOOL_MODE_UPDATEPROCESSEDIMFILE, updateprocessedimfileArgs); 281 PXOPT_ADD_MODE("-pendingexp", "", REGTOOL_MODE_PENDINGEXP,pendingexpArgs); 282 PXOPT_ADD_MODE("-addprocessedexp", "", REGTOOL_MODE_ADDPROCESSEDEXP, addprocessedexpArgs); 283 PXOPT_ADD_MODE("-processedexp", "", REGTOOL_MODE_PROCESSEDEXP, processedexpArgs); 281 284 PXOPT_ADD_MODE("-revertprocessedexp", "", REGTOOL_MODE_REVERTPROCESSEDEXP, revertprocessedexpArgs); 282 PXOPT_ADD_MODE("-updateprocessedexp", "", REGTOOL_MODE_UPDATEPROCESSEDEXP, updatedprocessedexpArgs); 285 PXOPT_ADD_MODE("-updateprocessedexp", "", REGTOOL_MODE_UPDATEPROCESSEDEXP, updatedprocessedexpArgs); 286 PXOPT_ADD_MODE("-cleardupexp", "", REGTOOL_MODE_CLEARDUPEXP, cleardupexpArgs); 283 287 284 288 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
Note:
See TracChangeset
for help on using the changeset viewer.
