IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 10206


Ignore:
Timestamp:
Nov 27, 2006, 1:37:55 PM (20 years ago)
Author:
jhoblitt
Message:

more partial verify mode support, fixed "master" SQL queries, and some more SQL cleanups

File:
1 edited

Legend:

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

    r10163 r10206  
    32603260        " FROM detRun\n"
    32613261        " JOIN detInputExp\n"
    3262         "   ON detRun.det_id = detInputExp.det_id\n"
    3263         "   AND detRun.iteration = detInputExp.iteration\n"
     3262        "   USING(det_id, iteration)\n"
    32643263        " JOIN rawDetrendExp\n"
    32653264        "   ON detInputExp.exp_tag = rawDetrendExp.exp_tag\n"
     
    34423441    // where det_id, iteration, class_id is not in detResidImfile
    34433442    psString query = psStringCopy(
    3444         "SELECT * FROM"
    3445         " (SELECT"
    3446         "   detNormalizedImfile.*"
    3447         " FROM detNormalizedImfile"
    3448         " JOIN detInputExp"
    3449         "   USING(det_id, iteration)"
    3450         " LEFT JOIN detResidImfile"
    3451         "   ON detNormalizedImfile.det_id = detResidImfile.det_id"
    3452         "   AND detNormalizedImfile.iteration= detResidImfile.iteration"
    3453         "   AND detInputExp.exp_tag = detResidImfile.exp_tag"
    3454         "   AND detNormalizedImfile.class_id = detResidImfile.class_id"
    3455         " WHERE"
    3456         "  detResidImfile.det_id IS NULL"
    3457         "  AND detResidImfile.iteration IS NULL"
    3458         "  AND detResidImfile.exp_tag IS NULL"
    3459         "  AND detResidImfile.class_id IS NULL"
    3460         "  AND detInputExp.exp_tag = '%s'"
    3461         " ) AS detNormStackedImfile"
    3462         );
    3463 
    3464     {
    3465         // build a query to search by det_id, iteration, class_id
    3466         psMetadata *where = psMetadataAlloc();
    3467         bool status = false;
    3468         psString det_id = psMetadataLookupStr(&status, config->args, "-det_id");
    3469         if (!status) {
    3470             psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -det_id");
     3443        "SELECT\n"
     3444        "   detNormalizedImfile.*\n"
     3445        " FROM detRun\n"
     3446        " JOIN detInputExp\n"
     3447        "   USING(det_id, iteration)\n"
     3448        " JOIN detNormalizedImfile\n"
     3449        "   USING(det_id, iteration)\n"
     3450        " LEFT JOIN detResidImfile\n"
     3451        "   ON detRun.det_id = detResidImfile.det_id\n"
     3452        "   AND detRun.iteration = detResidImfile.iteration\n"
     3453        "   AND detInputExp.exp_tag = detResidImfile.exp_tag\n"
     3454        "   AND detNormalizedImfile.class_id = detResidImfile.class_id\n"
     3455        " WHERE\n"
     3456        "  detRun.state = 'run'\n"
     3457        "  AND detRun.mode= 'master'\n"
     3458        "  AND detResidImfile.det_id IS NULL\n"
     3459        "  AND detResidImfile.iteration IS NULL\n"
     3460        "  AND detResidImfile.exp_tag IS NULL\n"
     3461        "  AND detResidImfile.class_id IS NULL\n"
     3462        "  %2$s"
     3463        " UNION\n"
     3464        " SELECT\n"
     3465        "   detRun.det_id,\n"
     3466        "   detRun.iteration,\n"
     3467        "   detProcessedImfile.class_id,\n"
     3468        "   detProcessedImfile.uri,\n"
     3469        "   detProcessedImfile.bg,\n"
     3470        "   detProcessedImfile.bg_stdev,\n"
     3471        "   detProcessedImfile.bg_mean_stdev,\n"
     3472        "   detProcessedImfile.b1_uri,\n"
     3473        "   detProcessedImfile.b2_uri\n"
     3474        " FROM detRun\n"
     3475        " JOIN detInputExp\n"
     3476        "   USING(det_id, iteration)\n"
     3477        " JOIN detProcessedImfile\n"
     3478        "   ON detRun.det_id = detProcessedImfile.det_id\n"
     3479        "   AND detInputExp.exp_tag = detProcessedImfile.exp_tag\n"
     3480        " LEFT JOIN detResidImfile\n"
     3481        "   ON detRun.det_id = detResidImfile.det_id\n"
     3482        "   AND detRun.iteration= detResidImfile.iteration\n"
     3483        "   AND detProcessedImfile.exp_tag = detResidImfile.exp_tag\n"
     3484        "   AND detProcessedImfile.class_id = detResidImfile.class_id\n"
     3485        " WHERE\n"
     3486        "  detRun.state = 'run'\n"
     3487        "  AND detRun.mode= 'verify'\n"
     3488        "  AND detResidImfile.det_id IS NULL\n"
     3489        "  AND detResidImfile.iteration IS NULL\n"
     3490        "  AND detResidImfile.exp_tag IS NULL\n"
     3491        "  AND detResidImfile.class_id IS NULL\n"
     3492        "  AND detInputExp.exp_tag = '%1$s'\n"
     3493        "  %3$s"
     3494    );
     3495
     3496    // build a query to search by det_id, iteration, class_id
     3497    psMetadata *where = psMetadataAlloc();
     3498    bool status = false;
     3499    psString det_id = psMetadataLookupStr(&status, config->args, "-det_id");
     3500    if (!status) {
     3501        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -det_id");
     3502        psFree(where);
     3503        psFree(query);
     3504        return false;
     3505    }
     3506    if (det_id) {
     3507        if (!psMetadataAddStr(where, PS_LIST_TAIL, "det_id", 0, "==", det_id)) {
     3508            psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    34713509            psFree(where);
    34723510            psFree(query);
    34733511            return false;
    34743512        }
    3475         if (det_id) {
    3476             if (!psMetadataAddStr(where, PS_LIST_TAIL, "det_id", 0, "==", det_id)) {
    3477                 psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
    3478                 psFree(where);
    3479                 psFree(query);
    3480                 return false;
    3481             }
    3482         }
    3483         psS32 iteration = psMetadataLookupS32(&status, config->args, "-iteration");
    3484         if (!status) {
    3485             psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -iteration");
     3513    }
     3514    psS32 iteration = psMetadataLookupS32(&status, config->args, "-iteration");
     3515    if (!status) {
     3516        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -iteration");
     3517        psFree(where);
     3518        psFree(query);
     3519        return false;
     3520    }
     3521    // always set iteration
     3522    if (!psMetadataAddS32(where, PS_LIST_TAIL, "iteration", 0, "==", iteration)) {
     3523        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
     3524        psFree(where);
     3525        psFree(query);
     3526        return false;
     3527    }
     3528    psString class_id = psMetadataLookupStr(&status, config->args, "-class_id");
     3529    if (!status) {
     3530        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -class_id");
     3531        psFree(where);
     3532        psFree(query);
     3533        return false;
     3534    }
     3535    if (class_id) {
     3536        if (!psMetadataAddStr(where, PS_LIST_TAIL, "class_id", 0, "==", class_id)) {
     3537            psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
    34863538            psFree(where);
    34873539            psFree(query);
    34883540            return false;
    34893541        }
    3490         // always set iteration
    3491         if (!psMetadataAddS32(where, PS_LIST_TAIL, "iteration", 0, "==", iteration)) {
    3492             psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
    3493             psFree(where);
    3494             psFree(query);
    3495             return false;
    3496         }
    3497         psString class_id = psMetadataLookupStr(&status, config->args, "-class_id");
    3498         if (!status) {
    3499             psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -class_id");
    3500             psFree(where);
    3501             psFree(query);
    3502             return false;
    3503         }
    3504         if (class_id) {
    3505             if (!psMetadataAddStr(where, PS_LIST_TAIL, "class_id", 0, "==", class_id)) {
    3506                 psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
    3507                 psFree(where);
    3508                 psFree(query);
    3509                 return false;
    3510             }
    3511         }
    3512 
    3513         // there's not
    3514         psString whereClause = psDBGenerateWhereSQL(where, NULL);
    3515         psFree(where);
    3516         if (whereClause) {
    3517             psStringAppend(&query, " %s", whereClause);
    3518             psFree(whereClause);
    3519         }
    3520     }
     3542    }
     3543
     3544    psString masterClause = psDBGenerateWhereConditionSQL(where, "detNormalizedImfile");
     3545    psStringPrepend(&masterClause, "AND ");
     3546    psMetadataRemoveKey(where, "iteration");
     3547    psString verifyClause = psDBGenerateWhereConditionSQL(where, "detProcessedImfile");
     3548    psStringPrepend(&verifyClause, "AND ");
     3549    psFree(where);
    35213550
    35223551    // exp_tag is manadatory to cross check that this is a exp_tag for this
    35233552    // detRUn
    3524     bool status = false;
    35253553    psString exp_tag = psMetadataLookupStr(&status, config->args, "-exp_tag");
    35263554    if (!status) {
    35273555        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_tag");
     3556        psFree(verifyClause);
     3557        psFree(masterClause);
    35283558        psFree(query);
    35293559        return false;
     
    35313561    if (!exp_tag) {
    35323562        psError(PS_ERR_UNKNOWN, true, "-exp_tag is required");
     3563        psFree(verifyClause);
     3564        psFree(masterClause);
    35333565        psFree(query);
    35343566        return false;
    35353567    }
    35363568
    3537     if (!p_psDBRunQuery(config->dbh, query, exp_tag, exp_tag)) {
    3538         psError(PS_ERR_UNKNOWN, false, "database error");
     3569    if (!p_psDBRunQuery(config->dbh, query, exp_tag, masterClause, verifyClause)) {
     3570        psError(PS_ERR_UNKNOWN, false, "database error");
     3571        psFree(verifyClause);
     3572        psFree(masterClause);
    35393573        psFree(query);
    35403574        return false;
    35413575    }
     3576    psFree(verifyClause);
     3577    psFree(masterClause);
    35423578    psFree(query);
    35433579
     
    35483584    }
    35493585    if (!psArrayLength(output)) {
    3550         // XXX check psError here
    35513586        psError(PS_ERR_UNKNOWN, false, "no pending detNormalizedImfile rows found");
    35523587        psFree(output);
    3553         return true;
     3588        return false;
    35543589    }
    35553590
     
    37793814
    37803815    psString query = psStringCopy(
    3781         "SELECT DISTINCT"
    3782         "   det_id,"
    3783         "   iteration,"
    3784         "   det_type,"
    3785         "   exp_tag,"
    3786         "   include,"
    3787         "   camera"
    3788         " FROM"
    3789         "   (SELECT DISTINCT"
    3790         "       detRun.det_id AS det_id,"
    3791         "       detRun.iteration,"
    3792         "       detRun.det_type,"
    3793         "       detInputExp.exp_tag,"
    3794         "       detInputExp.include,"
    3795         "       rawDetrendExp.imfiles,"
    3796         "       rawDetrendExp.camera"
    3797         "   FROM detRun"
    3798         "       LEFT JOIN detInputExp"
    3799         "       ON detRun.det_id = detInputExp.det_id"
    3800         "       AND detRun.iteration = detInputExp.iteration"
    3801         "   LEFT JOIN rawDetrendExp"
    3802         "       ON detInputExp.exp_tag = rawDetrendExp.exp_tag"
    3803         "   LEFT JOIN detResidImfile"
    3804         "       ON detRun.det_id = detResidImfile.det_id"
    3805         "       AND detRun.iteration = detResidImfile.iteration"
    3806         "       AND detInputExp.exp_tag = detResidImfile.exp_tag"
    3807         "   LEFT JOIN detResidExp"
    3808         "       ON detRun.det_id = detResidExp.det_id"
    3809         "       AND detRun.iteration = detResidExp.iteration"
    3810         "       AND detInputExp.exp_tag = detResidExp.exp_tag"
    3811         "   WHERE"
    3812         "       detRun.state = 'run'"
    3813         "   AND detRun.mode = 'master'"
    3814         "       AND detResidExp.det_id IS NULL"
    3815         "       AND detResidExp.iteration IS NULL"
    3816         "       AND detResidExp.exp_tag IS NULL"
    3817         "   GROUP BY"
    3818         "       detInputExp.exp_tag,"
    3819         "       detRun.iteration,"
    3820         "       detRun.det_id"
    3821         "   HAVING"
    3822         "       rawDetrendExp.imfiles = COUNT(detResidImfile.class_id)"
    3823         " ) AS toresidexp"
     3816        "SELECT DISTINCT\n"
     3817        "   det_id,\n"
     3818        "   iteration,\n"
     3819        "   det_type,\n"
     3820        "   exp_tag,\n"
     3821        "   include,\n"
     3822        "   camera\n"
     3823        " FROM\n"
     3824        "   (SELECT DISTINCT\n"
     3825        "       detRun.det_id AS det_id,\n"
     3826        "       detRun.iteration,\n"
     3827        "       detRun.det_type,\n"
     3828        "       detInputExp.exp_tag,\n"
     3829        "       detInputExp.include,\n"
     3830        "       rawDetrendExp.imfiles,\n"
     3831        "       rawDetrendExp.camera,\n"
     3832        "       detResidImfile.class_id\n"
     3833        "   FROM detRun\n"
     3834        "   JOIN detInputExp\n"
     3835        "       USING(det_id, iteration)\n"
     3836        "   JOIN rawDetrendExp\n"
     3837        "       ON detInputExp.exp_tag = rawDetrendExp.exp_tag\n"
     3838        "   JOIN detResidImfile\n"
     3839        "       ON detRun.det_id = detResidImfile.det_id\n"
     3840        "       AND detRun.iteration = detResidImfile.iteration\n"
     3841        "       AND detInputExp.exp_tag = detResidImfile.exp_tag\n"
     3842        "   LEFT JOIN detResidExp\n"
     3843        "       ON detResidImfile.det_id = detResidExp.det_id\n"
     3844        "       AND detResidImfile.iteration = detResidExp.iteration\n"
     3845        "       AND detResidImfile.exp_tag = detResidExp.exp_tag\n"
     3846        "   WHERE\n"
     3847        "       detRun.state = 'run'\n"
     3848        "       AND detRun.mode = 'master'\n"
     3849        "       AND detResidExp.det_id IS NULL\n"
     3850        "       AND detResidExp.iteration IS NULL\n"
     3851        "       AND detResidExp.exp_tag IS NULL\n"
     3852        "   GROUP BY\n"
     3853        "       detInputExp.exp_tag,\n"
     3854        "       detRun.iteration,\n"
     3855        "       detRun.det_id\n"
     3856        "   HAVING\n"
     3857        "       rawDetrendExp.imfiles = COUNT(detResidImfile.class_id)\n"
     3858        " ) AS toresidexp\n"
    38243859        );
    38253860
     
    39133948        "       rawDetrendExp.imfiles"
    39143949        "   FROM detRun"
    3915         "       LEFT JOIN detInputExp"
    3916         "       ON detRun.det_id = detInputExp.det_id"
    3917         "       AND detRun.iteration = detInputExp.iteration"
    3918         "   LEFT JOIN rawDetrendExp"
     3950        "   JOIN detInputExp"
     3951        "       USING(det_id, iteration)"
     3952        "   JOIN rawDetrendExp"
    39193953        "       ON detInputExp.exp_tag = rawDetrendExp.exp_tag"
    3920         "   LEFT JOIN detResidImfile"
     3954        "   JOIN detResidImfile"
    39213955        "       ON detRun.det_id = detResidImfile.det_id"
    39223956        "       AND detRun.iteration = detResidImfile.iteration"
    39233957        "       AND detInputExp.exp_tag = detResidImfile.exp_tag"
    39243958        "   LEFT JOIN detResidExp"
    3925         "       ON detRun.det_id = detResidExp.det_id"
    3926         "       AND detRun.iteration = detResidExp.iteration"
    3927         "       AND detInputExp.exp_tag = detResidExp.exp_tag"
     3959        "       ON detResidImfile.det_id = detResidExp.det_id"
     3960        "       AND detResidImfile.iteration = detResidExp.iteration"
     3961        "       AND detResidImfile.exp_tag = detResidExp.exp_tag"
    39283962        "   WHERE"
    39293963        "       detRun.state = 'run'"
    3930         "   AND detRun.mode = 'master'"
     3964        "       AND detRun.mode = 'master'"
    39313965        "       AND detResidExp.det_id IS NULL"
    39323966        "       AND detResidExp.iteration IS NULL"
Note: See TracChangeset for help on using the changeset viewer.