IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 14, 2010, 5:28:01 PM (16 years ago)
Author:
Paul Price
Message:

Fix query.

File:
1 edited

Legend:

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

    r28320 r28322  
    151151    PS_ASSERT_PTR_NON_NULL(config, false);
    152152
    153     psMetadata *where = psMetadataAlloc(); // WHERE conditions
     153    psMetadata *diffWhere = psMetadataAlloc(); // WHERE conditions for diffs
     154    psMetadata *camWhere = psMetadataAlloc(); // WHERE conditions for cams
    154155
    155156    // required
    156157
    157158    // optional
    158     PXOPT_COPY_S64(config->args, where, "-client_id", "client_id", "==");
    159     pxAddLabelSearchArgs(config, where, "-label", "label", "==");
    160     pxAddLabelSearchArgs(config, where, "-data_group", "data_group", "==");
    161     PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawExp.dateobs", ">=");
    162     PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawExp.dateobs", "<=");
    163     PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "LIKE");
    164     PXOPT_COPY_STR(config->args, where, "-obs_mode", "rawExp.obs_mode", "LIKE");
     159    PXOPT_COPY_S64(config->args, diffWhere, "-client_id", "client_id", "==");
     160    pxAddLabelSearchArgs(config, diffWhere, "-label", "diffRun.label", "==");
     161    pxAddLabelSearchArgs(config, diffWhere, "-data_group", "diffRun.data_group", "LIKE");
     162    PXOPT_COPY_TIME(config->args, diffWhere, "-dateobs_begin", "rawExp.dateobs", ">=");
     163    PXOPT_COPY_TIME(config->args, diffWhere, "-dateobs_end", "rawExp.dateobs", "<=");
     164    PXOPT_COPY_STR(config->args, diffWhere, "-filter", "rawExp.filter", "LIKE");
     165    PXOPT_COPY_STR(config->args, diffWhere, "-obs_mode", "rawExp.obs_mode", "LIKE");
     166
     167    PXOPT_COPY_S64(config->args, camWhere, "-client_id", "client_id", "==");
     168    pxAddLabelSearchArgs(config, camWhere, "-label", "camRun.label", "==");
     169    pxAddLabelSearchArgs(config, camWhere, "-data_group", "camRun.data_group", "LIKE");
     170    PXOPT_COPY_TIME(config->args, camWhere, "-dateobs_begin", "rawExp.dateobs", ">=");
     171    PXOPT_COPY_TIME(config->args, camWhere, "-dateobs_end", "rawExp.dateobs", "<=");
     172    PXOPT_COPY_STR(config->args, camWhere, "-filter", "rawExp.filter", "LIKE");
     173    PXOPT_COPY_STR(config->args, camWhere, "-obs_mode", "rawExp.obs_mode", "LIKE");
    165174
    166175    PXOPT_LOOKUP_BOOL(rerun, config->args, "-rerun", false);
     
    172181    if (!query) {
    173182        psError(PXTOOLS_ERR_SYS, false, "Failed to retreive SQL statement");
    174         psFree(where);
     183        psFree(diffWhere);
     184        psFree(camWhere);
    175185        return false;
    176186    }
     
    188198    if (!psDBTransaction(config->dbh)) {
    189199        psError(PS_ERR_UNKNOWN, false, "Database error");
    190         psFree(where);
    191         return false;
    192     }
    193 
    194     psString whereClause = psStringCopy(""); // Additional constraints to add to query
    195     if (psListLength(where->list)) {
    196         psString clause = psDBGenerateWhereConditionSQL(where, NULL);
    197         psStringAppend(&whereClause, "\n AND %s", clause);
     200        psFree(diffWhere);
     201        psFree(camWhere);
     202        return false;
     203    }
     204
     205    psString whereDiff = psStringCopy(""); // Additional constraints to add to query
     206    if (psListLength(diffWhere->list)) {
     207        psString clause = psDBGenerateWhereConditionSQL(diffWhere, NULL);
     208        psStringAppend(&whereDiff, "\n AND %s", clause);
    198209        psFree(clause);
    199210    }
    200     psFree(where);
    201 
    202     if (!p_psDBRunQueryF(config->dbh, query, whereClause, whereClause)) {
     211    psFree(diffWhere);
     212
     213    psString whereCam = psStringCopy(""); // Additional constraints to add to query
     214    if (psListLength(camWhere->list)) {
     215        psString clause = psDBGenerateWhereConditionSQL(camWhere, NULL);
     216        psStringAppend(&whereCam, "\n AND %s", clause);
     217        psFree(clause);
     218    }
     219    psFree(camWhere);
     220
     221    fprintf(stderr, query, whereDiff, whereCam);
     222
     223    if (!p_psDBRunQueryF(config->dbh, query, whereDiff, whereCam)) {
    203224        psError(PS_ERR_UNKNOWN, false, "Database error");
    204225        psFree(query);
    205         psFree(whereClause);
     226        psFree(whereDiff);
     227        psFree(whereCam);
    206228        if (!psDBRollback(config->dbh)) {
    207229            psError(PS_ERR_UNKNOWN, false, "Database error");
     
    210232    }
    211233    psFree(query);
    212     psFree(whereClause);
     234    psFree(whereDiff);
     235    psFree(whereCam);
    213236
    214237    psArray *output = p_psDBFetchResult(config->dbh); // Output of SELECT statement
Note: See TracChangeset for help on using the changeset viewer.