IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 20734


Ignore:
Timestamp:
Nov 13, 2008, 2:56:00 PM (17 years ago)
Author:
Paul Price
Message:

Cleaning up magictool -definebyquery so that part1 and part2 queries aren't required (psDBRunQuery takes %s etc). Adding '-available' flag which says 'don't worry if all the diffs didn't make it, just do it with whatever's immediately available.'

Location:
trunk/ippTools
Files:
1 added
3 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/share/Makefile.am

    r20722 r20734  
    101101     magictool_definebyquery.sql \
    102102     magictool_definebyquery_insert.sql \
    103      magictool_definebyquery_select_part1.sql \
    104      magictool_definebyquery_select_part2.sql \
     103     magictool_definebyquery_select.sql \
    105104     magictool_definebyquery_select_test.sql \
    106105     magictool_definebyquery_temp_create.sql \
    107106     magictool_definebyquery_temp_insert.sql \
    108      magictool_definebyquery_temp_insert_groupby.sql \
    109107     magictool_inputs.sql \
    110108     magictool_inputskyfile.sql \
  • trunk/ippTools/share/magictool_definebyquery_temp_insert.sql

    r20477 r20734  
    2121WHERE
    2222    diffSkyfile.fault = 0
     23---- WHERE hook %s
     24GROUP BY
     25    exp_id,
     26    warpSkyfile.skycell_id
  • trunk/ippTools/src/magictool.c

    r20703 r20734  
    155155        PXOPT_COPY_F32(config->args, where, "-good_frac", "warpSkyfile.good_frac", ">=");
    156156
     157        psString whereClause = NULL;    // WHERE conditions
    157158        if (psListLength(where->list)) {
    158             psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
    159             psStringAppend(&query, " AND %s", whereClause);
     159            whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     160            psStringPrepend(&whereClause, "\n AND ");
     161        }
     162        psFree(where);
     163
     164        if (!p_psDBRunQuery(config->dbh, query, whereClause)) {
     165            psError(PS_ERR_UNKNOWN, false, "database error");
    160166            psFree(whereClause);
    161         }
    162         psFree(where);
    163 
    164         psString groupby = pxDataGet("magictool_definebyquery_temp_insert_groupby.sql");
    165         if (!groupby) {
    166             psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
    167167            psFree(query);
    168168            return false;
    169169        }
    170 
    171         psStringAppend(&query, " %s", groupby);
    172         psFree(groupby);
    173 
    174         if (!p_psDBRunQuery(config->dbh, query)) {
    175             psError(PS_ERR_UNKNOWN, false, "database error");
    176             psFree(query);
    177             return false;
    178         }
     170        psFree(whereClause);
    179171        psFree(query);
    180172    }
     
    182174    // Get list of exposures ready to magic
    183175    {
    184         psString query = pxDataGet("magictool_definebyquery_select_part1.sql");
     176        psString query = pxDataGet("magictool_definebyquery_select.sql");
    185177        if (!query) {
    186178            psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     
    188180        }
    189181
     182        psString whereClause = NULL;    // WHERE conditions
    190183        {
    191184            psMetadata *where = psMetadataAlloc();
     
    194187
    195188            if (psListLength(where->list)) {
    196                 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
    197                 psStringAppend(&query, " AND %s", whereClause);
    198                 psFree(whereClause);
     189                whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     190                psStringPrepend(&whereClause, "\n AND ");
    199191            }
    200192            psFree(where);
    201193        }
    202194
    203         psString part2 = pxDataGet("magictool_definebyquery_select_part2.sql");
    204         if (!part2) {
    205             psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
    206             return false;
    207         }
    208 
    209         psStringAppend(&query, " %s", part2);
    210         psFree(part2);
    211 
    212         if (!p_psDBRunQuery(config->dbh, query)) {
     195        // Only concern ourselves with exposures that have all diffs completed, unless we're told to only take
     196        // what's available.
     197        PXOPT_LOOKUP_BOOL(available, config->args, "-available", false);
     198        if (!available) {
     199            psStringAppend(&query, " AND num_done = num_todo");
     200        }
     201
     202        if (!p_psDBRunQuery(config->dbh, query, whereClause ? whereClause : "")) {
    213203            psError(PS_ERR_UNKNOWN, false, "database error");
     204            psFree(whereClause);
    214205            psFree(query);
    215206            return false;
    216207        }
    217         psFree(query);
    218     }
     208        psFree(whereClause);
     209        psFree(query);
     210    }
     211
    219212    psArray *output = p_psDBFetchResult(config->dbh);
    220213    if (!output) {
     
    236229        return true;
    237230    }
     231
     232    // Parse the list of exposures ready to magic
    238233
    239234    if (!psDBTransaction(config->dbh)) {
  • trunk/ippTools/src/magictoolConfig.c

    r20703 r20734  
    5555    psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-exp_id", 0, "search exp_id", 0);
    5656    psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-good_frac", 0, "limit good_frac", NAN);
     57    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-available", 0, "process what's immediately available?", false);
    5758    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
    5859
Note: See TracChangeset for help on using the changeset viewer.