IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 20682


Ignore:
Timestamp:
Nov 10, 2008, 8:05:10 PM (17 years ago)
Author:
Paul Price
Message:

Fix bug in selecting diff inputs by labels.

Location:
trunk/ippTools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/share/difftool_definebyquery.sql

    r20681 r20682  
    77    warpsToDiff.tess_id,
    88    warpsToDiff.filter,
    9     stacksForDiff.stack_label,
    10     warpsToDiff.warp_label,
    119    warpsToDiff.good_frac,
    1210    warpsToDiff.diff_id,
     
    4543        warpSkyfile.fault = 0
    4644        AND warpSkyfile.ignored = 0
     45    -- warpsToDiff WHERE hook %s
    4746    ) AS warpsToDiff
    4847-- Get best stack as a function of skycell_id, filter
     
    5150        MAX(stack_id) AS best_stack_id, -- most recent stack, by virtue of auto-increment
    5251        skycell_id,
    53         tess_id,
    54         filter,
    55         label as stack_label
     52        filter
    5653    FROM stackRun
    5754    JOIN stackSumSkyfile USING(stack_id)
    5855    WHERE stackRun.state = 'full'
    5956        AND stackSumSkyfile.fault = 0
     57    -- stacksForDiff WHERE hook %s
    6058    GROUP BY
    6159        skycell_id,
  • trunk/ippTools/src/difftool.c

    r20062 r20682  
    936936    PS_ASSERT_PTR_NON_NULL(config, false);
    937937
    938     psMetadata *where = psMetadataAlloc();
    939 
    940     PXOPT_COPY_S64(config->args, where, "-warp_id", "warpsToDiff.warp_id", "==");
    941     PXOPT_COPY_STR(config->args, where, "-skycell_id", "warpsToDiff.skycell_id", "==");
    942     PXOPT_COPY_STR(config->args, where, "-tess_id", "warpsToDiff.tess_id", "==");
    943     PXOPT_COPY_STR(config->args, where, "-filter", "warpsToDiff.filter", "==");
    944     PXOPT_COPY_STR(config->args, where, "-stack_label", "stacksForDiff.stack_label", "==");
    945     PXOPT_COPY_STR(config->args, where, "-warp_label", "warpsToDiff.warp_label", "==");
    946     PXOPT_COPY_STR(config->args, where,  "-kind", "warpsToDiff.kind", "==");
    947     PXOPT_COPY_F32(config->args, where,  "-good_frac", "warpsToDiff.good_frac", ">=");
     938    psMetadata *warpWhere = psMetadataAlloc();
     939    psMetadata *stackWhere = psMetadataAlloc();
     940
     941    PXOPT_COPY_S64(config->args, warpWhere, "-warp_id", "warpsToDiff.warp_id", "==");
     942    PXOPT_COPY_STR(config->args, warpWhere, "-skycell_id", "warpsToDiff.skycell_id", "==");
     943    PXOPT_COPY_STR(config->args, warpWhere, "-tess_id", "warpsToDiff.tess_id", "==");
     944    PXOPT_COPY_STR(config->args, warpWhere, "-filter", "warpsToDiff.filter", "==");
     945    PXOPT_COPY_STR(config->args, warpWhere, "-warp_label", "warpsToDiff.warp_label", "==");
     946    PXOPT_COPY_STR(config->args, warpWhere,  "-kind", "warpsToDiff.kind", "==");
     947    PXOPT_COPY_F32(config->args, warpWhere,  "-good_frac", "warpsToDiff.good_frac", ">=");
     948    PXOPT_COPY_STR(config->args, stackWhere, "-stack_label", "stacksForDiff.stack_label", "==");
    948949
    949950    PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); // required options
     
    969970    }
    970971
    971     if (psListLength(where->list)) {
    972         psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
    973         psStringAppend(&query, " AND %s", whereClause);
     972    psString warpQuery = NULL;
     973    psString stackQuery = NULL;
     974
     975    if (psListLength(warpWhere->list)) {
     976        psString whereClause = psDBGenerateWhereConditionSQL(warpWhere, NULL);
     977        psStringAppend(&warpQuery, "\n AND %s", whereClause);
    974978        psFree(whereClause);
    975     }
    976     psFree(where);
    977 
    978     if (!p_psDBRunQuery(config->dbh, query)) {
     979    } else {
     980        warpQuery = psStringCopy("");
     981    }
     982    psFree(warpWhere);
     983
     984    if (psListLength(stackWhere->list)) {
     985        psString whereClause = psDBGenerateWhereConditionSQL(stackWhere, NULL);
     986        psStringAppend(&stackQuery, "\n AND %s", whereClause);
     987        psFree(whereClause);
     988    } else {
     989        stackQuery = psStringCopy("");
     990    }
     991    psFree(warpWhere);
     992
     993    if (!p_psDBRunQuery(config->dbh, query, warpWhere, stackWhere)) {
    979994        psError(PS_ERR_UNKNOWN, false, "database error");
    980995        psFree(query);
Note: See TracChangeset for help on using the changeset viewer.