IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 18328


Ignore:
Timestamp:
Jun 26, 2008, 10:59:02 AM (18 years ago)
Author:
jhoblitt
Message:

add regtool -cleardupexp

Location:
trunk/ippTools
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/share/Makefile.am

    r18314 r18328  
    7474        pztool_revert_downloadimfile_faults.sql \
    7575        pztool_revert_fileset_faults.sql \
     76        regtool_create_dup_table.sql \
    7677        regtool_pendingexp.sql \
    7778        regtool_pendingimfile.sql \
     79        regtool_populate_dup_table.sql \
    7880        regtool_processedexp.sql \
    7981        regtool_processedimfile.sql \
  • trunk/ippTools/src/regtool.c

    r17872 r18328  
    4343static bool revertprocessedexpMode(pxConfig *config);
    4444static bool updateprocessedexpMode(pxConfig *config);
     45static bool cleardupexpMode(pxConfig *config);
    4546
    4647# define MODECASE(caseName, func) \
     
    7475        MODECASE(REGTOOL_MODE_REVERTPROCESSEDEXP,    revertprocessedexpMode);
    7576        MODECASE(REGTOOL_MODE_UPDATEPROCESSEDEXP,    updateprocessedexpMode);
     77        MODECASE(REGTOOL_MODE_CLEARDUPEXP,           cleardupexpMode);
    7678        default:
    7779            psAbort("invalid option (this should not happen)");
     
    941943    return true;
    942944}
     945
     946
     947static 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  
    3535    REGTOOL_MODE_REVERTPROCESSEDEXP,
    3636    REGTOOL_MODE_UPDATEPROCESSEDEXP,
     37    REGTOOL_MODE_CLEARDUPEXP,
    3738} regtoolMode;
    3839
  • trunk/ippTools/src/regtoolConfig.c

    r18172 r18328  
    268268    psMetadataAddS16(updatedprocessedexpArgs, PS_LIST_TAIL, "-code",    0,            "set fault code (required)", INT16_MAX);
    269269
     270    // -cleardupexp
     271    psMetadata *cleardupexpArgs = psMetadataAlloc();
     272
    270273    psMetadata *argSets = psMetadataAlloc();
    271274    psMetadata *modes = psMetadataAlloc();
    272275
    273276    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);
    275278    PXOPT_ADD_MODE("-processedimfile",         "", REGTOOL_MODE_PROCESSEDIMFILE, processedimfileArgs);
    276279    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);
    281284    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);
    283287
    284288    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
Note: See TracChangeset for help on using the changeset viewer.