IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 5, 2012, 5:19:48 PM (14 years ago)
Author:
mhuber
Message:

merging latest r33407 trunk changes to meh_branches/ppstack_test

Location:
branches/meh_branches/ppstack_test
Files:
40 edited
8 copied

Legend:

Unmodified
Added
Removed
  • branches/meh_branches/ppstack_test

  • branches/meh_branches/ppstack_test/ippTools/src

  • branches/meh_branches/ppstack_test/ippTools/src/Makefile.am

    r31435 r33415  
    2929        diffphottool \
    3030        minidvodbtool \
    31         laptool
     31        mergetool \
     32        laptool \
     33        vptool
    3234
    3335pkginclude_HEADERS = \
     
    4244        pxmagic.h \
    4345        pxminidvodb.h \
     46        pxmerge.h \
    4447        pxregister.h \
    4548        pxspace.h \
     
    7881        diffphottool.h \
    7982        minidvodbtool.h \
    80         laptool.h
     83        mergetool.h \
     84        laptool.h \
     85        vptool.h
    8186
    8287lib_LTLIBRARIES = libpxtools.la
     
    96101        pxmagic.c \
    97102        pxminidvodb.c \
     103        pxmerge.c \
    98104        pxregister.c \
    99105        pxspace.c \
     
    292298    minidvodbtoolConfig.c
    293299
     300mergetool_CFLAGS = $(PSLIB_CFLAGS) $(PSMODULES_CFLAGS) $(IPPDB_CFLAGS)
     301mergetool_LDADD = $(PSLIB_LIBS) $(PSMODULES_LIBS) $(IPPDB_LIBS) libpxtools.la
     302mergetool_SOURCES = \
     303    mergetool.c \
     304    mergetoolConfig.c
     305
    294306laptool_CFLAGS = $(PSLIB_CFLAGS) $(PSMODULES_CFLAGS) $(IPPDB_CFLAGS)
    295307laptool_LDADD = $(PSLIB_LIBS) $(PSMODULES_LIBS) $(IPPDB_LIBS) libpxtools.la
     
    298310    laptoolConfig.c
    299311
     312vptool_CFLAGS = $(PSLIB_CFLAGS) $(PSMODULES_CFLAGS) $(IPPDB_CFLAGS)
     313vptool_LDADD = $(PSLIB_LIBS) $(PSMODULES_LIBS) $(IPPDB_LIBS) libpxtools.la
     314vptool_SOURCES = \
     315    vptool.c \
     316    vptoolConfig.c
     317
    300318clean-local:
    301319        -rm -f TAGS
  • branches/meh_branches/ppstack_test/ippTools/src/addtool.c

    r31680 r33415  
    143143    pxAddLabelSearchArgs (config, where, "-filter",     "stackRun.filter", "=="); // define using camRun label
    144144    }
    145    
     145        if (strcmp(stage, "staticsky_multi")== 0) {
     146
     147    pxAddLabelSearchArgs (config, where, "-label",     "staticskyRun.label", "=="); // define using camRun label
     148    pxAddLabelSearchArgs (config, where, "-data_group","staticskyRun.data_group", "=="); // define using camRun label
     149    PXOPT_COPY_STR(config->args, where,  "-reduction", "staticskyyRun.reduction", "==");
     150    //no filter here
     151    }
    146152    if (!psListLength(where->list)) {
    147153        psFree(where);
     
    237243    }
    238244
    239 
     245    if (strcmp(stage,"staticsky_multi") == 0) {
     246      if (dvodb ) {
     247        psTrace("addtool.c", PS_LOG_INFO, "dvodb argument found (%s) using addtool_find_sky_id_multi_dvo.sql\n%s\n", dvodb,stage);
     248        // find the cam_id of all the exposures that we want to queue up.
     249        bare_query = pxDataGet("addtool_find_sky_id_multi_dvo.sql");
     250        // user supplied dvodb
     251        psStringAppend(&dvodb_string, "addRun.dvodb = '%s'", dvodb);
     252    } else {
     253      psTrace("addtool.c", PS_LOG_INFO, "dvodb argument not found using addtool_find_sky_id_multi.sql\n%s\n",stage);
     254        // find the cam_id of all the exposures that we want to queue up.
     255        bare_query = pxDataGet("addtool_find_sky_id_multi.sql");
     256        // inherit dvodb from camRun, avoid matching NULL
     257        psStringAppend(&dvodb_string, "(staticskyRun.dvodb IS NOT NULL AND previous_dvodb = staticskyRun.dvodb)");
     258    }
     259    }
    240260
    241261    if (!bare_query) {
     
    272292    } else {
    273293      //This picks only the unmagicked/uncensored ones
    274       if (strcmp(stage,"cam") == 0) {
    275         psStringAppend(&query, " AND (camRun.magicked = 0)");
    276       }
     294      //if (strcmp(stage,"cam") == 0) {
     295        //we can now properly handle the magicked case in ippScripts, so we queue camRuns in any magic state now if -uncensored.
     296        //psStringAppend(&query, " AND (camRun.magicked = 0)");
     297        //}
    277298      if (strcmp(stage,"stack") == 0) {
    278299        psStringAppend(&query, " AND (stackRun.magicked = 0)");
     
    280301
    281302    }
     303
     304    //if we grab a group of camRun/stackRuns that have multiple camRun/stackRun pointing to the same exp_id/stack_id, and that exp_id/stack_id has never before been added to addRun, we need to group by exp_id/stack_id to ensure that only 1 of the camRun/stackRun for that exp_id is added to the addRun stage.
     305
     306    if (strcmp(stage,"cam") == 0) {
     307        psStringAppend(&query, " GROUP BY exp_id");
     308   }
     309      if (strcmp(stage,"stack") == 0) {
     310        psStringAppend(&query, " GROUP BY stack_id");
     311      }
     312    if (strcmp(stage,"staticsky") == 0) {
     313        psStringAppend(&query, " GROUP BY stack_id");
     314      }
     315    if (strcmp(stage,"staticsky_multi") == 0) {
     316      psStringAppend(&query, " GROUP BY sky_id");  //some reason it needs this
     317      }
     318
    282319
    283320    psTrace("addtool.c", PS_LOG_INFO,"query: \n\n%s\n\n",query);
     
    391428    }
    392429    }
     430    if (strcmp(stage,"staticsky_multi") == 0) {
     431    for (long i = 0; i < psArrayLength(output); i++) {
     432        psMetadata *md = output->data[i];
     433        bool status = false;
     434        psS32 num_inputs = psMetadataLookupS32(&status, md, "num_inputs");
     435        if (!status) {
     436          psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item num_inputs");
     437          return false;
     438        }
     439        if (num_inputs < 0) {
     440          psError(PS_ERR_UNKNOWN, true, "invalid value for num_inputs");
     441          return false;
     442        }
     443
     444        staticskyRunRow *row = staticskyRunObjectFromMetadata(md);
     445       
     446        if (!row) {
     447            psError(PS_ERR_UNKNOWN, false, "failed to convert metadata into camRun");
     448            psFree(output);
     449            return false;
     450        }
     451
     452        if (!dvodb) {  //there's no staticsky.dvodb
     453            psError(PS_ERR_UNKNOWN, false, "cannot queue addstar run without a defined dvodb: label: %s, sky_id %" PRId64, row->label, row->sky_id);
     454            psFree(output);
     455            return false;
     456        }
     457        if (!workdir && !row->workdir) {
     458            psError(PS_ERR_UNKNOWN, false, "cannot queue addstar run without a defined workdir: label: %s, sky_id %" PRId64, row->label, row->sky_id);
     459            psFree(output);
     460            return false;
     461        }
     462
     463        psFree(row);
     464    }
     465    }
     466
     467
     468
    393469
    394470    // start a transaction so we don't end up with an exp without any associted
     
    424500                               stage,
    425501                               stage_id,
     502                               0,
    426503                               workdir     ? workdir   : row->workdir,
    427504                               reduction   ? reduction : row->reduction,
     
    465542                               stage,
    466543                               stage_id,
     544                               0,
    467545                               workdir     ? workdir   : row->workdir,
    468546                               reduction   ? reduction : row->reduction,
     
    506584                               stage,
    507585                               stage_id,
     586                               0,
    508587                               workdir     ? workdir   : row->workdir,
    509588                               reduction   ? reduction : row->reduction,
     
    530609      }
    531610
     611    if (strcmp(stage,"staticsky_multi") == 0) {
     612    for (long i = 0; i < psArrayLength(output); i++) {
     613        psMetadata *md = output->data[i];
     614        psS64 stage_id =0;
     615        bool status = false;
     616        psS32 num_inputs = psMetadataLookupS32(&status, md, "num_inputs");
     617        if (!status) {
     618          psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item num_inputs");
     619          return false;
     620        }
     621        staticskyRunRow *row = staticskyRunObjectFromMetadata(md);
     622        stage_id = row->sky_id;
     623       
     624        if (!row) {
     625            psError(PS_ERR_UNKNOWN, false, "failed to convert metadata into camRun");
     626            psFree(output);
     627            return false;
     628        }
     629
     630        // queue the exp
     631        for (int filter_id = 0; filter_id < num_inputs; filter_id++) { 
     632        if (!pxaddQueueByCamID(config,
     633                               stage,
     634                               stage_id,
     635                               filter_id,
     636                               workdir     ? workdir   : row->workdir,
     637                               reduction   ? reduction : row->reduction,
     638                               label       ? label     : row->label,
     639                               data_group  ? data_group : (row->data_group ? row->data_group :  (label ? label : row->label)),
     640                               dvodb       ? dvodb     : NULL,
     641                               note        ? note      : NULL,
     642                               image_only,
     643                               minidvodb,
     644                               minidvodb_group,
     645                               minidvodb_name
     646        )) {
     647            if (!psDBRollback(config->dbh)) {
     648                psError(PS_ERR_UNKNOWN, false, "database error sfg");
     649            }
     650            psError(PS_ERR_UNKNOWN, false,
     651                    "failed to trying to queue stage %s %" PRId64,stage, stage_id);
     652            psFree(row);
     653            psFree(output);
     654            return false;
     655        }
     656        }
     657        psFree(row);
     658    }
     659      }
     660
     661
     662
     663
    532664    psFree(output);
    533665
     
    571703    }
    572704    if (strcmp(stage, "staticsky")==0) {
     705    query = psStringCopy("UPDATE addRun JOIN staticskyRun on sky_id = stage_id");
     706    }
     707    if (strcmp(stage, "staticsky_multi")==0) {
    573708    query = psStringCopy("UPDATE addRun JOIN staticskyRun on sky_id = stage_id");
    574709    }
     
    612747    query = pxDataGet("addtool_find_pendingexp_staticsky.sql");
    613748    }
    614 
     749    if (strcmp(stage, "staticsky_multi")==0) {
     750    query = pxDataGet("addtool_find_pendingexp_staticsky_multi.sql");
     751    }
     752   
    615753
    616754    if (!query) {
     
    634772      psStringAppend(&query, " GROUP BY %s", "sky_id");
    635773    }
    636 
     774    if (strcmp(stage, "staticsky_multi") == 0) {
     775      //this group by is needed to join against all the warps (to get camera)
     776      psStringAppend(&query, " GROUP BY %s", "sky_id, stage_extra1");
     777    }
    637778    // treat limit == 0 as "no limit"
    638779    if (limit) {
     
    684825    PXOPT_LOOKUP_STR(minidvodb_name, config->args, "-minidvodb_name", false, false);
    685826    PXOPT_LOOKUP_S16(fault,         config->args, "-fault", false, false);
    686 
     827    PXOPT_LOOKUP_S64(stage_extra1, config->args, "-stage_extra1", false, false);
    687828    // generate restrictions
    688829    psMetadata *where = psMetadataAlloc();
     
    762903      }
    763904    }
    764 
     905    //if there is a stage_extra1, set it in addRun (it's not known until it is processed)
     906    if (stage_extra1) {
     907      psString setExtra = NULL;
     908      psStringAppend (&setExtra, "UPDATE addRun set stage_extra1 = %" PRId64, stage_extra1);
     909      psStringAppend (&setExtra, " where add_id = %" PRId64, row->add_id);
     910
     911      if (!p_psDBRunQuery(config->dbh, setExtra)) {
     912        if (!psDBRollback(config->dbh)) {
     913          psError(PS_ERR_UNKNOWN, false, "database error");
     914        }
     915        psError(PS_ERR_UNKNOWN, false, "database error");
     916
     917        return false;
     918      }
     919    }
    765920
    766921
     
    824979    query = pxDataGet("addtool_find_processedexp_staticsky.sql");
    825980    }
     981    if (strcmp (stage,"staticsky_multi") == 0) {
     982    query = pxDataGet("addtool_find_processedexp_staticsky_multi.sql");
     983    }
     984
    826985   
    827986    if (!query) {
     
    9051064    PXOPT_COPY_S64(config->args, where, "-add_id",    "addRun.add_id",         "==");
    9061065    PXOPT_COPY_S64(config->args, where, "-stage_id",    "addRun.stage_id",         "==");
    907     PXOPT_LOOKUP_STR(stage,       config->args, "-stage", false, false);
     1066    PXOPT_LOOKUP_STR(stage,       config->args, "-stage", true, false);
    9081067    pxcamGetSearchArgs (config, where);
    9091068    pxAddLabelSearchArgs (config, where, "-label",    "addRun.label",     "==");
     
    9341093         query = pxDataGet("addtool_revertprocessedexp_staticsky.sql");
    9351094      }
     1095   if (strcmp(stage, "staticsky_multi") == 0) {
     1096         query = pxDataGet("addtool_revertprocessedexp_staticsky_multi.sql");
     1097      }
     1098
     1099
     1100     
    9361101      if (!query) {
    9371102            // rollback
     
    10711236
    10721237  PXOPT_LOOKUP_STR(minidvodb_group, config->args, "-set_minidvodb_group", true, false);
    1073   PXOPT_LOOKUP_STR(mergedvodb_path, config->args, "-set_mergedvodb_path", true, false);
    1074 
    1075   //optional
     1238    //optional
    10761239  PXOPT_LOOKUP_STR(minidvodb_name, config->args, "-set_minidvodb_name", false, false);
    10771240  PXOPT_LOOKUP_STR(minidvodb_path, config->args, "-set_minidvodb_path", false, false);
     
    10881251  if (minidvodb_path) {
    10891252    minidvodbpath = minidvodb_path;
     1253  } else {
     1254    psError(PS_ERR_UNKNOWN, false, "require minidvodb_path");
     1255    return false;
    10901256  }
    10911257
     
    10951261            minidvodb_group,
    10961262            minidvodbpath,
    1097             mergedvodb_path,
    1098             "new",
     1263            "new",
    10991264            0
    11001265            )) {
     
    11181283    psStringAppend(&minidvodb_name, "%s.%" PRIu64,minidvodb_group,minidvodb_id);
    11191284  }
    1120 
    1121   if (!minidvodb_path) {
    1122     psStringAppend(&minidvodb_path,"%s/%s",mergedvodb_path,minidvodb_name);
    1123   }
    1124 
    11251285  if (minidvodb_path) {
    11261286    psStringAppend(&minidvodb_path,"/%s",minidvodb_name);
     
    11541314    PXOPT_COPY_STR(config->args, where, "-state",     "state", "==");
    11551315    PXOPT_COPY_STR(config->args, where, "-minidvodb_path", "minidvodb_path", "==");
    1156     PXOPT_COPY_STR(config->args, where, "-mergedvodb_path", "mergedvodb_path", "==");
    11571316    PXOPT_COPY_STR(config->args, where, "-minidvodb_group",     "minidvodb_group", "==");
    11581317
     
    11601319    PXOPT_LOOKUP_STR(minidvodb_path,  config->args, "-set_minidvodb_path", false, false);
    11611320    PXOPT_LOOKUP_STR(state,  config->args, "-set_state", false, false);
    1162     PXOPT_LOOKUP_STR(mergedvodb_path,  config->args, "-set_mergedvodb_path", false, false);
    11631321    PXOPT_LOOKUP_STR(minidvodb_group,  config->args, "-set_minidvodb_group", false, false);
    11641322
     
    11951353    }
    11961354
    1197     if (mergedvodb_path) {
    1198       if (cnt) {
    1199         psStringAppend(&query, "%s", comma);
    1200       }
    1201       psStringAppend(&query, " mergedvodb_path = '%s'", mergedvodb_path);
    1202       cnt++;
    1203     }
    1204 
    12051355    if (minidvodb_group) {
    12061356      if (cnt) {
     
    12461396  }
    12471397
    1248   psString firstquery = psStringCopy("SELECT * from  minidvodbRun where state = 'new' and minidvodb_name is NOT NULL and minidvodb_group IS NOT NULL and minidvodb_path IS NOT NULL and mergedvodb_path IS NOT NULL");
     1398  psString firstquery = psStringCopy("SELECT * from  minidvodbRun where state = 'new' and minidvodb_name is NOT NULL and minidvodb_group IS NOT NULL and minidvodb_path IS NOT NULL");
    12491399
    12501400  psString firstwhereClause = psDBGenerateWhereConditionSQL(where, NULL);
     
    12941444
    12951445  //now flip new -> active
    1296   psString query2 = psStringCopy("UPDATE minidvodbRun SET state = 'active' WHERE state = 'new' AND minidvodb_name is NOT NULL and minidvodb_group IS NOT NULL and minidvodb_path IS NOT NULL and mergedvodb_path IS NOT NULL ");
     1446  psString query2 = psStringCopy("UPDATE minidvodbRun SET state = 'active' WHERE state = 'new' AND minidvodb_name is NOT NULL and minidvodb_group IS NOT NULL and minidvodb_path IS NOT NULL ");
    12971447  psStringAppend(&query2, " AND minidvodb_group = '%s' limit 1;", minidvodb_group);
    12981448  if (!p_psDBRunQuery(config->dbh, query2)) {
     
    14711621    // required
    14721622  PXOPT_LOOKUP_U64(minidvodb_id, config->args, "-minidvodb_id", true, false);
    1473   PXOPT_LOOKUP_STR(mergedvodb_path, config->args, "-mergedvodb_path", true, false);
    14741623  PXOPT_LOOKUP_STR(minidvodb_group, config->args, "-minidvodb_group", true, false);
    14751624
    14761625    // optional
    1477   PXOPT_LOOKUP_U64(merge_order,     config->args, "-merge_order", false, false);
    14781626  PXOPT_LOOKUP_F32(dtime_relphot, config->args, "-dtime_relphot", false, false);
    14791627  PXOPT_LOOKUP_F32(dtime_resort, config->args, "-dtime_resort", false, false);
    1480   PXOPT_LOOKUP_F32(dtime_merge, config->args, "-dtime_merge", false, false);
    1481   PXOPT_LOOKUP_F32(dtime_verify, config->args, "-dtime_verify", false, false);
    14821628  PXOPT_LOOKUP_F32(dtime_script, config->args, "-dtime_script", false, false);
    14831629 
     
    15301676  minidvodbProcessedRow *row = minidvodbProcessedRowAlloc(
    15311677               pendingRow->minidvodb_id,
    1532                merge_order,
    15331678               dtime_resort,
    15341679               dtime_relphot,
    1535                dtime_verify,
    1536                dtime_merge,
    15371680               dtime_script,
    15381681               epoch,
    1539                mergedvodb_path,
    15401682               fault
    15411683               );
     
    15521694  }
    15531695
    1554 
    1555 
    1556 
    1557   //this finds the # of merged things (for the merge order)
    1558   psString query3 = NULL;
    1559   psStringAppend(&query3, "select count(*) from minidvodbRun join minidvodbProcessed using (minidvodb_id) where state = 'merged' and minidvodb_group = '%s';", minidvodb_group);
    1560 
    1561   if (!p_psDBRunQuery(config->dbh, query3)) {
    1562     // rollback
    1563     if (!psDBRollback(config->dbh)) {
    1564       psError(PS_ERR_UNKNOWN, false, "database error");
    1565     }
    1566     psError(PS_ERR_UNKNOWN, false, "database error");
    1567     psFree(query3);
    1568     return false;
    1569   }
    1570   psArray *output2 = p_psDBFetchResult(config->dbh);
    1571   if (!output2) {
    1572     psError(PS_ERR_UNKNOWN, false, "database error");
    1573     return false;
    1574   }
    1575   if (!psArrayLength(output2)) {
    1576     psTrace("addtool", PS_LOG_INFO, "no rows found");
    1577     psFree(output);
    1578     return true;
    1579   }
    1580   bool status;
    1581   psS64 m_order = psMetadataLookupS64(&status, output2->data[0], "count(*)");
    1582   if (!status) {
    1583 
    1584     psAbort("failed to lookup value for count column");
    1585     return false;
    1586   }
    1587   psString final = NULL;
    1588   psStringAppend(&final, "%" PRIu64, m_order);
    1589     //return false;
    1590   psFree(query3);
    1591   psFree(output2);
    1592 
    1593 
    1594 
    1595   //update the merge_order
    1596 
    1597   psString query4 = NULL;
    1598   psStringAppend(&query4, "update minidvodbProcessed set merge_order = %"PRIu64,m_order);
    1599   psStringAppend(&query4," where minidvodb_id = %" PRIu64,  minidvodb_id);
    1600   //printf("%s", query4);
    1601   if (!p_psDBRunQuery(config->dbh, query4)) {
    1602     // rollback
    1603     if (!psDBRollback(config->dbh)) {
    1604       psError(PS_ERR_UNKNOWN, false, "database error");
    1605     }
    1606     psError(PS_ERR_UNKNOWN, false, "database error");
    1607     psFree(query4);
    1608     return false;
    1609   }
    1610   //
    1611 psFree(query4);
    1612 
    1613 
    1614 
    1615 // since there is only one exp per 'new' set mindvodbRun.state = 'merged'
    1616 
    16171696  psString query2 = NULL ;
    16181697  psStringAppend(&query2, "UPDATE minidvodbRun SET state = 'merged' WHERE minidvodb_id = %'" PRIu64, row->minidvodb_id);
     
    16271706    return false;
    16281707  }
    1629 
    1630 
    1631 
    1632 
    1633 
    1634 
    1635 
    1636 
    16371708  psFree(row);
    16381709  psFree(pendingRow);
     
    16471718    return false;
    16481719  }
    1649 
    1650 
    1651   //print the merge_order (why not!)
    1652   printf("%s", final);
    1653   psFree(final);
    1654 
    16551720  return true;
    16561721}
     
    16611726  psMetadata *where = psMetadataAlloc();
    16621727  PXOPT_COPY_S64(config->args, where, "-minidvodb_id", "minidvodbProcessed.minidvodb_id", "==");
    1663   PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidvodbProcessed.minidvodb_name", "==");
    1664   PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "minidvodbProcessed.minidvodb_group", "==");
     1728  PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidvodbRun.minidvodb_name", "==");
     1729  PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "minidvodbRun.minidvodb_group", "==");
    16651730  PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
    16661731  PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     
    18111876
    18121877  PXOPT_LOOKUP_U64(minidvodb_id,  config->args, "-minidvodb_id", true, false);
    1813   PXOPT_LOOKUP_U64(merge_order,  config->args, "-set_merge_order", false, false);
    18141878  PXOPT_LOOKUP_S16(fault,  config->args, "-set_fault", false, false);
    18151879  PXOPT_LOOKUP_F32(dtime_relphot,  config->args, "-set_dtime_relphot", false, false);
    18161880  PXOPT_LOOKUP_F32(dtime_resort,  config->args, "-set_dtime_resort", false, false);
    1817   PXOPT_LOOKUP_F32(dtime_merge,  config->args, "-set_dtime_merge", false, false);
    1818 PXOPT_LOOKUP_F32(dtime_verify,  config->args, "-set_dtime_verify", false, false);
    18191881PXOPT_LOOKUP_F32(dtime_script,  config->args, "-set_dtime_script", false, false);
    18201882  PXOPT_COPY_S64(config->args, where, "-minidvodb_id",     "minidvodbProcessed.minidvodb_id", "==");
     
    18361898  }
    18371899
    1838   if (merge_order) {
    1839     if (cnt) {
    1840       psStringAppend(&query, "%s", comma);
    1841     }
    1842 
    1843     psStringAppend(&query, " merge_order = %" PRId64, merge_order);
    1844     cnt++;
    1845   }
    1846 
    18471900  if (dtime_relphot) {
    18481901    if (cnt) {
     
    18611914  }
    18621915
    1863   if (dtime_merge) {
    1864     if (cnt) {
    1865       psStringAppend(&query, "%s", comma);
    1866     }
    1867     psStringAppend(&query, " dtime_merge = %f", dtime_merge);
    1868     cnt++;
    1869  }
    1870 if (dtime_verify) {
    1871     if (cnt) {
    1872       psStringAppend(&query, "%s", comma);
    1873     }
    1874     psStringAppend(&query, " dtime_verify = %f", dtime_verify);
    1875     cnt++;
    1876  }
    1877 if (dtime_script) {
     1916  if (dtime_script) {
    18781917    if (cnt) {
    18791918      psStringAppend(&query, "%s", comma);
  • branches/meh_branches/ppstack_test/ippTools/src/addtoolConfig.c

    r31680 r33415  
    115115    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-dtime_addstar", 0, "define elapsed time for DVO insertion (seconds)", NAN);
    116116    psMetadataAddS16(addprocessedexpArgs, PS_LIST_TAIL, "-fault",  0,            "set fault code", 0);
     117psMetadataAddS64(addprocessedexpArgs, PS_LIST_TAIL, "-stage_extra1",  0,            "set stage_extra1", 0);
     118
    117119
    118120    // -processedexp
     
    165167    psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_group",        0, "define minidvodb_group (required)", NULL);
    166168    psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_path",        0, "define path for minidvodb", NULL);
    167     psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_mergedvodb_path",        0, "define path for the merged dvodb (required)", NULL);
    168169    psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_state",        0, "define state", NULL);
    169170
     
    174175    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_name",        0, "search by minidvodb_name (LIKE)", NULL);
    175176    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_path",        0, "search by path for minidvodb", NULL);
    176     psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-mergedvodb_path",        0, "search by path for the merged dvodb", NULL);
    177177    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-state",        0, "search by state", NULL);
    178178    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_name",        0, "define minidvodb_name", NULL);
    179179    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_path",        0, "define path for minidvodb", NULL);
    180     psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_mergedvodb_path",        0, "define path for minidvodb", NULL);
    181180    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_group",        0, "define path for the merged dvodb", NULL);
    182181    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_state",        0, "define state", NULL);
     
    205204    psMetadata *addminidvodbprocessedArgs = psMetadataAlloc();
    206205    psMetadataAddU64(addminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_id", 0,    "define minidvodb_id (required)", 0);
    207     psMetadataAddU64(addminidvodbprocessedArgs, PS_LIST_TAIL, "-merge_order",    0,    "define merge order", 0);
    208206    psMetadataAddF32(addminidvodbprocessedArgs, PS_LIST_TAIL, "-dtime_relphot",  0,    "define elapsed time for relphot (seconds)", NAN);
    209207    psMetadataAddF32(addminidvodbprocessedArgs, PS_LIST_TAIL, "-dtime_resort", 0,    "define elapsed time for resort (seconds)", NAN);
    210     psMetadataAddF32(addminidvodbprocessedArgs, PS_LIST_TAIL, "-dtime_verify",    0,    "define elapsed time for DVO verify (seconds)", NAN);
    211     psMetadataAddF32(addminidvodbprocessedArgs, PS_LIST_TAIL, "-dtime_merge",    0,    "define elapsed time for DVO merge (seconds)", NAN);
    212208    psMetadataAddF32(addminidvodbprocessedArgs, PS_LIST_TAIL, "-dtime_script",    0,    "define elapsed time for script (seconds)", NAN);
    213209    psMetadataAddTime(addminidvodbprocessedArgs, PS_LIST_TAIL, "-epoch",         0,    "time merge is finished", NULL);
    214     psMetadataAddStr(addminidvodbprocessedArgs, PS_LIST_TAIL, "-mergedvodb_path",0,    "path of merged dvodb", NULL);
    215210    psMetadataAddStr(addminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_group",0,    "minidvodb_group", NULL);
    216211    psMetadataAddS16(addminidvodbprocessedArgs, PS_LIST_TAIL, "-fault",          0,    "set fault code", 0);
     
    232227    psMetadataAddStr(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_name",        0, "search by minidvodb_name", NULL);
    233228    psMetadataAddS16(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_fault",  0,            "set fault code", 0);
    234     psMetadataAddU64(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_merge_order",    0,    "define merge order", 0);
    235229    psMetadataAddF32(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_dtime_relphot",  0,    "define elapsed time for relphot (seconds)", 0);
    236230    psMetadataAddF32(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_dtime_resort", 0,    "define elapsed time for resort (seconds)", 0);
    237     psMetadataAddF32(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_dtime_verify",    0,    "define elapsed time for DVO verify (seconds)", 0);
    238     psMetadataAddF32(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_dtime_merge",    0,    "define elapsed time for DVO merge (seconds)", 0);
    239231    psMetadataAddF32(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_dtime_script",    0,    "define elapsed time for script (seconds)", 0);
    240232    psMetadata *argSets = psMetadataAlloc();
  • branches/meh_branches/ppstack_test/ippTools/src/bgtoolConfig.c

    r29671 r33415  
    113113    psMetadataAddTime(updatechipArgs, PS_LIST_TAIL, "-registered_end", 0, "search by registration time (<)", NULL);
    114114    psMetadataAddBool(updatechipArgs, PS_LIST_TAIL, "-destreaked", 0, "search for runs that have been destreaked", false);
     115    psMetadataAddS64(updatechipArgs, PS_LIST_TAIL, "-magicked",  0,        "define magicked status", 0);
     116    psMetadataAddS64(updatechipArgs, PS_LIST_TAIL, "-not_destreaked",  0,        "define magicked status", 0);
    115117    psMetadataAddBool(updatechipArgs, PS_LIST_TAIL, "-pretend", 0, "only pretend to run the query", false);
    116118    psMetadataAddStr(updatechipArgs, PS_LIST_TAIL, "-set_state", 0, "define new state", NULL);
     
    298300    psMetadataAddTime(updatewarpArgs, PS_LIST_TAIL, "-registered_end", 0, "search by registration time (<)", NULL);
    299301    psMetadataAddBool(updatewarpArgs, PS_LIST_TAIL, "-destreaked", 0, "search for runs that have been destreaked", false);
     302    psMetadataAddBool(updatewarpArgs, PS_LIST_TAIL, "-not_destreaked", 0, "search for runs that have been destreaked", false);
     303    psMetadataAddS64(updatewarpArgs, PS_LIST_TAIL, "-magicked",  0,        "define magicked status", 0);
    300304    psMetadataAddBool(updatewarpArgs, PS_LIST_TAIL, "-pretend", 0, "only pretend to run the query", false);
    301305    psMetadataAddStr(updatewarpArgs, PS_LIST_TAIL, "-set_state", 0, "define new state", NULL);
  • branches/meh_branches/ppstack_test/ippTools/src/camtool.c

    r30907 r33415  
    112112    PXOPT_COPY_STR(config->args, where, "-reduction", "chipRun.reduction", "==");
    113113    PXOPT_COPY_STR(config->args, where, "-data_group", "chipRun.data_group", "==");
     114    PXOPT_COPY_STR(config->args, where, "-obs_mode", "rawExp.obs_mode", "==");
    114115
    115116    if (!psListLength(where->list) &&
  • branches/meh_branches/ppstack_test/ippTools/src/camtoolConfig.c

    r30907 r33415  
    5555    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-reduction",          0, "search by chipRun reduction class", NULL);
    5656    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-data_group",         0, "search by chipRun data_group", NULL);
     57    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-obs_mode",           0, "search by rawExp obs_mode", NULL);
    5758
    5859    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_workdir",        0, "define workdir", NULL);
  • branches/meh_branches/ppstack_test/ippTools/src/chiptool.c

    r31954 r33415  
    4343static bool revertprocessedimfileMode(pxConfig *config);
    4444static bool updateprocessedimfileMode(pxConfig *config);
     45static bool dropprocessedimfileMode(pxConfig *config);
    4546static bool advanceexpMode(pxConfig *config);
    4647static bool blockMode(pxConfig *config);
     
    8889        MODECASE(CHIPTOOL_MODE_REVERTPROCESSEDIMFILE,   revertprocessedimfileMode);
    8990        MODECASE(CHIPTOOL_MODE_UPDATEPROCESSEDIMFILE,   updateprocessedimfileMode);
     91        MODECASE(CHIPTOOL_MODE_DROPPROCESSEDIMFILE,     dropprocessedimfileMode);
    9092        MODECASE(CHIPTOOL_MODE_ADVANCEEXP,              advanceexpMode);
    9193        MODECASE(CHIPTOOL_MODE_BLOCK,                   blockMode);
     
    196198        GET_VALUE (psS64,    S64, exp_id,        "exp_id");
    197199        GET_VALUE (psString, Str, raw_workdir,   "workdir");
     200#ifdef notyet
     201        GET_VALUE (psString, Str, old_workdir,   "old_workdir");
     202        GET_VALUE (psString, Str, old_data_group, "old_data_group");
     203#else   
     204        const char *old_workdir = NULL;
     205        const char *old_data_group = NULL;
     206#endif
    198207        GET_VALUE (psString, Str, raw_label,     "label");
    199208        GET_VALUE (psString, Str, raw_reduction, "reduction");
     
    211220        if (!pxchipQueueByExpTag(config,
    212221                                 exp_id,
    213                                  workdir     ? workdir   : raw_workdir,
     222                                 workdir     ? workdir   : (old_workdir ? old_workdir : raw_workdir),
    214223                                 label       ? label     : raw_label,
    215                                  data_group  ? data_group : (label ? label : raw_label),
     224                                 data_group  ? data_group : (old_data_group ? old_data_group : (label ? label : raw_label)),
    216225                                 dist_group,
    217226                                 reduction   ? reduction : raw_reduction,
     
    343352    pxAddLabelSearchArgs (config, where, "-label", "chipOld.label", "LIKE");
    344353    pxAddLabelSearchArgs (config, where, "-data_group", "chipOld.data_group", "LIKE");
     354    PXOPT_COPY_STR(config->args,  where, "-state",   "chipOld.state",   "==");
    345355
    346356    // psListLength(where->list) is at least 1 because exp_type defaults to "object"
     
    352362    }
    353363
    354     PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", true, false);
     364    PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", false, false);
    355365    PXOPT_LOOKUP_STR(label, config->args, "-set_label", true, false);
    356366    PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false);
     
    466476    PXOPT_COPY_S64(config->args, where, "-chip_id", "chipRun.chip_id", "==");
    467477    pxAddLabelSearchArgs (config, where, "-label", "chipRun.label", "==");
     478    PXOPT_COPY_STR(config->args, where, "-class_id", "rawImfile.class_id", "==");
    468479
    469480    psString query = pxDataGet("chiptool_pendingimfile.sql");
     
    883894    }
    884895    psFree(query);
     896    int numDeleted = psDBAffectedRows(config->dbh);
     897    psLogMsg("chiptool", PS_LOG_INFO, "Deleted %d chipProcessedImfiles", numDeleted);
    885898
    886899    if (!fault) {
     
    896909    }
    897910    psFree(query_update);
     911    int numUpdated = psDBAffectedRows(config->dbh);
     912    psLogMsg("chiptool", PS_LOG_INFO, "Updated %d chipProcessedImfiles", numUpdated);
     913
    898914
    899915    return true;
     
    962978    PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "==");
    963979    PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "==");
    964     PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, NULL);
     980    PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false);
    965981    if (psListLength(where->list) == 0) {
    966982        psError(PS_ERR_UNKNOWN, true, "search parameters are required");
     
    9861002
    9871003
     1004    return true;
     1005}
     1006
     1007// "drop" previously processed components as though the original processing
     1008// had poor quality. Sets quality, data_state, clears fault and magicked
     1009// Deletes corresponding magicDSFile (if one exists)
     1010static bool dropprocessedimfileMode(pxConfig *config)
     1011{
     1012    PS_ASSERT_PTR_NON_NULL(config, false);
     1013
     1014    psMetadata *where = psMetadataAlloc();
     1015    PXOPT_COPY_S64(config->args, where, "-chip_id", "chipProcessedImfile.chip_id", "==");
     1016    PXOPT_COPY_STR(config->args, where, "-class_id", "chipProcessedImfile.class_id", "==");
     1017    PXOPT_LOOKUP_S64(chip_id, config->args, "-chip_id", true, false);
     1018    PXOPT_LOOKUP_S64(class_id, config->args, "-class_id", true, false);
     1019    PXOPT_LOOKUP_S16(quality, config->args, "-set_quality", true, false);
     1020
     1021    if (!quality) {
     1022        psError(PXTOOLS_ERR_CONFIG, true, "non-zero quality value is required");
     1023        return false;
     1024    }
     1025
     1026    if (psListLength(where->list) == 0) {
     1027        // won't get here
     1028        psError(PXTOOLS_ERR_CONFIG, true, "-chip_id and -class_id are required");
     1029        return false;
     1030    }
     1031
     1032    psString query = pxDataGet("chiptool_dropprocessedimfile_update.sql");
     1033    if (!query) {
     1034        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1035        return false;
     1036    }
     1037    psString delete_query = pxDataGet("chiptool_dropprocessedimfile_delete.sql");
     1038    if (!delete_query) {
     1039        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1040        return false;
     1041    }
     1042    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1043    psStringAppend(&query, " WHERE %s", whereClause);
     1044    psFree(where);
     1045
     1046    if (!psDBTransaction(config->dbh)) {
     1047        psError(PS_ERR_UNKNOWN, false, "database error");
     1048        return false;
     1049    }
     1050    if (!p_psDBRunQueryF(config->dbh, query, quality)) {
     1051        if (!psDBRollback(config->dbh)) {
     1052            psError(PS_ERR_UNKNOWN, false, "database error on rollback");
     1053        }
     1054        psError(PS_ERR_UNKNOWN, false, "database error");
     1055        psFree(query);
     1056        return false;
     1057    }
     1058    psFree(query);
     1059
     1060    psStringAppend(&delete_query, " AND %s", whereClause);
     1061    psFree(whereClause);
     1062    if (!p_psDBRunQuery(config->dbh, delete_query)) {
     1063        if (!psDBRollback(config->dbh)) {
     1064            psError(PS_ERR_UNKNOWN, false, "database error on rollback");
     1065        }
     1066        psError(PS_ERR_UNKNOWN, false, "database error");
     1067        psFree(delete_query);
     1068        return false;
     1069    }
     1070    psFree(delete_query);
     1071
     1072    if (!psDBCommit(config->dbh)) {
     1073        psError(PS_ERR_UNKNOWN, false, "database error");
     1074        return false;
     1075    }
    9881076    return true;
    9891077}
     
    14181506    psMetadata *where = psMetadataAlloc();
    14191507    pxAddLabelSearchArgs (config, where, "-label", "label", "==");
    1420 
     1508    PXOPT_COPY_S64(config->args, where,  "-chip_id",    "chip_id", "==");
    14211509    // look for completed chipPendingExp
    14221510    // migrate them to chipProccessedExp & camPendingExp
     
    14321520        psFree(whereClause);
    14331521    }
     1522
     1523    psTrace("chiptool", 10, "%s\n", query);
    14341524    psFree(where);
    14351525
     
    19432033        return false;
    19442034    }
    1945 
    19462035    psFree(setHook);
    19472036    psFree(query);
     2037
     2038    // if we are updating a whole chipRun set lingering chips with poor quality to full data_state
     2039    if (!class_id) {
     2040        query = "UPDATE chipProcessedImfile SET data_state ='full', fault = 0 WHERE chip_id = %" PRId64 " AND quality != 0 AND (data_state ='cleaned' OR data_state = 'update')";
     2041       
     2042        if (!p_psDBRunQueryF(config->dbh, query, chip_id)) {
     2043            psError(PS_ERR_UNKNOWN, false, "database error");
     2044            return false;
     2045        }
     2046    }
    19482047
    19492048    return true;
  • branches/meh_branches/ppstack_test/ippTools/src/chiptool.h

    r29416 r33415  
    3333    CHIPTOOL_MODE_REVERTPROCESSEDIMFILE,
    3434    CHIPTOOL_MODE_UPDATEPROCESSEDIMFILE,
     35    CHIPTOOL_MODE_DROPPROCESSEDIMFILE,
    3536    CHIPTOOL_MODE_SETIMFILETOUPDATE,
    3637    CHIPTOOL_MODE_ADVANCEEXP,
  • branches/meh_branches/ppstack_test/ippTools/src/chiptoolConfig.c

    r31954 r33415  
    7272
    7373    psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-exp_type", PS_META_REPLACE, "search by exp_type", "object");
    74 
    75     psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir (required)", NULL);
     74    psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-state", 0, "search by chipRun.state", NULL);
     75
     76    psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir", NULL);
    7677    psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_label", 0, "define label (required)", NULL);
    7778    psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction class", NULL);
     
    111112    psMetadataAddS64(pendingimfileArgs, PS_LIST_TAIL, "-chip_id",  0,            "search by chip ID", 0);
    112113    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-label",  PS_META_DUPLICATE_OK, "search by label", 0);
     114    psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class_id",  0,          "search by class_id", 0);
    113115    pxchipSetSearchArgs(pendingimfileArgs);
    114116    psMetadataAddU64(pendingimfileArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
     
    237239    psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-set_state", 0,         "set state", NULL);
    238240    psMetadataAddS16(updateprocessedimfileArgs, PS_LIST_TAIL, "-set_quality",  0,            "set quality", 0);
    239     // -processedExp
     241
     242    // -dropprocessedimfile
     243    psMetadata *dropprocessedimfileArgs = psMetadataAlloc();
     244    psMetadataAddS64(dropprocessedimfileArgs, PS_LIST_TAIL, "-chip_id",  0,            "search by chip ID (required)", 0);
     245    psMetadataAddStr(dropprocessedimfileArgs,  PS_LIST_TAIL, "-class_id",           0, "search by class ID (required)", NULL);
     246    psMetadataAddS16(dropprocessedimfileArgs, PS_LIST_TAIL, "-set_quality",  0,        "set quality (required)", 0);
     247
     248    // -listrun
    240249    psMetadata *listrunArgs = psMetadataAlloc();
    241250    pxchipSetSearchArgs(listrunArgs);
     
    372381    PXOPT_ADD_MODE("-processedimfile",      "show processed imfiles",               CHIPTOOL_MODE_PROCESSEDIMFILE,      processedimfileArgs);
    373382    PXOPT_ADD_MODE("-updateprocessedimfile","change procesed imfile properties",    CHIPTOOL_MODE_UPDATEPROCESSEDIMFILE,updateprocessedimfileArgs);
     383    PXOPT_ADD_MODE("-dropprocessedimfile","drop previously procesed imfile",        CHIPTOOL_MODE_DROPPROCESSEDIMFILE,  dropprocessedimfileArgs);
    374384    PXOPT_ADD_MODE("-revertprocessedimfile","undo a processed imfile",              CHIPTOOL_MODE_REVERTPROCESSEDIMFILE,revertprocessedimfileArgs);
    375385    PXOPT_ADD_MODE("-runstate",             "list the states of chip run",          CHIPTOOL_MODE_RUNSTATE,             runstateArgs);
  • branches/meh_branches/ppstack_test/ippTools/src/difftool.c

    r31435 r33415  
    16341634    PXOPT_COPY_F32(config->args, selectWhere, "-timediff",
    16351635                   "ABS(TIME_TO_SEC(TIMEDIFF(inputRawExp.dateobs, templateRawExp.dateobs)))", "<=");
     1636    PXOPT_COPY_F32(config->args, selectWhere, "-mintimediff",
     1637                   "ABS(TIME_TO_SEC(TIMEDIFF(inputRawExp.dateobs, templateRawExp.dateobs)))", ">=");
    16361638
    16371639    // other where restrictions:
     
    18671869        const char *tess_id = psMetadataLookupStr(NULL, row, "tess_id");
    18681870        psString input_data_group = psMetadataLookupStr(NULL, row, "input_data_group");
    1869         if (input_data_group) {
     1871        if (!data_group) {
    18701872          data_group = input_data_group;
    18711873        }
     
    19341936            return false;
    19351937        }
     1938        psS64 numSkycells = psDBAffectedRows(config->dbh);
     1939        if (numSkycells > 0) {
     1940            if (!setdiffRunState(config, run->diff_id, "new", false)) {
     1941                psError(PS_ERR_UNKNOWN, false, "Failed to change diffRun.state for diff_id: %" PRId64,
     1942                        run->diff_id);
     1943                psFree(input);
     1944                psFree(diff);
     1945                psFree(run);
     1946                psFree(list);
     1947                psFree(insert);
     1948                psFree(results);
     1949                if (!psDBRollback(config->dbh)) {
     1950                    psError(PS_ERR_UNKNOWN, false, "database error");
     1951                }
     1952                return false;
     1953            }
     1954            run->state = psStringCopy("new");
     1955        } else {
     1956            // No overlap between the warps. Insert a dummy skycell which will complete this pair of warps
     1957            // XXX: we'd like to use diffInputSkyfileRowAlloc and diffInputSkyfileInsert but there doesn't
     1958            // seem to be a way to pass in NULL for skycell_id, stack1 and stack2
     1959            psString dummyQuery = NULL;
     1960            psStringAppend(&dummyQuery,
     1961              "INSERT INTO diffInputSkyfile VALUES(%" PRId64 ", NULL, %s, NULL, %s, NULL, '%s', 0)",
     1962                    run->diff_id,
     1963                    input,                      // warp1
     1964                    template,                   // warp2
     1965                    tess_id);
     1966            if (!p_psDBRunQuery(config->dbh, dummyQuery)) {
     1967                psError(PS_ERR_UNKNOWN, false, "database error");
     1968                psFree(dummyQuery);
     1969                psFree(input);
     1970                psFree(diff);
     1971                psFree(run);
     1972                psFree(list);
     1973                psFree(insert);
     1974                psFree(results);
     1975                if (!psDBRollback(config->dbh)) {
     1976                    psError(PS_ERR_UNKNOWN, false, "database error");
     1977                }
     1978                return false;
     1979            }
     1980            psFree(dummyQuery);
     1981            psString finishQuery = NULL;
     1982            psStringAppend( &finishQuery,
     1983                "UPDATE diffRun set state ='full', dist_group = NULL, note = 'dummy run - no overlap' WHERE diff_id = %" PRId64,
     1984                run->diff_id);
     1985            if (!p_psDBRunQuery(config->dbh, finishQuery)) {
     1986                psError(PS_ERR_UNKNOWN, false, "database error");
     1987                psFree(finishQuery);
     1988                psFree(input);
     1989                psFree(diff);
     1990                psFree(run);
     1991                psFree(list);
     1992                psFree(insert);
     1993                psFree(results);
     1994                if (!psDBRollback(config->dbh)) {
     1995                    psError(PS_ERR_UNKNOWN, false, "database error");
     1996                }
     1997                return false;
     1998            }
     1999            psFree(finishQuery);
     2000            run->state = psStringCopy("full");
     2001        }
    19362002        psFree(input);
    19372003        psFree(diff);
    1938 
    1939         if (!setdiffRunState(config, run->diff_id, "new", false)) {
    1940             psError(PS_ERR_UNKNOWN, false, "Failed to change diffRun.state for diff_id: %" PRId64,
    1941                     run->diff_id);
    1942             psFree(run);
    1943             psFree(list);
    1944             psFree(insert);
    1945             psFree(results);
    1946             if (!psDBRollback(config->dbh)) {
    1947                 psError(PS_ERR_UNKNOWN, false, "database error");
    1948             }
    1949             return false;
    1950         }
    19512004
    19522005        psArrayAdd(list, list->n, run);
     
    24612514        psString limitString = psDBGenerateLimitSQL(limit);
    24622515        psStringAppend(&query, " %s", limitString);
     2516        psStringSubstitute(&query,limitString,"@INNERLIMITS@");
    24632517        psFree(limitString);
     2518
     2519    }
     2520    else {
     2521      psStringSubstitute(&query,NULL,"@INNERLIMITS@");
    24642522    }
    24652523    //    fprintf(stderr,"%s",query);
  • branches/meh_branches/ppstack_test/ippTools/src/difftoolConfig.c

    r31435 r33415  
    283283    psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-obs_mode", 0, "search by observation mode", NULL);
    284284    psMetadataAddF32(definewarpwarpArgs, PS_LIST_TAIL, "-timediff", 0, "limit time difference between input and template", NAN);
     285    psMetadataAddF32(definewarpwarpArgs, PS_LIST_TAIL, "-mintimediff", 0, "limit time difference between input and template to be greater than this", NAN);
    285286    psMetadataAddBool(definewarpwarpArgs, PS_LIST_TAIL, "-backwards", 0, "Template comes after input?", false);
    286287    psMetadataAddF32(definewarpwarpArgs, PS_LIST_TAIL, "-rotdiff", 0, "limit rotator difference between input and template", NAN);
  • branches/meh_branches/ppstack_test/ippTools/src/disttool.c

    r31564 r33415  
    3434static bool updaterunMode(pxConfig *config);
    3535static bool revertrunMode(pxConfig *config);
    36 static bool rerunMode(pxConfig *config);
     36static bool startoverMode(pxConfig *config);
    3737static bool pendingcomponentMode(pxConfig *config);
    3838static bool addprocessedcomponentMode(pxConfig *config);
     39static bool updateprocessedcomponentMode(pxConfig *config);
     40static bool revertcomponentMode(pxConfig *config);
    3941static bool revertcomponentMode(pxConfig *config);
    4042static bool processedcomponentMode(pxConfig *config);
     
    8486        MODECASE(DISTTOOL_MODE_UPDATERUN, updaterunMode);
    8587        MODECASE(DISTTOOL_MODE_REVERTRUN, revertrunMode);
    86         MODECASE(DISTTOOL_MODE_RERUN, rerunMode);
     88        MODECASE(DISTTOOL_MODE_STARTOVER, startoverMode);
    8789        MODECASE(DISTTOOL_MODE_PENDINGCOMPONENT, pendingcomponentMode);
    8890        MODECASE(DISTTOOL_MODE_ADDPROCESSEDCOMPONENT, addprocessedcomponentMode);
     91        MODECASE(DISTTOOL_MODE_UPDATEPROCESSEDCOMPONENT, updateprocessedcomponentMode);
    8992        MODECASE(DISTTOOL_MODE_PROCESSEDCOMPONENT, processedcomponentMode);
    9093        MODECASE(DISTTOOL_MODE_REVERTCOMPONENT, revertcomponentMode);
     
    141144    PXOPT_LOOKUP_BOOL(use_alternate, config->args, "-use_alternate", false);
    142145    PXOPT_LOOKUP_BOOL(no_magic, config->args, "-no_magic", false);
    143     PXOPT_LOOKUP_BOOL(i_am_sure, config->args, "-i_am_sure", false);
    144146    PXOPT_LOOKUP_STR(set_label, config->args, "-set_label", false, false);
    145147    PXOPT_LOOKUP_STR(set_data_group, config->args, "-set_data_group", false, false);
     
    165167    PXOPT_LOOKUP_STR(dist_group, config->args, "-dist_group", false, false);
    166168
    167     // queuing no_magic runs can be quite dangerous. Require confirmation
    168     if (no_magic && !pretend && !i_am_sure) {
    169         psError(PXTOOLS_ERR_SYS, true, "-i_am_sure required to queue no_magic distribution runs");
    170         return false;
    171     }
    172    
     169    PXOPT_LOOKUP_BOOL(single, config->args, "-singlefilter", false);
     170    PXOPT_LOOKUP_BOOL(rerun, config->args, "-rerun", false);
     171
    173172    if (use_alternate) {
    174173        if (strcmp(stage, "raw")) {
     
    361360    } else if (!strcmp(stage, "sky")) {
    362361        magicRunType = "staticskyRun";
    363         query = pxDataGet("disttool_definebyquery_sky.sql");
     362        if (single) {
     363            query = pxDataGet("disttool_definebyquery_sky_singlefilter.sql");
     364        } else {
     365            query = pxDataGet("disttool_definebyquery_sky.sql");
     366        }
    364367        if (!query) {
    365368            psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     
    406409        }
    407410    }
     411    if (!rerun) {
     412        psStringAppend(&query, " AND (distRun.dist_id IS NULL)");
     413    }
    408414
    409415    if (psListLength(where->list)) {
     
    418424    if (!no_magic) {
    419425        psStringAppend(&query, " AND (%s.magicked > 0)", magicRunType);
     426    }
     427
     428    if (!strcmp(stage, "sky")) {
     429        if (single) {
     430            psStringAppend(&query, "\nGROUP BY sky_id HAVING count(stack_id) = 1");
     431        } else {
     432            psStringAppend(&query, "\nGROUP BY sky_id HAVING count(stack_id) > 1");
     433        }
    420434    }
    421435
     
    636650}
    637651
    638 static bool rerunMode(pxConfig *config)
     652static bool startoverMode(pxConfig *config)
    639653{
    640654    psMetadata *where = psMetadataAlloc();
     
    646660
    647661    // require data_group or dist_id to be supplied
    648     PXOPT_LOOKUP_STR(data_group, config->args, "-data_group", true, false);
     662    PXOPT_LOOKUP_STR(data_group, config->args, "-data_group", false, false);
    649663    PXOPT_LOOKUP_S64(dist_id, config->args, "-dist_id", false, false);
    650664    if (!data_group && !dist_id) {
     
    771785    PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "==");
    772786    PXOPT_COPY_STR(config->args, where, "-state", "state", "==");
    773     PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
     787    pxAddLabelSearchArgs(config, where, "-label", "distRun.label", "==");
    774788
    775789    PXOPT_COPY_S16(config->args, where,  "-fault", "distRun.fault", "==");
     
    962976    return true;
    963977}
     978static bool updateprocessedcomponentMode(pxConfig *config)
     979{
     980
     981    // required values
     982    PXOPT_LOOKUP_S64(dist_id, config->args, "-dist_id", true, false);
     983    PXOPT_LOOKUP_STR(component, config->args, "-component", true, false);
     984
     985    PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false);
     986    PXOPT_LOOKUP_BOOL(clearfault, config->args, "-clearfault", false);
     987    PXOPT_LOOKUP_S32(bytes, config->args, "-bytes", false, false);
     988    PXOPT_LOOKUP_STR(md5sum, config->args, "-md5sum", false, false);
     989    PXOPT_LOOKUP_STR(outdir, config->args, "-outdir", false, false);
     990    PXOPT_LOOKUP_STR(name, config->args, "-name", false, false);
     991
     992    bool setfault = clearfault || fault;
     993
     994    if (!bytes && !md5sum && !outdir && !name && !setfault && !fault) {
     995        psError(PS_ERR_UNKNOWN, true, "at least one of bytes md5sum outdir name fault or setfault is required");
     996        return false;
     997    }
     998
     999    char *sep = "";
     1000    psString query = psStringCopy("UPDATE distComponent SET ");
     1001    if (setfault) {
     1002        psStringAppend(&query, "%s fault = %d", sep, fault ? 1 : 0);
     1003        sep = ", ";
     1004    }
     1005    if (bytes) {
     1006        psStringAppend(&query, "%s bytes = %d", sep, bytes);
     1007        sep = ", ";
     1008    }
     1009    if (md5sum) {
     1010        psStringAppend(&query, "%s md5sum = '%s'", sep, md5sum);
     1011        sep = ", ";
     1012    }
     1013    if (outdir) {
     1014        psStringAppend(&query, "%s outdir = '%s'", sep, outdir);
     1015        sep = ", ";
     1016    }
     1017    if (name) {
     1018        psStringAppend(&query, "%s name = '%s'", sep, name);
     1019        sep = ", ";
     1020    }
     1021
     1022    psStringAppend(&query, "\nWHERE dist_id = %"PRId64 " AND component = '%s'",
     1023        dist_id, component);
     1024
     1025    if (!p_psDBRunQuery(config->dbh, query)) {
     1026        psError(PS_ERR_UNKNOWN, false, "database error");
     1027        psFree(query);
     1028        return false;
     1029    }
     1030    psFree(query);
     1031
     1032    return true;
     1033}
    9641034
    9651035static bool toadvanceMode(pxConfig *config)
     
    10411111    psMetadata *where = psMetadataAlloc();
    10421112    PXOPT_COPY_S64(config->args, where, "-dist_id", "dist_id", "==");
     1113    PXOPT_COPY_STR(config->args, where, "-component", "component", "==");
    10431114
    10441115    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     
    21782249    psMetadata *where = psMetadataAlloc();
    21792250    PXOPT_COPY_S64(config->args, where, "-fs_id", "fs_id", "==");
     2251    PXOPT_COPY_S64(config->args, where, "-dist_id", "dist_id", "==");
    21802252
    21812253    if (!psListLength(where->list)) {
  • branches/meh_branches/ppstack_test/ippTools/src/disttool.h

    r28938 r33415  
    2828    DISTTOOL_MODE_UPDATERUN,
    2929    DISTTOOL_MODE_REVERTRUN,
    30     DISTTOOL_MODE_RERUN,
     30    DISTTOOL_MODE_STARTOVER,
    3131    DISTTOOL_MODE_PENDINGCOMPONENT,
    3232    DISTTOOL_MODE_ADDPROCESSEDCOMPONENT,
    3333    DISTTOOL_MODE_REVERTCOMPONENT,
    3434    DISTTOOL_MODE_PROCESSEDCOMPONENT,
     35    DISTTOOL_MODE_UPDATEPROCESSEDCOMPONENT,
    3536    DISTTOOL_MODE_TOADVANCE,
    3637    DISTTOOL_MODE_PENDINGCLEANUP,
  • branches/meh_branches/ppstack_test/ippTools/src/disttoolConfig.c

    r30906 r33415  
    4949
    5050    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-no_magic", 0, "magic is not needed", false);
    51     psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-i_am_sure", 0, "confirmation needed when -no_magic is supplied", false);
    5251    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-use_alternate", 0, "use alternate inputs", false);
    5352    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_label",    0, "define label for run", NULL);
     
    6463    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label",         0, "select by run label", NULL);
    6564    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-dist_group",    0, "select by dist_group", NULL);
    66 
     65    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-singlefilter", 0, "select single filter runs (sky stage only)", false);
     66
     67    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-rerun", 0, "queue a new distRun even if one already exists", false);
    6768    psMetadataAddU64(definebyqueryArgs, PS_LIST_TAIL, "-limit",  0,  "limit result set to N items", 0);
    6869    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
     
    8788    psMetadataAddS16(updaterunArgs, PS_LIST_TAIL, "-fault",      0, "define fault code", 0);
    8889
    89     // -rerun
    90     psMetadata *rerunArgs = psMetadataAlloc();
    91     psMetadataAddStr(rerunArgs, PS_LIST_TAIL, "-data_group",    0, "define data_group (required)", NULL);
    92     psMetadataAddS64(rerunArgs, PS_LIST_TAIL, "-dist_id", 0, "search by dist_id", 0);
    93     psMetadataAddStr(rerunArgs, PS_LIST_TAIL, "-stage",    0, "search by stage", NULL);
    94     psMetadataAddS64(rerunArgs, PS_LIST_TAIL, "-stage_id", 0, "search by stage_id", 0);
    95     psMetadataAddStr(rerunArgs, PS_LIST_TAIL, "-label",    0, "search by label", NULL);
    96     psMetadataAddStr(rerunArgs, PS_LIST_TAIL, "-set_label",    0, "define new label", NULL);
    97     psMetadataAddBool(rerunArgs, PS_LIST_TAIL, "-pretend", 0, "don't queue runs just display what would be selected", false);
    98     psMetadataAddU64(rerunArgs, PS_LIST_TAIL, "-limit",  0,  "limit result set to N items", 0);
    99     psMetadataAddBool(rerunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
     90    // -startover
     91    psMetadata *startoverArgs = psMetadataAlloc();
     92    psMetadataAddStr(startoverArgs, PS_LIST_TAIL, "-data_group",    0, "define data_group", NULL);
     93    psMetadataAddS64(startoverArgs, PS_LIST_TAIL, "-dist_id", 0, "search by dist_id", 0);
     94    psMetadataAddStr(startoverArgs, PS_LIST_TAIL, "-stage",    0, "search by stage", NULL);
     95    psMetadataAddS64(startoverArgs, PS_LIST_TAIL, "-stage_id", 0, "search by stage_id", 0);
     96    psMetadataAddStr(startoverArgs, PS_LIST_TAIL, "-label",    0, "search by label", NULL);
     97    psMetadataAddStr(startoverArgs, PS_LIST_TAIL, "-set_label",    0, "define new label", NULL);
     98    psMetadataAddBool(startoverArgs, PS_LIST_TAIL, "-pretend", 0, "don't queue runs just display what would be selected", false);
     99    psMetadataAddU64(startoverArgs, PS_LIST_TAIL, "-limit",  0,  "limit result set to N items", 0);
     100    psMetadataAddBool(startoverArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
    100101
    101102    // -revertrun
     
    105106    psMetadataAddS64(revertrunArgs, PS_LIST_TAIL, "-stage_id", 0, "define stage_id", 0);
    106107    psMetadataAddStr(revertrunArgs, PS_LIST_TAIL, "-state",    0, "define state", NULL);
    107     psMetadataAddStr(revertrunArgs, PS_LIST_TAIL, "-label",    0, "define label", NULL);
     108    psMetadataAddStr(revertrunArgs, PS_LIST_TAIL, "-label",    PS_META_DUPLICATE_OK, "define label", NULL);
    108109    psMetadataAddS16(revertrunArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0);
    109110    psMetadataAddBool(revertrunArgs, PS_LIST_TAIL, "-all",    0, "revert all faulted runs", NULL);
     
    151152    psMetadata *processedcomponentArgs = psMetadataAlloc();
    152153    psMetadataAddS64(processedcomponentArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0);
     154    psMetadataAddStr(processedcomponentArgs, PS_LIST_TAIL, "-component", 0, "define component", NULL);
    153155    psMetadataAddU64(processedcomponentArgs, PS_LIST_TAIL, "-limit",  0,  "limit result set to N items", 0);
    154156    psMetadataAddBool(processedcomponentArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
     157
     158    // -updateprocessedcomponentArgs
     159    psMetadata *updateprocessedcomponentArgs = psMetadataAlloc();
     160    psMetadataAddS64(updateprocessedcomponentArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0);
     161    psMetadataAddStr(updateprocessedcomponentArgs, PS_LIST_TAIL, "-component", 0, "define component (required)", NULL);
     162    psMetadataAddStr(updateprocessedcomponentArgs, PS_LIST_TAIL, "-outdir", 0, "define output directory", NULL);
     163    psMetadataAddStr(updateprocessedcomponentArgs, PS_LIST_TAIL, "-name", 0, "define file name", NULL);
     164    psMetadataAddS32(updateprocessedcomponentArgs, PS_LIST_TAIL, "-bytes", 0, "define file size", 0);
     165    psMetadataAddStr(updateprocessedcomponentArgs, PS_LIST_TAIL, "-md5sum", 0, "define stage for bundle", NULL);
     166    psMetadataAddS32(updateprocessedcomponentArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0);
     167    psMetadataAddBool(updateprocessedcomponentArgs, PS_LIST_TAIL, "-clearfault", 0, "set fault to zero", false);
    155168
    156169    // -toadvance
     
    180193    psMetadata *updatefilesetArgs = psMetadataAlloc();
    181194    psMetadataAddS64(updatefilesetArgs, PS_LIST_TAIL, "-fs_id", 0, "define fs_id", 0);
    182 //    psMetadataAddS64(updatefilesetArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0);
     195    psMetadataAddS64(updatefilesetArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0);
    183196    psMetadataAddStr(updatefilesetArgs, PS_LIST_TAIL, "-set_state",0, "new value for state", NULL);
    184197    psMetadataAddS32(updatefilesetArgs, PS_LIST_TAIL, "-fault",   0, "define fault code", 0);
     
    343356    PXOPT_ADD_MODE("-definebyquery",    "define distribution run", DISTTOOL_MODE_DEFINEBYQUERY, definebyqueryArgs);
    344357    PXOPT_ADD_MODE("-updaterun",    "update distRun", DISTTOOL_MODE_UPDATERUN, updaterunArgs);
    345     PXOPT_ADD_MODE("-rerun",        "reprocess a cleaned distribution run", DISTTOOL_MODE_RERUN, rerunArgs);
     358    PXOPT_ADD_MODE("-startover",        "reprocess a cleaned distribution run", DISTTOOL_MODE_STARTOVER, startoverArgs);
    346359    PXOPT_ADD_MODE("-revertrun",    "revert distRun.faults", DISTTOOL_MODE_REVERTRUN, revertrunArgs);
    347360    PXOPT_ADD_MODE("-pendingcomponent",   "", DISTTOOL_MODE_PENDINGCOMPONENT,    pendingcomponentArgs);
    348361    PXOPT_ADD_MODE("-addprocessedcomponent", "", DISTTOOL_MODE_ADDPROCESSEDCOMPONENT, addprocessedcomponentArgs);
     362    PXOPT_ADD_MODE("-updateprocessedcomponent", "", DISTTOOL_MODE_UPDATEPROCESSEDCOMPONENT, updateprocessedcomponentArgs);
    349363    PXOPT_ADD_MODE("-revertcomponent",    "revert faulted components", DISTTOOL_MODE_REVERTCOMPONENT, revertcomponentArgs);
    350364    PXOPT_ADD_MODE("-processedcomponent", "", DISTTOOL_MODE_PROCESSEDCOMPONENT, processedcomponentArgs);
  • branches/meh_branches/ppstack_test/ippTools/src/faketool.c

    r30907 r33415  
    335335    PXOPT_COPY_F32(config->args, where, "-sun_angle_max", "sun_angle", "<");
    336336    PXOPT_COPY_STR(config->args, where, "-label", "fakeRun.label", "==");
     337    PXOPT_COPY_STR(config->args, where, "-state", "fakeRun.state", "==");
    337338    PXOPT_COPY_STR(config->args, where, "-data_group", "fakeRun.data_group", "==");
    338339    PXOPT_COPY_STR(config->args, where, "-dist_group", "fakeRun.dist_group", "==");
     
    625626    psMetadata *where = psMetadataAlloc();
    626627    pxAddLabelSearchArgs (config, where, "-label", "fakeRun.label", "==");
    627     PXOPT_COPY_S64(config->args, where, "-fake_id", "fake_id", "==");
    628     PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
    629     PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "==");
    630     PXOPT_COPY_STR(config->args, where, "-inst", "camera", "==");
    631     PXOPT_COPY_STR(config->args, where, "-telescope", "telescope", "==");
     628    PXOPT_COPY_S64(config->args, where, "-fake_id", "fakeRun.fake_id", "==");
     629    PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "==");
     630    PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "==");
     631    PXOPT_COPY_STR(config->args, where, "-inst", "rawExp..camera", "==");
     632    PXOPT_COPY_STR(config->args, where, "-telescope", "rawExp.telescope", "==");
    632633    PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "dateobs", ">=");
    633634    PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "dateobs", "<=");
  • branches/meh_branches/ppstack_test/ippTools/src/flatcorr.c

    r31375 r33415  
    666666                "cam",
    667667                row->cam_id,
     668                0,
    668669                row->workdir,
    669670                row->reduction,
  • branches/meh_branches/ppstack_test/ippTools/src/laptool.c

    r31827 r33415  
    3030static bool updateexpMode(pxConfig *config);
    3131
     32static bool diffcheckMode(pxConfig *config);
     33
    3234static bool inactiveexpMode(pxConfig *config);
    3335
     
    6264    MODECASE(LAPTOOL_MODE_UPDATEEXP,     updateexpMode);
    6365
     66    MODECASE(LAPTOOL_MODE_DIFFCHECK,     diffcheckMode);
     67   
    6468    MODECASE(LAPTOOL_MODE_INACTIVEEXP,   inactiveexpMode);
    6569  default:
     
    276280  PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "==");
    277281
     282  psMetadata *chipWhere = psMetadataAlloc();
     283  PXOPT_COPY_S64(config->args, chipWhere, "-seq_id", "lapRun.seq_id", "==");
     284 
    278285  // This seems unnecessarily clunky.
    279286  if (!all_obsmode) {
     
    296303  }
    297304
     305  psString chipWhereClause = psDBGenerateWhereConditionSQL(chipWhere,NULL);
    298306  if (whereClause) {
    299307    psStringSubstitute(&query,whereClause,"@WHERE@");
    300308  }
     309  if (chipWhereClause) {
     310    psStringSubstitute(&query,chipWhereClause,"@CHIPWHERE@");
     311  }
    301312  psFree(where);
     313  psFree(chipWhere);
    302314
    303315  // Fetch exposures
     
    378390
    379391  PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     392  PXOPT_LOOKUP_U64(limit,   config->args, "-limit",  false, false);
    380393 
    381394  psMetadata *where = psMetadataAlloc();
     
    399412    psStringAppend(&query, " WHERE %s", whereClause);
    400413    psFree(whereClause);
     414  }
     415  if (limit) {
     416    psString limitString = psDBGenerateLimitSQL(limit);
     417    psStringAppend(&query, "\n %s", limitString);
     418    psFree(limitString);
    401419  }
    402420 
     
    755773}
    756774
    757 
    758    
     775static bool diffcheckMode(pxConfig *config)
     776{
     777  PS_ASSERT_PTR_NON_NULL(config, false);
     778  PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     779 
     780  psMetadata *where = psMetadataAlloc();
     781  PXOPT_COPY_S64(config->args, where, "-lap_id", "lapRun.lap_id", "==");
     782  PXOPT_COPY_S64(config->args, where, "-exp_id",  "exp_id", "==");
     783  PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "==");
     784  PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "==");
     785  PXOPT_COPY_S64(config->args, where, "-seq_id",  "seq_id", "==");
     786  PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id", "==");
     787
     788  psString query = pxDataGet("laptool_WSdiff_check.sql");
     789  if (!query) {
     790    psError(PXTOOLS_ERR_SYS, false, "failed to retrieve SQL statement");
     791    return(false);
     792  }
     793 
     794  if (psListLength(where->list)) {
     795    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     796    psStringPrepend(&whereClause, "\n AND ");
     797    psStringSubstitute(&query,whereClause,"@WHERE@");
     798    psFree(whereClause);
     799  }
     800
     801  if (!p_psDBRunQuery(config->dbh, query)) {
     802    psError(PS_ERR_UNKNOWN, false, "database error");
     803    psFree(query);
     804    return false;
     805  }
     806  psFree(query);
     807
     808  psArray *output = p_psDBFetchResult(config->dbh);
     809  if (!output) {
     810    psErrorCode err = psErrorCodeLast();
     811    switch (err) {
     812    case PS_ERR_DB_CLIENT:
     813      psError(PXTOOLS_ERR_SYS, false, "database error");
     814    case PS_ERR_DB_SERVER:
     815      psError(PXTOOLS_ERR_PROG, false, "database error");
     816    default:
     817      psError(PXTOOLS_ERR_PROG, false, "unknown error %d",err);
     818    }
     819
     820    return false;
     821  }
     822  if (!psArrayLength(output)) {
     823    psTrace("laptool", PS_LOG_INFO, "no rows found");
     824    psFree(output);
     825    return true;
     826  }
     827
     828  if (psArrayLength(output)) {
     829    if (!ippdbPrintMetadatas(stdout, output, "lapRunWarpStackSkycells", !simple)) {
     830      psError(PS_ERR_UNKNOWN, false, "failed to print array");
     831      psFree(output);
     832      return false;
     833    }
     834  }
     835
     836  psFree(output);
     837  return(true);
     838}   
    759839
    760840static bool inactiveexpMode(pxConfig *config)
  • branches/meh_branches/ppstack_test/ippTools/src/laptool.h

    r31435 r33415  
    1919  LAPTOOL_MODE_STACKS,
    2020  LAPTOOL_MODE_UPDATEEXP,
     21  LAPTOOL_MODE_DIFFCHECK,
    2122  LAPTOOL_MODE_INACTIVEEXP
    2223} laptoolMode;
  • branches/meh_branches/ppstack_test/ippTools/src/laptoolConfig.c

    r31528 r33415  
    7474  ADD_OPT(Str, pendingrunArgs, "-fault",                      "search by LAP run fault", NULL);
    7575  ADD_OPT(Bool,pendingrunArgs, "-simple",                     "use the simple output format", false);
     76  ADD_OPT(U64, pendingrunArgs, "-limit",                      "limit result set to N items", 0);
    7677
    7778  // -listrun
     
    8687  ADD_OPT(Str, listrunArgs, "-fault",                      "search by LAP run fault", NULL);
    8788  ADD_OPT(Bool,listrunArgs, "-simple",                     "use the simple output format", false);
     89  ADD_OPT(U64, listrunArgs, "-limit",                      "limit result set to N items", 0);
    8890
    8991  // -updaterun
     
    132134  ADD_OPT(Bool,updateexpArgs, "-inactive",                    "set this exposure to active", 0);
    133135
     136  // -diffcheck
     137  psMetadata *diffcheckArgs = psMetadataAlloc();
     138  ADD_OPT(S64, diffcheckArgs, "-lap_id",                      "search by lap run ID", 0);
     139  ADD_OPT(S64, diffcheckArgs, "-exp_id",                      "search by exposure ID", 0);
     140  ADD_OPT(S64, diffcheckArgs, "-chip_id",                     "search by chip ID", 0);
     141  ADD_OPT(S64, diffcheckArgs, "-warp_id",                     "search by warp ID", 0);
     142  ADD_OPT(S64, diffcheckArgs, "-seq_id",                      "search by lap sequence ID", 0);
     143  ADD_OPT(Str, diffcheckArgs, "-skycell_id",                  "search by skycell ID", 0);
     144  ADD_OPT(Bool, diffcheckArgs, "-simple",                     "use simple output format", 0);
     145 
    134146  // -inactiveexp
    135147  psMetadata *inactiveexpArgs = psMetadataAlloc();
     
    152164  PXOPT_ADD_MODE("-stacks",                  "", LAPTOOL_MODE_STACKS,           stacksArgs);
    153165  PXOPT_ADD_MODE("-updateexp",               "", LAPTOOL_MODE_UPDATEEXP,        updateexpArgs);
     166  PXOPT_ADD_MODE("-diffcheck",               "", LAPTOOL_MODE_DIFFCHECK,        diffcheckArgs);
    154167  PXOPT_ADD_MODE("-inactiveexp",             "", LAPTOOL_MODE_INACTIVEEXP,      inactiveexpArgs);
    155168 
  • branches/meh_branches/ppstack_test/ippTools/src/magicdstool.c

    r30854 r33415  
    5353
    5454static bool setmagicDSRunState(pxConfig *config, psS64 magic_id, psString extraSetString, psMetadata *where, const char *state);
     55static bool validDSRunState(const char *state);
    5556
    5657# define MODECASE(caseName, func) \
     
    350351    PXOPT_LOOKUP_STR(stage, config->args, "-stage", true, false);
    351352    PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false);
     353    PXOPT_LOOKUP_STR(set_label, config->args, "-set_label", true, false);
    352354
    353355    // Optional
    354356    PXOPT_LOOKUP_STR(recoveryroot, config->args, "-recoveryroot", false, false);
    355357    PXOPT_LOOKUP_BOOL(noreplace, config->args, "-noreplace", false);
    356     PXOPT_LOOKUP_STR(set_label, config->args, "-set_label", false, false);
    357358    PXOPT_LOOKUP_STR(set_data_group, config->args, "-set_data_group", false, false);
    358359    PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false);
     
    374375    pxAddLabelSearchArgs (config, where, "-magic_label", "magicRun.label", "=="); // define magic label
    375376    psString labelName = NULL;                                                    // Name of label
    376     psStringAppend(&labelName, "%sRun.label", stage);
     377    if (strcmp(stage, "camera")) {
     378        psStringAppend(&labelName, "%sRun.label", stage);
     379    } else {
     380        psStringAppend(&labelName, "camRun.label");
     381    }
    377382    pxAddLabelSearchArgs (config, where, "-stage_label", labelName, "=="); // define stageRun label
    378383    psFree(labelName);
     
    392397        break;
    393398      case IPP_STAGE_CAMERA:
     399        query = pxDataGet("magicdstool_definecopy_camera.sql");
     400        break;
    394401      case IPP_STAGE_DIFF:
    395402      case IPP_STAGE_FAKE:
     
    12061213
    12071214    psMetadata *where = psMetadataAlloc();
    1208     // new state (required
    1209     PXOPT_LOOKUP_STR(new_state, config->args, "-set_state", true, false);
     1215    // new state
     1216    PXOPT_LOOKUP_STR(new_state, config->args, "-set_state", false, false);
    12101217    // old state (required)
    12111218    PXOPT_LOOKUP_STR(state, config->args, "-state", true, false);
     
    12311238        if (!strcmp(state, "failed_revert")) {
    12321239            new_state = "new";
     1240        } else if (!strcmp(state, "failed_revert_ud")) {
     1241            new_state = "update";
    12331242        } else if (!strcmp(state, "failed_cleanup")) {
    12341243            new_state = "goto_cleaned";
     
    12371246            return false;
    12381247        }
     1248    } else {
     1249        if (!validDSRunState(new_state)) {
     1250            psError(PS_ERR_UNKNOWN, true, "unexpected value for new state: %s", new_state);
     1251            return false;
     1252        }
    12391253    }
    12401254    if (!p_psDBRunQueryF(config->dbh, query, new_state)) {
    1241         psError(PS_ERR_UNKNOWN, false, "failed to revert");
     1255        psError(PS_ERR_UNKNOWN, false, "failed to clear state faults");
    12421256        psFree(query);
    12431257        return false;
     
    13971411          (strcmp(state, "wait") == 0) ||
    13981412          (strcmp(state, "failed_revert") == 0) ||
     1413          (strcmp(state, "failed_revert_ud") == 0) ||
    13991414          (strcmp(state, "error_cleaned") == 0) ||
    14001415          (strcmp(state, "restored") == 0) ||
  • branches/meh_branches/ppstack_test/ippTools/src/magicdstoolConfig.c

    r30854 r33415  
    7979    psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-recoveryroot", 0, "define recovery directory", NULL);
    8080    psMetadataAddBool(definecopyArgs, PS_LIST_TAIL, "-noreplace", 0, "do not replace input files with the destreaked versions", false);
    81     psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_label",    0, "define label", NULL);
     81    psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_label",    0, "define label (required)", NULL);
    8282    psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data_group", NULL);
    8383    psMetadataAddStr(definecopyArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL);
     
    163163    // -clearstatefaults
    164164    psMetadata *clearstatefaultsArgs = psMetadataAlloc();
    165     psMetadataAddStr(clearstatefaultsArgs, PS_LIST_TAIL, "-set_state", 0, "new value for state (required)", NULL);
     165    psMetadataAddStr(clearstatefaultsArgs, PS_LIST_TAIL, "-set_state", 0, "new value for state", NULL);
    166166    psMetadataAddStr(clearstatefaultsArgs, PS_LIST_TAIL, "-state", 0, "search by state (required)", NULL);
    167167    psMetadataAddS64(clearstatefaultsArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "search by magictool de-streak ID", 0);
  • branches/meh_branches/ppstack_test/ippTools/src/magictool.c

    r31659 r33415  
    131131    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    132132    PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false);
    133 
     133    PXOPT_LOOKUP_BOOL(multidiff, config->args, "-multidiff", false);
    134134    psMetadata *diffWhere = psMetadataAlloc(); // WHERE conditions for diffRuns
    135135    PXOPT_COPY_STR(config->args, diffWhere, "-diff_label", "diffRun.label", "==");
     
    142142    // Get list of exposures ready to magic
    143143    {
    144         psString query = pxDataGet("magictool_definebyquery_select.sql");
     144        psString query;
     145        if (multidiff) {
     146          query = pxDataGet("magictool_definebyquery_select_multidiff.sql");
     147        }
     148        else {
     149          query = pxDataGet("magictool_definebyquery_select.sql");
     150        }
    145151        if (!query) {
    146152            psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
  • branches/meh_branches/ppstack_test/ippTools/src/magictoolConfig.c

    r31605 r33415  
    6161    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-available", 0, "process what's immediately available?", false);
    6262    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-rerun", 0, "generate new run even if existing?", false);
     63    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-multidiff", 0, "allow multiple diffs to be magicked with the same label", false);
    6364    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
    6465    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend", 0, "list results but do not queue", false);
  • branches/meh_branches/ppstack_test/ippTools/src/minidvodbtool.c

    r29528 r33415  
    8989    psMetadata *where = psMetadataAlloc();
    9090    pxcamGetSearchArgs (config, where);
    91     PXOPT_COPY_S64(config->args, where,  "-minidvodb_id",    "minidvodbRun.minidvodbRun_id", "==");
     91    PXOPT_COPY_S64(config->args, where,  "-minidvodb_id",    "minidvodbRun.minidvodb_id", "==");
    9292    pxAddLabelSearchArgs (config, where, "-minidvodb_group",     "minidvodbRun.minidvodb_group", "=="); // define using camRun label
    9393   
  • branches/meh_branches/ppstack_test/ippTools/src/pstamptool.c

    r31517 r33415  
    5656static bool revertdependentMode(pxConfig *config);
    5757static bool getwebrequestnumMode(pxConfig *config);
     58static bool addfileMode(pxConfig *config);
     59static bool listfileMode(pxConfig *config);
     60static bool deletefileMode(pxConfig *config);
    5861
    5962# define MODECASE(caseName, func) \
     
    103106        MODECASE(PSTAMPTOOL_MODE_REVERTDEPENDENT, revertdependentMode);
    104107        MODECASE(PSTAMPTOOL_MODE_GETWEBREQUESTNUM, getwebrequestnumMode);
     108        MODECASE(PSTAMPTOOL_MODE_ADDFILE, addfileMode);
     109        MODECASE(PSTAMPTOOL_MODE_LISTFILE, listfileMode);
     110        MODECASE(PSTAMPTOOL_MODE_DELETEFILE, deletefileMode);
    105111        default:
    106112            psAbort("invalid option (this should not happen)");
     
    173179
    174180    if (psListLength(where->list)) {
    175         psString whereClause = psDBGenerateWhereSQL(where, NULL);
    176         psStringAppend(&query, " %s", whereClause);
     181        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     182        psStringAppend(&query, " AND %s", whereClause);
    177183        psFree(whereClause);
    178184    }
     
    698704    PXOPT_LOOKUP_S16(fault,       config->args, "-fault",      false, false);
    699705    PXOPT_LOOKUP_S64(exp_id,      config->args, "-exp_id",     false, false);
    700     PXOPT_LOOKUP_S64(options,     config->args, "-options",     false, false);
     706    PXOPT_LOOKUP_S64(options,     config->args, "-options",    false, false);
    701707    PXOPT_LOOKUP_S64(dep_id,      config->args, "-dep_id",     false, false);
     708    PXOPT_LOOKUP_S64(parent_id,   config->args, "-parent_id",  false, false);
     709    PXOPT_LOOKUP_BOOL(is_parent,  config->args, "-is_parent",  false);
    702710
    703711    // unless the job is being inserted with stop state require outputBase
     
    710718    if (!strcmp(job_type, "get_image") || !strcmp(job_type, "detect_query") || !strcmp(job_type, "none")) {
    711719        stampJob = false;
     720    } else if (!strcmp(job_type, "child")) {
     721        // job_type child's only action is to resolve a dependent
     722        // XXX: IS this necessary?
     723        if (!dep_id) {
     724            psError(PS_ERR_UNKNOWN, true, "dep_id required for child job\n");
     725            return false;
     726        }
     727        if (is_parent) {
     728            psError(PS_ERR_UNKNOWN, true, "job type child can not be a parent job\n");
     729            return false;
     730        }
     731        stampJob = false;
     732    } else if (!strcmp(job_type, "mosaic")) {
     733        stampJob = false;
     734        is_parent = true;
    712735    } else if (!strcmp(job_type, "stamp")) {
    713736        stampJob = true;
     
    717740    }
    718741    if (!pstampJobInsert(config->dbh,
    719             0, // job_id
     742            0,          // job_id
    720743            req_id,
    721744            rownum,
     
    727750            options,
    728751            dep_id,
    729             0   // fault_count
     752            0,          // fault_count
     753            parent_id,
     754            is_parent
    730755            )) {
    731756        psError(PS_ERR_UNKNOWN, false, "database error");
     
    755780    PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "==");
    756781    PXOPT_COPY_S64(config->args, where, "-dep_id", "dep_id", "==");
     782    PXOPT_COPY_STR(config->args, where, "-jobType", "jobType", "==");
    757783    PXOPT_COPY_S64(config->args, where, "-fault",  "fault", "==");
    758784
     
    836862
    837863    // use psDBGenerateWhereSQL because the SQL yields an intermediate table
     864    psString whereStr = NULL;
    838865    if (psListLength(where->list)) {
    839866        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
    840         psStringAppend(&query, " AND %s", whereClause);
     867        psStringAppend(&whereStr, "\n AND %s", whereClause);
    841868        psFree(whereClause);
     869    } else {
     870        psStringAppend(&whereStr, "%s", "");
    842871    }
    843872    psFree(where);
     
    852881    }
    853882
    854     if (!p_psDBRunQuery(config->dbh, query)) {
    855         psError(PS_ERR_UNKNOWN, false, "database error");
    856         psFree(query);
    857         return false;
    858     }
     883    if (!p_psDBRunQueryF(config->dbh, query, whereStr, whereStr)) {
     884        psError(PS_ERR_UNKNOWN, false, "database error");
     885        psFree(whereStr);
     886        psFree(query);
     887        return false;
     888    }
     889    psFree(whereStr);
    859890    psFree(query);
    860891
     
    950981
    951982    PXOPT_LOOKUP_S32(fault,  config->args, "-set_fault",  true, false);
     983    PXOPT_LOOKUP_STR(state,  config->args, "-set_state",  false, false);
    952984
    953985    psMetadata *where = psMetadataAlloc();
     
    9801012    psFree(where);
    9811013
    982     if (!p_psDBRunQueryF(config->dbh, query, fault, fault)) {
     1014    if (!p_psDBRunQueryF(config->dbh, query, fault, fault, state)) {
    9831015        psError(PS_ERR_UNKNOWN, false, "database error");
    9841016        psFree(query);
     
    14761508    return true;
    14771509}
     1510
     1511static bool addfileMode(pxConfig *config)
     1512{
     1513    PS_ASSERT_PTR_NON_NULL(config, false);
     1514
     1515    PXOPT_LOOKUP_S64(job_id, config->args, "-job_id", true, false);
     1516    PXOPT_LOOKUP_STR(path,   config->args, "-path",   true, false);
     1517
     1518    if (!pstampFileInsert(config->dbh,
     1519            0, // file_id
     1520            job_id,
     1521            path
     1522            )) {
     1523        psError(PS_ERR_UNKNOWN, false, "database error");
     1524        return false;
     1525    }
     1526
     1527    psU64 affected = psDBAffectedRows(config->dbh);
     1528    if (affected != 1) {
     1529        psError(PS_ERR_UNKNOWN, false,
     1530            "should have affected one row but %" PRIu64 " rows were modified",
     1531            affected);
     1532        return false;
     1533    }
     1534
     1535    psS64 file_id = psDBLastInsertID(config->dbh);
     1536    printf("%" PRId64 "\n", file_id);
     1537
     1538    return true;
     1539}
     1540
     1541static bool listfileMode(pxConfig *config)
     1542{
     1543    PS_ASSERT_PTR_NON_NULL(config, false);
     1544
     1545    psMetadata *where = psMetadataAlloc();
     1546    PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "==");
     1547    PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "==");
     1548    PXOPT_COPY_S64(config->args, where, "-file_id", "file_id", "==");
     1549
     1550    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1551    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1552
     1553    if (!psListLength(where->list)) {
     1554        fprintf(stderr, "search arguments are required\n");
     1555        exit (1);
     1556    }
     1557
     1558    psString query = pxDataGet("pstamptool_listfile.sql");
     1559    if (!query) {
     1560        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1561        return false;
     1562    }
     1563
     1564    // use psDBGenerateWhereSQL because the SQL yields an intermediate table
     1565    if (psListLength(where->list)) {
     1566        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1567        psStringAppend(&query, " WHERE %s", whereClause);
     1568        psFree(whereClause);
     1569    }
     1570    psFree(where);
     1571
     1572    // treat limit == 0 as "no limit"
     1573    if (limit) {
     1574        psString limitString = psDBGenerateLimitSQL(limit);
     1575        psStringAppend(&query, " %s", limitString);
     1576        psFree(limitString);
     1577    }
     1578
     1579    if (!p_psDBRunQuery(config->dbh, query)) {
     1580        psError(PS_ERR_UNKNOWN, false, "database error");
     1581        psFree(query);
     1582        return false;
     1583    }
     1584    psFree(query);
     1585
     1586    psArray *output = p_psDBFetchResult(config->dbh);
     1587    if (!output) {
     1588        psError(PS_ERR_UNKNOWN, false, "database error");
     1589        return false;
     1590    }
     1591    if (!psArrayLength(output)) {
     1592        psTrace("pstamptool", PS_LOG_INFO, "no rows found");
     1593        psFree(output);
     1594        return true;
     1595    }
     1596
     1597    // negative simple so the default is true
     1598    if (!ippdbPrintMetadatas(stdout, output, "pstampFile", !simple)) {
     1599        psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1600        psFree(output);
     1601        return false;
     1602    }
     1603
     1604    psFree(output);
     1605
     1606    return true;
     1607}
     1608
     1609static bool deletefileMode(pxConfig *config)
     1610{
     1611    PS_ASSERT_PTR_NON_NULL(config, false);
     1612
     1613    PXOPT_LOOKUP_S64(job_id, config->args, "-job_id", true, false);
     1614
     1615    psString query = NULL;
     1616    psStringAppend(&query, "DELETE FROM pstampFile WHERE job_id = %" PRId64, job_id);
     1617
     1618    if (!p_psDBRunQuery(config->dbh, query)) {
     1619        psError(PS_ERR_UNKNOWN, false, "database error");
     1620        psFree(query);
     1621        return false;
     1622    }
     1623    psFree(query);
     1624
     1625    psU64 affected = psDBAffectedRows(config->dbh);
     1626    psLogMsg("pstamptool", PS_LOG_INFO, "Deleted %" PRIu64 " rows from pstampFile", affected);
     1627
     1628    return true;
     1629}
  • branches/meh_branches/ppstack_test/ippTools/src/pstamptool.h

    r29248 r33415  
    5050    PSTAMPTOOL_MODE_REVERTDEPENDENT,
    5151    PSTAMPTOOL_MODE_GETWEBREQUESTNUM,
     52    PSTAMPTOOL_MODE_ADDFILE,
     53    PSTAMPTOOL_MODE_LISTFILE,
     54    PSTAMPTOOL_MODE_DELETEFILE,
    5255} pstamptoolMode;
    5356
  • branches/meh_branches/ppstack_test/ippTools/src/pstamptoolConfig.c

    r30543 r33415  
    144144    psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-options", 0,          "define options", 0);
    145145    psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-dep_id", 0,           "define job dep_id", 0);
     146    psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-parent_id", 0,        "define parent's job_id", 0);
     147    psMetadataAddBool(addjobArgs, PS_LIST_TAIL, "-is_parent", 0,       "define whether job has children", false);
    146148    psMetadataAddS16(addjobArgs, PS_LIST_TAIL, "-fault", 0,            "define job result", 0);
    147149
     
    152154    psMetadataAddS64(listjobArgs, PS_LIST_TAIL, "-dep_id", 0,          "select by dependent ID", 0);
    153155    psMetadataAddS16(listjobArgs, PS_LIST_TAIL, "-fault", 0,           "select by fault", 0);
     156    psMetadataAddStr(listjobArgs, PS_LIST_TAIL, "-jobType", 0,         "select by jobType", 0);
    154157    psMetadataAddU64(listjobArgs, PS_LIST_TAIL, "-limit",  0,          "limit result set to N items", 0);
    155158    psMetadataAddBool(listjobArgs, PS_LIST_TAIL, "-simple", 0,         "use the simple output format", false);
     
    186189    psMetadataAddS32(stopdependentjobArgs, PS_LIST_TAIL,  "-fault_count", 0,   "select by fault_count (>=)", 0);
    187190    psMetadataAddS16(stopdependentjobArgs, PS_LIST_TAIL,  "-set_fault", 0,    "new fault value for job and dependent (required)", 0);
     191    psMetadataAddStr(stopdependentjobArgs, PS_LIST_TAIL, "-set_state", 0,            "new pstampDependent.state", "new");
    188192    psMetadataAddStr(stopdependentjobArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by pstampJob label (LIKE comparision)", NULL);
    189193    psMetadataAddU64(stopdependentjobArgs, PS_LIST_TAIL, "-limit", 0,      "not used", 0);
     
    274278    psMetadata *modes = psMetadataAlloc();
    275279
     280    // -addfile
     281    psMetadata *addfileArgs = psMetadataAlloc();
     282    psMetadataAddS64(addfileArgs, PS_LIST_TAIL, "-job_id",       0, "define job ID for file (required)", 0);
     283    psMetadataAddStr(addfileArgs, PS_LIST_TAIL, "-path",         0, "define path for file (required)", NULL);
     284
     285    // -listfile
     286    psMetadata *listfileArgs = psMetadataAlloc();
     287    psMetadataAddS64(listfileArgs, PS_LIST_TAIL, "-file_id",     0, "select by file ID", 0);
     288    psMetadataAddS64(listfileArgs, PS_LIST_TAIL, "-job_id",      0, "select by job ID", 0);
     289    psMetadataAddS64(listfileArgs, PS_LIST_TAIL, "-req_id",      0, "select by request ID", 0);
     290    psMetadataAddU64(listfileArgs, PS_LIST_TAIL, "-limit",       0, "limit result set to N items", 0);
     291    psMetadataAddBool(listfileArgs, PS_LIST_TAIL, "-simple",     0, "use the simple output format", false);
     292
     293    // -deletefile
     294    psMetadata *deletefileArgs = psMetadataAlloc();
     295    psMetadataAddS64(deletefileArgs, PS_LIST_TAIL, "-job_id",      0, "select by job ID (required)", 0);
     296
    276297    PXOPT_ADD_MODE("-addreq",          "", PSTAMPTOOL_MODE_ADDREQ,       addreqArgs);
    277298    PXOPT_ADD_MODE("-pendingreq",      "", PSTAMPTOOL_MODE_PENDINGREQ,   pendingreqArgs);
     
    302323    PXOPT_ADD_MODE("-project",         "", PSTAMPTOOL_MODE_PROJECT,    projectArgs);
    303324    PXOPT_ADD_MODE("-getwebrequestnum","", PSTAMPTOOL_MODE_GETWEBREQUESTNUM,   getwebrequestnumArgs);
     325    PXOPT_ADD_MODE("-addfile",         "", PSTAMPTOOL_MODE_ADDFILE,   addfileArgs);
     326    PXOPT_ADD_MODE("-listfile",        "", PSTAMPTOOL_MODE_LISTFILE,   listfileArgs);
     327    PXOPT_ADD_MODE("-deletefile",      "", PSTAMPTOOL_MODE_DELETEFILE,   deletefileArgs);
    304328
    305329    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
  • branches/meh_branches/ppstack_test/ippTools/src/pxadd.c

    r31375 r33415  
    131131                       char *stage,
    132132                       psS64 stage_id,
     133                       psS32 stage_extra1,
    133134                       char *workdir,
    134135                       char *reduction,
     
    159160        psMemSetPersistent(query, true);
    160161      }
     162      if (strcmp(stage,"staticsky_multi") == 0) {
     163        query = pxDataGet("addtool_queue_sky_id_multi.sql");
     164        psMemSetPersistent(query, true);
     165      }
    161166        if (!query) {
    162167            psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     
    170175    // on 32/64
    171176    if (!p_psDBRunQueryF(config->dbh, query,
     177                         stage_extra1 ? stage_extra1 : 0,
    172178                         "new", // state
    173179                         workdir  ? workdir   : "NULL",
  • branches/meh_branches/ppstack_test/ippTools/src/pxadd.h

    r31375 r33415  
    3333                       char *stage,
    3434                       psS64 stage_id,
     35                       psS32 stage_extra1,
    3536                       char *workdir,
    3637                       char *reduction,
  • branches/meh_branches/ppstack_test/ippTools/src/pxchip.c

    r28258 r33415  
    7171    psMetadataAddF32(md,  PS_LIST_TAIL, "-sun_angle_min",      0, "search by min solar angle", NAN);
    7272    psMetadataAddF32(md,  PS_LIST_TAIL, "-sun_angle_max",      0, "search by max solar angle", NAN);
    73     psMetadataAddStr(md,  PS_LIST_TAIL, "-object",             0, "search by exposure object", NULL);
     73    psMetadataAddStr(md,  PS_LIST_TAIL, "-object",             0, "search by exposure object (LIKE comparison)", NULL);
    7474    psMetadataAddStr(md,  PS_LIST_TAIL, "-comment",            0, "search by comment field (LIKE comparison)", NULL);
    7575    psMetadataAddStr(md,  PS_LIST_TAIL, "-obs_mode",           0, "search by observation mode", NULL);
  • branches/meh_branches/ppstack_test/ippTools/src/pxtools.c

    r30729 r33415  
    3535    if (!strcmp(state, "drop")) return true;
    3636    if (!strcmp(state, "wait")) return true;
     37    if (!strcmp(state, "keep")) return true;
    3738    if (!strcmp(state, "goto_cleaned")) return true;
    3839    if (!strcmp(state, "error_cleaned")) return true;
  • branches/meh_branches/ppstack_test/ippTools/src/regtool.c

    r31938 r33415  
    268268      }
    269269    }
     270    char *is_stareim = strchr(psMetadataLookupStr(NULL,row,"exp_name"),'a');
     271    if (is_stareim) {
     272      continue;
     273    }
    270274   
    271275    if ((psMetadataLookupS32(NULL,row,"is_downloaded") != 1)||
     
    386390      }
    387391    }
     392    char *is_stareim = strchr(psMetadataLookupStr(NULL,row,"exp_name"),'a');
     393    if (is_stareim) {
     394      continue;
     395    }
     396
    388397
    389398    bool status = false;
     
    882891    PXOPT_LOOKUP_STR(set_md5sum, config->args, "-set_md5sum", false, false);
    883892    PXOPT_LOOKUP_STR(set_state, config->args, "-set_state", false, false);
     893    PXOPT_LOOKUP_BOOL(set_ignored, config->args, "-set_ignored", false);
     894    PXOPT_LOOKUP_BOOL(clear_ignored, config->args, "-clear_ignored", false);
    884895    PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false);
    885896   
    886     if ((fault == INT16_MAX) && (burntool_state == INT16_MAX) && !set_state) {
    887         psError(PS_ERR_UNKNOWN, false, "one of -fault or -burntool_state or -set_state must be selected");
     897    if ((fault == INT16_MAX) && (burntool_state == INT16_MAX) && !set_state && !set_ignored && !clear_ignored) {
     898        psError(PS_ERR_UNKNOWN, false, "at least one of -fault or -burntool_state -set_ignored -clear_ignored or -set_state must be selected");
    888899        return false;
    889900    }
    890901    if ((fault != INT16_MAX) && (burntool_state != INT16_MAX)) {
    891902        psError(PS_ERR_UNKNOWN, false, "only one of -fault or -burntool_state must be selected");
     903        return false;
     904    }
     905    if (set_ignored && clear_ignored) {
     906        psError(PS_ERR_UNKNOWN, true, "only one of -set_ignored or -clear_ignored may be selected");
    892907        return false;
    893908    }
     
    898913
    899914    if (fault != INT16_MAX) {
    900         // this is fairly dangerous : can set all if the where is not set...
     915        // this is fairly dangerous : can set all if the where is not set... but since exp_id and class_id
     916        // were required above this is safe
    901917        if (!pxSetFaultCode(config->dbh, "rawImfile", where, fault, 0)) {
    902918            psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
     
    930946      }
    931947      psStringAppend(&setvalues,"rawImfile.data_state = '%s'",set_state);
     948    }
     949    if (set_ignored) {
     950      if (setvalues) {
     951        psStringAppend(&setvalues,",");
     952      }
     953      psStringAppend(&setvalues,"rawImfile.ignored = 1");
     954    }
     955    if (clear_ignored) {
     956      if (setvalues) {
     957        psStringAppend(&setvalues,",");
     958      }
     959      psStringAppend(&setvalues,"rawImfile.ignored = 0");
    932960    }
    933961    if (hostname) {
  • branches/meh_branches/ppstack_test/ippTools/src/regtoolConfig.c

    r31938 r33415  
    194194    ADD_OPT(Str, updateprocessedimfileArgs, "-set_md5sum",     "set md5sum", NULL);
    195195    ADD_OPT(Str, updateprocessedimfileArgs, "-set_state",      "set data state", NULL);
     196    psMetadataAddBool(updateprocessedimfileArgs, PS_LIST_TAIL, "-set_ignored",  0,        "set imfile to be ignored for processing", false);
     197    psMetadataAddBool(updateprocessedimfileArgs, PS_LIST_TAIL, "-clear_ignored",  0,        "set imfile to not be ignored for processing", false);
    196198
    197199   
  • branches/meh_branches/ppstack_test/ippTools/src/staticskytool.c

    r31690 r33415  
    3838static bool resultMode(pxConfig *config);
    3939static bool revertMode(pxConfig *config);
    40 static bool updateresult(pxConfig *config);
     40static bool updateresultMode(pxConfig *config);
    4141static bool exportrunMode(pxConfig *config);
    4242static bool importrunMode(pxConfig *config);
     43
     44static bool defineskycalrunMode(pxConfig *config);
     45static bool updateskycalrunMode(pxConfig *config);
     46static bool pendingskycalrunMode(pxConfig *config);
     47static bool addskycalresultMode(pxConfig *config);
     48static bool skycalresultMode(pxConfig *config);
     49static bool revertskycalresultMode(pxConfig *config);
     50static bool updateskycalresultMode(pxConfig *config);
    4351
    4452static bool setstaticskyRunState(pxConfig *config, psS64 sky_id, const char *state);
     
    6977        MODECASE(STATICSKYTOOL_MODE_RESULT,            resultMode);
    7078        MODECASE(STATICSKYTOOL_MODE_REVERT,            revertMode);
    71         MODECASE(STATICSKYTOOL_MODE_UPDATERESULT,      updateresult);
     79        MODECASE(STATICSKYTOOL_MODE_UPDATERESULT,      updateresultMode);
    7280        MODECASE(STATICSKYTOOL_MODE_EXPORTRUN,         exportrunMode);
    7381        MODECASE(STATICSKYTOOL_MODE_IMPORTRUN,         importrunMode);
     82        MODECASE(STATICSKYTOOL_MODE_DEFINESKYCALRUN,   defineskycalrunMode);
     83        MODECASE(STATICSKYTOOL_MODE_UPDATESKYCALRUN,   updateskycalrunMode);
     84        MODECASE(STATICSKYTOOL_MODE_PENDINGSKYCALRUN,  pendingskycalrunMode);
     85        MODECASE(STATICSKYTOOL_MODE_ADDSKYCALRESULT,   addskycalresultMode);
     86        MODECASE(STATICSKYTOOL_MODE_UPDATESKYCALRESULT,updateskycalresultMode);
     87        MODECASE(STATICSKYTOOL_MODE_REVERTSKYCALRESULT,revertskycalresultMode);
     88        MODECASE(STATICSKYTOOL_MODE_SKYCALRESULT,      skycalresultMode);
    7489        default:
    7590            psAbort("invalid option (this should not happen)");
     
    97112{
    98113    PS_ASSERT_PTR_NON_NULL(config, false);
    99 
    100     // required options
    101     PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", true, false);
     114    PXOPT_LOOKUP_STR(workdir,     config->args, "-set_workdir", true, false);
     115    PXOPT_LOOKUP_STR(label,       config->args, "-set_label", true, false);
    102116
    103117    // optional
    104     PXOPT_LOOKUP_STR(label,       config->args, "-set_label", true, false);
    105118    PXOPT_LOOKUP_STR(data_group,  config->args, "-set_data_group", false, false);
    106119    PXOPT_LOOKUP_STR(dist_group,  config->args, "-set_dist_group", false, false);
     
    111124    psMetadata *whereMD = psMetadataAlloc();
    112125
    113     PXOPT_COPY_STR(config->args, whereMD, "-select_skycell_id",    "stackRun.skycell_id",       "==");
     126    PXOPT_COPY_S64(config->args, whereMD, "-select_stack_id",      "stackRun.stack_id",         "==");
     127    PXOPT_COPY_STR(config->args, whereMD, "-select_skycell_id",    "stackRun.skycell_id",       "LIKE");
    114128    PXOPT_COPY_STR(config->args, whereMD, "-select_tess_id",       "stackRun.tess_id",          "==");
    115129    PXOPT_COPY_F32(config->args, whereMD, "-select_good_frac_min", "stackSumSkyfile.good_frac", ">=");
     
    621635    PXOPT_COPY_STR(config->args, where, "-label",      "staticskyRun.label", "==");
    622636    PXOPT_COPY_STR(config->args, where, "-data_group", "staticskyRun.data_group", "LIKE");
     637    PXOPT_COPY_STR(config->args, where, "-tess_id", "stackRun.tess_id", "LIKE");
     638    PXOPT_COPY_STR(config->args, where, "-skycell_id", "stackRun.skycell_id", "LIKE");
    623639    PXOPT_COPY_S16(config->args, where, "-fault",      "staticskyResult.fault", "==");
     640    PXOPT_LOOKUP_S32(num_filters, config->args, "-num_filters", false, false);
    624641
    625642    PXOPT_LOOKUP_BOOL(all, config->args, "-all", false);
     
    645662    psFree(where);
    646663
     664    psStringAppend(&query, "\nGROUP BY sky_id");
     665    if (num_filters) {
     666        psStringAppend(&query, "\nHAVING COUNT(filter) >= %d", num_filters);
     667    }
     668       
     669
    647670    // treat limit == 0 as "no limit"
    648671    if (limit) {
    649672        psString limitString = psDBGenerateLimitSQL(limit);
    650         psStringAppend(&query, " %s", limitString);
     673        psStringAppend(&query, "\n%s", limitString);
    651674        psFree(limitString);
    652675    }
     
    735758}
    736759
    737 static bool updateresult(pxConfig *config)
     760static bool updateresultMode(pxConfig *config)
    738761{
    739762    PS_ASSERT_PTR_NON_NULL(config, false);
     
    9781001# endif
    9791002
     1003static bool defineskycalrunMode(pxConfig *config)
     1004{
     1005    PS_ASSERT_PTR_NON_NULL(config, false);
     1006
     1007    // required options
     1008    // none required. We get workdir, etc from staticskyRun if not provided
     1009
     1010    // optional
     1011    PXOPT_LOOKUP_STR(label,       config->args, "-set_label", false, false);
     1012    PXOPT_LOOKUP_STR(workdir,     config->args, "-set_workdir", false, false);
     1013    PXOPT_LOOKUP_STR(data_group,  config->args, "-set_data_group", false, false);
     1014    PXOPT_LOOKUP_STR(dist_group,  config->args, "-set_dist_group", false, false);
     1015    PXOPT_LOOKUP_STR(reduction,   config->args, "-set_reduction", false, false);
     1016    PXOPT_LOOKUP_STR(note,        config->args, "-set_note", false, false);
     1017    PXOPT_LOOKUP_TIME(registered, config->args, "-set_registered", false, false);
     1018
     1019    psMetadata *whereMD = psMetadataAlloc();
     1020
     1021    PXOPT_COPY_S64(config->args, whereMD, "-select_sky_id",        "staticskyRun.sky_id",       "==");
     1022    PXOPT_COPY_S64(config->args, whereMD, "-select_stack_id",      "stackRun.stack_id",         "==");
     1023    PXOPT_COPY_STR(config->args, whereMD, "-select_skycell_id",    "stackRun.skycell_id",       "==");
     1024    PXOPT_COPY_STR(config->args, whereMD, "-select_tess_id",       "stackRun.tess_id",          "==");
     1025    PXOPT_COPY_F32(config->args, whereMD, "-select_good_frac_min", "stackSumSkyfile.good_frac", ">=");
     1026    pxAddLabelSearchArgs(config, whereMD, "-select_label",         "stackRun.label",            "LIKE");
     1027    pxAddLabelSearchArgs(config, whereMD, "-select_data_group",    "stackRun.data_group",       "LIKE");
     1028    pxAddLabelSearchArgs(config, whereMD, "-select_filter",        "stackRun.filter",           "LIKE");
     1029
     1030    PXOPT_LOOKUP_BOOL(rerun, config->args, "-rerun", false);
     1031    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1032    PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false);
     1033
     1034    psString query = pxDataGet("staticskytool_defineskycalrun.sql");
     1035    if (!query) {
     1036        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1037        psFree(whereMD);
     1038        return false;
     1039    }
     1040
     1041    if (!psListLength(whereMD->list)) {
     1042        psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
     1043        psFree(whereMD);
     1044        return false;
     1045    }
     1046
     1047    psString whereClause = psDBGenerateWhereConditionSQL(whereMD, NULL);
     1048    psStringAppend(&query, "\nAND %s", whereClause);
     1049    psFree(whereClause);
     1050    psFree(whereMD);
     1051
     1052    if (!rerun) {
     1053        if (label)  {
     1054            psStringAppend(&query, "\nAND (skycalRun.label IS NULL OR skycalRun.label = '%s')", label);
     1055        }
     1056        psStringAppend(&query, "\nAND skycal_id IS NULL");
     1057    }
     1058
     1059    if (!p_psDBRunQuery(config->dbh, query)) {
     1060        psError(PS_ERR_UNKNOWN, false, "database error");
     1061        psFree(query);
     1062        return false;
     1063    }
     1064    psFree(query);
     1065
     1066    // we now have a list of (tess_id, skycell_id) that (potentially) meet out needs
     1067    // we now need to loop over all of these and for each pair, select the best set of
     1068    // inputs
     1069
     1070    psArray *output = p_psDBFetchResult(config->dbh);
     1071    if (!output) {
     1072        psErrorCode err = psErrorCodeLast();
     1073        switch (err) {
     1074            case PS_ERR_DB_CLIENT:
     1075                psError(PXTOOLS_ERR_SYS, false, "database error");
     1076            case PS_ERR_DB_SERVER:
     1077                psError(PXTOOLS_ERR_PROG, false, "database error");
     1078            default:
     1079                psError(PXTOOLS_ERR_PROG, false, "unknown error");
     1080        }
     1081        return false;
     1082    }
     1083    if (!psArrayLength(output)) {
     1084        psWarning("staticskytool: no rows found");
     1085        psFree(output);
     1086        return true;
     1087    }
     1088    if (pretend) {
     1089        // negative simple so the default is true
     1090        if (!ippdbPrintMetadatas(stdout, output, "skycalRun", !simple)) {
     1091            psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1092            psFree(output);
     1093            return false;
     1094        }
     1095        psFree(output);
     1096        return true;
     1097    }
     1098
     1099    for (long i = 0; i < output->n; i++) {
     1100        psMetadata *row = output->data[i]; // Row from select
     1101        bool status;
     1102
     1103        psS64 sky_id = psMetadataLookupS64(&status, row, "sky_id");
     1104        psS64 stack_id = psMetadataLookupS64(&status, row, "stack_id");
     1105        psString sky_workdir = psMetadataLookupStr(&status, row, "workdir");
     1106        psString sky_label =  psMetadataLookupStr(&status, row, "label");
     1107        psString sky_data_group =  psMetadataLookupStr(&status, row, "data_group");
     1108
     1109        // create a staticskyRun
     1110        if (!skycalRunInsert(config->dbh,
     1111                                0x0,         // skycal_id
     1112                                sky_id,
     1113                                stack_id,
     1114                                "new",       // state
     1115                                workdir ? workdir : sky_workdir,
     1116                                label ? label : sky_label,
     1117                                data_group ? data_group : sky_data_group,
     1118                                dist_group,
     1119                                reduction,
     1120                                registered,
     1121                                note
     1122                )
     1123            ) {
     1124            psError(PS_ERR_UNKNOWN, false, "database error");
     1125            psFree(output);
     1126            return false;
     1127        }
     1128
     1129    }
     1130    psFree(output);
     1131    return true;
     1132}
     1133
     1134static bool updateskycalrunMode(pxConfig *config)
     1135{
     1136#ifdef notyet
     1137    PS_ASSERT_PTR_NON_NULL(config, false);
     1138
     1139    psMetadata *where = psMetadataAlloc();
     1140    PXOPT_COPY_S64(config->args, where, "-sky_id",  "sky_id",   "==");
     1141    PXOPT_COPY_STR(config->args, where, "-label",   "label",    "==");
     1142    PXOPT_COPY_STR(config->args, where, "-state",   "state",    "==");
     1143    if (!psListLength(where->list)) {
     1144        psFree(where);
     1145        psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
     1146        return false;
     1147    }
     1148
     1149    psString query = psStringCopy("UPDATE staticskyRun");
     1150
     1151    // pxUpdateRun gets parameters from config->args and updates
     1152    bool result = pxUpdateRun(config, where, &query, "staticskyRun", "sky_id", "staticskyResult", true, false);
     1153    psFree(query);
     1154    psFree(where);
     1155
     1156    return result;
     1157#endif
     1158    return false;
     1159}
     1160static bool pendingskycalrunMode(pxConfig *config)
     1161{
     1162    PS_ASSERT_PTR_NON_NULL(config, false);
     1163
     1164    psMetadata *whereMD = psMetadataAlloc();
     1165    PXOPT_COPY_S64(config->args, whereMD, "-skycal_id", "skycal_id", "==");
     1166    PXOPT_COPY_S64(config->args, whereMD, "-sky_id", "sky_id", "==");
     1167    pxAddLabelSearchArgs (config, whereMD, "-label", "skycalRun.label", "==");
     1168    PXOPT_COPY_STR(config->args, whereMD, "-filter", "stackRun.filter", "LIKE");
     1169
     1170    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1171    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1172
     1173    psString query = pxDataGet("staticskytool_pendingskycalrun.sql");
     1174    if (!query) {
     1175        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1176        return false;
     1177    }
     1178
     1179    if (!psListLength(whereMD->list)) {
     1180        psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
     1181        psFree(whereMD);
     1182        return false;
     1183    }
     1184
     1185    psString whereClause = psDBGenerateWhereConditionSQL(whereMD, NULL);
     1186    psStringAppend(&query, "\n AND %s", whereClause);
     1187    psFree(whereClause);
     1188    psFree(whereMD);
     1189
     1190    // treat limit == 0 as "no limit"
     1191    if (limit) {
     1192        psString limitString = psDBGenerateLimitSQL(limit);
     1193        psStringAppend(&query, "\n%s", limitString);
     1194        psFree(limitString);
     1195    }
     1196
     1197    // the where clause is required and matches the WHERE hook format string
     1198    if (!p_psDBRunQuery(config->dbh, query)) {
     1199        psError(PS_ERR_UNKNOWN, false, "database error");
     1200        psFree(query);
     1201        return false;
     1202    }
     1203    psFree(query);
     1204
     1205    psArray *output = p_psDBFetchResult(config->dbh);
     1206    if (!output) {
     1207        psErrorCode err = psErrorCodeLast();
     1208        switch (err) {
     1209            case PS_ERR_DB_CLIENT:
     1210                psError(PXTOOLS_ERR_SYS, false, "database error");
     1211            case PS_ERR_DB_SERVER:
     1212                psError(PXTOOLS_ERR_PROG, false, "database error");
     1213            default:
     1214                psError(PXTOOLS_ERR_PROG, false, "unknown error");
     1215        }
     1216
     1217        return false;
     1218    }
     1219    if (!psArrayLength(output)) {
     1220        psTrace("staticskytool", PS_LOG_INFO, "no rows found");
     1221        psFree(output);
     1222        return true;
     1223    }
     1224
     1225    if (psArrayLength(output)) {
     1226        // negative simple so the default is true
     1227        if (!ippdbPrintMetadatas(stdout, output, "pendingskycalRun", !simple)) {
     1228            psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1229            psFree(output);
     1230            return false;
     1231        }
     1232    }
     1233
     1234    psFree(output);
     1235    return true;
     1236}
     1237
     1238static bool addskycalresultMode(pxConfig *config)
     1239{
     1240    PS_ASSERT_PTR_NON_NULL(config, false);
     1241
     1242    // required
     1243    PXOPT_LOOKUP_S64(skycal_id, config->args, "-skycal_id", true, false);
     1244
     1245    // optional
     1246    PXOPT_LOOKUP_F32(sigma_ra, config->args,  "-sigma_ra", false, false);
     1247    PXOPT_LOOKUP_F32(sigma_dec, config->args, "-sigma_dec", false, false);
     1248
     1249    PXOPT_LOOKUP_F32(zpt_obs, config->args,   "-zpt_obs", false, false);
     1250    PXOPT_LOOKUP_F32(zpt_stdev, config->args, "-zpt_stdev", false, false);
     1251
     1252
     1253    PXOPT_LOOKUP_F32(dtime_script, config->args,   "-dtime_script", false, false);
     1254    PXOPT_LOOKUP_F32(dtime_astrom, config->args,   "-dtime_astrom", false, false);
     1255
     1256    PXOPT_LOOKUP_STR(hostname, config->args,    "-hostname", false, false);
     1257//    PXOPT_LOOKUP_S32(n_stars, config->args,     "-n_stars", false, false);
     1258    PXOPT_LOOKUP_S32(n_astrom, config->args,    "-n_astrom", false, false);
     1259
     1260    PXOPT_LOOKUP_STR(path_base, config->args,   "-path_base", false, false);
     1261    PXOPT_LOOKUP_S16(fault, config->args,       "-fault", false, false);
     1262    PXOPT_LOOKUP_S16(quality, config->args,     "-quality", false, false);
     1263
     1264    PXOPT_LOOKUP_STR(ver_pslib, config->args,   "-ver_pslib", false, false);
     1265    PXOPT_LOOKUP_STR(ver_psmodules, config->args, "-ver_psmodules", false, false);
     1266    PXOPT_LOOKUP_STR(ver_psphot, config->args,  "-ver_psphot", false, false);
     1267    PXOPT_LOOKUP_STR(ver_psastro, config->args, "-ver_psastro", false, false);
     1268    PXOPT_LOOKUP_STR(ver_ppstats, config->args, "-ver_ppstats", false, false);
     1269
     1270    psString software_ver = NULL;
     1271    if ((ver_pslib)&&(ver_psmodules)) {
     1272      software_ver = pxMergeCodeVersions(ver_pslib,ver_psmodules);
     1273    }
     1274    if (ver_psphot) {
     1275      software_ver = pxMergeCodeVersions(software_ver,ver_psphot);
     1276    }
     1277    if (ver_psastro) {
     1278      software_ver = pxMergeCodeVersions(software_ver,ver_psastro);
     1279    }
     1280    if (ver_ppstats) {
     1281      software_ver = pxMergeCodeVersions(software_ver,ver_ppstats);
     1282    }
     1283
     1284    if (!psDBTransaction(config->dbh)) {
     1285        psError(PS_ERR_UNKNOWN, false, "database error");
     1286        return false;
     1287    }
     1288
     1289    skycalResultRow *row = skycalResultRowAlloc(
     1290        skycal_id,
     1291        path_base,
     1292        dtime_script,
     1293        dtime_astrom,
     1294        sigma_ra,
     1295        sigma_dec,
     1296        n_astrom,
     1297        zpt_obs,
     1298        zpt_stdev,
     1299        quality,
     1300        software_ver,
     1301        hostname,
     1302        fault
     1303        );
     1304
     1305    if (!skycalResultInsertObject(config->dbh, row)) {
     1306        // rollback
     1307        if (!psDBRollback(config->dbh)) {
     1308            psError(PS_ERR_UNKNOWN, false, "database error");
     1309        }
     1310        psError(PS_ERR_UNKNOWN, false, "database error");
     1311        psFree(row);
     1312        return false;
     1313    }
     1314
     1315    psFree(row);
     1316
     1317    if (fault) {
     1318        if (!psDBCommit(config->dbh)) {
     1319            psError(PS_ERR_UNKNOWN, false, "database error");
     1320            return false;
     1321        }
     1322        return true;
     1323    }
     1324
     1325    psString query = "UPDATE skycalRun SET state = 'full' WHERE skycal_id = %" PRId64;
     1326    if (!p_psDBRunQueryF(config->dbh, query, skycal_id)) {
     1327        psError(PS_ERR_UNKNOWN, false, "database error");
     1328        return false;
     1329    }
     1330    if (!psDBCommit(config->dbh)) {
     1331        psError(PS_ERR_UNKNOWN, false, "database error");
     1332        return false;
     1333    }
     1334
     1335    return true;
     1336}
     1337static bool updateskycalresultMode(pxConfig *config)
     1338{
     1339    PS_ASSERT_PTR_NON_NULL(config, false);
     1340
     1341    PXOPT_LOOKUP_S16(fault, config->args, "-set_fault", true, false);
     1342    PXOPT_LOOKUP_S16(quality, config->args, "-set_quality", false, false);
     1343
     1344    psMetadata *where = psMetadataAlloc();
     1345    PXOPT_COPY_S64(config->args, where, "-skycal_id",   "skycal_id",   "==");
     1346
     1347    if (!pxSetFaultCode(config->dbh, "skycalResult", where, fault, quality)) {
     1348        psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
     1349        psFree (where);
     1350        return false;
     1351    }
     1352    psFree (where);
     1353    return true;
     1354}
     1355static bool skycalresultMode(pxConfig *config)
     1356{
     1357    PS_ASSERT_PTR_NON_NULL(config, false);
     1358
     1359    psMetadata *where = psMetadataAlloc();
     1360    PXOPT_COPY_S64(config->args, where, "-skycal_id",  "skycalRun.skycal_id", "==");
     1361    PXOPT_COPY_S64(config->args, where, "-sky_id",     "skycalRun.sky_id", "==");
     1362    PXOPT_COPY_S64(config->args, where, "-stack_id",   "skycalRun.stack_id", "==");
     1363    PXOPT_COPY_STR(config->args, where, "-tess_id",    "stackRun.tess_id", "LIKE");
     1364    PXOPT_COPY_STR(config->args, where, "-skycell_id", "stackRun.skycell_id", "LIKE");
     1365    PXOPT_COPY_STR(config->args, where, "-filter",     "stackRun.filter", "LIKE");
     1366    PXOPT_COPY_STR(config->args, where, "-label",      "skycalRun.label", "==");
     1367    PXOPT_COPY_STR(config->args, where, "-data_group", "skycalRun.data_group", "LIKE");
     1368    PXOPT_COPY_S16(config->args, where, "-fault",      "skycalResult.fault", "==");
     1369
     1370    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1371    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1372
     1373    psString query = pxDataGet("staticskytool_skycalresult.sql");
     1374    if (!query) {
     1375        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1376        return false;
     1377    }
     1378
     1379    if (!psListLength(where->list)) {
     1380        psError(PXTOOLS_ERR_CONFIG, true, "search parameters are required");
     1381        return false;
     1382    }
     1383    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1384    psStringAppend(&query, " WHERE %s", whereClause);
     1385    psFree(whereClause);
     1386    psFree(where);
     1387
     1388    // treat limit == 0 as "no limit"
     1389    if (limit) {
     1390        psString limitString = psDBGenerateLimitSQL(limit);
     1391        psStringAppend(&query, " %s", limitString);
     1392        psFree(limitString);
     1393    }
     1394
     1395    if (!p_psDBRunQuery(config->dbh, query)) {
     1396        psError(PS_ERR_UNKNOWN, false, "database error");
     1397        psFree(query);
     1398        return false;
     1399    }
     1400    psFree(query);
     1401
     1402    psArray *output = p_psDBFetchResult(config->dbh);
     1403    if (!output) {
     1404        psErrorCode err = psErrorCodeLast();
     1405        switch (err) {
     1406            case PS_ERR_DB_CLIENT:
     1407                psError(PXTOOLS_ERR_SYS, false, "database error");
     1408            case PS_ERR_DB_SERVER:
     1409                psError(PXTOOLS_ERR_PROG, false, "database error");
     1410            default:
     1411                psError(PXTOOLS_ERR_PROG, false, "unknown error");
     1412        }
     1413
     1414        return false;
     1415    }
     1416    if (!psArrayLength(output)) {
     1417        psTrace("staticskytool", PS_LOG_INFO, "no rows found");
     1418        psFree(output);
     1419        return true;
     1420    }
     1421
     1422    if (psArrayLength(output)) {
     1423        if (!ippdbPrintMetadatas(stdout, output, "staticskyResult", !simple)) {
     1424            psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1425            psFree(output);
     1426            return false;
     1427        }
     1428    }
     1429
     1430    psFree(output);
     1431
     1432    return true;
     1433}
     1434static bool revertskycalresultMode(pxConfig *config)
     1435{
     1436    PS_ASSERT_PTR_NON_NULL(config, false);
     1437
     1438    psMetadata *where = psMetadataAlloc();
     1439    PXOPT_COPY_S64(config->args, where, "-skycal_id", "staticskyResult.sky_id", "==");
     1440    pxAddLabelSearchArgs(config, where, "-label", "staticskyRun.label", "==");
     1441    pxAddLabelSearchArgs(config, where, "-data_group", "staticskyRun.data_group", "==");
     1442    pxAddLabelSearchArgs(config, where, "-filter", "stackRun.filter", "==");
     1443    PXOPT_COPY_S16(config->args, where, "-fault", "staticskyResult.fault", "==");
     1444
     1445    if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) {
     1446        psFree(where);
     1447        psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
     1448        return false;
     1449    }
     1450
     1451    // Delete product
     1452    psString delete = pxDataGet("staticskytool_revertskycal.sql");
     1453    if (!delete) {
     1454        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1455        return false;
     1456    }
     1457
     1458    if (psListLength(where->list)) {
     1459        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1460        psStringAppend(&delete, " AND %s", whereClause);
     1461        psFree(whereClause);
     1462    }
     1463
     1464    if (!p_psDBRunQuery(config->dbh, delete)) {
     1465        psError(PS_ERR_UNKNOWN, false, "database error");
     1466        psFree(delete);
     1467        psFree(where);
     1468        return false;
     1469    }
     1470    psFree(delete);
     1471
     1472    int numRows = psDBAffectedRows(config->dbh); // Number of row affected
     1473    psLogMsg("staticskytool", PS_LOG_INFO, "Deleted %d rows", numRows);
     1474
     1475    psFree(where);
     1476    return true;
     1477}
  • branches/meh_branches/ppstack_test/ippTools/src/staticskytool.h

    r27546 r33415  
    3434    STATICSKYTOOL_MODE_UPDATERESULT,
    3535    STATICSKYTOOL_MODE_EXPORTRUN,
    36     STATICSKYTOOL_MODE_IMPORTRUN
     36    STATICSKYTOOL_MODE_IMPORTRUN,
     37
     38    STATICSKYTOOL_MODE_DEFINESKYCALRUN,
     39    STATICSKYTOOL_MODE_PENDINGSKYCALRUN,
     40    STATICSKYTOOL_MODE_UPDATESKYCALRUN,
     41    STATICSKYTOOL_MODE_ADDSKYCALRESULT,
     42    STATICSKYTOOL_MODE_UPDATESKYCALRESULT,
     43    STATICSKYTOOL_MODE_SKYCALRESULT,
     44    STATICSKYTOOL_MODE_REVERTSKYCALRESULT,
    3745} staticskytoolMode;
    3846
  • branches/meh_branches/ppstack_test/ippTools/src/staticskytoolConfig.c

    r31687 r33415  
    4848    // XXX need a 'ra_min,max', 'dec_min,max' : to do this, we need a table of skycell boundaries
    4949    psMetadata *definebyqueryArgs = psMetadataAlloc();
     50    psMetadataAddS64(definebyqueryArgs,  PS_LIST_TAIL, "-select_stack_id", 0, "search for stack_id", 0);
    5051    psMetadataAddStr(definebyqueryArgs,  PS_LIST_TAIL, "-select_skycell_id", 0, "search for skycell_id", NULL);
    5152    psMetadataAddStr(definebyqueryArgs,  PS_LIST_TAIL, "-select_tess_id", 0, "search for tess_id", NULL);
     
    107108    psMetadata *resultArgs= psMetadataAlloc();
    108109    psMetadataAddS64(resultArgs, PS_LIST_TAIL, "-sky_id", 0, "search by staticsky ID", 0);
    109     // psMetadataAddStr(resultArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tess ID", 0);
    110     // psMetadataAddStr(resultArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell ID", 0);
     110    psMetadataAddStr(resultArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tess ID (LIKE comparison)", 0);
     111    psMetadataAddStr(resultArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell ID (LIKE comparison)", 0);
    111112    psMetadataAddStr(resultArgs, PS_LIST_TAIL, "-label", 0, "search by label", NULL);
    112113    psMetadataAddStr(resultArgs, PS_LIST_TAIL, "-data_group", 0, "search by data_group (LIKE comparison)", NULL);
     114    psMetadataAddS16(resultArgs, PS_LIST_TAIL, "-num_filters", 0, "search by number of filters in the inputs (>=)", 0);
    113115    psMetadataAddS16(resultArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0);
    114116    psMetadataAddU64(resultArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0);
     
    138140    psMetadata *importrunArgs = psMetadataAlloc();
    139141    psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL);
    140 
     142 
     143    // -defineskycalrun
     144    psMetadata *defineskycalrunArgs = psMetadataAlloc();
     145    psMetadataAddS64(defineskycalrunArgs,  PS_LIST_TAIL, "-select_sky_id", 0, "search for sky_id", 0);
     146    psMetadataAddS64(defineskycalrunArgs,  PS_LIST_TAIL, "-select_stack_id", 0, "search for stack_id", 0);
     147    psMetadataAddStr(defineskycalrunArgs,  PS_LIST_TAIL, "-select_skycell_id", 0, "search for skycell_id", NULL);
     148    psMetadataAddStr(defineskycalrunArgs,  PS_LIST_TAIL, "-select_tess_id", 0, "search for tess_id", NULL);
     149    psMetadataAddF32(defineskycalrunArgs,  PS_LIST_TAIL, "-select_good_frac_min", 0, "define min good_frac", 0.0);
     150    psMetadataAddStr(defineskycalrunArgs,  PS_LIST_TAIL, "-select_label", PS_META_DUPLICATE_OK, "search by stackRun label (LIKE comparison, multiple OK)", NULL);
     151    psMetadataAddStr(defineskycalrunArgs,  PS_LIST_TAIL, "-select_data_group", PS_META_DUPLICATE_OK, "search by stackRun data_group (LIKE comparison, multiple OK)", NULL);
     152    psMetadataAddStr(defineskycalrunArgs,  PS_LIST_TAIL, "-select_filter", PS_META_DUPLICATE_OK, "search by filter (LIKE comparison, multiple OK)", NULL);
     153    psMetadataAddStr(defineskycalrunArgs,  PS_LIST_TAIL, "-set_workdir", 0, "define workdir", NULL);
     154    psMetadataAddStr(defineskycalrunArgs,  PS_LIST_TAIL, "-set_label", 0, "define label", NULL);
     155    psMetadataAddStr(defineskycalrunArgs,  PS_LIST_TAIL, "-set_data_group", 0, "define data group", NULL);
     156    psMetadataAddStr(defineskycalrunArgs,  PS_LIST_TAIL, "-set_dist_group", 0, "define dist group", NULL);
     157    psMetadataAddStr(defineskycalrunArgs,  PS_LIST_TAIL, "-set_note", 0, "define note", NULL);
     158    psMetadataAddStr(defineskycalrunArgs,  PS_LIST_TAIL, "-set_reduction", 0, "define reduction", NULL);
     159    psMetadataAddTime(defineskycalrunArgs, PS_LIST_TAIL, "-set_registered", 0, "time detrend run was registered", now);
     160    psMetadataAddBool(defineskycalrunArgs, PS_LIST_TAIL, "-rerun",  0, "queue new run even if one already exists for inputs", false);
     161    psMetadataAddBool(defineskycalrunArgs, PS_LIST_TAIL, "-pretend",  0, "do not actually modify the database", false);
     162    psMetadataAddBool(defineskycalrunArgs, PS_LIST_TAIL, "-check_inputs",  0, "list inputs, do not modify database", false);
     163    psMetadataAddBool(defineskycalrunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
     164
     165    // -updateskycalrun
     166    psMetadata *updateskycalrunArgs = psMetadataAlloc();
     167    psMetadataAddS64(updateskycalrunArgs, PS_LIST_TAIL, "-sky_id", 0, "search by stack ID", 0);
     168    psMetadataAddStr(updateskycalrunArgs, PS_LIST_TAIL, "-state", 0, "search by state", NULL);
     169    psMetadataAddStr(updateskycalrunArgs, PS_LIST_TAIL, "-label", 0, "search by label", 0);
     170    psMetadataAddStr(updateskycalrunArgs, PS_LIST_TAIL, "-set_label", 0, "define new value for label", NULL);
     171    psMetadataAddStr(updateskycalrunArgs, PS_LIST_TAIL, "-set_state", 0, "define new state", NULL);
     172    psMetadataAddStr(updateskycalrunArgs, PS_LIST_TAIL, "-set_data_group", 0, "define new data_group", NULL);
     173    psMetadataAddStr(updateskycalrunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define new dist_group", NULL);
     174    psMetadataAddStr(updateskycalrunArgs, PS_LIST_TAIL, "-set_note", 0, "define new note", NULL);
     175
     176    // -pendingskycalrun
     177    psMetadata *pendingskycalrunArgs = psMetadataAlloc();
     178    psMetadataAddS64(pendingskycalrunArgs, PS_LIST_TAIL, "-skycal_id", 0, "search by skycal ID", 0);
     179    psMetadataAddS64(pendingskycalrunArgs, PS_LIST_TAIL, "-sky_id", 0, "search by staticsky ID", 0);
     180    psMetadataAddStr(pendingskycalrunArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by label", NULL);
     181    psMetadataAddStr(pendingskycalrunArgs, PS_LIST_TAIL, "-filter", 0, "search by filter", NULL);
     182    psMetadataAddU64(pendingskycalrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0);
     183    psMetadataAddBool(pendingskycalrunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
     184
     185
     186    // -addskycalresult
     187    psMetadata *addskycalresultArgs = psMetadataAlloc();
     188    psMetadataAddS64(addskycalresultArgs, PS_LIST_TAIL, "-skycal_id", 0,            "define camtool ID (required)", 0);
     189    psMetadataAddF32(addskycalresultArgs, PS_LIST_TAIL, "-sigma_ra", 0,            "define exposure E ra", NAN);
     190    psMetadataAddF32(addskycalresultArgs, PS_LIST_TAIL, "-sigma_dec", 0,            "define exposure E dec", NAN);
     191    psMetadataAddF32(addskycalresultArgs, PS_LIST_TAIL, "-zpt_obs", 0,   "define observed zero point", 0);
     192    psMetadataAddF32(addskycalresultArgs, PS_LIST_TAIL, "-zpt_stdev", 0,   "define observed zero point stdandard deviation", 0);
     193
     194    psMetadataAddF32(addskycalresultArgs, PS_LIST_TAIL, "-dtime_script", 0, "define elapsed time in script (seconds)", NAN);
     195    psMetadataAddF32(addskycalresultArgs, PS_LIST_TAIL, "-dtime_astrom", 0, "define elapsed time for astrometry (seconds)", NAN);
     196
     197    psMetadataAddStr(addskycalresultArgs, PS_LIST_TAIL, "-hostname", 0,            "define hostname", NULL);
     198    // psMetadataAddS32(addskycalresultArgs, PS_LIST_TAIL, "-n_stars", 0,            "define number of stars", 0);
     199    psMetadataAddS32(addskycalresultArgs, PS_LIST_TAIL, "-n_astrom", 0,            "define number of astrometry reference objects", 0);
     200
     201    psMetadataAddStr(addskycalresultArgs, PS_LIST_TAIL, "-path_base", 0,            "define base output location", NULL);
     202    psMetadataAddS16(addskycalresultArgs, PS_LIST_TAIL, "-fault",  0,            "set fault code", 0);
     203    psMetadataAddS16(addskycalresultArgs, PS_LIST_TAIL, "-quality",  0,            "set quality", 0);
     204
     205    psMetadataAddStr(addskycalresultArgs, PS_LIST_TAIL, "-ver_pslib", 0, "define psLib version", NULL);
     206    psMetadataAddStr(addskycalresultArgs, PS_LIST_TAIL, "-ver_psmodules", 0, "define psModules version", NULL);
     207    psMetadataAddStr(addskycalresultArgs, PS_LIST_TAIL, "-ver_psphot", 0, "define psphot version", NULL);
     208    psMetadataAddStr(addskycalresultArgs, PS_LIST_TAIL, "-ver_psastro", 0, "define psastro version", NULL);
     209    psMetadataAddStr(addskycalresultArgs, PS_LIST_TAIL, "-ver_ppstats", 0, "define ppStats version", NULL);
     210    psMetadataAddStr(addskycalresultArgs, PS_LIST_TAIL, "-ver_streaks", 0, "define streaksremove version", NULL);
     211
     212    // -revertskycal
     213    psMetadata *revertskycalArgs= psMetadataAlloc();
     214    psMetadataAddS64(revertskycalArgs, PS_LIST_TAIL, "-skycal_id", 0, "search by staticsky ID", 0);
     215    psMetadataAddStr(revertskycalArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by label", 0);
     216    psMetadataAddStr(revertskycalArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by data_group", 0);
     217    psMetadataAddStr(revertskycalArgs, PS_LIST_TAIL, "-filter", PS_META_DUPLICATE_OK, "search by filter", 0);
     218    psMetadataAddS16(revertskycalArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0);
     219    psMetadataAddBool(revertskycalArgs, PS_LIST_TAIL, "-all", 0, "allow no search terms", false);
     220
     221    // -updateskycalresult
     222    psMetadata *updateskycalresultArgs = psMetadataAlloc();
     223    psMetadataAddS64(updateskycalresultArgs, PS_LIST_TAIL, "-skycal_id", 0, "define staticksky ID (required)", 0);
     224    psMetadataAddS16(updateskycalresultArgs, PS_LIST_TAIL, "-set_fault", 0, "set fault code (required)", 0);
     225    psMetadataAddS16(updateskycalresultArgs, PS_LIST_TAIL, "-set_quality", 0, "set quality code", 0);
     226
     227    // -skycalresult
     228    psMetadata *skycalresultArgs= psMetadataAlloc();
     229    psMetadataAddS64(skycalresultArgs, PS_LIST_TAIL, "-skycal_id", 0, "search by skycal ID", 0);
     230    psMetadataAddS64(skycalresultArgs, PS_LIST_TAIL, "-sky_id", 0, "search by staticsky ID", 0);
     231    psMetadataAddS64(skycalresultArgs, PS_LIST_TAIL, "-stack_id", 0, "search by stack ID", 0);
     232    psMetadataAddStr(skycalresultArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tess ID (LIKE comparison)", 0);
     233    psMetadataAddStr(skycalresultArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell ID (LIKE comparison)", 0);
     234    psMetadataAddStr(skycalresultArgs, PS_LIST_TAIL, "-filter", 0, "search by filter (LIKE comparison)", 0);
     235    psMetadataAddStr(skycalresultArgs, PS_LIST_TAIL, "-label", 0, "search by label (LIKE comparison)", NULL);
     236    psMetadataAddStr(skycalresultArgs, PS_LIST_TAIL, "-data_group", 0, "search by data_group (LIKE comparison)", NULL);
     237    psMetadataAddS16(skycalresultArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0);
     238    psMetadataAddU64(skycalresultArgs, PS_LIST_TAIL, "-limit", 0, "limit skycalresult set to N items", 0);
     239    psMetadataAddBool(skycalresultArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
    141240
    142241    psFree(now);
     
    155254    PXOPT_ADD_MODE("-exportrun",     "Export run",           STATICSKYTOOL_MODE_EXPORTRUN,     exportrunArgs);
    156255    PXOPT_ADD_MODE("-importrun",     "Import run",           STATICSKYTOOL_MODE_IMPORTRUN,     importrunArgs);
     256    PXOPT_ADD_MODE("-defineskycalrun", "Define a new skycalrun", STATICSKYTOOL_MODE_DEFINESKYCALRUN, defineskycalrunArgs);
     257    PXOPT_ADD_MODE("-updateskycalrun", "Update a skycalrun", STATICSKYTOOL_MODE_UPDATESKYCALRUN,     updateskycalrunArgs);
     258    PXOPT_ADD_MODE("-pendingskycalrun", "Get skcal runs to do",       STATICSKYTOOL_MODE_PENDINGSKYCALRUN,          pendingskycalrunArgs);
     259    PXOPT_ADD_MODE("-addskycalresult", "add skycal result",       STATICSKYTOOL_MODE_ADDSKYCALRESULT, addskycalresultArgs);
     260    PXOPT_ADD_MODE("-revertskycal",  "revert faulted skycal run", STATICSKYTOOL_MODE_REVERTSKYCALRESULT, revertskycalArgs);
     261    PXOPT_ADD_MODE("-updateskycal",  "revert faulted skycal run", STATICSKYTOOL_MODE_UPDATESKYCALRESULT, updateskycalresultArgs);
     262    PXOPT_ADD_MODE("-skycalresult",  "Get result of skycal run",  STATICSKYTOOL_MODE_SKYCALRESULT, skycalresultArgs);
    157263
    158264    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
  • branches/meh_branches/ppstack_test/ippTools/src/warptool.c

    r31955 r33415  
    975975    psFree(where);
    976976
     977    psArray *allOutput = psArrayAllocEmpty(0);
    977978    // Now loop over the labels and query each individually
    978979    for (long i = 0; i < psArrayLength(labelOutput); i++) {
     
    983984
    984985        psString query = psStringCopy(originalQuery);
    985 
     986        psStringAppend(&query,"\nORDER BY warp_id");
    986987        // treat limit == 0 as "no limit"
    987988        psString limitString = psStringCopy("");
     
    992993            psStringAppend(&query, "%s", limitString);
    993994        }
     995
    994996        psString thisWhere = NULL;
    995997        if (whereStr) {
     
    10231025        long outputLength = psArrayLength(output);
    10241026        if (outputLength) {
    1025             // negative simple so the default is true
    1026             if (!ippdbPrintMetadatas(stdout, output, "warpPendingSkyCell", !simple)) {
    1027                 psError(PS_ERR_UNKNOWN, false, "failed to print array");
    1028                 psFree(output);
    1029                 return false;
     1027            for (int i = 0; i< outputLength; i++) {
     1028                psPtr ptr = output->data[i];
     1029                allOutput = psArrayAdd(allOutput, outputLength - i + 10, ptr);
     1030                if (!allOutput) {
     1031                    psError(PS_ERR_UNKNOWN, false, "failed to add element to array");
     1032                    return false;
     1033                }
    10301034            }
    10311035        } else {
     
    10441048        }
    10451049    }
     1050    long allLabelsLength = psArrayLength(allOutput);
     1051    if (allLabelsLength) {
     1052        if (!ippdbPrintMetadatas(stdout, allOutput, "warpPendingSkyCell", !simple)) {
     1053            psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1054            psFree(allOutput);
     1055            return false;
     1056        }
     1057    }
     1058    psFree(allOutput);
    10461059    psFree(labelOutput);
    10471060    psFree(whereStr);
     
    20392052        // magicked is only an argument for for -tofullskyfile
    20402053        PXOPT_LOOKUP_S64(magicked, config->args, "-set_magicked", false, false);
     2054        PXOPT_LOOKUP_S16(quality, config->args, "-set_quality", false, false);
    20412055        if (magicked) {
    20422056            psStringAppend(&set_magicked_skyfile, "\n , warpSkyfile.magicked = %" PRId64, magicked);
    20432057            psStringAppend(&set_magicked_run, "\n,  warpRun.magicked = %" PRId64, magicked);
    20442058        }
     2059        if (quality) {
     2060          psStringAppend(&set_magicked_skyfile, "\n , warpSkyfile.quality = %"PRId16, quality);
     2061        }
    20452062    } else if (!strcmp(data_state, "cleaned") || !strcmp(data_state, "purged")) {
    20462063        // if magicked is currently nonzero set it to -1
     
    24212438    PXOPT_COPY_S64(config->args, where, "-exp_id",     "rawExp.exp_id", "==");
    24222439    PXOPT_COPY_STR(config->args, where, "-exp_name",   "rawExp.exp_name", "==");
     2440    PXOPT_COPY_S64(config->args, where, "-chip_id",    "chipRun.chip_id", "==");
     2441    PXOPT_COPY_S64(config->args, where, "-cam_id",     "camRun.cam_id", "==");
    24232442    PXOPT_COPY_S64(config->args, where, "-fake_id",    "fakeRun.fake_id", "==");
    24242443    PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawExp.dateobs",  ">=");
     
    25622581    psFree(query);
    25632582
    2564     return true;
    2565 }
     2583    if (!skycell_id) {
     2584        // If we are updateing a whole warpRun set skycells with bad quality to 'full'
     2585        query = "UPDATE warpSkyfile SET data_state ='full', fault = 0 WHERE warp_id = %" PRId64 " AND quality != 0 AND (data_state != 'full')";
     2586        if (!p_psDBRunQueryF(config->dbh, query, warp_id)) {
     2587            psError(PS_ERR_UNKNOWN, false, "database error");
     2588            return false;
     2589        }
     2590    }
     2591
     2592    return true;
     2593}
  • branches/meh_branches/ppstack_test/ippTools/src/warptoolConfig.c

    r31955 r33415  
    269269    psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-tess_id",  0,          "search by tessellation ID", NULL);
    270270    psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-state",  0,            "search by state", NULL);
    271     psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-exp_id", 0,            "search by exposure tag", 0);
    272     psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-exp_name", 0,          "search by exposure tag", 0);
    273     psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-fake_id", 0,           "search by phase 3 version of exposure tag", 0);
     271    psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-exp_id", 0,            "search by exposure id", 0);
     272    psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-exp_name", 0,          "search by exposure tag", NULL);
     273    psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-chip_id", 0,           "search by chip id", 0);
     274    psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-cam_id",  0,           "search by cam id", 0);
     275    psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-fake_id", 0,           "search by phase 3 version of exposure tag (fake_id)", 0);
    274276    psMetadataAddTime(listrunArgs, PS_LIST_TAIL, "-dateobs_begin", 0,    "search for exposures by time (>=)", NULL);
    275277    psMetadataAddTime(listrunArgs, PS_LIST_TAIL, "-dateobs_end", 0,      "search for exposures by time (<=)", NULL);
     
    396398    psMetadataAddStr(tofullskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL);
    397399    psMetadataAddS64(tofullskyfileArgs, PS_LIST_TAIL, "-set_magicked",  0, "new value for magicked", 0);
    398 
     400    psMetadataAddS16(tofullskyfileArgs, PS_LIST_TAIL, "-set_quality", 0, "new value for quality", 0);
     401   
    399402    // -updateskyfile
    400403    psMetadata *updateskyfileArgs = psMetadataAlloc();
Note: See TracChangeset for help on using the changeset viewer.