Changeset 25624 for branches/eam_branches/20090715/ippTools/src
- Timestamp:
- Sep 27, 2009, 11:34:07 AM (17 years ago)
- Location:
- branches/eam_branches/20090715/ippTools/src
- Files:
-
- 23 edited
- 2 copied
-
Makefile.am (modified) (3 diffs)
-
difftool.c (modified) (6 diffs)
-
difftool.h (modified) (1 diff)
-
difftoolConfig.c (modified) (2 diffs)
-
disttool.c (modified) (28 diffs)
-
disttool.h (modified) (3 diffs)
-
disttoolConfig.c (modified) (12 diffs)
-
magicdstool.c (modified) (24 diffs)
-
magicdstool.h (modified) (1 diff)
-
magicdstoolConfig.c (modified) (8 diffs)
-
magictool.c (modified) (2 diffs)
-
magictoolConfig.c (modified) (1 diff)
-
pstamptool.c (modified) (3 diffs)
-
pstamptoolConfig.c (modified) (2 diffs)
-
pxinject.c (modified) (1 diff)
-
pxinjectConfig.c (modified) (1 diff)
-
pxmagic.c (copied) (copied from trunk/ippTools/src/pxmagic.c )
-
pxmagic.h (copied) (copied from trunk/ippTools/src/pxmagic.h )
-
pxtools.h (modified) (1 diff)
-
pztool.c (modified) (3 diffs)
-
pztoolConfig.c (modified) (1 diff)
-
regtool.c (modified) (6 diffs)
-
regtoolConfig.c (modified) (2 diffs)
-
stacktool.c (modified) (1 diff)
-
stacktoolConfig.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/20090715/ippTools/src/Makefile.am
r25400 r25624 24 24 pubtool 25 25 26 27 bin_SCRIPTS = \28 fakemagic29 30 26 pkginclude_HEADERS = \ 31 27 pxadd.h \ … … 36 32 pxdata.h \ 37 33 pxfake.h \ 34 pxmagic.h \ 38 35 pxregister.h \ 39 36 pxtag.h \ … … 79 76 pxfake.c \ 80 77 pxfault.c \ 78 pxmagic.c \ 81 79 pxregister.c \ 82 80 pxtag.c \ -
branches/eam_branches/20090715/ippTools/src/difftool.c
r25400 r25624 37 37 static bool todiffskyfileMode(pxConfig *config); 38 38 static bool adddiffskyfileMode(pxConfig *config); 39 static bool advanceMode(pxConfig *config); 39 40 static bool diffskyfileMode(pxConfig *config); 40 41 static bool revertdiffskyfileMode(pxConfig *config); … … 50 51 51 52 static bool setdiffRunState(pxConfig *config, psS64 diff_id, const char *state, psS64 magicked); 52 static bool diffRunComplete(pxConfig *config);53 53 54 54 # define MODECASE(caseName, func) \ … … 76 76 MODECASE(DIFFTOOL_MODE_TODIFFSKYFILE, todiffskyfileMode); 77 77 MODECASE(DIFFTOOL_MODE_ADDDIFFSKYFILE, adddiffskyfileMode); 78 MODECASE(DIFFTOOL_MODE_ADVANCE, advanceMode); 78 79 MODECASE(DIFFTOOL_MODE_DIFFSKYFILE, diffskyfileMode); 79 80 MODECASE(DIFFTOOL_MODE_REVERTDIFFSKYFILE, revertdiffskyfileMode); 80 81 MODECASE(DIFFTOOL_MODE_DEFINEPOPRUN, definepoprunMode); 81 MODECASE(DIFFTOOL_MODE_DEFINEWARPSTACK, definewarpstackMode);82 MODECASE(DIFFTOOL_MODE_DEFINEWARPSTACK, definewarpstackMode); 82 83 MODECASE(DIFFTOOL_MODE_DEFINEWARPWARP, definewarpwarpMode); 83 84 MODECASE(DIFFTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunMode); … … 555 556 } 556 557 557 if (!diffRunComplete(config)) {558 if (!psDBRollback(config->dbh)) {559 psError(PS_ERR_UNKNOWN, false, "database error");560 }561 psError(PS_ERR_UNKNOWN, false, "database error");562 return false;563 }564 565 558 // point of no return 566 559 if (!psDBCommit(config->dbh)) { … … 569 562 } 570 563 564 565 return true; 566 } 567 568 static bool advanceMode(pxConfig *config) 569 { 570 PS_ASSERT_PTR_NON_NULL(config, false); 571 572 psMetadata *where = psMetadataAlloc(); 573 PXOPT_COPY_S64(config->args, where, "-diff_id", "diffRun.diff_id", "=="); 574 pxAddLabelSearchArgs (config, where, "-label", "diffRun.label", "=="); 575 576 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 577 578 // look for completed diffRuns 579 psString query = pxDataGet("difftool_completed_runs.sql"); 580 if (!query) { 581 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 582 return false; 583 } 584 585 psString whereString = psStringCopy(""); 586 if (psListLength(where->list)) { 587 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 588 psStringAppend(&whereString, "\n AND %s", whereClause); 589 psFree(whereClause); 590 } 591 psFree(where); 592 593 // treat limit == 0 as "no limit" 594 if (limit) { 595 psString limitString = psDBGenerateLimitSQL(limit); 596 psStringAppend(&query, " %s", limitString); 597 psFree(limitString); 598 } 599 600 if (!psDBTransaction(config->dbh)) { 601 psError(PS_ERR_UNKNOWN, false, "database error"); 602 psFree(whereString); 603 return false; 604 } 605 606 if (!p_psDBRunQueryF(config->dbh, query, whereString)) { 607 psError(PS_ERR_UNKNOWN, false, "database error"); 608 psFree(query); 609 psFree(whereString); 610 if (!psDBRollback(config->dbh)) { 611 psError(PS_ERR_UNKNOWN, false, "database error"); 612 } 613 return false; 614 } 615 psFree(query); 616 psFree(whereString); 617 618 psArray *output = p_psDBFetchResult(config->dbh); 619 if (!output) { 620 psError(PS_ERR_UNKNOWN, false, "database error"); 621 if (!psDBRollback(config->dbh)) { 622 psError(PS_ERR_UNKNOWN, false, "database error"); 623 } 624 return false; 625 } 626 if (!psArrayLength(output)) { 627 psTrace("difftool", PS_LOG_INFO, "no rows found"); 628 psFree(output); 629 return true; 630 } 631 632 for (long i = 0; i < psArrayLength(output); i++) { 633 psMetadata *row = output->data[i]; 634 635 psS64 diff_id = psMetadataLookupS64(NULL, row, "diff_id"); 636 psS64 magicked = psMetadataLookupS64(NULL, row, "magicked"); 637 638 // set diffRun.state to 'full' 639 if (!setdiffRunState(config, diff_id, "full", magicked)) { 640 psError(PS_ERR_UNKNOWN, false, "failed to change diffRun.state for diff_id: %" PRId64, 641 diff_id); 642 psFree(output); 643 if (!psDBRollback(config->dbh)) { 644 psError(PS_ERR_UNKNOWN, false, "database error"); 645 } 646 return false; 647 } 648 } 649 psFree(output); 650 651 if (!psDBCommit(config->dbh)) { 652 psError(PS_ERR_UNKNOWN, false, "database error"); 653 return false; 654 } 571 655 572 656 return true; … … 1810 1894 } 1811 1895 1812 static bool diffRunComplete(pxConfig *config)1813 {1814 PS_ASSERT_PTR_NON_NULL(config, false);1815 1816 // look for completed diffRuns1817 psString query = pxDataGet("difftool_completed_runs.sql");1818 if (!query) {1819 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");1820 return false;1821 }1822 1823 if (!p_psDBRunQuery(config->dbh, query)) {1824 psError(PS_ERR_UNKNOWN, false, "database error");1825 psFree(query);1826 return false;1827 }1828 psFree(query);1829 1830 psArray *output = p_psDBFetchResult(config->dbh);1831 if (!output) {1832 psError(PS_ERR_UNKNOWN, false, "database error");1833 return false;1834 }1835 if (!psArrayLength(output)) {1836 psTrace("difftool", PS_LOG_INFO, "no rows found");1837 psFree(output);1838 return true;1839 }1840 for (long i = 0; i < psArrayLength(output); i++) {1841 psMetadata *row = output->data[i];1842 1843 psS64 diff_id = psMetadataLookupS64(NULL, row, "diff_id");1844 psS64 magicked = psMetadataLookupS64(NULL, row, "magicked");1845 1846 // set diffRun.state to 'stop'1847 if (!setdiffRunState(config, diff_id, "full", magicked)) {1848 psError(PS_ERR_UNKNOWN, false, "failed to change diffRun.state for diff_id: %" PRId64,1849 diff_id);1850 psFree(output);1851 return false;1852 }1853 }1854 1855 return true;1856 }1857 1896 1858 1897 bool exportrunMode(pxConfig *config) -
branches/eam_branches/20090715/ippTools/src/difftool.h
r24174 r25624 31 31 DIFFTOOL_MODE_TODIFFSKYFILE, 32 32 DIFFTOOL_MODE_ADDDIFFSKYFILE, 33 DIFFTOOL_MODE_ADVANCE, 33 34 DIFFTOOL_MODE_DIFFSKYFILE, 34 35 DIFFTOOL_MODE_REVERTDIFFSKYFILE, -
branches/eam_branches/20090715/ippTools/src/difftoolConfig.c
r25022 r25624 114 114 psMetadataAddF32(adddiffskyfileArgs, PS_LIST_TAIL, "-good_frac", 0, "define %% of good pixels", NAN); 115 115 psMetadataAddBool(adddiffskyfileArgs, PS_LIST_TAIL, "-magicked", 0, "define magicked state", false); 116 117 // -advance 118 psMetadata *advanceArgs = psMetadataAlloc(); 119 psMetadataAddS64(advanceArgs, PS_LIST_TAIL, "-diff_id", 0, "select by diff ID", 0); 120 psMetadataAddStr(advanceArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "select by label", NULL); 121 psMetadataAddS32(advanceArgs, PS_LIST_TAIL, "-limit", 0, "limit number of results", 0); 116 122 117 123 // -diffskyfile … … 267 273 PXOPT_ADD_MODE("-todiffskyfile", "", DIFFTOOL_MODE_TODIFFSKYFILE, todiffskyfileArgs); 268 274 PXOPT_ADD_MODE("-adddiffskyfile", "", DIFFTOOL_MODE_ADDDIFFSKYFILE, adddiffskyfileArgs); 275 PXOPT_ADD_MODE("-advance", "", DIFFTOOL_MODE_ADVANCE, advanceArgs); 269 276 PXOPT_ADD_MODE("-diffskyfile", "", DIFFTOOL_MODE_DIFFSKYFILE, diffskyfileArgs); 270 277 PXOPT_ADD_MODE("-revertdiffskyfile","", DIFFTOOL_MODE_REVERTDIFFSKYFILE, revertdiffskyfileArgs); -
branches/eam_branches/20090715/ippTools/src/disttool.c
r25400 r25624 2 2 * disttool.c 3 3 * 4 * Copyright (C) 2008 4 * Copyright (C) 2008-2009 5 5 * 6 6 * This program is free software; you can redistribute it and/or modify it … … 37 37 static bool pendingcomponentMode(pxConfig *config); 38 38 static bool addprocessedcomponentMode(pxConfig *config); 39 static bool revertcomponentMode(pxConfig *config); 39 40 static bool processedcomponentMode(pxConfig *config); 40 41 static bool toadvanceMode(pxConfig *config); … … 51 52 static bool listtargetMode(pxConfig *config); 52 53 53 static bool definedsproductMode(pxConfig *config);54 static bool updatedsproductMode(pxConfig *config);55 56 54 static bool definedestinationMode(pxConfig *config); 57 55 static bool updatedestinationMode(pxConfig *config); … … 59 57 static bool defineinterestMode(pxConfig *config); 60 58 static bool updateinterestMode(pxConfig *config); 59 static bool listinterestsMode(pxConfig *config); 61 60 62 61 # define MODECASE(caseName, func) \ … … 86 85 MODECASE(DISTTOOL_MODE_ADDPROCESSEDCOMPONENT, addprocessedcomponentMode); 87 86 MODECASE(DISTTOOL_MODE_PROCESSEDCOMPONENT, processedcomponentMode); 87 MODECASE(DISTTOOL_MODE_REVERTCOMPONENT, revertcomponentMode); 88 88 MODECASE(DISTTOOL_MODE_TOADVANCE, toadvanceMode); 89 89 MODECASE(DISTTOOL_MODE_PENDINGFILESET, pendingfilesetMode); … … 97 97 MODECASE(DISTTOOL_MODE_UPDATETARGET, updatetargetMode); 98 98 MODECASE(DISTTOOL_MODE_LISTTARGET, listtargetMode); 99 MODECASE(DISTTOOL_MODE_DEFINEDSPRODUCT, definedsproductMode);100 MODECASE(DISTTOOL_MODE_UPDATEDSPRODUCT, updatedsproductMode);101 99 MODECASE(DISTTOOL_MODE_DEFINEDESTINATION, definedestinationMode); 102 100 MODECASE(DISTTOOL_MODE_UPDATEDESTINATION, updatedestinationMode); 103 101 MODECASE(DISTTOOL_MODE_DEFINEINTEREST, defineinterestMode); 104 102 MODECASE(DISTTOOL_MODE_UPDATEINTEREST, updateinterestMode); 103 MODECASE(DISTTOOL_MODE_LISTINTERESTS, listinterestsMode); 105 104 default: 106 105 psAbort("invalid option (this should not happen)"); … … 151 150 stage, 152 151 stage_id, 152 0, 153 153 set_label, 154 154 outroot, … … 223 223 } 224 224 } else if (!strcmp(stage, "camera")) { 225 magicRunType = "chipRun"; // This is used below to set the magicked business 225 magicRunType = "camRun"; // This is used below to set the magicked business 226 runJoinStr = "camRun.cam_id"; 226 227 query = pxDataGet("disttool_definebyquery_camera.sql"); 227 228 if (!query) { … … 288 289 psStringAppend(&query, " AND (stackRun.label = '%s')", label); 289 290 } 290 // stack stage doesn't require magic (perhaps let the script do this?291 // stack stage doesn't require magic 291 292 no_magic = true; 292 293 } else { … … 306 307 307 308 if (!no_magic) { 308 psStringAppend(&query, " AND ( distTarget.clean OR%s.magicked)", magicRunType);309 psStringAppend(&query, " AND (%s.magicked)", magicRunType); 309 310 310 311 // is selecting by magic_ds_id really interesting? 311 312 if (magic_ds_id) { 312 if (strcmp(stage, "camera")) { 313 // stage other than camera 314 if (!runJoinStr) { 315 psError(PS_ERR_PROGRAMMING, true, "cannot select by magic_ds_id for stage: %s", stage); 316 psFree(query); 317 return false; 318 } 319 psStringAppend(&joinHook, "\nJOIN magicDSRun ON magicDSRun.stage = distTarget.stage" 313 if (!runJoinStr) { 314 psError(PS_ERR_PROGRAMMING, true, "cannot select by magic_ds_id for stage: %s", stage); 315 psFree(query); 316 return false; 317 } 318 psStringAppend(&joinHook, "\nJOIN magicDSRun ON magicDSRun.stage = distTarget.stage" 320 319 " AND magicDSRun.stage_id = %s", runJoinStr); 321 } else {322 // camera masks are magicked when the chipRun is magicked323 // XXX: This is confusing. Is it dangerous?324 // Maybe I should add a magicked bit to camRun. Note this isn't325 psStringAppend(&joinHook, "\nJOIN magicDSRun ON magicDSRun.stage = 'chip'"326 " AND magicDSRun.stage_id = chipRun.chip_id");327 }328 320 psStringAppend(&query, " AND (magicDSRun.state = 'full' AND magicDSRun.re_place AND (magic_ds_id = %" PRId64 "))", magic_ds_id); 329 321 } … … 377 369 psString run_tag = psMetadataLookupStr(NULL, md, "run_tag"); 378 370 psS64 stage_id = psMetadataLookupS64(NULL, md, "stage_id"); 371 psS64 magic_ds_id = psMetadataLookupS64(NULL, md, "magicked"); 379 372 psS64 target_id = psMetadataLookupS64(NULL, md, "target_id"); 380 373 psString target_label = psMetadataLookupStr(NULL, md, "label"); … … 395 388 stage, 396 389 stage_id, 390 magic_ds_id, 397 391 new_label, 398 392 outroot, … … 500 494 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 501 495 502 // we need to disambiguate fault so make a copy of the where list before adding fault503 psMetadata *whereComponent = psMetadataCopy(NULL, where);504 496 PXOPT_COPY_S16(config->args, where, "-fault", "distRun.fault", "=="); 505 PXOPT_COPY_S16(config->args, whereComponent, "-fault", "distComponent.fault", "==");506 497 507 498 // It might be useful to be able to query by the parameters of the underlying runs … … 513 504 } 514 505 515 if (!psDBTransaction(config->dbh)) { 516 psError(PS_ERR_UNKNOWN, false, "database error"); 506 psString query = pxDataGet("disttool_revertrun.sql"); 507 if (!query) { 508 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 509 if (!psDBRollback(config->dbh)) { 510 psError(PS_ERR_UNKNOWN, false, "database error"); 511 } 512 return false; 513 } 514 515 if (psListLength(where->list)) { 516 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 517 psStringAppend(&query, " AND %s", whereClause); 518 psFree(whereClause); 519 } 520 psFree(where); 521 522 if (!p_psDBRunQuery(config->dbh, query)) { 523 psError(PS_ERR_UNKNOWN, false, "database error"); 524 psFree(query); 525 return false; 526 } 527 528 int numUpdated = psDBAffectedRows(config->dbh); 529 530 psLogMsg("disttool", PS_LOG_INFO, "Updated %d dist runs", numUpdated); 531 532 return true; 533 } 534 535 static bool revertcomponentMode(pxConfig *config) 536 { 537 psMetadata *where = psMetadataAlloc(); 538 PXOPT_COPY_S64(config->args, where, "-dist_id", "distRun.dist_id", "=="); 539 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "==");; 540 PXOPT_COPY_STR(config->args, where, "-component", "component", "==");; 541 PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "=="); 542 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 543 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 544 545 PXOPT_COPY_S16(config->args, where, "-fault", "distComponent.fault", "=="); 546 547 // It might be useful to be able to query by the parameters of the underlying runs 548 549 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { 517 550 psFree(where); 518 return false; 519 } 520 521 // Update state to 'new' 522 int numUpdated; // Number updated 523 { 524 psString query = pxDataGet("disttool_revertrun_update.sql"); 525 if (!query) { 526 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 527 if (!psDBRollback(config->dbh)) { 528 psError(PS_ERR_UNKNOWN, false, "database error"); 529 } 530 return false; 531 } 532 533 if (psListLength(where->list)) { 534 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 535 psStringAppend(&query, " AND %s", whereClause); 536 psFree(whereClause); 537 } 538 539 if (!p_psDBRunQuery(config->dbh, query)) { 540 psError(PS_ERR_UNKNOWN, false, "database error"); 541 psFree(query); 542 if (!psDBRollback(config->dbh)) { 543 psError(PS_ERR_UNKNOWN, false, "database error"); 544 } 545 return false; 546 } 547 psFree(query); 548 549 numUpdated = psDBAffectedRows(config->dbh); 550 } 551 552 psLogMsg("disttool", PS_LOG_INFO, "Updated %d dist runs", numUpdated); 553 554 // Delete product 555 int numDeleted; // Number deleted 556 { 557 psString query = pxDataGet("disttool_revertrun_delete.sql"); 558 if (!query) { 559 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 560 if (!psDBRollback(config->dbh)) { 561 psError(PS_ERR_UNKNOWN, false, "database error"); 562 } 563 return false; 564 } 565 566 if (psListLength(whereComponent->list)) { 567 psString whereClause = psDBGenerateWhereConditionSQL(whereComponent, NULL); 568 psStringAppend(&query, " AND %s", whereClause); 569 psFree(whereClause); 570 } 571 572 if (!p_psDBRunQuery(config->dbh, query)) { 573 psError(PS_ERR_UNKNOWN, false, "database error"); 574 psFree(query); 575 if (!psDBRollback(config->dbh)) { 576 psError(PS_ERR_UNKNOWN, false, "database error"); 577 } 578 return false; 579 } 580 psFree(query); 581 582 numDeleted = psDBAffectedRows(config->dbh); 583 } 551 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); 552 return false; 553 } 554 555 psString query = pxDataGet("disttool_revertcomponent.sql"); 556 if (!query) { 557 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 558 psFree(where); 559 return false; 560 } 561 562 if (psListLength(where->list)) { 563 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 564 psStringAppend(&query, " AND %s", whereClause); 565 psFree(whereClause); 566 } 567 psFree(where); 568 569 if (!p_psDBRunQuery(config->dbh, query)) { 570 psError(PS_ERR_UNKNOWN, false, "database error"); 571 psFree(query); 572 return false; 573 } 574 575 int numDeleted = psDBAffectedRows(config->dbh); 584 576 585 577 psLogMsg("disttool", PS_LOG_INFO, "Deleted %d distComponents", numDeleted); 586 578 587 psFree(where);588 psFree(whereComponent);589 590 if (!psDBCommit(config->dbh)) {591 psError(PS_ERR_UNKNOWN, false, "database error");592 return false;593 }594 595 579 return true; 596 580 } … … 600 584 PS_ASSERT_PTR_NON_NULL(config, false); 601 585 586 PXOPT_LOOKUP_STR(stage, config->args, "-stage", true, false); 587 602 588 psMetadata *where = psMetadataAlloc(); 603 589 PXOPT_COPY_S64(config->args, where, "-dist_id", "dist_id", "=="); 604 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 605 pxAddLabelSearchArgs (config, where, "-label", "label", "=="); 590 pxAddLabelSearchArgs (config, where, "-label", "distRun.label", "=="); 606 591 607 592 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 608 593 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 609 594 610 // look for "inputs" that need to processed 611 psString query = pxDataGet("disttool_pendingcomponent.sql"); 595 psString queryFile = NULL; 596 psStringAppend(&queryFile, "disttool_pending_%s.sql", stage); 597 psString query = pxDataGet(queryFile); 612 598 if (!query) { 613 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement ");599 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement from %s", queryFile); 614 600 return false; 615 601 } … … 617 603 if (psListLength(where->list)) { 618 604 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 619 psStringAppend(&query, " WHERE%s", whereClause);605 psStringAppend(&query, " AND %s", whereClause); 620 606 psFree(whereClause); 621 607 } … … 629 615 } 630 616 631 // the query has where hooks for each stage. 632 // right now we aren't using them. 633 // XXX: I think that I want to change the query from a union of selects on the various 634 // stages to separate queries. As it is pending data at the later stages of the pipline 635 // will get blocked by pending earlier stages 636 psString raw_where = ""; 637 psString raw_clean_where = ""; 638 psString chip_where = ""; 639 psString camera_where = ""; 640 psString fake_where = ""; 641 psString warp_where = ""; 642 psString diff_where = ""; 643 psString stack_where = ""; 644 645 if (!p_psDBRunQueryF(config->dbh, 646 query, 647 raw_where, 648 raw_clean_where, 649 chip_where, 650 camera_where, 651 fake_where, 652 warp_where, 653 diff_where, 654 stack_where)) { 617 if (!p_psDBRunQuery(config->dbh, query)) { 655 618 psError(PS_ERR_UNKNOWN, false, "database error"); 656 619 psFree(query); … … 868 831 psMetadata *where = psMetadataAlloc(); 869 832 PXOPT_COPY_S64(config->args, where, "-dist_id", "dist_id", "=="); 833 PXOPT_COPY_STR(config->args, where, "-stage", "distRun.stage", "=="); 870 834 pxAddLabelSearchArgs (config, where, "-label", "distRun.label", "=="); 871 835 … … 939 903 // required values 940 904 PXOPT_LOOKUP_S64(dist_id, config->args, "-dist_id", true, false); 941 PXOPT_LOOKUP_S64( prod_id, config->args, "-prod_id", true, false);905 PXOPT_LOOKUP_S64(dest_id, config->args, "-dest_id", true, false); 942 906 943 907 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); … … 949 913 0, // fs_id 950 914 dist_id, 951 prod_id,915 dest_id, 952 916 name, 953 917 "full", … … 964 928 PXOPT_COPY_S64(config->args, where, "-fs_id", "fs_id", "=="); 965 929 PXOPT_COPY_S64(config->args, where, "-dist_id", "rcDSFileset.dist_id", "=="); 966 PXOPT_COPY_S64(config->args, where, "- prod_id", "prod_id", "==");930 PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "=="); 967 931 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "==");; 968 932 PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "=="); … … 1092 1056 PXOPT_COPY_S64(config->args, where, "-dist_id", "dist_id", "=="); 1093 1057 PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "=="); 1094 PXOPT_COPY_S64(config->args, where, "-prod_id", "prod_id", "==");1095 1058 PXOPT_COPY_S64(config->args, where, "-target_id","target_id", "=="); 1096 1059 PXOPT_COPY_S64(config->args, where, "-fs_id", "fs_id", "=="); … … 1433 1396 } 1434 1397 1435 static bool defined sproductMode(pxConfig *config)1398 static bool definedestinationMode(pxConfig *config) 1436 1399 { 1437 1400 PS_ASSERT_PTR_NON_NULL(config, false); 1438 1401 1439 1402 // required 1440 PXOPT_LOOKUP_STR(name, config->args, "-name", true, false);1441 PXOPT_LOOKUP_STR(dbname, config->args, "-ds_dbname", true, false);1442 PXOPT_LOOKUP_STR(dbhost, config->args, "-ds_dbhost", true, false);1443 1444 // XXX: should we insure that these names do not contatin any whitespace?1445 1446 rcDSProductRow *row = rcDSProductRowAlloc(1447 0, // prod_id1448 name,1449 dbname,1450 dbhost1451 );1452 1453 if (!row) {1454 psError(PS_ERR_UNKNOWN, false, "failed to allocate rcDSProduct object");1455 return false;1456 }1457 if (!rcDSProductInsertObject(config->dbh, row)) {1458 psError(PS_ERR_UNKNOWN, false, "database error");1459 psFree(row);1460 return false;1461 }1462 1463 // get the assigned target_id1464 row->prod_id = psDBLastInsertID(config->dbh);1465 1466 if (!rcDSProductPrintObject(stdout, row, true)) {1467 psError(PS_ERR_UNKNOWN, false, "failed to print object");1468 psFree(row);1469 return false;1470 }1471 1472 psFree(row);1473 1474 return true;1475 }1476 static bool updatedsproductMode(pxConfig *config)1477 {1478 PS_ASSERT_PTR_NON_NULL(config, false);1479 1480 psMetadata *where = psMetadataAlloc();1481 PXOPT_COPY_S64(config->args, where, "-prod_id", "prod_id", "==");1482 1483 PXOPT_LOOKUP_STR(dbname, config->args, "-ds_dbname", false, false);1484 PXOPT_LOOKUP_STR(dbhost, config->args, "-ds_dbhost", false, false);1485 1486 if (!(dbname || dbhost)) {1487 psError(PS_ERR_UNKNOWN, true, "one or more of dbname or dbhost is required");1488 psFree(where);1489 return false;1490 }1491 psString query = psStringCopy("UPDATE rcDSProduct SET");1492 psString sep = "";1493 if (dbname) {1494 psStringAppend(&query, " dbname = '%s'", dbname);1495 sep = ",";1496 }1497 if (dbhost) {1498 psStringAppend(&query, " %s dbhost = '%s'", sep, dbhost);1499 }1500 1501 if (psListLength(where->list)) {1502 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);1503 psStringAppend(&query, " WHERE %s", whereClause);1504 psFree(whereClause);1505 } else {1506 psError(PS_ERR_UNKNOWN, true, "search parameters are required");1507 psFree(where);1508 psFree(query);1509 return false;1510 }1511 psFree(where);1512 1513 if (!p_psDBRunQuery(config->dbh, query)) {1514 psError(PS_ERR_UNKNOWN, false, "database error");1515 psFree(query);1516 return false;1517 }1518 psFree(query);1519 1520 return true;1521 }1522 1523 static bool definedestinationMode(pxConfig *config)1524 {1525 PS_ASSERT_PTR_NON_NULL(config, false);1526 1527 // required1528 PXOPT_LOOKUP_S64(prod_id, config->args, "-prod_id", true, false);1529 1403 PXOPT_LOOKUP_STR(name, config->args, "-name", true, false); 1404 PXOPT_LOOKUP_STR(dbname, config->args, "-ds_dbname", true, false); 1405 PXOPT_LOOKUP_STR(dbhost, config->args, "-ds_dbhost", true, false); 1530 1406 1531 1407 // optional … … 1539 1415 rcDestinationRow *row = rcDestinationRowAlloc( 1540 1416 0, // dest_id 1541 prod_id,1542 1417 name, 1543 1418 status_uri, 1544 1419 comment, 1545 1420 last_fileset, 1421 dbname, 1422 dbhost, 1546 1423 state ? state : "enabled" 1547 1424 ); … … 1577 1454 psMetadata *where = psMetadataAlloc(); 1578 1455 PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "=="); 1579 PXOPT_COPY_S64(config->args, where, "-prod_id", "prod_id", "==");1580 1456 1581 1457 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); … … 1599 1475 // last_fileset normally gets set by updatercrunMode 1600 1476 // Allowing it to be set here might cause problems 1601 // especially since we are allowing selection by prod_id1477 // especially since we are allowing selection by dest_id 1602 1478 if (last_fileset) { 1603 1479 psStringAppend(&query, " %s last_fileset = '%s'", sep, last_fileset); … … 1631 1507 PS_ASSERT_PTR_NON_NULL(config, false); 1632 1508 1633 // required 1634 PXOPT_LOOKUP_S64(dest_id, config->args, "-dest_id", true, false); 1635 PXOPT_LOOKUP_S64(target_id, config->args, "-target_id", true, false); 1509 // one of these is required 1510 PXOPT_LOOKUP_S64(dest_id, config->args, "-dest_id", false, false); 1511 PXOPT_LOOKUP_STR(dest_name, config->args, "-dest_name", false, false); 1512 if (!dest_id && !dest_name) { 1513 psError(PS_ERR_UNKNOWN, true, "either dest_id or dest_name is required"); 1514 return false; 1515 } 1516 1517 // either target_id or stage and label are required 1518 PXOPT_LOOKUP_S64(target_id, config->args, "-target_id", false, false); 1519 PXOPT_LOOKUP_STR(stage, config->args, "-stage", false, false); 1520 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 1521 PXOPT_LOOKUP_STR(filter, config->args, "-filter", false, false); 1522 PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false); 1523 1524 if (!target_id) { 1525 bool error = false; 1526 if (!stage) { 1527 psError(PS_ERR_UNKNOWN, true, "stage is required if target_id is not supplied"); 1528 error = true; 1529 } 1530 if (!label) { 1531 psError(PS_ERR_UNKNOWN, !error, "label is required if target_id is not supplied"); 1532 error = true; 1533 } 1534 if (error) { 1535 return false; 1536 } 1537 } 1636 1538 1637 1539 // optional 1540 PXOPT_LOOKUP_S64(limit, config->args, "-limit", false, false); 1638 1541 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 1639 1640 // XXX: should we insure that these names do not contatin any whitespace? 1641 1642 rcInterestRow *row = rcInterestRowAlloc( 1643 0, // int_id 1644 dest_id, 1645 target_id, 1646 state ? state : "enabled" 1647 ); 1648 1649 if (!row) { 1650 psError(PS_ERR_UNKNOWN, false, "failed to allocate rcInterest object"); 1651 return false; 1652 } 1653 if (!rcInterestInsertObject(config->dbh, row)) { 1654 psError(PS_ERR_UNKNOWN, false, "database error"); 1655 psFree(row); 1656 return false; 1657 } 1658 1659 // get the assigned target_id 1660 row->int_id = psDBLastInsertID(config->dbh); 1661 1662 if (!rcInterestPrintObject(stdout, row, true)) { 1663 psError(PS_ERR_UNKNOWN, false, "failed to print object"); 1664 psFree(row); 1665 return false; 1666 } 1667 1668 psFree(row); 1542 if (state) { 1543 if (strcmp(state, "enabled") && strcmp(state, "disabled")) { 1544 psError(PS_ERR_PROGRAMMING, true, "state must be enabled or disabled"); 1545 return false; 1546 } 1547 } else { 1548 // default state 1549 state = "enabled"; 1550 } 1551 1552 // now that we've done all of our argument checking, copy the values to where 1553 psMetadata *where = psMetadataAlloc(); 1554 PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "=="); 1555 PXOPT_COPY_STR(config->args, where, "-dest_name", "rcDestination.name", "=="); 1556 PXOPT_COPY_S64(config->args, where, "-target_id", "target_id", "=="); 1557 PXOPT_COPY_STR(config->args, where, "-label", "label", "LIKE"); 1558 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE"); 1559 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 1560 1561 psString query = pxDataGet("disttool_defineinterest.sql"); 1562 1563 if (!psListLength(where->list)) { 1564 // can't get here 1565 psError(PS_ERR_PROGRAMMING, true, "search parameters are required"); 1566 psFree(where); 1567 psFree(query); 1568 return false; 1569 } 1570 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1571 psStringAppend(&query, " AND %s", whereClause); 1572 psFree(whereClause); 1573 psFree(where); 1574 if (clean) { 1575 psStringAppend(&query, " AND (distTarget.clean)"); 1576 } else { 1577 psStringAppend(&query, " AND (!distTarget.clean)"); 1578 } 1579 if (limit) { 1580 psString limitString = psDBGenerateLimitSQL(limit); 1581 psStringAppend(&query, " %s", limitString); 1582 psFree(limitString); 1583 } 1584 { 1585 // psStringSubstitute fails unless the input is a psString which it determines by 1586 // comparing the memory blocks free function to an expected value. 1587 // pxDataGet uses psSlurp which leaves a different free function on the memory block. 1588 // To work around this make a copy of the query before doing the substitution. 1589 psString queryCopy = psStringCopy(query); 1590 psFree(query); 1591 query = queryCopy; 1592 } 1593 // change the @STATE@ in the sql file to our state 1594 if (!psStringSubstitute(&query, state, "@STATE@")) { 1595 psError(PS_ERR_UNKNOWN, false, "failed to substitute state string"); 1596 return false; 1597 } 1598 1599 if (!p_psDBRunQuery(config->dbh, query)) { 1600 psError(PS_ERR_UNKNOWN, false, "database error"); 1601 psFree(query); 1602 return false; 1603 } 1604 psFree(query); 1605 int numInserted = psDBAffectedRows(config->dbh); 1606 printf("inserted %d rows into rcInterest\n", numInserted); 1669 1607 1670 1608 return true; … … 1710 1648 return true; 1711 1649 } 1712 1650 static bool listinterestsMode(pxConfig *config) 1651 { 1652 PS_ASSERT_PTR_NON_NULL(config, false); 1653 1654 psMetadata *where = psMetadataAlloc(); 1655 PXOPT_COPY_S64(config->args, where, "-int_id", "int_id", "=="); 1656 PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "=="); 1657 PXOPT_COPY_STR(config->args, where, "-dest_name", "name", "=="); 1658 PXOPT_COPY_S64(config->args, where, "-target_id", "target_id", "=="); 1659 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 1660 PXOPT_COPY_STR(config->args, where, "-label", "label", "LIKE"); 1661 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE"); 1662 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 1663 1664 PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false); 1665 PXOPT_LOOKUP_BOOL(full, config->args, "-full", false); 1666 1667 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1668 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1669 1670 if (clean && full) { 1671 psError(PS_ERR_UNKNOWN, false, "can't select both -clean and -full"); 1672 return false; 1673 } 1674 1675 psString query = pxDataGet("disttool_listinterests.sql"); 1676 1677 if (psListLength(where->list)) { 1678 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1679 psStringAppend(&query, " WHERE %s", whereClause); 1680 psFree(whereClause); 1681 if (clean) { 1682 psStringAppend(&query, " AND (clean)"); 1683 } else if (full) { 1684 psStringAppend(&query, " AND (!clean)"); 1685 } 1686 } else if (clean) { 1687 psStringAppend(&query, " WHERE clean"); 1688 } else if (full) { 1689 psStringAppend(&query, " WHERE !clean"); 1690 } 1691 psFree(where); 1692 1693 // treat limit == 0 as "no limit" 1694 if (limit) { 1695 psString limitString = psDBGenerateLimitSQL(limit); 1696 psStringAppend(&query, " %s", limitString); 1697 psFree(limitString); 1698 } 1699 1700 if (!p_psDBRunQuery(config->dbh, query)) { 1701 psError(PS_ERR_UNKNOWN, false, "database error"); 1702 psFree(query); 1703 if (!psDBRollback(config->dbh)) { 1704 psError(PS_ERR_UNKNOWN, false, "database error"); 1705 } 1706 return false; 1707 } 1708 psFree(query); 1709 1710 psArray *output = p_psDBFetchResult(config->dbh); 1711 if (!output) { 1712 psError(PS_ERR_UNKNOWN, false, "database error"); 1713 return false; 1714 } 1715 if (!psArrayLength(output)) { 1716 psTrace("disttool", PS_LOG_INFO, "no rows found"); 1717 psFree(output); 1718 return true; 1719 } 1720 1721 if (!ippdbPrintMetadatas(stdout, output, "rcInterest", !simple)) { 1722 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1723 psFree(output); 1724 return false; 1725 } 1726 1727 psFree(output); 1728 1729 return true; 1730 } -
branches/eam_branches/20090715/ippTools/src/disttool.h
r24001 r25624 31 31 DISTTOOL_MODE_PENDINGCOMPONENT, 32 32 DISTTOOL_MODE_ADDPROCESSEDCOMPONENT, 33 DISTTOOL_MODE_REVERTCOMPONENT, 33 34 DISTTOOL_MODE_PROCESSEDCOMPONENT, 34 35 DISTTOOL_MODE_TOADVANCE, … … 42 43 DISTTOOL_MODE_DEFINEDESTINATION, 43 44 DISTTOOL_MODE_UPDATEDESTINATION, 44 DISTTOOL_MODE_DEFINEDSPRODUCT,45 DISTTOOL_MODE_UPDATEDSPRODUCT,46 45 DISTTOOL_MODE_DEFINETARGET, 47 46 DISTTOOL_MODE_UPDATETARGET, … … 49 48 DISTTOOL_MODE_DEFINEINTEREST, 50 49 DISTTOOL_MODE_UPDATEINTEREST, 50 DISTTOOL_MODE_LISTINTERESTS, 51 51 } disttoolMode; 52 52 -
branches/eam_branches/20090715/ippTools/src/disttoolConfig.c
r24725 r25624 95 95 // -pendingcomponent 96 96 psMetadata *pendingcomponentArgs = psMetadataAlloc(); 97 psMetadataAddStr(pendingcomponentArgs, PS_LIST_TAIL, "-stage", 0, "limit results to runs for stage (required)", NULL); 97 98 psMetadataAddS64(pendingcomponentArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0); 98 psMetadataAddStr(pendingcomponentArgs, PS_LIST_TAIL, "-stage", 0, "limit results to runs for stage", NULL);99 99 psMetadataAddStr(pendingcomponentArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "limit results to label", NULL); 100 100 psMetadataAddU64(pendingcomponentArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); … … 111 111 psMetadataAddS32(addprocessedcomponentArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0); 112 112 113 // -revertcomponent 114 psMetadata *revertcomponentArgs = psMetadataAlloc(); 115 psMetadataAddS64(revertcomponentArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0); 116 psMetadataAddStr(revertcomponentArgs, PS_LIST_TAIL, "-component", 0, "define component", NULL); 117 psMetadataAddStr(revertcomponentArgs, PS_LIST_TAIL, "-stage", 0, "define stage", NULL); 118 psMetadataAddS64(revertcomponentArgs, PS_LIST_TAIL, "-stage_id", 0, "define stage_id", 0); 119 psMetadataAddStr(revertcomponentArgs, PS_LIST_TAIL, "-state", 0, "define state", NULL); 120 psMetadataAddStr(revertcomponentArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 121 psMetadataAddS16(revertcomponentArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0); 122 psMetadataAddBool(revertcomponentArgs, PS_LIST_TAIL, "-all", 0, "revert all faulted runs", NULL); 123 113 124 // -processedcomponent 114 125 psMetadata *processedcomponentArgs = psMetadataAlloc(); … … 135 146 psMetadata *addfilesetArgs = psMetadataAlloc(); 136 147 psMetadataAddS64(addfilesetArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0); 137 psMetadataAddS64(addfilesetArgs, PS_LIST_TAIL, "- prod_id", 0, "define prod_id", 0);148 psMetadataAddS64(addfilesetArgs, PS_LIST_TAIL, "-dest_id", 0, "define dest_id", 0); 138 149 psMetadataAddStr(addfilesetArgs, PS_LIST_TAIL, "-name", 0, "define file name", NULL); 139 150 psMetadataAddS32(addfilesetArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0); … … 150 161 psMetadataAddS64(revertfilesetArgs, PS_LIST_TAIL, "-fs_id", 0, "define fs_id", 0); 151 162 psMetadataAddS64(revertfilesetArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0); 152 psMetadataAddS64(revertfilesetArgs, PS_LIST_TAIL, "- prod_id", 0, "define dist_id", 0);163 psMetadataAddS64(revertfilesetArgs, PS_LIST_TAIL, "-dest_id", 0, "define dist_id", 0); 153 164 psMetadataAddStr(revertfilesetArgs, PS_LIST_TAIL, "-stage", 0, "define stage", NULL); 154 165 psMetadataAddS64(revertfilesetArgs, PS_LIST_TAIL, "-stage_id",0, "define stage_id", 0); … … 162 173 psMetadataAddS64(queuercrunArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0); 163 174 psMetadataAddS64(queuercrunArgs, PS_LIST_TAIL, "-dest_id", 0, "define dest_id", 0); 164 psMetadataAddS64(queuercrunArgs, PS_LIST_TAIL, "-prod_id", 0, "define prod_id", 0);165 175 psMetadataAddS64(queuercrunArgs, PS_LIST_TAIL, "-target_id", 0, "define target_id", 0); 166 176 psMetadataAddS64(queuercrunArgs, PS_LIST_TAIL, "-fs_id", 0, "define fs_id", 0); … … 189 199 psMetadataAddBool(revertrcrunArgs, PS_LIST_TAIL, "-all", 0, "revert all faulted runs", NULL); 190 200 191 // -definedsproduct192 psMetadata *definedsproductArgs = psMetadataAlloc();193 psMetadataAddStr(definedsproductArgs, PS_LIST_TAIL, "-name", 0, "define product name", NULL);194 psMetadataAddStr(definedsproductArgs, PS_LIST_TAIL, "-ds_dbname",0, "define data store database name", NULL);195 psMetadataAddStr(definedsproductArgs, PS_LIST_TAIL, "-ds_dbhost",0, "define data store database host", NULL);196 197 // -updatedsproduct198 // does this mode make sense?199 psMetadata *updatedsproductArgs = psMetadataAlloc();200 psMetadataAddS64(updatedsproductArgs, PS_LIST_TAIL, "-prod_id", 0, "select by prod_id", 0);201 // can't select by name because it isn't necssarily unique202 psMetadataAddStr(updatedsproductArgs, PS_LIST_TAIL, "-ds_dbname",0, "define data store database name", NULL);203 psMetadataAddStr(updatedsproductArgs, PS_LIST_TAIL, "-ds_dbhost",0, "define data store database host", NULL);204 205 201 // -definedestination 206 202 psMetadata *definedestinationArgs = psMetadataAlloc(); 207 psMetadataAddS64(definedestinationArgs, PS_LIST_TAIL, "-prod_id", 0, "define prod_id (required)", 0);208 203 psMetadataAddStr(definedestinationArgs, PS_LIST_TAIL, "-name", 0, "define destination name (required)", NULL); 204 psMetadataAddStr(definedestinationArgs, PS_LIST_TAIL, "-ds_dbname",0, "define data store database name (required)", NULL); 205 psMetadataAddStr(definedestinationArgs, PS_LIST_TAIL, "-ds_dbhost",0, "define data store database host (required)", NULL); 209 206 psMetadataAddStr(definedestinationArgs, PS_LIST_TAIL, "-status_uri", 0, "define status_uri", NULL); 210 207 psMetadataAddStr(definedestinationArgs, PS_LIST_TAIL, "-comment", 0, "define comment", NULL); … … 215 212 psMetadata *updatedestinationArgs = psMetadataAlloc(); 216 213 psMetadataAddS64(updatedestinationArgs, PS_LIST_TAIL, "-dest_id", 0, "define dest_id", 0); 217 psMetadataAddS64(updatedestinationArgs, PS_LIST_TAIL, "-prod_id", 0, "define prod_id", 0);218 214 psMetadataAddStr(updatedestinationArgs, PS_LIST_TAIL, "-name", 0, "define destination name", NULL); 219 215 psMetadataAddStr(updatedestinationArgs, PS_LIST_TAIL, "-status_uri", 0, "define status_uri", NULL); 220 216 psMetadataAddStr(updatedestinationArgs, PS_LIST_TAIL, "-comment", 0, "define comment", NULL); 221 // last_fileset gets updated by -updatercrun222 // psMetadataAddStr(updatedestinationArgs, PS_LIST_TAIL, "-set_last_fileset",0, "define last_fileset", NULL);223 217 psMetadataAddStr(updatedestinationArgs, PS_LIST_TAIL, "-set_state", 0, "define state", NULL); 224 218 … … 254 248 // -defineinterest 255 249 psMetadata *defineinterestArgs = psMetadataAlloc(); 256 psMetadataAddS64(defineinterestArgs, PS_LIST_TAIL, "-dest_id", 0, "define dest_id (required)", 0); 257 psMetadataAddS64(defineinterestArgs, PS_LIST_TAIL, "-target_id", 0, "define target_id (required)", 0); 250 psMetadataAddS64(defineinterestArgs, PS_LIST_TAIL, "-dest_id", 0, "define dest_id", 0); 251 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-dest_name", 0, "define destination name (LIKE comparison)", NULL); 252 psMetadataAddS64(defineinterestArgs, PS_LIST_TAIL, "-target_id", 0, "define target_id", 0); 253 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-stage", 0, "define stage", NULL); 254 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 255 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-filter", 0, "define filter (LIKE comparison)", NULL); 256 psMetadataAddBool(defineinterestArgs, PS_LIST_TAIL,"-clean", 0, "list clean targets", false); 258 257 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-set_state", 0, "define state", NULL); 258 psMetadataAddU64(defineinterestArgs, PS_LIST_TAIL, "-limit", 0, "limit number of targets listed to N", 0); 259 259 260 260 // -updateinterest … … 265 265 psMetadataAddStr(updateinterestArgs, PS_LIST_TAIL, "-set_state", 0, "define state (required)", NULL); 266 266 267 // -listinterests 268 psMetadata *listinterestsArgs = psMetadataAlloc(); 269 psMetadataAddS64(listinterestsArgs, PS_LIST_TAIL, "-target_id", 0, "list interests with target_id", 0); 270 psMetadataAddS64(listinterestsArgs, PS_LIST_TAIL, "-dest_id", 0, "list interests with dest_id", 0); 271 psMetadataAddS64(listinterestsArgs, PS_LIST_TAIL, "-int_id", 0, "list interests with int_id", 0); 272 psMetadataAddStr(listinterestsArgs, PS_LIST_TAIL, "-dest_name", 0, "list interests for destinationn name)", NULL); 273 psMetadataAddStr(listinterestsArgs, PS_LIST_TAIL, "-label", 0, "list interests for label (LIKE comparison)", NULL); 274 psMetadataAddStr(listinterestsArgs, PS_LIST_TAIL, "-filter", 0, "list interests by filter (LIKE comparison)", NULL); 275 psMetadataAddStr(listinterestsArgs, PS_LIST_TAIL, "-stage", 0, "list interests for stage", NULL); 276 psMetadataAddBool(listinterestsArgs, PS_LIST_TAIL,"-clean", 0, "list clean interests", false); 277 psMetadataAddBool(listinterestsArgs, PS_LIST_TAIL,"-full", 0, "list full interests", false); 278 psMetadataAddStr(listinterestsArgs, PS_LIST_TAIL, "-state", 0, "list interests in state", NULL); 279 psMetadataAddU64(listinterestsArgs, PS_LIST_TAIL, "-limit", 0, "limit number of interests listed to N", 0); 280 psMetadataAddBool(listinterestsArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 281 267 282 psMetadata *argSets = psMetadataAlloc(); 268 283 psMetadata *modes = psMetadataAlloc(); … … 272 287 PXOPT_ADD_MODE("-updaterun", "", DISTTOOL_MODE_UPDATERUN, updaterunArgs); 273 288 PXOPT_ADD_MODE("-revertrun", "", DISTTOOL_MODE_REVERTRUN, revertrunArgs); 274 PXOPT_ADD_MODE("-pendingcomponent", "", DISTTOOL_MODE_PENDINGCOMPONENT, pendingcomponentArgs); 275 PXOPT_ADD_MODE("-addprocessedcomponent", "", DISTTOOL_MODE_ADDPROCESSEDCOMPONENT, addprocessedcomponentArgs); 289 PXOPT_ADD_MODE("-pendingcomponent", "", DISTTOOL_MODE_PENDINGCOMPONENT, pendingcomponentArgs); 290 PXOPT_ADD_MODE("-addprocessedcomponent", "", DISTTOOL_MODE_ADDPROCESSEDCOMPONENT, addprocessedcomponentArgs); 291 PXOPT_ADD_MODE("-revertcomponent", "", DISTTOOL_MODE_REVERTCOMPONENT, revertcomponentArgs); 276 292 PXOPT_ADD_MODE("-processedcomponent", "", DISTTOOL_MODE_PROCESSEDCOMPONENT, processedcomponentArgs); 277 293 PXOPT_ADD_MODE("-toadvance", "", DISTTOOL_MODE_TOADVANCE, toadvanceArgs); … … 284 300 PXOPT_ADD_MODE("-pendingdest", "", DISTTOOL_MODE_PENDINGDEST, pendingdestArgs); 285 301 286 PXOPT_ADD_MODE("-definedsproduct", "", DISTTOOL_MODE_DEFINEDSPRODUCT, definedsproductArgs);287 PXOPT_ADD_MODE("-updatedsproduct", "", DISTTOOL_MODE_UPDATEDSPRODUCT, updatedsproductArgs);288 // PXOPT_ADD_MODE("-listdsproduct", "", DISTTOOL_MODE_LISTDSPRODUCT, updatedsproductArgs);289 290 302 PXOPT_ADD_MODE("-definedestination", "", DISTTOOL_MODE_DEFINEDESTINATION, definedestinationArgs); 291 303 PXOPT_ADD_MODE("-updatedestination", "", DISTTOOL_MODE_UPDATEDESTINATION, updatedestinationArgs); … … 298 310 PXOPT_ADD_MODE("-defineinterest", "", DISTTOOL_MODE_DEFINEINTEREST, defineinterestArgs); 299 311 PXOPT_ADD_MODE("-updateinterest", "", DISTTOOL_MODE_UPDATEINTEREST, updateinterestArgs); 300 // PXOPT_ADD_MODE("-listinterest", "", DISTTOOL_MODE_LISTINTEREST, listinterestArgs);312 PXOPT_ADD_MODE("-listinterests", "", DISTTOOL_MODE_LISTINTERESTS, listinterestsArgs); 301 313 302 314 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
branches/eam_branches/20090715/ippTools/src/magicdstool.c
r25022 r25624 37 37 static bool todestreakMode(pxConfig *config); 38 38 static bool adddestreakedfileMode(pxConfig *config); 39 static bool advancerunMode(pxConfig *config); 39 40 static bool revertdestreakedfileMode(pxConfig *config); 40 41 static bool getskycellsMode(pxConfig *config); 41 42 static bool toremoveMode(pxConfig *config); 42 static bool torestoreMode(pxConfig *config);43 43 static bool torevertMode(pxConfig *config); 44 static bool completedrevertMode(pxConfig *config); 44 45 45 46 static bool setmagicDSRunState(pxConfig *config, psS64 magic_id, const char *state); 46 static bool magicDSRunComplete(pxConfig *config, bool setmagicked);47 47 static bool magicDSGetIDs(pxConfig *config, psString stage, psS64 magic_id, psS64 *stage_id, psS64 *cam_id); 48 48 … … 70 70 MODECASE(MAGICDSTOOL_MODE_TODESTREAK, todestreakMode); 71 71 MODECASE(MAGICDSTOOL_MODE_ADDDESTREAKEDFILE, adddestreakedfileMode); 72 MODECASE(MAGICDSTOOL_MODE_ADVANCERUN, advancerunMode); 72 73 MODECASE(MAGICDSTOOL_MODE_REVERTDESTREAKEDFILE,revertdestreakedfileMode); 73 74 MODECASE(MAGICDSTOOL_MODE_GETSKYCELLS, getskycellsMode); 74 75 MODECASE(MAGICDSTOOL_MODE_TOREMOVE, toremoveMode); 75 MODECASE(MAGICDSTOOL_MODE_TORESTORE, torestoreMode);76 76 MODECASE(MAGICDSTOOL_MODE_TOREVERT, torevertMode); 77 MODECASE(MAGICDSTOOL_MODE_COMPLETEDREVERT, completedrevertMode); 77 78 default: 78 79 psAbort("invalid option (this should not happen)"); … … 105 106 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", false, false); 106 107 PXOPT_LOOKUP_STR(recoveryroot, config->args, "-recoveryroot", false, false); 107 PXOPT_LOOKUP_BOOL( re_place, config->args, "-replace", false);108 PXOPT_LOOKUP_BOOL(noreplace, config->args, "-noreplace", false); 108 109 PXOPT_LOOKUP_STR(set_label, config->args, "-set_label", false, false); 109 110 PXOPT_LOOKUP_BOOL(rerun, config->args, "-rerun", false); … … 119 120 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); 120 121 PXOPT_COPY_S64(config->args, where, "-diff_id", "diff_id", "=="); 121 PXOPT_COPY_S64(config->args, where, "-magic_id","magic _id", "==");122 PXOPT_COPY_S64(config->args, where, "-magic_id","magicRun.magic_id", "=="); 122 123 PXOPT_COPY_S32(config->args, where, "-streaks_max","streaks", "<="); 123 124 … … 268 269 outroot, 269 270 recoveryroot, 270 re_place,271 noreplace ? 0 :1, // re_place 271 272 0); // remove 272 273 … … 396 397 PS_ASSERT_PTR_NON_NULL(config, false); 397 398 399 PXOPT_LOOKUP_STR(stage, config->args, "-stage", true, false); 400 398 401 psMetadata *where = psMetadataAlloc(); 399 PXOPT_COPY_S64(config->args, where, "-magic_ds_id", "magic _ds_id", "==");402 PXOPT_COPY_S64(config->args, where, "-magic_ds_id", "magicDSRun.magic_ds_id", "=="); 400 403 PXOPT_COPY_S64(config->args, where, "-magic_id", "magic_id", "=="); 401 pxAddLabelSearchArgs (config, where, "-label", "label", "=="); 402 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 404 pxAddLabelSearchArgs (config, where, "-label", "magicDSRun.label", "=="); 403 405 404 406 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 405 407 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 406 408 407 // look for "inputs" that need to processed 408 psString query = pxDataGet("magicdstool_todestreak.sql"); 409 psString sql_file = NULL; 410 psStringAppend(&sql_file, "magicdstool_todestreak_%s.sql", stage); 411 412 psString query = pxDataGet(sql_file); 409 413 if (!query) { 410 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 411 return false; 412 } 414 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement from %s", sql_file); 415 psFree(sql_file); 416 return false; 417 } 418 psFree(sql_file); 413 419 414 420 if (psListLength(where->list)) { 415 421 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 416 psStringAppend(&query, " WHERE%s", whereClause);422 psStringAppend(&query, " AND %s", whereClause); 417 423 psFree(whereClause); 418 424 } … … 656 662 } 657 663 658 if (!magicDSRunComplete(config, setmagicked)) {659 // rollback660 if (!psDBRollback(config->dbh)) {661 psError(PS_ERR_UNKNOWN, false, "database error");662 }663 psError(PS_ERR_UNKNOWN, false, "database error");664 return false;665 }666 667 664 if (!psDBCommit(config->dbh)) { 668 665 psError(PS_ERR_UNKNOWN, false, "database error"); … … 738 735 } 739 736 740 static bool magicDSRunComplete(pxConfig *config, bool setmagicked)737 static bool advancerunMode(pxConfig *config) 741 738 { 742 739 PS_ASSERT_PTR_NON_NULL(config, false); 740 741 psMetadata *where = psMetadataAlloc(); 742 PXOPT_COPY_S64(config->args, where, "-magic_ds_id", "magicDSRun.magic_ds_id", "=="); 743 pxAddLabelSearchArgs (config, where, "-label", "magicDSRun.label", "=="); 744 745 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 743 746 744 747 // look for completed magicDSRuns … … 749 752 } 750 753 754 if (psListLength(where->list)) { 755 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 756 psStringAppend(&query, " WHERE %s", whereClause); 757 psFree(whereClause); 758 } 759 751 760 if (!p_psDBRunQuery(config->dbh, query)) { 752 761 psError(PS_ERR_UNKNOWN, false, "database error"); … … 766 775 return true; 767 776 } 777 if (!psDBTransaction(config->dbh)) { 778 psError(PS_ERR_UNKNOWN, false, "database error"); 779 return false; 780 } 768 781 for (long i = 0; i < psArrayLength(output); i++) { 769 782 psMetadata *row = output->data[i]; … … 771 784 psS64 magic_ds_id = psMetadataLookupS64(NULL, row, "magic_ds_id"); 772 785 773 // if requested, set stageRun.magicked 786 // if re_place, set stageRun.magicked 787 bool setmagicked = psMetadataLookupBool(NULL, row, "re_place"); 774 788 if (setmagicked && !setRunMagicked(config, magic_ds_id)) { 775 789 psError(PS_ERR_UNKNOWN, false, "failed to change stageRun.magicked for magic_ds_id: %" PRId64, 776 790 magic_ds_id); 791 if (!psDBRollback(config->dbh)) { 792 psError(PS_ERR_UNKNOWN, false, "database error"); 793 } 777 794 return false; 778 795 } … … 783 800 magic_ds_id); 784 801 psFree(output); 802 if (!psDBRollback(config->dbh)) { 803 psError(PS_ERR_UNKNOWN, false, "database error"); 804 } 785 805 return false; 786 806 } 787 807 } 788 808 if (!psDBCommit(config->dbh)) { 809 psError(PS_ERR_UNKNOWN, false, "database error"); 810 return false; 811 } 789 812 790 813 return true; … … 795 818 { 796 819 PS_ASSERT_PTR_NON_NULL(config, false); 820 821 PXOPT_LOOKUP_BOOL(i_am_sure, config->args, "-i_am_sure", true); 822 if (!i_am_sure) { 823 psError(PS_ERR_UNKNOWN, true, "Reverting destreaked files must be done carefully. -i_am_sure is required."); 824 return false; 825 } 797 826 798 827 psMetadata *where = psMetadataAlloc(); … … 802 831 pxAddLabelSearchArgs (config, where, "-label", "label", "=="); 803 832 804 psString query = p sStringCopy("DELETE FROM magicDSFile USING magicDSFile, magicDSRun WHERE (magicDSRun.magic_ds_id = magicDSFile.magic_ds_id) AND magicDSFile.fault != 0");833 psString query = pxDataGet("magicdstool_revertdestreakedfile.sql"); 805 834 806 835 if (psListLength(where->list)) { … … 808 837 psStringAppend(&query, " AND %s", whereClause); 809 838 psFree(whereClause); 839 } else { 840 psError(PS_ERR_UNKNOWN, true, "search arguments are required"); 841 return false; 810 842 } 811 843 psFree(where); … … 813 845 if (!p_psDBRunQuery(config->dbh, query)) { 814 846 psError(PS_ERR_UNKNOWN, false, "failed to revert"); 815 return false; 816 } 817 return true; 818 } 819 820 static bool getskycellsMode(pxConfig *config) 821 { 822 // required 823 PXOPT_LOOKUP_S64(magic_ds_id, config->args, "-magic_ds_id", true, false); 847 psFree(query); 848 return false; 849 } 850 psFree(query); 851 return true; 852 } 853 854 static bool completedrevertMode(pxConfig *config) 855 { 856 PS_ASSERT_PTR_NON_NULL(config, false); 824 857 825 858 psMetadata *where = psMetadataAlloc(); 826 PXOPT_COPY_STR(config->args, where, "-class_id", "warpSkyCellMap.class_id", "=="); 827 PXOPT_COPY_STR(config->args, where, "-skycell_id", "warpSkyCellMap.skycell_id", "=="); 828 829 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 830 831 psString query = pxDataGet("magicdstool_getskycells.sql"); 832 if (!query) { 833 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 834 return false; 835 } 836 859 PXOPT_COPY_S64(config->args, where, "-magic_ds_id", "magicDSRun.magic_ds_id", "=="); 860 pxAddLabelSearchArgs (config, where, "-label", "label", "=="); 861 862 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 863 864 psString query = pxDataGet("magicdstool_completedrevert.sql"); 865 // treat limit == 0 as "no limit" 866 if (limit) { 867 psString limitString = psDBGenerateLimitSQL(limit); 868 psStringAppend(&query, " %s", limitString); 869 psFree(limitString); 870 } 871 872 psString whereString = NULL; 837 873 if (psListLength(where->list)) { 838 874 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 839 psStringAppend(& query, "AND %s", whereClause);875 psStringAppend(&whereString, "\nAND %s", whereClause); 840 876 psFree(whereClause); 841 877 } 842 878 psFree(where); 843 879 844 if (!p_psDBRunQueryF(config->dbh, query, magic_ds_id)) { 845 psError(PS_ERR_UNKNOWN, false, "database error"); 846 psFree(query); 847 return false; 848 } 880 if (!p_psDBRunQueryF(config->dbh, query, whereString ? whereString : "")) { 881 psFree(whereString); 882 psError(PS_ERR_UNKNOWN, false, "failed to revert"); 883 return false; 884 } 885 psFree(whereString); 849 886 psFree(query); 850 851 887 psArray *output = p_psDBFetchResult(config->dbh); 852 888 if (!output) { … … 868 904 return true; 869 905 } 870 871 if (psArrayLength(output)) { 872 // negative simple so the default is true 873 if (!ippdbPrintMetadatas(stdout, output, "magicDiffSkyfile", !simple)) { 874 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 906 for (int i=0; i<psArrayLength(output); i++) { 907 psMetadata *row = output->data[i]; 908 psS64 magic_ds_id = psMetadataLookupS64(NULL, row, "magic_ds_id"); 909 psString old_state = psMetadataLookupStr(NULL, row, "state"); 910 psString new_state; 911 if (!strcmp(old_state, "goto_censored")) { 912 new_state = "censored"; 913 } else if (!strcmp(old_state, "goto_restored")) { 914 new_state = "restored"; 915 } else { 916 psError(PXTOOLS_ERR_PROG, true, "unexpected state found: %s", old_state); 875 917 psFree(output); 876 918 return false; 877 919 } 878 } 879 920 char *query2 = "UPDATE magicDSRun SET state = '%s' WHERE magic_ds_id = %" PRId64; 921 if (!p_psDBRunQueryF(config->dbh, query2, new_state, magic_ds_id)) { 922 psError(PS_ERR_UNKNOWN, false, "failed to set run magicDSRun.state to %s", new_state); 923 return false; 924 } 925 } 880 926 psFree(output); 881 927 … … 883 929 } 884 930 885 static bool setmagicDSRunState(pxConfig *config, psS64 magic_ds_id, const char *state) 886 { 887 PS_ASSERT_PTR_NON_NULL(state, false); 888 889 // check that state is a valid string value 890 if (!( 891 (strncmp(state, "new", 4) == 0) 892 || (strncmp(state, "full", 5) == 0) 893 ) 894 ) { 895 psError(PS_ERR_UNKNOWN, false, 896 "invalid magicDSRun state: %s", state); 897 return false; 898 } 899 900 char *query = "UPDATE magicDSRun SET state = '%s' WHERE magic_ds_id = %" PRId64; 901 if (!p_psDBRunQueryF(config->dbh, query, state, magic_ds_id)) { 902 psError(PS_ERR_UNKNOWN, false, 903 "failed to change state for magic_id %" PRId64, magic_ds_id); 904 return false; 905 } 906 907 return true; 908 } 909 910 static bool toremoveMode(pxConfig *config) 911 { 912 PS_ASSERT_PTR_NON_NULL(config, false); 931 static bool getskycellsMode(pxConfig *config) 932 { 933 // required 934 PXOPT_LOOKUP_S64(magic_ds_id, config->args, "-magic_ds_id", true, false); 913 935 914 936 psMetadata *where = psMetadataAlloc(); 915 PXOPT_COPY_S64(config->args, where, "-magic_ds_id", "magic_ds_id", "=="); 916 PXOPT_COPY_S64(config->args, where, "-magic_id", "magic_id", "=="); 917 pxAddLabelSearchArgs (config, where, "-label", "label", "=="); 918 919 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 937 PXOPT_COPY_STR(config->args, where, "-class_id", "warpSkyCellMap.class_id", "=="); 938 PXOPT_COPY_STR(config->args, where, "-skycell_id", "warpSkyCellMap.skycell_id", "=="); 939 920 940 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 921 941 922 // look for "inputs" that need to processed 923 psString query = pxDataGet("magicdstool_toremove.sql"); 942 psString query = pxDataGet("magicdstool_getskycells.sql"); 924 943 if (!query) { 925 944 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); … … 929 948 if (psListLength(where->list)) { 930 949 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 931 psStringAppend(&query, " WHERE%s", whereClause);950 psStringAppend(&query, " AND %s", whereClause); 932 951 psFree(whereClause); 933 952 } 934 953 psFree(where); 935 954 936 // treat limit == 0 as "no limit" 937 if (limit) { 938 psString limitString = psDBGenerateLimitSQL(limit); 939 psStringAppend(&query, " %s", limitString); 940 psFree(limitString); 941 } 942 943 if (!p_psDBRunQuery(config->dbh, query)) { 955 if (!p_psDBRunQueryF(config->dbh, query, magic_ds_id)) { 944 956 psError(PS_ERR_UNKNOWN, false, "database error"); 945 957 psFree(query); … … 970 982 if (psArrayLength(output)) { 971 983 // negative simple so the default is true 972 if (!ippdbPrintMetadatas(stdout, output, " toremove", !simple)) {984 if (!ippdbPrintMetadatas(stdout, output, "magicDiffSkyfile", !simple)) { 973 985 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 974 986 psFree(output); … … 981 993 return true; 982 994 } 983 static bool torestoreMode(pxConfig *config) 995 996 static bool setmagicDSRunState(pxConfig *config, psS64 magic_ds_id, const char *state) 997 { 998 PS_ASSERT_PTR_NON_NULL(state, false); 999 1000 // check that state is a valid string value 1001 if (!((strcmp(state, "new") == 0) || 1002 (strcmp(state, "full") == 0) || 1003 (strcmp(state, "restored") == 0) || 1004 (strcmp(state, "censored") == 0) || 1005 (strcmp(state, "purged") == 0) || 1006 (strcmp(state, "goto_restored") == 0) || 1007 (strcmp(state, "goto_censored") == 0) || 1008 (strcmp(state, "goto_purged") == 0)) 1009 ) { 1010 psError(PS_ERR_UNKNOWN, false, 1011 "invalid magicDSRun state: %s", state); 1012 return false; 1013 } 1014 1015 char *query = "UPDATE magicDSRun SET state = '%s' WHERE magic_ds_id = %" PRId64; 1016 if (!p_psDBRunQueryF(config->dbh, query, state, magic_ds_id)) { 1017 psError(PS_ERR_UNKNOWN, false, 1018 "failed to change state for magic_id %" PRId64, magic_ds_id); 1019 return false; 1020 } 1021 1022 return true; 1023 } 1024 1025 static bool toremoveMode(pxConfig *config) 984 1026 { 985 1027 PS_ASSERT_PTR_NON_NULL(config, false); … … 994 1036 995 1037 // look for "inputs" that need to processed 996 psString query = pxDataGet("magicdstool_tore store.sql");1038 psString query = pxDataGet("magicdstool_toremove.sql"); 997 1039 if (!query) { 998 1040 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); … … 1043 1085 if (psArrayLength(output)) { 1044 1086 // negative simple so the default is true 1045 if (!ippdbPrintMetadatas(stdout, output, "tore store", !simple)) {1087 if (!ippdbPrintMetadatas(stdout, output, "toremove", !simple)) { 1046 1088 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1047 1089 psFree(output); … … 1054 1096 return true; 1055 1097 } 1056 1057 1098 1058 1099 static bool torevertMode(pxConfig *config) -
branches/eam_branches/20090715/ippTools/src/magicdstool.h
r24683 r25624 30 30 MAGICDSTOOL_MODE_TODESTREAK, 31 31 MAGICDSTOOL_MODE_ADDDESTREAKEDFILE, 32 MAGICDSTOOL_MODE_ADVANCERUN, 32 33 MAGICDSTOOL_MODE_REVERTDESTREAKEDFILE, 33 34 MAGICDSTOOL_MODE_GETSKYCELLS, 34 35 MAGICDSTOOL_MODE_TOREMOVE, 35 MAGICDSTOOL_MODE_TORESTORE,36 36 MAGICDSTOOL_MODE_TOREVERT, 37 MAGICDSTOOL_MODE_COMPLETEDREVERT, 37 38 } MAGICDStoolMode; 38 39 -
branches/eam_branches/20090715/ippTools/src/magicdstoolConfig.c
r25022 r25624 52 52 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir", NULL); 53 53 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-recoveryroot", 0, "define recovery directory", NULL); 54 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "- replace", 0, "replace input files with the destreaked versions", false);54 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-noreplace", 0, "do not replace input files with the destreaked versions", false); 55 55 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_label", 0, "define label", NULL); 56 56 … … 75 75 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-outroot", 0, "define output directory (required)", NULL); 76 76 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-recoveryroot", 0, "define recovery directory", NULL); 77 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "- replace", 0, "use the simple output format", false);78 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-remove", 0, "use the simple output format", false);77 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-noreplace", 0, "do not replace the input wit with the destreaked versions", false); 78 // psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-remove", 0, "use the simple output format", false); 79 79 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 80 80 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 93 93 // -todestreak 94 94 psMetadata *todestreakArgs = psMetadataAlloc(); 95 psMetadataAddStr(todestreakArgs, PS_LIST_TAIL, "-stage", 0, "limit query to stage (required)", NULL); 95 96 psMetadataAddS64(todestreakArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "search by magic Destreak ID", 0); 96 97 psMetadataAddS64(todestreakArgs, PS_LIST_TAIL, "-magic_id", 0, "search by magic ID", 0); 97 98 psMetadataAddStr(todestreakArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label", NULL); 98 psMetadataAddStr(todestreakArgs, PS_LIST_TAIL, "-stage", 0, "limit query to stage", NULL);99 99 psMetadataAddU64(todestreakArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 100 100 psMetadataAddBool(todestreakArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 114 114 psMetadataAddStr(revertdestreakedfileArgs, PS_LIST_TAIL, "-component", 0, "search by component", NULL); 115 115 psMetadataAddS16(revertdestreakedfileArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 116 psMetadataAddBool(revertdestreakedfileArgs, PS_LIST_TAIL, "-i_am_sure", 0, "confirm that you know what you are doing", false); 116 117 psMetadataAddStr(revertdestreakedfileArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label", NULL); 117 118 118 119 // -getskycells 119 120 psMetadata *getskycellsArgs = psMetadataAlloc(); 120 psMetadataAddS64(getskycellsArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "define magic de-streak ID (required)", 0);121 psMetadataAddS64(getskycellsArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "define magic de-streak ID", 0); 121 122 psMetadataAddStr(getskycellsArgs, PS_LIST_TAIL, "-class_id", 0, "define class identifier", NULL); 122 123 psMetadataAddStr(getskycellsArgs, PS_LIST_TAIL, "-skycell_id", 0, "define skycell identifier", NULL); … … 130 131 psMetadataAddU64(toremoveArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 131 132 psMetadataAddBool(toremoveArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 132 133 // -torestore134 psMetadata *torestoreArgs = psMetadataAlloc();135 psMetadataAddS64(torestoreArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "search by magic Destreak ID", 0);136 psMetadataAddS64(torestoreArgs, PS_LIST_TAIL, "-magic_id", 0, "search by magic ID", 0);137 psMetadataAddStr(torestoreArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label", NULL);138 psMetadataAddU64(torestoreArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0);139 psMetadataAddBool(torestoreArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);140 133 141 134 // -torevert … … 147 140 psMetadataAddU64(torevertArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 148 141 psMetadataAddBool(torevertArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 142 143 // -completedrevert 144 psMetadata *completedrevertArgs = psMetadataAlloc(); 145 psMetadataAddS64(completedrevertArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "search by magic Destreak ID", 0); 146 psMetadataAddStr(completedrevertArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label", NULL); 147 psMetadataAddU64(completedrevertArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 148 149 // -advancerun 150 psMetadata *advancerunArgs = psMetadataAlloc(); 151 psMetadataAddS64(advancerunArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "search by magic Destreak ID", 0); 152 psMetadataAddStr(advancerunArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label", NULL); 153 psMetadataAddU64(advancerunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 149 154 150 155 psFree(now); … … 163 168 PXOPT_ADD_MODE("-adddestreakedfile", "add a de-streaked file", 164 169 MAGICDSTOOL_MODE_ADDDESTREAKEDFILE, adddestreakedfileArgs); 170 PXOPT_ADD_MODE("-advancerun", "change state for runs that have finished destrreaking", 171 MAGICDSTOOL_MODE_ADVANCERUN, advancerunArgs); 165 172 PXOPT_ADD_MODE("-revertdestreakedfile", " revert a faulted de-streaked file", 166 173 MAGICDSTOOL_MODE_REVERTDESTREAKEDFILE, revertdestreakedfileArgs); … … 169 176 PXOPT_ADD_MODE("-toremove", "backup images pending removal", 170 177 MAGICDSTOOL_MODE_TOREMOVE, toremoveArgs); 171 PXOPT_ADD_MODE("-torestore", "images pending restore of exicsed streak pixels", 172 MAGICDSTOOL_MODE_TORESTORE, torestoreArgs); 173 PXOPT_ADD_MODE("-torevert", "faulted images to revert", 178 PXOPT_ADD_MODE("-torevert", "images to restore or revert", 174 179 MAGICDSTOOL_MODE_TOREVERT, torevertArgs); 180 181 PXOPT_ADD_MODE("-completedrevert", "change state for runs that have finished reverting", 182 MAGICDSTOOL_MODE_COMPLETEDREVERT, completedrevertArgs); 183 175 184 176 185 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
branches/eam_branches/20090715/ippTools/src/magictool.c
r25022 r25624 1393 1393 } 1394 1394 1395 static bool censorStage(pxConfig *config, psString stage, psString whereClause)1396 {1397 psString queryFile = NULL;1398 psStringAppend(&queryFile, "magictool_censor_%s.sql", stage);1399 psString query = pxDataGet(queryFile);1400 if (!query) {1401 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement from %s", queryFile);1402 psFree(queryFile);1403 if (!psDBRollback(config->dbh)) {1404 psError(PS_ERR_UNKNOWN, false, "database error");1405 }1406 return false;1407 }1408 psFree(queryFile);1409 1410 psStringAppend(&query, " WHERE %s", whereClause);1411 1412 if (!p_psDBRunQuery(config->dbh, query)) {1413 psError(PS_ERR_UNKNOWN, false, "database error");1414 psFree(query);1415 if (!psDBRollback(config->dbh)) {1416 psError(PS_ERR_UNKNOWN, false, "database error");1417 }1418 return false;1419 }1420 psFree(query);1421 1422 return true;1423 }1424 1425 1395 static bool censorrunMode(pxConfig *config) 1426 1396 { 1427 1397 PS_ASSERT_PTR_NON_NULL(config, false); 1428 1398 1429 psError(PS_ERR_PROGRAMMING, true, "-censorrun mode not ready yet");1430 return false;1431 1432 1399 psMetadata *where = psMetadataAlloc(); 1400 1401 PXOPT_LOOKUP_S64(magic_id, config->args, "-magic_id", false, false); 1402 PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", false, false); 1403 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 1404 1405 if (!magic_id) { 1406 if (!exp_id && !label) { 1407 psError(PS_ERR_UNKNOWN, true, "either -magic_id or exp_id and label is required"); 1408 return false; 1409 } 1410 } 1433 1411 1434 1412 // at least one of these required 1435 1413 PXOPT_COPY_S64(config->args, where, "-magic_id", "magic_id", "=="); 1436 1414 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1415 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 1437 1416 1438 1417 if (!psListLength(where->list)) { … … 1470 1449 // Now queue any destreaked files to be re-verted 1471 1450 1472 // note: on failure censorStage issues the rollback1473 if (! censorStage(config, "raw", whereClause)) {1451 // note: on failure magicRestoreStage issues the rollback 1452 if (!magicRestoreStage(config, "raw", whereClause, "goto_censored")) { 1474 1453 psFree(whereClause); 1475 1454 return false; 1476 1455 } 1477 if (! censorStage(config, "chip", whereClause)) {1456 if (!magicRestoreStage(config, "chip", whereClause, "goto_censored")) { 1478 1457 psFree(whereClause); 1479 1458 return false; 1480 1459 } 1481 if (! censorStage(config, "camera", whereClause)) {1460 if (!magicRestoreStage(config, "camera", whereClause, "goto_censored")) { 1482 1461 psFree(whereClause); 1483 1462 return false; 1484 1463 } 1485 if (! censorStage(config, "warp", whereClause)) {1464 if (!magicRestoreStage(config, "warp", whereClause, "goto_censored")) { 1486 1465 psFree(whereClause); 1487 1466 return false; 1488 1467 } 1489 if (! censorStage(config, "diff", whereClause)) {1468 if (!magicRestoreStage(config, "diff", whereClause, "goto_censored")) { 1490 1469 psFree(whereClause); 1491 1470 return false; -
branches/eam_branches/20090715/ippTools/src/magictoolConfig.c
r25022 r25624 165 165 psMetadataAddS64(censorrunArgs, PS_LIST_TAIL, "-magic_id", 0, "define magictool ID", 0); 166 166 psMetadataAddS64(censorrunArgs, PS_LIST_TAIL, "-exp_id", 0, "define exposure ID", 0); 167 psMetadataAddStr(censorrunArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 167 168 168 169 psFree(now); -
branches/eam_branches/20090715/ippTools/src/pstamptool.c
r25400 r25624 228 228 PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false); 229 229 PXOPT_LOOKUP_STR(name, config->args, "-name", false, false); 230 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 230 231 PXOPT_LOOKUP_S64(ds_id, config->args, "-ds_id", false, false); 231 232 … … 236 237 name, 237 238 NULL, // reqType 239 label, 238 240 NULL, // outProduct 239 241 uri, … … 765 767 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 766 768 PXOPT_COPY_S64(config->args, where, "-fault", "fault", "=="); 767 768 if (!psListLength(where->list)) { 769 PXOPT_COPY_S64(config->args, where, "-req_id_min", "req_id", ">="); 770 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 771 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 772 773 psString query = pxDataGet("pstamptool_revertjob.sql"); 774 if (!psListLength(where->list) && !all) { 769 775 psFree(where); 770 psError(PXTOOLS_ERR_DATA, false, "search parameters are required");771 return false; 772 } 773 774 psString query = pxDataGet("pstamptool_revertjob.sql");775 psString whereClause = psDBGenerateWhereConditionSQL(where, "pstampJob");776 psStringAppend(&query, " AND %s",whereClause);777 psFree(whereClause);776 psError(PXTOOLS_ERR_DATA, false, "search parameters or -all are required"); 777 return false; 778 } 779 if (psListLength(where->list)) { 780 psString whereClause = psDBGenerateWhereConditionSQL(where, "pstampJob"); 781 psStringAppend(&query, " AND %s", whereClause); 782 psFree(whereClause); 783 } 778 784 psFree(where); 779 785 -
branches/eam_branches/20090715/ippTools/src/pstamptoolConfig.c
r25400 r25624 63 63 // -addreq 64 64 psMetadata *addreqArgs = psMetadataAlloc(); 65 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-uri", 0, "define request file uri (required)", NULL);66 psMetadataAddS64(addreqArgs, PS_LIST_TAIL, "-ds_id", 0, "define request ds_id", 0);65 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-uri", 0, "define request file uri (required)", NULL); 66 psMetadataAddS64(addreqArgs, PS_LIST_TAIL, "-ds_id", 0, "define request ds_id", 0); 67 67 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-name", 0, "define request name", NULL); 68 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-label", 0, "define request label", NULL); 68 69 69 70 // -pendingreq … … 135 136 psMetadata *revertjobArgs = psMetadataAlloc(); 136 137 psMetadataAddS64(revertjobArgs, PS_LIST_TAIL, "-req_id", 0, "req_id to revert", 0); 138 psMetadataAddS64(revertjobArgs, PS_LIST_TAIL, "-req_id_min", 0, "minimum req_id to revert", 0); 137 139 psMetadataAddS64(revertjobArgs, PS_LIST_TAIL, "-job_id", 0, "job_id to revert", 0); 138 140 psMetadataAddS16(revertjobArgs, PS_LIST_TAIL, "-fault", 0, "fault to revert", 0); 141 psMetadataAddBool(revertjobArgs, PS_LIST_TAIL, "-all", 0, "revert all faulted jobs", false); 142 psMetadataAddU64(revertjobArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 139 143 140 144 // -addproject -
branches/eam_branches/20090715/ippTools/src/pxinject.c
r18336 r25624 137 137 PXOPT_LOOKUP_STR(tmp_class_id, config->args, "-tmp_class_id", true, false); 138 138 PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false); 139 PXOPT_LOOKUP_S32(bytes, config->args, "-bytes", false, false); 140 PXOPT_LOOKUP_STR(md5sum, config->args, "-md5sum", false, false); 139 141 140 142 // insert with error flag state set to 0 (no errors) 141 if (!newImfileInsert(config->dbh, exp_id, tmp_class_id, uri, NULL )) {143 if (!newImfileInsert(config->dbh, exp_id, tmp_class_id, uri, NULL, bytes, md5sum)) { 142 144 psError(PS_ERR_UNKNOWN, false, "database error"); 143 145 return false; -
branches/eam_branches/20090715/ippTools/src/pxinjectConfig.c
r18561 r25624 61 61 psMetadataAddStr(newImfileArgs, PS_LIST_TAIL, "-tmp_class_id", 0, "define the class ID (required)", NULL); 62 62 psMetadataAddStr(newImfileArgs, PS_LIST_TAIL, "-uri", 0, "define the URI (required)", NULL); 63 psMetadataAddS32(newImfileArgs, PS_LIST_TAIL, "-bytes", 0, "define the size of the file", 0); 64 psMetadataAddStr(newImfileArgs, PS_LIST_TAIL, "-md5sum", 0, "define the size of the file", NULL); 63 65 64 66 // -updatenewExp -
branches/eam_branches/20090715/ippTools/src/pxtools.h
r25400 r25624 46 46 #include "pxtag.h" 47 47 #include "pxtree.h" 48 #include "pxmagic.h" 48 49 49 50 # define MAX_ROWS 10e9 -
branches/eam_branches/20090715/ippTools/src/pztool.c
r23688 r25624 401 401 PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false); 402 402 PXOPT_LOOKUP_BOOL(row_lock, config->args, "-row_lock", false); 403 PXOPT_LOOKUP_S32(bytes, config->args, "-bytes", false, false); 404 PXOPT_LOOKUP_STR(md5sum, config->args, "-md5sum", false, false); 403 405 404 406 // default values … … 457 459 fault, 458 460 NULL, // epoch 459 hostname 461 hostname, 462 bytes, 463 md5sum 460 464 )) { 461 465 psError(PS_ERR_UNKNOWN, false, "database error"); … … 595 599 " pzDownloadImfile.class_id," // tmp_class_id 596 600 " pzDownloadImfile.uri," // uri 597 " NULL" // epoch 601 " NULL," // epoch 602 " pzDownloadImfile.bytes," // bytes 603 " pzDownloadImfile.md5sum" // md5sum 598 604 " FROM pzDownloadImfile" 599 605 " WHERE" -
branches/eam_branches/20090715/ippTools/src/pztoolConfig.c
r23688 r25624 95 95 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-label", 0, "define the label for the chip stage", NULL); 96 96 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-hostname", 0, "define the host that copied the image", NULL); 97 psMetadataAddS32(copydoneArgs, PS_LIST_TAIL, "-bytes", 0, "define the size in bytes for the copied image", 0); 98 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-md5sum", 0, "define the md5 sum for the copied image", NULL); 97 99 psMetadataAddS16(copydoneArgs, PS_LIST_TAIL, "-fault", 0, "set fault code", 0); 98 100 psMetadataAddBool(copydoneArgs, PS_LIST_TAIL, "-row_lock", 0, "lock pzDownImfile rows while advancing an exposure", false); -
branches/eam_branches/20090715/ippTools/src/regtool.c
r25400 r25624 224 224 PXOPT_LOOKUP_F32(teltemp_extra, config->args, "-teltemp_extra", false, false); 225 225 PXOPT_LOOKUP_F32(pon_time, config->args, "-pon_time", false, false); 226 PXOPT_LOOKUP_S16(burntool_state, config->args, "-burntool_state", false, false); 226 227 PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false); 227 228 PXOPT_LOOKUP_F64(user_2, config->args, "-user_2", false, false); … … 238 239 PXOPT_LOOKUP_TIME(dateobs, config->args, "-dateobs", false, false); 239 240 PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false); 241 PXOPT_LOOKUP_S32(bytes, config->args, "-bytes", false, false); 242 PXOPT_LOOKUP_STR(md5sum, config->args, "-md5sum", false, false); 240 243 241 244 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); … … 307 310 quality, 308 311 NULL, 309 0 312 0, 313 bytes, 314 md5sum, 315 0 // burntool_state 310 316 )) { 311 317 psError(PS_ERR_UNKNOWN, false, "database error"); … … 462 468 463 469 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 464 PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false); 465 466 if ((fault == INT16_MAX) && !isfinite(user_1)) { 467 psError(PS_ERR_UNKNOWN, false, "one of -fault or -user_1 must be selected"); 468 return false; 469 } 470 if ((fault != INT16_MAX) && isfinite(user_1)) { 471 psError(PS_ERR_UNKNOWN, false, "only one of -fault or -user_1 must be selected"); 470 /* PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false); */ 471 PXOPT_LOOKUP_S16(burntool_state, config->args, "-burntool_state", false, false); 472 473 if ((fault == INT16_MAX) && !isfinite(burntool_state)) { 474 psError(PS_ERR_UNKNOWN, false, "one of -fault or -burntool_state must be selected"); 475 return false; 476 } 477 if ((fault != INT16_MAX) && isfinite(burntool_state)) { 478 psError(PS_ERR_UNKNOWN, false, "only one of -fault or -burntool_state must be selected"); 472 479 return false; 473 480 } … … 486 493 } 487 494 488 if (isfinite( user_1)) {495 if (isfinite(burntool_state)) { 489 496 psString query = pxDataGet("regtool_updateprocessedimfile.sql"); 490 497 if (!query) { … … 493 500 } 494 501 495 if (!p_psDBRunQueryF(config->dbh, query, user_1, exp_id, class_id)) {502 if (!p_psDBRunQueryF(config->dbh, query, burntool_state, exp_id, class_id)) { 496 503 psError(PS_ERR_UNKNOWN, false, "database error"); 497 504 psFree(query); -
branches/eam_branches/20090715/ippTools/src/regtoolConfig.c
r25022 r25624 125 125 ADD_OPT(Time, addprocessedimfileArgs, "-dateobs", "define observation time", NULL); 126 126 ADD_OPT(Str, addprocessedimfileArgs, "-hostname", "define host name", NULL); 127 ADD_OPT(Str, addprocessedimfileArgs, "-md5sum", "define md5sum", NULL); 128 ADD_OPT(S32, addprocessedimfileArgs, "-bytes", "define bytes", 0); 129 ADD_OPT(S16, addprocessedimfileArgs, "-burntool_state", "set burntool state", 0); 127 130 ADD_OPT(S16, addprocessedimfileArgs, "-fault", "set fault code", 0); 128 131 ADD_OPT(S16, addprocessedimfileArgs, "-quality", "set quality flag", 0); … … 153 156 ADD_OPT(S64, updateprocessedimfileArgs, "-exp_id", "search by exposure ID", 0); 154 157 ADD_OPT(Str, updateprocessedimfileArgs, "-class_id", "search by class ID", NULL); 155 ADD_OPT( F64, updateprocessedimfileArgs, "-user_1", "set user stat (1)", NAN);158 ADD_OPT(S16, updateprocessedimfileArgs, "-burntool_state", "set burntool state", 0); 156 159 ADD_OPT(S16, updateprocessedimfileArgs, "-fault", "set fault code", INT16_MAX); 157 160 -
branches/eam_branches/20090715/ippTools/src/stacktool.c
r25022 r25624 139 139 PXOPT_COPY_F32(config->args, where, "-select_fwhm_minor_min", "camProcessedExp.fwhm_minor", ">="); 140 140 PXOPT_COPY_F32(config->args, where, "-select_fwhm_minor_max", "camProcessedExp.fwhm_minor", "<="); 141 PXOPT_COPY_F32(config->args, where, "-select_iq_m2_max", "camProcessedExp.iq_m2", "<="); 142 PXOPT_COPY_F32(config->args, where, "-select_iq_m2_min", "camProcessedExp.iq_m2", ">="); 143 PXOPT_COPY_F32(config->args, where, "-select_iq_m3_max", "camProcessedExp.iq_m3", "<="); 144 PXOPT_COPY_F32(config->args, where, "-select_iq_m4_min", "camProcessedExp.iq_m4", ">="); 145 PXOPT_COPY_F32(config->args, where, "-select_iq_m4_max", "camProcessedExp.iq_m4", "<="); 146 141 147 PXOPT_COPY_STR(config->args, where, "-select_exp_type", "rawExp.exp_type", "=="); 142 148 PXOPT_COPY_F32(config->args, where, "-select_good_frac_min", "warpSkyfile.good_frac", ">="); -
branches/eam_branches/20090715/ippTools/src/stacktoolConfig.c
r25022 r25624 77 77 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_fwhm_minor_min", 0, "define min fwhm (minor axis)", NAN); 78 78 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_fwhm_minor_max", 0, "define max fwhm (minor axis)", NAN); 79 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_iq_m2_min", 0, "define min iq_m2", NAN); 80 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_iq_m2_max", 0, "define max iq_m2", NAN); 81 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_iq_m3_min", 0, "define min iq_m3", NAN); 82 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_iq_m3_max", 0, "define max iq_m3", NAN); 83 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_iq_m4_min", 0, "define min iq_m4", NAN); 84 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_iq_m4_max", 0, "define max iq_m4", NAN); 79 85 psMetadataAddS32(definebyqueryArgs, PS_LIST_TAIL, "-random", 0, "use this number of random elements", 0); 80 86 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false);
Note:
See TracChangeset
for help on using the changeset viewer.
