IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 3, 2009, 2:52:09 PM (17 years ago)
Author:
eugene
Message:

add warptool -advancerun

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/warptool.c

    r23921 r24043  
    4141static bool towarpedMode(pxConfig *config);
    4242static bool addwarpedMode(pxConfig *config);
     43static bool advancerunMode(pxConfig *config);
    4344static bool warpedMode(pxConfig *config);
    4445static bool revertwarpedMode(pxConfig *config);
     
    8889        MODECASE(WARPTOOL_MODE_TOWARPED,           towarpedMode);
    8990        MODECASE(WARPTOOL_MODE_ADDWARPED,          addwarpedMode);
     91        MODECASE(WARPTOOL_MODE_ADVANCERUN,         advancerunMode);
    9092        MODECASE(WARPTOOL_MODE_WARPED,             warpedMode);
    9193        MODECASE(WARPTOOL_MODE_REVERTWARPED,       revertwarpedMode);
     
    976978}
    977979
     980static bool advancerunMode(pxConfig *config)
     981{
     982    PS_ASSERT_PTR_NON_NULL(config, false);
     983
     984    psMetadata *where = psMetadataAlloc();
     985    PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "==");
     986    pxAddLabelSearchArgs (config, where, "-label", "label", "==");
     987
     988    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     989
     990    psString query = pxDataGet("warptool_finished_run_select.sql");
     991    if (!query) {
     992        psError(PXTOOLS_ERR_DATA, false, "failed to retrieve SQL statement");
     993        return false;
     994    }
     995
     996    if (psListLength(where->list)) {
     997        psString whereClause = psDBGenerateWhereSQL(where, "warpRun");
     998        psStringAppend(&query, " %s", whereClause);
     999        psFree(whereClause);
     1000    }
     1001    psFree(where);
     1002
     1003    if (!p_psDBRunQuery(config->dbh, query)) {
     1004        psError(PS_ERR_UNKNOWN, false, "database error");
     1005        psFree(query);
     1006        return false;
     1007    }
     1008    psFree(query);
     1009
     1010    psArray *output = p_psDBFetchResult(config->dbh);
     1011    if (!output) {
     1012        psError(PS_ERR_UNKNOWN, false, "database error");
     1013        return false;
     1014    }
     1015    if (!psArrayLength(output)) {
     1016        psTrace("warptool", PS_LOG_INFO, "no rows found");
     1017        psFree(output);
     1018        return true;
     1019    }
     1020
     1021    query = pxDataGet("warptool_finish_run.sql");
     1022    for (long i = 0; i < psArrayLength(output); i++) {
     1023        psMetadata *row = output->data[i];
     1024
     1025        bool status;
     1026        psS64 warp_id = psMetadataLookupS64(&status, row, "warp_id");
     1027        if (!status) {
     1028            psError(PS_ERR_UNKNOWN, false, "failed to look up value for warp_id");
     1029            psFree(output);
     1030            psFree(query);
     1031            return false;
     1032        }
     1033        psS32 magicked = psMetadataLookupS64(&status, row, "magicked");
     1034        if (!status) {
     1035            psError(PS_ERR_UNKNOWN, false, "failed to look up value for magicked");
     1036            psFree(output);
     1037            psFree(query);
     1038            return false;
     1039        }
     1040        if (!p_psDBRunQueryF(config->dbh, query, magicked, warp_id)) {
     1041            psError(PS_ERR_UNKNOWN, false, "database error");
     1042            psFree(output);
     1043            psFree(query);
     1044            return false;
     1045        }
     1046
     1047        psS64 numUpdated = psDBAffectedRows(config->dbh);
     1048
     1049        if (numUpdated != 1) {
     1050            psError(PS_ERR_UNKNOWN, false, "should have affected 1 row");
     1051            psFree(query);
     1052            psFree(output);
     1053            return false;
     1054        }
     1055    }
     1056    psFree(output);
     1057    psFree(query);
     1058
     1059    return true;
     1060}
     1061
    9781062bool warpCompletedRuns(pxConfig *config)
    9791063{
Note: See TracChangeset for help on using the changeset viewer.