IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 15, 2008, 10:30:59 AM (18 years ago)
Author:
eugene
Message:

completely deprecate config->where; make all command-line handling consistent; move nearly all sql into share/*.sql; ensure consistency between args supplied and used

File:
1 edited

Legend:

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

    r18459 r18561  
    110110    PXOPT_COPY_STR(config->args, where, "-reduction", "reduction", "==");
    111111    PXOPT_COPY_STR(config->args, where, "-filter", "filter", "==");
    112 
    113112    PXOPT_COPY_F64(config->args, where, "-airmass_min", "airmass", ">=");
    114113    PXOPT_COPY_F64(config->args, where, "-airmass_max", "airmass", "<");
     
    162161    }
    163162
     163    // use psDBGenerateWhereSQL because the SQL yields an intermediate table
    164164    if (where && psListLength(where->list)) {
    165165        psString whereClause = psDBGenerateWhereSQL(where, NULL);
     
    263263    PXOPT_COPY_STR(config->args, where, "-reduction", "reduction", "==");
    264264    PXOPT_COPY_STR(config->args, where, "-filter", "filter", "==");
    265 
    266265    PXOPT_COPY_F64(config->args, where, "-airmass_min", "airmass", ">=");
    267266    PXOPT_COPY_F64(config->args, where, "-airmass_max", "airmass", "<");
     
    334333    PS_ASSERT_PTR_NON_NULL(config, false);
    335334
     335    psMetadata *where = psMetadataAlloc();
     336    PXOPT_COPY_S64(config->args, where, "-cam_id", "cam_id", "==");
     337    PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "==");
     338
    336339    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
    337340    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     
    343346    }
    344347
    345     if (config->where) {
    346         psString whereClause = psDBGenerateWhereSQL(config->where, NULL);
    347         psStringAppend(&query, " %s", whereClause);
     348    // use psDBGenerateWhereSQL because the SQL yields an intermediate table
     349    if (psListLength(where->list)) {
     350        psString whereClause = psDBGenerateWhereSQL(where, NULL);
     351        psStringAppend(&query, "%s", whereClause);
    348352        psFree(whereClause);
    349353    }
     354    psFree(where);
    350355
    351356    // treat limit == 0 as "no limit"
     
    390395    PS_ASSERT_PTR_NON_NULL(config, false);
    391396
     397    psMetadata *where = psMetadataAlloc();
     398    PXOPT_COPY_S64(config->args, where, "-cam_id",   "cam_id",   "==");
     399    PXOPT_COPY_S64(config->args, where, "-chip_id",  "chip_id",  "==");
     400    PXOPT_COPY_STR(config->args, where, "-class",    "class",    "==");
     401    PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "==");
     402
    392403    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    393404
     
    398409    }
    399410
    400     if (config->where) {
    401         psString whereClause = psDBGenerateWhereSQL(config->where, NULL);
    402         psStringAppend(&query, " %s", whereClause);
     411    // use psDBGenerateWhereSQL because the SQL yields an intermediate table
     412    if (psListLength(where->list)) {
     413        psString whereClause = psDBGenerateWhereSQL(where, NULL);
     414        psStringAppend(&query, "%s", whereClause);
    403415        psFree(whereClause);
    404416    }
     417    psFree(where);
    405418
    406419    if (!p_psDBRunQuery(config->dbh, query)) {
     
    463476    PXOPT_LOOKUP_F32(dtime_astrom, config->args, "-dtime_astrom", false, false);
    464477    PXOPT_LOOKUP_STR(hostname, config->args,       "-hostname", false, false);
    465     PXOPT_LOOKUP_F32(n_stars, config->args, "-n_stars", false, false);
    466     PXOPT_LOOKUP_F32(n_extended, config->args, "-n_extended", false, false);
    467     if (n_extended < 0) {
    468         psError(PS_ERR_UNKNOWN, true, "-n_extended is required");
    469         return false;
    470     }
    471     PXOPT_LOOKUP_F32(n_cr, config->args, "-n_cr", false, false);
    472     if (n_cr < 0) {
    473         psError(PS_ERR_UNKNOWN, true, "-n_cr is required");
    474         return false;
    475     }
    476     PXOPT_LOOKUP_F32(n_astrom, config->args, "-n_astrom", false, false);
    477     if (n_astrom < 0) {
    478         psError(PS_ERR_UNKNOWN, true, "-n_astrom is required");
    479         return false;
    480     }
    481 
     478    PXOPT_LOOKUP_S32(n_stars, config->args,        "-n_stars", false, false);
     479    PXOPT_LOOKUP_S32(n_extended, config->args,     "-n_extended", false, false);
     480    PXOPT_LOOKUP_S32(n_cr, config->args,           "-n_cr", false, false);
     481    PXOPT_LOOKUP_S32(n_astrom, config->args,       "-n_astrom", false, false);
    482482    PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false);
    483 
    484     // default
    485483    PXOPT_LOOKUP_S16(code, config->args, "-code", false, false);
     484
     485    // generate restrictions
     486    psMetadata *where = psMetadataAlloc();
     487    PXOPT_COPY_S64(config->args, where, "-cam_id",   "cam_id",   "==");
    486488
    487489    psString query = pxDataGet("camtool_find_pendingexp.sql");
     
    491493    }
    492494
    493     {
    494         // build a query to search by cam_id
    495         psMetadata *where = psMetadataAlloc();
    496         if (cam_id) {
    497             if (!psMetadataAddS64(where, PS_LIST_TAIL, "cam_id", 0, "==", cam_id)) {
    498                 psError(PS_ERR_UNKNOWN, false, "failed to add item cam_id");
    499                 psFree(where);
    500                 psFree(query);
    501                 return false;
    502             }
    503         }
    504 
     495    // use psDBGenerateWhereSQL because the SQL yields an intermediate table
     496    if (psListLength(where->list)) {
    505497        psString whereClaus = psDBGenerateWhereSQL(where, NULL);
    506         psFree(where);
    507         if (whereClaus) {
    508             psStringAppend(&query, " %s", whereClaus);
    509             psFree(whereClaus);
    510         }
    511 
    512     }
     498        psStringAppend(&query, "%s", whereClaus);
     499        psFree(whereClaus);
     500    }
     501    psFree(where);
    513502
    514503    if (!p_psDBRunQuery(config->dbh, query)) {
     
    640629    PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);
    641630
     631    // generate restrictions
     632    psMetadata *where = psMetadataAlloc();
     633    PXOPT_COPY_S64(config->args, where, "-cam_id",   "cam_id",   "==");
     634    PXOPT_COPY_S64(config->args, where, "-chip_id",  "chip_id",   "==");
     635
    642636    psString query = pxDataGet("camtool_find_processedexp.sql");
    643637    if (!query) {
     
    646640    }
    647641
    648     if (config->where) {
    649         psString whereClause = psDBGenerateWhereConditionSQL(config->where, NULL);
     642    // use psDBGenerateWhereConditionalSQL with AND ... because the SQL ends in a WHERE
     643    if (psListLength(where->list)) {
     644        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
    650645        psStringAppend(&query, " AND %s", whereClause);
    651646        psFree(whereClause);
    652647    }
     648    psFree(where);
    653649
    654650    if (faulted) {
     
    716712    PXOPT_COPY_STR(config->args, where, "-reduction", "reduction", "==");
    717713    PXOPT_COPY_STR(config->args, where, "-filter", "filter", "==");
    718 
    719     PXOPT_COPY_F64(config->args, where, "-airmass_min", "airmass", ">=");
    720     PXOPT_COPY_F64(config->args, where, "-airmass_max", "airmass", "<");
     714    PXOPT_COPY_F32(config->args, where, "-airmass_min", "airmass", ">=");
     715    PXOPT_COPY_F32(config->args, where, "-airmass_max", "airmass", "<");
    721716    PXOPT_COPY_F64(config->args, where, "-ra_min", "ra", ">=");
    722717    PXOPT_COPY_F64(config->args, where, "-ra_max", "ra", "<");
     
    745740    PXOPT_COPY_F32(config->args, where, "-solang_max", "solang", "<");
    746741
    747     if (!psListLength(where->list)
    748         && !psMetadataLookupBool(NULL, config->args, "-all")) {
     742    if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) {
    749743        psFree(where);
    750744        psError(PXTOOLS_ERR_DATA, false, "search parameters are required");
     
    758752    }
    759753
    760 {
    761     psString query = pxDataGet("camtool_reset_faulted_runs.sql");
    762     if (!query) {
    763         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
    764         psFree(where);
    765         return false;
    766     }
    767 
    768     if (where && psListLength(where->list)) {
    769         psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
    770         psStringAppend(&query, " AND %s", whereClause);
    771         psFree(whereClause);
    772     }
    773 
    774     if (!p_psDBRunQuery(config->dbh, query)) {
    775         // rollback
    776         if (!psDBRollback(config->dbh)) {
    777             psError(PS_ERR_UNKNOWN, false, "database error");
    778         }
    779         psError(PS_ERR_UNKNOWN, false, "database error");
    780         psFree(query);
    781         psFree(where);
    782         return false;
    783     }
    784     psFree(query);
    785 }
    786 
    787 {
    788     psString query = pxDataGet("camtool_revertprocessedexp.sql");
    789     if (!query) {
    790         // rollback
    791         if (!psDBRollback(config->dbh)) {
    792             psError(PS_ERR_UNKNOWN, false, "database error");
    793         }
    794         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
    795         psFree(where);
    796         return false;
    797     }
    798 
    799     if (where && psListLength(where->list)) {
    800         psString whereClause = psDBGenerateWhereConditionSQL(config->where, NULL);
    801         psStringAppend(&query, " AND %s", whereClause);
    802         psFree(whereClause);
    803     }
    804 
    805     if (!p_psDBRunQuery(config->dbh, query)) {
    806         // rollback
    807         if (!psDBRollback(config->dbh)) {
    808             psError(PS_ERR_UNKNOWN, false, "database error");
    809         }
    810         psError(PS_ERR_UNKNOWN, false, "database error");
    811         psFree(query);
    812         psFree(where);
    813         return false;
    814     }
    815     psFree(query);
    816 }
     754    {
     755        psString query = pxDataGet("camtool_reset_faulted_runs.sql");
     756        if (!query) {
     757            psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     758            psFree(where);
     759            return false;
     760        }
     761
     762        // use psDBGenerateWhereConditionalSQL with AND ... because the SQL ends in a WHERE
     763        if (where && psListLength(where->list)) {
     764            psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     765            psStringAppend(&query, " AND %s", whereClause);
     766            psFree(whereClause);
     767        }
     768
     769        if (!p_psDBRunQuery(config->dbh, query)) {
     770            // rollback
     771            if (!psDBRollback(config->dbh)) {
     772                psError(PS_ERR_UNKNOWN, false, "database error");
     773            }
     774            psError(PS_ERR_UNKNOWN, false, "database error");
     775            psFree(query);
     776            psFree(where);
     777            return false;
     778        }
     779        psFree(query);
     780    }
     781
     782    {
     783        psString query = pxDataGet("camtool_revertprocessedexp.sql");
     784        if (!query) {
     785            // rollback
     786            if (!psDBRollback(config->dbh)) {
     787                psError(PS_ERR_UNKNOWN, false, "database error");
     788            }
     789            psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     790            psFree(where);
     791            return false;
     792        }
     793
     794        // use psDBGenerateWhereConditionalSQL with AND ... because the SQL ends in a WHERE
     795        if (where && psListLength(where->list)) {
     796            psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     797            psStringAppend(&query, " AND %s", whereClause);
     798            psFree(whereClause);
     799        }
     800
     801        if (!p_psDBRunQuery(config->dbh, query)) {
     802            // rollback
     803            if (!psDBRollback(config->dbh)) {
     804                psError(PS_ERR_UNKNOWN, false, "database error");
     805            }
     806            psError(PS_ERR_UNKNOWN, false, "database error");
     807            psFree(query);
     808            psFree(where);
     809            return false;
     810        }
     811        psFree(query);
     812    }
    817813    psFree(where);
    818814
     
    832828    PXOPT_LOOKUP_S16(code, config->args, "-code", true, false);
    833829
    834     if (!pxSetFaultCode(config->dbh, "camProcessedExp", config->where, code)) {
     830    psMetadata *where = psMetadataAlloc();
     831    PXOPT_COPY_S64(config->args, where, "-cam_id",   "cam_id",   "==");
     832    PXOPT_COPY_S64(config->args, where, "-chip_id",  "chip_id",  "==");
     833    PXOPT_COPY_STR(config->args, where, "-class",    "class",    "==");
     834    PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "==");
     835
     836    if (!pxSetFaultCode(config->dbh, "camProcessedExp", where, code)) {
    835837        psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
    836         return false;
    837     }
     838        psFree (where);
     839        return false;
     840    }
     841    psFree (where);
    838842
    839843    return true;
Note: See TracChangeset for help on using the changeset viewer.