Changeset 18328 for trunk/ippTools/src/regtool.c
- Timestamp:
- Jun 26, 2008, 10:59:02 AM (18 years ago)
- File:
-
- 1 edited
-
trunk/ippTools/src/regtool.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
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 }
Note:
See TracChangeset
for help on using the changeset viewer.
