IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 11, 2012, 11:19:21 PM (15 years ago)
Author:
mhuber
Message:

merged latest r33093 trunk changes to meh_branches/ppsub_test

Location:
branches/meh_branches/ppsub_test
Files:
37 edited
8 copied

Legend:

Unmodified
Added
Removed
  • branches/meh_branches/ppsub_test

  • branches/meh_branches/ppsub_test/ippTools/src

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

    r31435 r33098  
    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/ppsub_test/ippTools/src/addtool.c

    r31680 r33098  
    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/ppsub_test/ippTools/src/addtoolConfig.c

    r31680 r33098  
    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/ppsub_test/ippTools/src/bgtoolConfig.c

    r29671 r33098  
    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/ppsub_test/ippTools/src/chiptool.c

    r31954 r33098  
    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);
     
    883885    }
    884886    psFree(query);
     887    int numDeleted = psDBAffectedRows(config->dbh);
     888    psLogMsg("chiptool", PS_LOG_INFO, "Deleted %d chipProcessedImfiles", numDeleted);
    885889
    886890    if (!fault) {
     
    896900    }
    897901    psFree(query_update);
     902    int numUpdated = psDBAffectedRows(config->dbh);
     903    psLogMsg("chiptool", PS_LOG_INFO, "Updated %d chipProcessedImfiles", numUpdated);
     904
    898905
    899906    return true;
     
    962969    PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "==");
    963970    PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "==");
    964     PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, NULL);
     971    PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false);
    965972    if (psListLength(where->list) == 0) {
    966973        psError(PS_ERR_UNKNOWN, true, "search parameters are required");
     
    986993
    987994
     995    return true;
     996}
     997
     998// "drop" previously processed components as though the original processing
     999// had poor quality. Sets quality, data_state, clears fault and magicked
     1000// Deletes corresponding magicDSFile (if one exists)
     1001static bool dropprocessedimfileMode(pxConfig *config)
     1002{
     1003    PS_ASSERT_PTR_NON_NULL(config, false);
     1004
     1005    psMetadata *where = psMetadataAlloc();
     1006    PXOPT_COPY_S64(config->args, where, "-chip_id", "chipProcessedImfile.chip_id", "==");
     1007    PXOPT_COPY_STR(config->args, where, "-class_id", "chipProcessedImfile.class_id", "==");
     1008    PXOPT_LOOKUP_S64(chip_id, config->args, "-chip_id", true, false);
     1009    PXOPT_LOOKUP_S64(class_id, config->args, "-class_id", true, false);
     1010    PXOPT_LOOKUP_S16(quality, config->args, "-set_quality", true, false);
     1011
     1012    if (!quality) {
     1013        psError(PXTOOLS_ERR_CONFIG, true, "non-zero quality value is required");
     1014        return false;
     1015    }
     1016
     1017    if (psListLength(where->list) == 0) {
     1018        // won't get here
     1019        psError(PXTOOLS_ERR_CONFIG, true, "-chip_id and -class_id are required");
     1020        return false;
     1021    }
     1022
     1023    psString query = pxDataGet("chiptool_dropprocessedimfile_update.sql");
     1024    if (!query) {
     1025        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1026        return false;
     1027    }
     1028    psString delete_query = pxDataGet("chiptool_dropprocessedimfile_delete.sql");
     1029    if (!delete_query) {
     1030        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1031        return false;
     1032    }
     1033    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1034    psStringAppend(&query, " WHERE %s", whereClause);
     1035    psFree(where);
     1036
     1037    if (!psDBTransaction(config->dbh)) {
     1038        psError(PS_ERR_UNKNOWN, false, "database error");
     1039        return false;
     1040    }
     1041    if (!p_psDBRunQueryF(config->dbh, query, quality)) {
     1042        if (!psDBRollback(config->dbh)) {
     1043            psError(PS_ERR_UNKNOWN, false, "database error on rollback");
     1044        }
     1045        psError(PS_ERR_UNKNOWN, false, "database error");
     1046        psFree(query);
     1047        return false;
     1048    }
     1049    psFree(query);
     1050
     1051    psStringAppend(&delete_query, " AND %s", whereClause);
     1052    psFree(whereClause);
     1053    if (!p_psDBRunQuery(config->dbh, delete_query)) {
     1054        if (!psDBRollback(config->dbh)) {
     1055            psError(PS_ERR_UNKNOWN, false, "database error on rollback");
     1056        }
     1057        psError(PS_ERR_UNKNOWN, false, "database error");
     1058        psFree(delete_query);
     1059        return false;
     1060    }
     1061    psFree(delete_query);
     1062
     1063    if (!psDBCommit(config->dbh)) {
     1064        psError(PS_ERR_UNKNOWN, false, "database error");
     1065        return false;
     1066    }
    9881067    return true;
    9891068}
     
    14181497    psMetadata *where = psMetadataAlloc();
    14191498    pxAddLabelSearchArgs (config, where, "-label", "label", "==");
    1420 
     1499    PXOPT_COPY_S64(config->args, where,  "-chip_id",    "chip_id", "==");
    14211500    // look for completed chipPendingExp
    14221501    // migrate them to chipProccessedExp & camPendingExp
     
    14321511        psFree(whereClause);
    14331512    }
     1513
     1514    psTrace("chiptool", 10, "%s\n", query);
    14341515    psFree(where);
    14351516
  • branches/meh_branches/ppsub_test/ippTools/src/chiptool.h

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

    r31954 r33098  
    237237    psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-set_state", 0,         "set state", NULL);
    238238    psMetadataAddS16(updateprocessedimfileArgs, PS_LIST_TAIL, "-set_quality",  0,            "set quality", 0);
    239     // -processedExp
     239
     240    // -dropprocessedimfile
     241    psMetadata *dropprocessedimfileArgs = psMetadataAlloc();
     242    psMetadataAddS64(dropprocessedimfileArgs, PS_LIST_TAIL, "-chip_id",  0,            "search by chip ID (required)", 0);
     243    psMetadataAddStr(dropprocessedimfileArgs,  PS_LIST_TAIL, "-class_id",           0, "search by class ID (required)", NULL);
     244    psMetadataAddS16(dropprocessedimfileArgs, PS_LIST_TAIL, "-set_quality",  0,        "set quality (required)", 0);
     245
     246    // -listrun
    240247    psMetadata *listrunArgs = psMetadataAlloc();
    241248    pxchipSetSearchArgs(listrunArgs);
     
    372379    PXOPT_ADD_MODE("-processedimfile",      "show processed imfiles",               CHIPTOOL_MODE_PROCESSEDIMFILE,      processedimfileArgs);
    373380    PXOPT_ADD_MODE("-updateprocessedimfile","change procesed imfile properties",    CHIPTOOL_MODE_UPDATEPROCESSEDIMFILE,updateprocessedimfileArgs);
     381    PXOPT_ADD_MODE("-dropprocessedimfile","drop previously procesed imfile",        CHIPTOOL_MODE_DROPPROCESSEDIMFILE,  dropprocessedimfileArgs);
    374382    PXOPT_ADD_MODE("-revertprocessedimfile","undo a processed imfile",              CHIPTOOL_MODE_REVERTPROCESSEDIMFILE,revertprocessedimfileArgs);
    375383    PXOPT_ADD_MODE("-runstate",             "list the states of chip run",          CHIPTOOL_MODE_RUNSTATE,             runstateArgs);
  • branches/meh_branches/ppsub_test/ippTools/src/difftool.c

    r31435 r33098  
    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', 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/ppsub_test/ippTools/src/difftoolConfig.c

    r31435 r33098  
    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/ppsub_test/ippTools/src/disttool.c

    r31564 r33098  
    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/ppsub_test/ippTools/src/disttool.h

    r28938 r33098  
    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/ppsub_test/ippTools/src/disttoolConfig.c

    r30906 r33098  
    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/ppsub_test/ippTools/src/faketool.c

    r30907 r33098  
    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/ppsub_test/ippTools/src/flatcorr.c

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

    r31827 r33098  
    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
     
    755767}
    756768
    757 
    758    
     769static bool diffcheckMode(pxConfig *config)
     770{
     771  PS_ASSERT_PTR_NON_NULL(config, false);
     772  PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     773 
     774  psMetadata *where = psMetadataAlloc();
     775  PXOPT_COPY_S64(config->args, where, "-lap_id", "lapRun.lap_id", "==");
     776  PXOPT_COPY_S64(config->args, where, "-exp_id",  "exp_id", "==");
     777  PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "==");
     778  PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "==");
     779  PXOPT_COPY_S64(config->args, where, "-seq_id",  "seq_id", "==");
     780  PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id", "==");
     781
     782  psString query = pxDataGet("laptool_WSdiff_check.sql");
     783  if (!query) {
     784    psError(PXTOOLS_ERR_SYS, false, "failed to retrieve SQL statement");
     785    return(false);
     786  }
     787 
     788  if (psListLength(where->list)) {
     789    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     790    psStringPrepend(&whereClause, "\n AND ");
     791    psStringSubstitute(&query,whereClause,"@WHERE@");
     792    psFree(whereClause);
     793  }
     794
     795  if (!p_psDBRunQuery(config->dbh, query)) {
     796    psError(PS_ERR_UNKNOWN, false, "database error");
     797    psFree(query);
     798    return false;
     799  }
     800  psFree(query);
     801
     802  psArray *output = p_psDBFetchResult(config->dbh);
     803  if (!output) {
     804    psErrorCode err = psErrorCodeLast();
     805    switch (err) {
     806    case PS_ERR_DB_CLIENT:
     807      psError(PXTOOLS_ERR_SYS, false, "database error");
     808    case PS_ERR_DB_SERVER:
     809      psError(PXTOOLS_ERR_PROG, false, "database error");
     810    default:
     811      psError(PXTOOLS_ERR_PROG, false, "unknown error %d",err);
     812    }
     813
     814    return false;
     815  }
     816  if (!psArrayLength(output)) {
     817    psTrace("laptool", PS_LOG_INFO, "no rows found");
     818    psFree(output);
     819    return true;
     820  }
     821
     822  if (psArrayLength(output)) {
     823    if (!ippdbPrintMetadatas(stdout, output, "lapRunWarpStackSkycells", !simple)) {
     824      psError(PS_ERR_UNKNOWN, false, "failed to print array");
     825      psFree(output);
     826      return false;
     827    }
     828  }
     829
     830  psFree(output);
     831  return(true);
     832}   
    759833
    760834static bool inactiveexpMode(pxConfig *config)
  • branches/meh_branches/ppsub_test/ippTools/src/laptool.h

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

    r31528 r33098  
    132132  ADD_OPT(Bool,updateexpArgs, "-inactive",                    "set this exposure to active", 0);
    133133
     134  // -diffcheck
     135  psMetadata *diffcheckArgs = psMetadataAlloc();
     136  ADD_OPT(S64, diffcheckArgs, "-lap_id",                      "search by lap run ID", 0);
     137  ADD_OPT(S64, diffcheckArgs, "-exp_id",                      "search by exposure ID", 0);
     138  ADD_OPT(S64, diffcheckArgs, "-chip_id",                     "search by chip ID", 0);
     139  ADD_OPT(S64, diffcheckArgs, "-warp_id",                     "search by warp ID", 0);
     140  ADD_OPT(S64, diffcheckArgs, "-seq_id",                      "search by lap sequence ID", 0);
     141  ADD_OPT(Str, diffcheckArgs, "-skycell_id",                  "search by skycell ID", 0);
     142  ADD_OPT(Bool, diffcheckArgs, "-simple",                     "use simple output format", 0);
     143 
    134144  // -inactiveexp
    135145  psMetadata *inactiveexpArgs = psMetadataAlloc();
     
    152162  PXOPT_ADD_MODE("-stacks",                  "", LAPTOOL_MODE_STACKS,           stacksArgs);
    153163  PXOPT_ADD_MODE("-updateexp",               "", LAPTOOL_MODE_UPDATEEXP,        updateexpArgs);
     164  PXOPT_ADD_MODE("-diffcheck",               "", LAPTOOL_MODE_DIFFCHECK,        diffcheckArgs);
    154165  PXOPT_ADD_MODE("-inactiveexp",             "", LAPTOOL_MODE_INACTIVEEXP,      inactiveexpArgs);
    155166 
  • branches/meh_branches/ppsub_test/ippTools/src/magicdstool.c

    r30854 r33098  
    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/ppsub_test/ippTools/src/magicdstoolConfig.c

    r30854 r33098  
    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/ppsub_test/ippTools/src/magictool.c

    r31659 r33098  
    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/ppsub_test/ippTools/src/magictoolConfig.c

    r31605 r33098  
    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/ppsub_test/ippTools/src/minidvodbtool.c

    r29528 r33098  
    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/ppsub_test/ippTools/src/pstamptool.c

    r31517 r33098  
    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    }
     
    14761482    return true;
    14771483}
     1484
     1485static bool addfileMode(pxConfig *config)
     1486{
     1487    PS_ASSERT_PTR_NON_NULL(config, false);
     1488
     1489    PXOPT_LOOKUP_S64(job_id, config->args, "-job_id", true, false);
     1490    PXOPT_LOOKUP_STR(path,   config->args, "-path",   true, false);
     1491
     1492    if (!pstampFileInsert(config->dbh,
     1493            0, // file_id
     1494            job_id,
     1495            path
     1496            )) {
     1497        psError(PS_ERR_UNKNOWN, false, "database error");
     1498        return false;
     1499    }
     1500
     1501    psU64 affected = psDBAffectedRows(config->dbh);
     1502    if (affected != 1) {
     1503        psError(PS_ERR_UNKNOWN, false,
     1504            "should have affected one row but %" PRIu64 " rows were modified",
     1505            affected);
     1506        return false;
     1507    }
     1508
     1509    psS64 file_id = psDBLastInsertID(config->dbh);
     1510    printf("%" PRId64 "\n", file_id);
     1511
     1512    return true;
     1513}
     1514
     1515static bool listfileMode(pxConfig *config)
     1516{
     1517    PS_ASSERT_PTR_NON_NULL(config, false);
     1518
     1519    psMetadata *where = psMetadataAlloc();
     1520    PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "==");
     1521    PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "==");
     1522    PXOPT_COPY_S64(config->args, where, "-file_id", "file_id", "==");
     1523
     1524    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1525    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1526
     1527    if (!psListLength(where->list)) {
     1528        fprintf(stderr, "search arguments are required\n");
     1529        exit (1);
     1530    }
     1531
     1532    psString query = pxDataGet("pstamptool_listfile.sql");
     1533    if (!query) {
     1534        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1535        return false;
     1536    }
     1537
     1538    // use psDBGenerateWhereSQL because the SQL yields an intermediate table
     1539    if (psListLength(where->list)) {
     1540        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1541        psStringAppend(&query, " WHERE %s", whereClause);
     1542        psFree(whereClause);
     1543    }
     1544    psFree(where);
     1545
     1546    // treat limit == 0 as "no limit"
     1547    if (limit) {
     1548        psString limitString = psDBGenerateLimitSQL(limit);
     1549        psStringAppend(&query, " %s", limitString);
     1550        psFree(limitString);
     1551    }
     1552
     1553    if (!p_psDBRunQuery(config->dbh, query)) {
     1554        psError(PS_ERR_UNKNOWN, false, "database error");
     1555        psFree(query);
     1556        return false;
     1557    }
     1558    psFree(query);
     1559
     1560    psArray *output = p_psDBFetchResult(config->dbh);
     1561    if (!output) {
     1562        psError(PS_ERR_UNKNOWN, false, "database error");
     1563        return false;
     1564    }
     1565    if (!psArrayLength(output)) {
     1566        psTrace("pstamptool", PS_LOG_INFO, "no rows found");
     1567        psFree(output);
     1568        return true;
     1569    }
     1570
     1571    // negative simple so the default is true
     1572    if (!ippdbPrintMetadatas(stdout, output, "pstampFile", !simple)) {
     1573        psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1574        psFree(output);
     1575        return false;
     1576    }
     1577
     1578    psFree(output);
     1579
     1580    return true;
     1581}
     1582
     1583static bool deletefileMode(pxConfig *config)
     1584{
     1585    PS_ASSERT_PTR_NON_NULL(config, false);
     1586
     1587    PXOPT_LOOKUP_S64(job_id, config->args, "-job_id", true, false);
     1588
     1589    psString query = NULL;
     1590    psStringAppend(&query, "DELETE FROM pstampFile WHERE job_id = %" PRId64, job_id);
     1591
     1592    if (!p_psDBRunQuery(config->dbh, query)) {
     1593        psError(PS_ERR_UNKNOWN, false, "database error");
     1594        psFree(query);
     1595        return false;
     1596    }
     1597    psFree(query);
     1598
     1599    psU64 affected = psDBAffectedRows(config->dbh);
     1600    psLogMsg("pstamptool", PS_LOG_INFO, "Deleted %" PRIu64 " rows from pstampFile", affected);
     1601
     1602    return true;
     1603}
  • branches/meh_branches/ppsub_test/ippTools/src/pstamptool.h

    r29248 r33098  
    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/ppsub_test/ippTools/src/pstamptoolConfig.c

    r30543 r33098  
    274274    psMetadata *modes = psMetadataAlloc();
    275275
     276    // -addfile
     277    psMetadata *addfileArgs = psMetadataAlloc();
     278    psMetadataAddS64(addfileArgs, PS_LIST_TAIL, "-job_id",       0, "define job ID for file (required)", 0);
     279    psMetadataAddStr(addfileArgs, PS_LIST_TAIL, "-path",         0, "define path for file (required)", NULL);
     280
     281    // -listfile
     282    psMetadata *listfileArgs = psMetadataAlloc();
     283    psMetadataAddS64(listfileArgs, PS_LIST_TAIL, "-file_id",     0, "select by file ID", 0);
     284    psMetadataAddS64(listfileArgs, PS_LIST_TAIL, "-job_id",      0, "select by job ID", 0);
     285    psMetadataAddS64(listfileArgs, PS_LIST_TAIL, "-req_id",      0, "select by request ID", 0);
     286    psMetadataAddU64(listfileArgs, PS_LIST_TAIL, "-limit",       0, "limit result set to N items", 0);
     287    psMetadataAddBool(listfileArgs, PS_LIST_TAIL, "-simple",     0, "use the simple output format", false);
     288
     289    // -deletefile
     290    psMetadata *deletefileArgs = psMetadataAlloc();
     291    psMetadataAddS64(deletefileArgs, PS_LIST_TAIL, "-job_id",      0, "select by job ID (required)", 0);
     292
    276293    PXOPT_ADD_MODE("-addreq",          "", PSTAMPTOOL_MODE_ADDREQ,       addreqArgs);
    277294    PXOPT_ADD_MODE("-pendingreq",      "", PSTAMPTOOL_MODE_PENDINGREQ,   pendingreqArgs);
     
    302319    PXOPT_ADD_MODE("-project",         "", PSTAMPTOOL_MODE_PROJECT,    projectArgs);
    303320    PXOPT_ADD_MODE("-getwebrequestnum","", PSTAMPTOOL_MODE_GETWEBREQUESTNUM,   getwebrequestnumArgs);
     321    PXOPT_ADD_MODE("-addfile",         "", PSTAMPTOOL_MODE_ADDFILE,   addfileArgs);
     322    PXOPT_ADD_MODE("-listfile",        "", PSTAMPTOOL_MODE_LISTFILE,   listfileArgs);
     323    PXOPT_ADD_MODE("-deletefile",      "", PSTAMPTOOL_MODE_DELETEFILE,   deletefileArgs);
    304324
    305325    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
  • branches/meh_branches/ppsub_test/ippTools/src/pxadd.c

    r31375 r33098  
    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/ppsub_test/ippTools/src/pxadd.h

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

    r30729 r33098  
    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/ppsub_test/ippTools/src/regtool.c

    r31938 r33098  
    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/ppsub_test/ippTools/src/regtoolConfig.c

    r31938 r33098  
    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/ppsub_test/ippTools/src/staticskytool.c

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

    r27546 r33098  
    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/ppsub_test/ippTools/src/staticskytoolConfig.c

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

    r31955 r33098  
    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",  ">=");
  • branches/meh_branches/ppsub_test/ippTools/src/warptoolConfig.c

    r31955 r33098  
    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.