IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Nov 20, 2009, 4:13:39 PM (17 years ago)
Author:
eugene
Message:

updates from head

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/20091113/ippTools/src/difftool.c

    r25851 r26236  
    9595        MODECASE(DIFFTOOL_MODE_IMPORTRUN,             importrunMode);
    9696        MODECASE(DIFFTOOL_MODE_TOCLEANEDSKYFILE,   tocleanedskyfileMode);
    97         MODECASE(DIFFTOOL_MODE_TOPURGEDSKYFILE,    topurgedskyfileMode);
    98         MODECASE(DIFFTOOL_MODE_TOSCRUBBEDSKYFILE,  toscrubbedskyfileMode);
     97        MODECASE(DIFFTOOL_MODE_TOPURGEDSKYFILE,    topurgedskyfileMode);
     98        MODECASE(DIFFTOOL_MODE_TOSCRUBBEDSKYFILE,  toscrubbedskyfileMode);
    9999
    100100        default:
     
    210210    PXOPT_LOOKUP_STR(state, config->args, "-state", true, false);
    211211    PXOPT_LOOKUP_STR(label, config->args, "-label", false, false);
    212    
     212
    213213    // Copy of my hacky work around from stacktool.c
    214214    if ((state)&&(diff_id)) {
     
    383383    }
    384384
    385     psString whereClause = NULL;
     385    psString whereClause = psStringCopy("");
    386386    if (psListLength(where->list)) {
    387387        whereClause = psDBGenerateWhereConditionSQL(where, NULL);
    388         psStringPrepend(&whereClause, "\n AND ");
     388        psStringPrepend(&whereClause, "\n WHERE ");
    389389    }
    390390    psFree(where);
    391391
    392392    // Add condition to get only templates or only inputs
     393    psString templateClause = psStringCopy("");
    393394    {
    394         psString templateClause = NULL;
    395395        if (template) {
    396             psStringAppend(&templateClause, " %s", " template != 0");
     396            psStringAppend(&templateClause, "\n WHERE %s", " template != 0");
    397397        } else if (input) {
    398             psStringAppend(&templateClause, " %s", " template = 0");
    399         }
    400         if (templateClause) {
    401             psStringAppend(&whereClause, "\n AND %s", templateClause);
    402         }
    403         psFree(templateClause);
     398            psStringAppend(&templateClause, "\n WHERE %s", " template = 0");
     399        }
    404400    }
    405401
     
    412408    }
    413409
    414     if (!p_psDBRunQueryF(config->dbh, query, whereClause, whereClause, whereClause, whereClause)) {
    415         psError(PS_ERR_UNKNOWN, false, "database error");
     410    if (!p_psDBRunQueryF(config->dbh, query, whereClause, whereClause, whereClause, whereClause, templateClause)) {
     411        psError(PS_ERR_UNKNOWN, false, "database error");
     412        psFree(templateClause);
    416413        psFree(whereClause);
    417414        psFree(query);
    418415        return false;
    419416    }
     417    psFree(templateClause);
    420418    psFree(whereClause);
    421419    psFree(query);
     
    816814    psMetadata *where = psMetadataAlloc();
    817815    PXOPT_COPY_S64(config->args, where,  "-diff_id", "diffSkyfile.diff_id", "==");
     816    PXOPT_COPY_STR(config->args, where,  "-skycell_id", "diffSkyfile.skycell_id", "==");
    818817    PXOPT_COPY_STR(config->args, where,  "-label", "diffRun.label", "==");
    819818    PXOPT_COPY_S16(config->args, where, "-fault",     "fault", "==");
     
    914913    if (magicked) {
    915914      char *query = "UPDATE diffRun SET state = '%s', magicked = %" PRId64 " WHERE diff_id = %"PRId64;
    916      
     915
    917916      if (!p_psDBRunQueryF(config->dbh, query, state, magicked, diff_id)) {
    918917        psError(PS_ERR_UNKNOWN, false,
     
    923922    else {
    924923      char *query = "UPDATE diffRun SET state = '%s' WHERE diff_id = %"PRId64;
    925      
     924
    926925      if (!p_psDBRunQueryF(config->dbh, query, state, diff_id)) {
    927926        psError(PS_ERR_UNKNOWN, false,
     
    930929      }
    931930    }
    932    
     931
    933932    return true;
    934933}
     
    948947  if (!p_psDBRunQueryF(config->dbh,query,state,label)) {
    949948    psError(PS_ERR_UNKNOWN, false,
    950             "failed to change state for label %s", label);
     949            "failed to change state for label %s", label);
    951950    return(false);
    952951  }
     
    11381137
    11391138    psMetadata *expWhere = psMetadataAlloc();
    1140     psMetadata *warpWhere = psMetadataAlloc();
     1139    psMetadata *warp1Where = psMetadataAlloc(); // First set of restrictions on warp
     1140    psMetadata *warp2Where = psMetadataAlloc(); // Second set of restriction on warp
    11411141    psMetadata *stackWhere = psMetadataAlloc();
    11421142
    11431143    PXOPT_COPY_S64(config->args, expWhere, "-exp_id", "exp_id", "==");
    11441144    PXOPT_COPY_STR(config->args, expWhere, "-filter", "filter", "==");
    1145     PXOPT_COPY_S64(config->args, warpWhere, "-warp_id", "warpRun.warp_id", "==");
    1146     PXOPT_COPY_STR(config->args, warpWhere, "-skycell_id", "warpSkyfile.skycell_id", "==");
    1147     PXOPT_COPY_STR(config->args, warpWhere, "-tess_id", "warpRun.tess_id", "==");
    1148     PXOPT_COPY_STR(config->args, warpWhere, "-warp_label", "warpRun.label", "==");
    1149     PXOPT_COPY_F32(config->args, warpWhere,  "-good_frac", "warpSkyfile.good_frac", ">=");
     1145    PXOPT_COPY_S64(config->args, warp1Where, "-warp_id", "warpRun.warp_id", "==");
     1146    PXOPT_COPY_STR(config->args, warp1Where, "-warp_label", "warpRun.label", "==");
     1147    PXOPT_COPY_STR(config->args, warp1Where, "-tess_id", "warpRun.tess_id", "==");
     1148    PXOPT_COPY_S64(config->args, warp2Where, "-warp_id", "warpRun.warp_id", "==");
     1149    PXOPT_COPY_STR(config->args, warp2Where, "-tess_id", "warpRun.tess_id", "==");
     1150    PXOPT_COPY_STR(config->args, warp2Where, "-skycell_id", "warpSkyfile.skycell_id", "==");
     1151    PXOPT_COPY_STR(config->args, warp2Where, "-warp_label", "warpRun.label", "==");
     1152    PXOPT_COPY_F32(config->args, warp2Where,  "-good_frac", "warpSkyfile.good_frac", ">=");
    11501153    PXOPT_COPY_STR(config->args, stackWhere, "-stack_label", "stackRun.label", "==");
    11511154
     
    11711174    }
    11721175
    1173     psString warpQuery = NULL;
     1176    psString warp1Query = NULL;
     1177    psString warp2Query = NULL;
    11741178    psString stackQuery = NULL;
    11751179    psString expQuery = NULL;
     
    11831187    }
    11841188    psFree(expWhere);
    1185     if (psListLength(warpWhere->list)) {
    1186         psString whereClause = psDBGenerateWhereConditionSQL(warpWhere, NULL);
    1187         psStringAppend(&warpQuery, "\n AND %s", whereClause);
     1189    if (psListLength(warp1Where->list)) {
     1190        psString whereClause = psDBGenerateWhereConditionSQL(warp1Where, NULL);
     1191        psStringAppend(&warp1Query, "\n AND %s", whereClause);
    11881192        psFree(whereClause);
    11891193    } else {
    1190         warpQuery = psStringCopy("\n");
    1191     }
    1192     psFree(warpWhere);
    1193 
    1194     if (!available) {
    1195         // diff what's available, even if warp run has some faults and is incomplete
    1196         psStringAppend(&warpQuery, " AND warpRun.state = 'full'");
    1197     }
     1194        warp1Query = psStringCopy("\n");
     1195    }
     1196    psFree(warp1Where);
     1197    if (psListLength(warp2Where->list)) {
     1198        psString whereClause = psDBGenerateWhereConditionSQL(warp2Where, NULL);
     1199        psStringAppend(&warp2Query, "\n AND %s", whereClause);
     1200        psFree(whereClause);
     1201    } else {
     1202        warp2Query = psStringCopy("\n");
     1203    }
     1204    psFree(warp2Where);
    11981205
    11991206    // don't queue for exposures that have already been diff'd unless requested
     
    12141221    psFree(stackWhere);
    12151222
    1216     psTrace("difftool", 1, query, warpQuery, diffQuery, expQuery, stackQuery);
     1223    psTrace("difftool", 1, query, warp1Query, warp2Query, diffQuery, expQuery, stackQuery);
    12171224
    12181225    if (!psDBTransaction(config->dbh)) {
     
    12211228    }
    12221229
    1223     if (!p_psDBRunQueryF(config->dbh, query, warpQuery, expQuery, diffQuery)) {
     1230    if (!p_psDBRunQueryF(config->dbh, query, warp1Query, warp2Query, expQuery, diffQuery)) {
    12241231        psError(PS_ERR_UNKNOWN, false, "database error");
    12251232        psFree(query);
     
    12811288        return false;
    12821289    }
     1290    psFree(warp1Query);
    12831291    psFree(query);
    12841292    query = NULL;
     
    13121320        if (!p_psDBRunQuery(config->dbh, "DELETE FROM skycellsToDiff")) {
    13131321            psError(PS_ERR_UNKNOWN, false, "database error");
    1314             psFree(warpQuery);
     1322            psFree(warp2Query);
    13151323            psFree(stackQuery);
    13161324            psFree(skycell_query);
     
    13231331        if (!mdok) {
    13241332            psError(PXTOOLS_ERR_PROG, false, "warp_id not found --- ignoring row %ld", i);
    1325             psFree(warpQuery);
     1333            psFree(warp2Query);
    13261334            psFree(stackQuery);
    13271335            psFree(skycell_query);
     
    13341342        if (!mdok) {
    13351343            psError(PXTOOLS_ERR_PROG, false, "skycell_count not found");
    1336             psFree(warpQuery);
     1344            psFree(warp2Query);
    13371345            psFree(stackQuery);
    13381346            psFree(skycell_query);
     
    13451353        if (!mdok) {
    13461354            psError(PXTOOLS_ERR_PROG, false, "tess_id not found");
    1347             psFree(warpQuery);
     1355            psFree(warp2Query);
    13481356            psFree(stackQuery);
    13491357            psFree(skycell_query);
     
    13561364        if (!mdok) {
    13571365            psError(PXTOOLS_ERR_PROG, false, "filter not found");
    1358             psFree(warpQuery);
     1366            psFree(warp2Query);
    13591367            psFree(stackQuery);
    13601368            psFree(skycell_query);
     
    13641372            return false;
    13651373        }
    1366         if (!p_psDBRunQueryF(config->dbh, skycell_query, stackQuery, warp_id, filter, warpQuery)) {
    1367             psError(PS_ERR_UNKNOWN, false, "database error");
    1368             psFree(warpQuery);
     1374        if (!p_psDBRunQueryF(config->dbh, skycell_query, stackQuery, warp_id, filter, warp2Query)) {
     1375            psError(PS_ERR_UNKNOWN, false, "database error");
     1376            psFree(warp2Query);
    13691377            psFree(stackQuery);
    13701378            psFree(skycell_query);
     
    13771385
    13781386        if (num == 0) {
    1379             psTrace("difftool", PS_LOG_INFO, "no skycells with stack found for %" PRId64, warp_id);
     1387            psTrace("difftool", PS_LOG_INFO, "no skycells with stack found for warp_id %" PRId64, warp_id);
    13801388            continue;
    13811389        }
     
    13831391        if (!available && (num != skycell_count)) {
    13841392            psTrace("difftool", PS_LOG_INFO, "%" PRId64 " skyfiles with stack found for warp_id %" PRId64
    1385                     " need %" PRId64, num, warp_id, skycell_count);
     1393                    " but need %" PRId64, num, warp_id, skycell_count);
    13861394            continue;
    13871395        }
     
    14181426        if (!p_psDBRunQuery(config->dbh, query)) {
    14191427            psError(PS_ERR_UNKNOWN, false, "database error");
    1420             psFree(warpQuery);
     1428            psFree(warp2Query);
    14211429            psFree(stackQuery);
    14221430            psFree(skycell_query);
     
    14321440        if (!p_psDBRunQuery(config->dbh, query)) {
    14331441            psError(PS_ERR_UNKNOWN, false, "database error");
    1434             psFree(warpQuery);
     1442            psFree(warp2Query);
    14351443            psFree(stackQuery);
    14361444            psFree(skycell_query);
     
    14471455            psError(PS_ERR_UNKNOWN, false, "failed to change diffRun.state for diff_id: %" PRId64,
    14481456                run->diff_id);
    1449             psFree(warpQuery);
     1457            psFree(warp2Query);
    14501458            psFree(stackQuery);
    14511459            psFree(skycell_query);
     
    14611469    }
    14621470    psFree(output);
    1463     psFree(warpQuery);
     1471    psFree(warp2Query);
    14641472    psFree(stackQuery);
    14651473    psFree(skycell_query);
     
    20622070    return(false);
    20632071  }
    2064  
     2072
    20652073  return(true);
    20662074}
Note: See TracChangeset for help on using the changeset viewer.