IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 29299


Ignore:
Timestamp:
Oct 1, 2010, 2:14:57 PM (16 years ago)
Author:
bills
Message:

Add lookups by mjd_obs to stacktool -sumskyfile add difftool -listssrun to list data from stack
stack diff runs. difftool -listrun paramters don't work well for diff_mode == 4

Location:
trunk/ippTools/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/difftool.c

    r29225 r29299  
    6060static bool tofullskyfileMode(pxConfig *config);
    6161static bool listrunMode(pxConfig *config);
     62static bool listssrunMode(pxConfig *config);
    6263static bool setskyfiletoupdateMode(pxConfig *config);
    6364
     
    108109        MODECASE(DIFFTOOL_MODE_TOFULLSKYFILE,         tofullskyfileMode);
    109110        MODECASE(DIFFTOOL_MODE_LISTRUN,               listrunMode);
     111        MODECASE(DIFFTOOL_MODE_LISTSSRUN,             listssrunMode);
    110112        MODECASE(DIFFTOOL_MODE_SETSKYFILETOUPDATE,    setskyfiletoupdateMode);
    111113
     
    28702872    psMetadata *where = psMetadataAlloc();
    28712873    PXOPT_COPY_S64(config->args, where,  "-diff_id",    "diffRun.diff_id",  "==");
    2872     PXOPT_COPY_STR(config->args, where,  "-tess_id",    "diffRun.tess_id",  "==");
     2874    PXOPT_COPY_STR(config->args, where,  "-tess_id",    "diffRun.tess_id",  "LIKE");
    28732875    PXOPT_COPY_S64(config->args, where,  "-magicked",   "diffRun.magicked", "==");
    28742876    PXOPT_COPY_STR(config->args, where,  "-state",      "diffRun.state",    "==");
     
    29792981    return true;
    29802982}
     2983static bool listssrunMode(pxConfig *config)
     2984{
     2985    PS_ASSERT_PTR_NON_NULL(config, false);
     2986
     2987    psMetadata *where = psMetadataAlloc();
     2988    PXOPT_COPY_S64(config->args, where,  "-diff_id",    "diffRun.diff_id",  "==");
     2989    PXOPT_COPY_S64(config->args, where,  "-stack_id",   "stackInput.stack_id",  "==");
     2990    PXOPT_COPY_S64(config->args, where,  "-template_stack_id",  "stackTemplate.stack_id",  "==");
     2991    PXOPT_COPY_STR(config->args, where,  "-tess_id",    "diffRun.tess_id",  "LIKE");
     2992    PXOPT_COPY_STR(config->args, where,  "-state",      "diffRun.state",    "==");
     2993    pxAddLabelSearchArgs (config, where, "-label",      "diffRun.label", "LIKE");
     2994    pxAddLabelSearchArgs (config, where, "-data_group", "diffRun.data_group", "LIKE");
     2995    pxAddLabelSearchArgs (config, where, "-dist_group", "diffRun.dist_group", "LIKE");
     2996
     2997    // lookup these so we don't compare to zero if they are not supplied
     2998    PXOPT_LOOKUP_F64(mjd_obs_begin, config->args, "-mjd_obs_begin", false, false);
     2999    PXOPT_LOOKUP_F64(mjd_obs_end, config->args, "-mjd_obs_end", false, false);
     3000   
     3001    PXOPT_LOOKUP_BOOL(template, config->args, "-template", false);
     3002
     3003    if (!template) {
     3004        if (mjd_obs_begin) {
     3005            PXOPT_COPY_F64(config->args, where, "-mjd_obs_begin", "stackInput.mjd_obs",  ">=");
     3006        }
     3007        if (mjd_obs_end) {
     3008            PXOPT_COPY_F64(config->args, where, "-mjd_obs_end",   "stackInput.mjd_obs",  "<=");
     3009        }
     3010        PXOPT_COPY_STR(config->args, where, "-filter",        "stackInputRun.filter", "LIKE");
     3011    } else {
     3012        if (mjd_obs_begin) {
     3013            PXOPT_COPY_F64(config->args, where, "-mjd_obs_begin", "stackTemplate.mjd_obs",  ">=");
     3014        }
     3015        if (mjd_obs_end) {
     3016            PXOPT_COPY_F64(config->args, where, "-mjd_obs_end",   "stackTemplate.mjd_obs",  "<=");
     3017        }
     3018        PXOPT_COPY_STR(config->args, where, "-filter",        "stackTemplateRun.filter", "LIKE");
     3019    }
     3020
     3021    PXOPT_LOOKUP_BOOL(all, config->args, "-all", false);
     3022    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     3023    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     3024    PXOPT_LOOKUP_BOOL(pstamp_order, config->args, "-pstamp_order", false);
     3025
     3026    psString where2 = NULL;
     3027    psString query = pxDataGet("difftool_listssrun.sql");
     3028    if (!query) {
     3029        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     3030        return false;
     3031    }
     3032
     3033    if (psListLength(where->list)) {
     3034        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     3035        psStringAppend(&query, " AND %s", whereClause);
     3036        psFree(whereClause);
     3037    } else if (where2) {
     3038        psStringAppend(&query, " AND %s", where2);
     3039    } else if (!all) {
     3040        psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required");
     3041        return false;
     3042    }
     3043    psFree(where);
     3044
     3045    if (pstamp_order) {
     3046        if (template) {
     3047            psStringAppend(&query, " ORDER BY stackTemplate.stack_id, diff_id DESC");
     3048        } else {
     3049            psStringAppend(&query, " ORDER BY stackInput.stack_id, diff_id DESC");
     3050        }
     3051    }
     3052           
     3053    // treat limit == 0 as "no limit"
     3054    if (limit) {
     3055        psString limitString = psDBGenerateLimitSQL(limit);
     3056        psStringAppend(&query, " %s", limitString);
     3057        psFree(limitString);
     3058    }
     3059
     3060    if (!p_psDBRunQuery(config->dbh, query)) {
     3061        psError(PS_ERR_UNKNOWN, false, "database error");
     3062        psFree(query);
     3063        return false;
     3064    }
     3065    psFree(query);
     3066
     3067    psArray *output = p_psDBFetchResult(config->dbh);
     3068    if (!output) {
     3069        psErrorCode err = psErrorCodeLast();
     3070        switch (err) {
     3071            case PS_ERR_DB_CLIENT:
     3072                psError(PXTOOLS_ERR_SYS, false, "database error");
     3073            case PS_ERR_DB_SERVER:
     3074                psError(PXTOOLS_ERR_PROG, false, "database error");
     3075            default:
     3076                psError(PXTOOLS_ERR_PROG, false, "unknown error");
     3077        }
     3078
     3079        return false;
     3080    }
     3081    if (!psArrayLength(output)) {
     3082        psTrace("difftool", PS_LOG_INFO, "no rows found");
     3083        psFree(output);
     3084        return true;
     3085    }
     3086
     3087    if (psArrayLength(output)) {
     3088        // negative simple so the default is true
     3089        if (!ippdbPrintMetadatas(stdout, output, "diffRun", !simple)) {
     3090            psError(PS_ERR_UNKNOWN, false, "failed to print array");
     3091            psFree(output);
     3092            return false;
     3093        }
     3094    }
     3095
     3096    psFree(output);
     3097
     3098    return true;
     3099}
    29813100// a very specfic function to queue a cleaned warpSkyfile to be updated
    29823101static bool setskyfiletoupdateMode(pxConfig *config)
  • trunk/ippTools/src/difftool.h

    r28375 r29299  
    5151    DIFFTOOL_MODE_TOFULLSKYFILE,
    5252    DIFFTOOL_MODE_LISTRUN,
     53    DIFFTOOL_MODE_LISTSSRUN,
    5354    DIFFTOOL_MODE_SETSKYFILETOUPDATE,
    5455} difftoolMode;
  • trunk/ippTools/src/difftoolConfig.c

    r29225 r29299  
    194194    psMetadataAddU64(listrunArgs, PS_LIST_TAIL,  "-limit",  0,            "limit result set to N items", 0);
    195195    psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-simple",  0,          "use the simple output format", false);
     196
     197
     198    // -listssrun
     199    psMetadata *listssrunArgs = psMetadataAlloc();
     200    psMetadataAddS64(listssrunArgs, PS_LIST_TAIL,  "-diff_id", 0,          "search by diff ID", 0);
     201    psMetadataAddStr(listssrunArgs, PS_LIST_TAIL,  "-tess_id",  0,         "search by tessellation ID", NULL);
     202    psMetadataAddS64(listssrunArgs , PS_LIST_TAIL, "-stack_id",  0,        "search by input stack_id", 0);
     203    psMetadataAddS64(listssrunArgs , PS_LIST_TAIL, "-template_stack_id",0, "search by template stack_id", 0);
     204    psMetadataAddBool(listssrunArgs, PS_LIST_TAIL, "-template",  0,        "apply stack selectors to template", false);
     205    psMetadataAddF64(listssrunArgs, PS_LIST_TAIL,  "-mjd_obs_begin", 0,    "search by stack MJD-OBS (>=)", 0);
     206    psMetadataAddF64(listssrunArgs, PS_LIST_TAIL,  "-mjd_obs_end", 0,      "search by stack MJD-OBS(<=)", 0);
     207    psMetadataAddStr(listssrunArgs, PS_LIST_TAIL,  "-filter", 0,           "search by stack filter", NULL);
     208    psMetadataAddStr(listssrunArgs,  PS_LIST_TAIL, "-label",  PS_META_DUPLICATE_OK, "search by diffRun label (LIKE comparison)", NULL);
     209    psMetadataAddStr(listssrunArgs,  PS_LIST_TAIL, "-data_group",  PS_META_DUPLICATE_OK, "search by diffRun data_group (LIKE comparison)", NULL);
     210    psMetadataAddStr(listssrunArgs,  PS_LIST_TAIL, "-dist_group",  PS_META_DUPLICATE_OK, "search by diffRun dist_group (LIKE comparison)", NULL);
     211    psMetadataAddS16(listssrunArgs,  PS_LIST_TAIL, "-diff_mode", 0,        "search for diff_mode", 0);
     212    psMetadataAddStr(listssrunArgs, PS_LIST_TAIL,  "-state",  0,           "search by state", NULL);
     213    pxmagicAddArguments(listssrunArgs);
     214    pxspaceAddArguments(listssrunArgs);
     215
     216    psMetadataAddBool(listssrunArgs, PS_LIST_TAIL, "-pstamp_order",  0,    "order results for postage stamp server", false);
     217
     218    psMetadataAddBool(listssrunArgs, PS_LIST_TAIL, "-all",  0,             "search without arguments", false);
     219    psMetadataAddU64(listssrunArgs, PS_LIST_TAIL,  "-limit",  0,            "limit result set to N items", 0);
     220    psMetadataAddBool(listssrunArgs, PS_LIST_TAIL, "-simple",  0,          "use the simple output format", false);
    196221
    197222
     
    430455    PXOPT_ADD_MODE("-advance",          "", DIFFTOOL_MODE_ADVANCE,           advanceArgs);
    431456    PXOPT_ADD_MODE("-diffskyfile",      "", DIFFTOOL_MODE_DIFFSKYFILE,       diffskyfileArgs);
    432     PXOPT_ADD_MODE("-listrun",          "", DIFFTOOL_MODE_LISTRUN,           listrunArgs);
    433457    PXOPT_ADD_MODE("-revertdiffskyfile","", DIFFTOOL_MODE_REVERTDIFFSKYFILE, revertdiffskyfileArgs);
    434458    PXOPT_ADD_MODE("-definepoprun",     "", DIFFTOOL_MODE_DEFINEPOPRUN,      definepoprunArgs);
     
    436460    PXOPT_ADD_MODE("-definewarpwarp",   "", DIFFTOOL_MODE_DEFINEWARPWARP,    definewarpwarpArgs);
    437461    PXOPT_ADD_MODE("-definestackstack", "", DIFFTOOL_MODE_DEFINESTACKSTACK,  definestackstackArgs);
     462    PXOPT_ADD_MODE("-listrun",          "list diff runs", DIFFTOOL_MODE_LISTRUN,           listrunArgs);
     463    PXOPT_ADD_MODE("-listssrun",        "list stack-stack diff runs", DIFFTOOL_MODE_LISTSSRUN,           listssrunArgs);
    438464    PXOPT_ADD_MODE("-pendingcleanuprun",     "show runs that need to be cleaned up", DIFFTOOL_MODE_PENDINGCLEANUPRUN,    pendingcleanuprunArgs);
    439465    PXOPT_ADD_MODE("-pendingcleanupskyfile", "show runs that need to be cleaned up", DIFFTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileArgs);
  • trunk/ippTools/src/stacktool.c

    r29283 r29299  
    10961096    psMetadata *where = psMetadataAlloc();
    10971097    PXOPT_COPY_S64(config->args, where, "-stack_id", "stackSumSkyfile.stack_id", "==");
    1098     PXOPT_COPY_STR(config->args, where, "-tess_id", "stackRun.tess_id", "==");
     1098    PXOPT_COPY_STR(config->args, where, "-tess_id", "stackRun.tess_id", "LIKE");
    10991099    PXOPT_COPY_STR(config->args, where, "-skycell_id", "stackRun.skycell_id", "==");
    11001100    PXOPT_COPY_STR(config->args, where, "-filter", "stackRun.filter", "LIKE");
     
    11021102    PXOPT_COPY_STR(config->args, where, "-data_group", "stackRun.data_group", "LIKE");
    11031103    PXOPT_COPY_S16(config->args, where, "-fault", "stackSumSkyfile.fault", "==");
     1104    PXOPT_COPY_F64(config->args, where, "-mjd_obs_begin", "stackSumSkyfile.mjd_obs", ">=");
     1105    PXOPT_COPY_F64(config->args, where, "-mjd_obs_end", "stackSumSkyfile.mjd_obs", "<=");
     1106
    11041107
    11051108//  The following three selectors are incompatible with the sql so omit them
  • trunk/ippTools/src/stacktoolConfig.c

    r29283 r29299  
    186186    psMetadata *sumskyfileArgs= psMetadataAlloc();
    187187    psMetadataAddS64(sumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0,            "search by stack ID", 0);
    188     psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-tess_id", 0,            "search by tess ID", 0);
     188    psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-tess_id", 0,            "search by tess ID (LIKE comparison)", 0);
    189189    psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0,         "search by skycell ID", 0);
    190190#ifdef notdef
     
    197197    psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-data_group", 0,        "search by stackRun.data_group (LIKE comparison)", NULL);
    198198    psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-filter", 0,            "search by filter (LIKE comparison)", NULL);
     199    psMetadataAddF64(sumskyfileArgs, PS_LIST_TAIL, "-mjd_obs_begin",  0,      "search by mjd_obs (average mjd_obs of inputs <=)", NAN);
     200    psMetadataAddF64(sumskyfileArgs, PS_LIST_TAIL, "-mjd_obs_end",  0,      "search by mjd_obs (average mjd_obs of inputs>=)", NAN);
    199201    psMetadataAddS16(sumskyfileArgs, PS_LIST_TAIL, "-fault",  0,            "search by fault code", 0);
    200202    psMetadataAddU64(sumskyfileArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
     
    205207    psMetadata *sassskyfileArgs = psMetadataAlloc();
    206208    psMetadataAddS64(sassskyfileArgs, PS_LIST_TAIL, "-sass_id", 0,           "search by stack association ID", 0);
    207     psMetadataAddStr(sassskyfileArgs, PS_LIST_TAIL, "-tess_id", 0,            "search by tess ID", 0);
     209    psMetadataAddStr(sassskyfileArgs, PS_LIST_TAIL, "-tess_id", 0,            "search by tess ID (LIKE comparison)", 0);
    208210    psMetadataAddStr(sassskyfileArgs, PS_LIST_TAIL, "-projection_cell", 0,         "search by projection cell", 0);
    209211
Note: See TracChangeset for help on using the changeset viewer.