Changeset 10206
- Timestamp:
- Nov 27, 2006, 1:37:55 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/ippTools/src/dettool.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/dettool.c
r10163 r10206 3260 3260 " FROM detRun\n" 3261 3261 " 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" 3264 3263 " JOIN rawDetrendExp\n" 3265 3264 " ON detInputExp.exp_tag = rawDetrendExp.exp_tag\n" … … 3442 3441 // where det_id, iteration, class_id is not in detResidImfile 3443 3442 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"); 3471 3509 psFree(where); 3472 3510 psFree(query); 3473 3511 return false; 3474 3512 } 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"); 3486 3538 psFree(where); 3487 3539 psFree(query); 3488 3540 return false; 3489 3541 } 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); 3521 3550 3522 3551 // exp_tag is manadatory to cross check that this is a exp_tag for this 3523 3552 // detRUn 3524 bool status = false;3525 3553 psString exp_tag = psMetadataLookupStr(&status, config->args, "-exp_tag"); 3526 3554 if (!status) { 3527 3555 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_tag"); 3556 psFree(verifyClause); 3557 psFree(masterClause); 3528 3558 psFree(query); 3529 3559 return false; … … 3531 3561 if (!exp_tag) { 3532 3562 psError(PS_ERR_UNKNOWN, true, "-exp_tag is required"); 3563 psFree(verifyClause); 3564 psFree(masterClause); 3533 3565 psFree(query); 3534 3566 return false; 3535 3567 } 3536 3568 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); 3539 3573 psFree(query); 3540 3574 return false; 3541 3575 } 3576 psFree(verifyClause); 3577 psFree(masterClause); 3542 3578 psFree(query); 3543 3579 … … 3548 3584 } 3549 3585 if (!psArrayLength(output)) { 3550 // XXX check psError here3551 3586 psError(PS_ERR_UNKNOWN, false, "no pending detNormalizedImfile rows found"); 3552 3587 psFree(output); 3553 return true;3588 return false; 3554 3589 } 3555 3590 … … 3779 3814 3780 3815 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 detR un.det_id = detResidExp.det_id"3809 " AND detR un.iteration = detResidExp.iteration"3810 " AND det InputExp.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" 3824 3859 ); 3825 3860 … … 3913 3948 " rawDetrendExp.imfiles" 3914 3949 " 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" 3919 3953 " ON detInputExp.exp_tag = rawDetrendExp.exp_tag" 3920 " LEFTJOIN detResidImfile"3954 " JOIN detResidImfile" 3921 3955 " ON detRun.det_id = detResidImfile.det_id" 3922 3956 " AND detRun.iteration = detResidImfile.iteration" 3923 3957 " AND detInputExp.exp_tag = detResidImfile.exp_tag" 3924 3958 " LEFT JOIN detResidExp" 3925 " ON detR un.det_id = detResidExp.det_id"3926 " AND detR un.iteration = detResidExp.iteration"3927 " AND det InputExp.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" 3928 3962 " WHERE" 3929 3963 " detRun.state = 'run'" 3930 " AND detRun.mode = 'master'"3964 " AND detRun.mode = 'master'" 3931 3965 " AND detResidExp.det_id IS NULL" 3932 3966 " AND detResidExp.iteration IS NULL"
Note:
See TracChangeset
for help on using the changeset viewer.
