IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 3, 2010, 8:41:49 AM (16 years ago)
Author:
eugene
Message:

updates from trunk

Location:
branches/tap_branches
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/tap_branches

  • branches/tap_branches/ippTools/src

    • Property svn:ignore
      •  

        old new  
        1616difftool
        1717disttool
         18dqstatstool
        1819faketool
        1920flatcorr
  • branches/tap_branches/ippTools/src/regtool.c

    r25835 r27838  
    3737static bool revertprocessedimfileMode(pxConfig *config);
    3838static bool updateprocessedimfileMode(pxConfig *config);
     39static bool pendingcompressimfileMode(pxConfig *config);
    3940// exp
    4041static bool pendingexpMode(pxConfig *config);
     
    4445static bool updateprocessedexpMode(pxConfig *config);
    4546static bool cleardupexpMode(pxConfig *config);
     47static bool finishcompressexpMode(pxConfig *config);
     48
     49static bool updatebyqueryMode(pxConfig *config);
     50
    4651static bool exportrunMode(pxConfig *config);
    4752static bool importrunMode(pxConfig *config);
     
    7782        MODECASE(REGTOOL_MODE_REVERTPROCESSEDEXP,    revertprocessedexpMode);
    7883        MODECASE(REGTOOL_MODE_UPDATEPROCESSEDEXP,    updateprocessedexpMode);
     84        MODECASE(REGTOOL_MODE_UPDATEBYQUERY,         updatebyqueryMode);
     85        MODECASE(REGTOOL_MODE_PENDINGCOMPRESSIMFILE, pendingcompressimfileMode);
     86        MODECASE(REGTOOL_MODE_FINISHCOMPRESSEXP,     finishcompressexpMode);
    7987        MODECASE(REGTOOL_MODE_CLEARDUPEXP,           cleardupexpMode);
    8088        MODECASE(REGTOOL_MODE_EXPORTRUN,             exportrunMode);
     
    117125    psString query = pxDataGet("regtool_pendingimfile.sql");
    118126    if (!query) {
    119         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     127        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    120128        return false;
    121129    }
     
    189197    PXOPT_LOOKUP_STR(obs_mode, config->args, "-obs_mode", false, false);
    190198    PXOPT_LOOKUP_STR(obs_group, config->args, "-obs_group", false, false);
     199    PXOPT_LOOKUP_STR(data_state, config->args, "-data_state", false, false);
    191200
    192201    PXOPT_LOOKUP_F32(airmass, config->args, "-airmass", false, false);
     
    255264        class_id,
    256265        uri,
     266        data_state,
    257267        exp_type,
    258268        filelevel,
     
    333343    PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "dateobs",  ">=");
    334344    PXOPT_COPY_TIME(config->args, where, "-dateobs_end",   "dateobs",  "<=");
    335     PXOPT_COPY_STR(config->args, where,  "-filter",        "filter", "==");
     345    PXOPT_COPY_STR(config->args, where,  "-filter",        "filter", "LIKE");
    336346    PXOPT_COPY_STR(config->args, where,  "-exp_type",      "exp_type", "==");
    337347    PXOPT_COPY_STR(config->args, where,  "-obs_mode",      "obs_mode", "==");
    338     PXOPT_COPY_S64(config->args, where,  "-magicked",      "magicked", "==");
     348    PXOPT_COPY_STR(config->args, where,  "-data_state",    "data_state", "==");
    339349
    340350    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
    341351    PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);
     352    PXOPT_LOOKUP_BOOL(allfiles, config->args, "-allfiles", false);
     353    if (allfiles) {
     354        faulted = false;
     355    }
    342356    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    343357    PXOPT_LOOKUP_BOOL(all, config->args, "-all", false);
     
    347361    psString where2 = NULL;
    348362    if (!pxmagicAddWhere(config, &where2, "rawImfile")) {
    349         psError(PXTOOLS_ERR_DATA, false, "pxSpaceAddWhere failed");
     363        psError(psErrorCodeLast(), false, "pxmagicAddWhere failed");
    350364        return false;
    351365    }
    352366    if (!pxspaceAddWhere(config, &where2, "rawImfile")) {
    353         psError(PXTOOLS_ERR_DATA, false, "pxSpaceAddWhere failed");
     367        psError(psErrorCodeLast(), false, "pxspaceAddWhere failed");
    354368        return false;
    355369    }
     
    357371    psString query = pxDataGet("regtool_processedimfile.sql");
    358372    if (!query) {
    359         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     373        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    360374        psFree(where);
    361375        return false;
     
    367381        psFree(whereClause);
    368382    } else if (!all && !where2) {
    369         psError(PXTOOLS_ERR_DATA, false, "search parameters are required");
     383        psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
    370384        return false;
    371385    }
     
    379393        // list only faulted rows
    380394        psStringAppend(&query, " %s", "AND rawImfile.fault != 0");
    381     } else {
     395    } else if (!allfiles) {
    382396        // don't list faulted rows
    383397        psStringAppend(&query, " %s", "AND rawImfile.fault = 0");
     
    452466    psString query = pxDataGet("regtool_revertprocessedimfile.sql");
    453467    if (!query) {
    454         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     468        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    455469        psFree(where);
    456470        return false;
     
    463477    } else {
    464478        psFree(where);
    465         psError(PXTOOLS_ERR_DATA, false, "search parameters are required");
     479        psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
    466480        return false;
    467481    }
     
    491505
    492506    PXOPT_LOOKUP_S16(fault, config->args, "-fault",   false, false);
    493 /*     PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false); */
    494507    PXOPT_LOOKUP_S16(burntool_state, config->args, "-burntool_state", false, false);
    495    
    496     if ((fault == INT16_MAX) && !isfinite(burntool_state)) {
    497         psError(PS_ERR_UNKNOWN, false, "one of -fault or -burntool_state must be selected");
    498         return false;
    499     }
    500     if ((fault != INT16_MAX) && isfinite(burntool_state)) {
     508    PXOPT_LOOKUP_S32(set_bytes, config->args, "-set_bytes", false, false);
     509    PXOPT_LOOKUP_STR(set_md5sum, config->args, "-set_md5sum", false, false);
     510    PXOPT_LOOKUP_STR(set_state, config->args, "-set_state", false, false);
     511
     512    if ((fault == INT16_MAX) && !isfinite(burntool_state) && !(set_state)) {
     513        psError(PS_ERR_UNKNOWN, false, "one of -fault or -burntool_state or -set_state must be selected");
     514        return false;
     515    }
     516    if ((fault != INT16_MAX) && isfinite(burntool_state)) {
    501517        psError(PS_ERR_UNKNOWN, false, "only one of -fault or -burntool_state must be selected");
    502518        return false;
     
    508524
    509525    if (fault != INT16_MAX) {
    510         // this is fairly dangerous : can set all if the where is not set...
    511         if (!pxSetFaultCode(config->dbh, "rawImfile", where, fault)) {
    512             psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
    513             psFree (where);
    514             return false;
    515         }
    516     }
    517 
    518     if (isfinite(burntool_state)) {
    519         psString query = pxDataGet("regtool_updateprocessedimfile.sql");
    520         if (!query) {
    521             psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
    522             return false;
    523         }
    524 
    525         if (!p_psDBRunQueryF(config->dbh, query, burntool_state, exp_id, class_id)) {
    526             psError(PS_ERR_UNKNOWN, false, "database error");
    527             psFree(query);
    528             return false;
    529         }
    530         psFree(query);
     526        // this is fairly dangerous : can set all if the where is not set...
     527        if (!pxSetFaultCode(config->dbh, "rawImfile", where, fault)) {
     528            psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
     529            psFree (where);
     530            return false;
     531        }
     532        psFree (where);
     533        return(true);
    531534    }
    532535    psFree (where);
    533536
     537    psString setvalues = NULL;
     538    if (burntool_state != INT16_MAX) {
     539      psStringAppend(&setvalues,"rawImfile.burntool_state = %d",burntool_state);
     540    }
     541    if (set_bytes != INT32_MAX) {
     542      if (setvalues) {
     543        psStringAppend(&setvalues,",");
     544      }
     545      psStringAppend(&setvalues,"rawImfile.bytes = %d",set_bytes);
     546    }
     547    if (set_md5sum) {
     548      if (setvalues) {
     549        psStringAppend(&setvalues,",");
     550      }
     551      psStringAppend(&setvalues,"rawImfile.md5sum = '%s'",set_md5sum);
     552    }
     553    if (set_state) {
     554      if (setvalues) {
     555        psStringAppend(&setvalues,",");
     556      }
     557      psStringAppend(&setvalues,"rawImfile.data_state = '%s'",set_state);
     558    }
     559
     560    psString query = pxDataGet("regtool_updateprocessedimfile.sql");
     561    if (!query) {
     562      psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     563      return false;
     564    }
     565
     566    //    printf(query,setvalues,exp_id,class_id);
     567    if (!p_psDBRunQueryF(config->dbh, query, setvalues, exp_id,class_id)) {
     568      psError(PS_ERR_UNKNOWN, false, "database error");
     569      psFree(query);
     570      psFree(setvalues);
     571      return false;
     572    }
     573    psFree(setvalues);
     574    psFree(query);
     575
    534576    return true;
     577}
     578
     579static bool pendingcompressimfileMode(pxConfig *config) {
     580  PS_ASSERT_PTR_NON_NULL(config, false);
     581
     582  psMetadata *where = psMetadataAlloc();
     583  PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     584  PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "==");
     585
     586  psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     587  if (whereClause) {
     588    psStringPrepend(&whereClause, "\n AND ");
     589  }
     590  PXOPT_LOOKUP_BOOL(compress, config->args, "-compress", false);
     591  PXOPT_LOOKUP_BOOL(clean,    config->args, "-clean", false);
     592
     593  if ((compress && clean) || (!compress && !clean)) {
     594      psStringAppend(&whereClause, "\n AND ((data_state = 'goto_compressed' AND state = 'goto_compressed')\n  OR (data_state = 'goto_lossy' AND state = 'goto_lossy')) ");
     595  }
     596  else if (compress) {
     597    psStringAppend(&whereClause, "\n AND ((data_state = 'goto_compressed' AND state = 'goto_compressed')) ");
     598  }
     599  else if (clean) {
     600    psStringAppend(&whereClause, "\n AND ((data_state = 'goto_lossy' AND state = 'goto_lossy')) ");
     601  }
     602  else {
     603    psStringAppend(&whereClause, "\n AND ((data_state = 'goto_compressed' AND state = 'goto_compressed')\n  OR (data_state = 'goto_lossy' AND state = 'goto_lossy')) ");
     604  }
     605
     606  PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     607  PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     608
     609  psString query = pxDataGet("regtool_pendingcompressimfile.sql");
     610  if (!query) {
     611    psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     612    return(false);
     613  }
     614  psString limitString = NULL;
     615  if (limit) {
     616    limitString = psDBGenerateLimitSQL(limit);
     617    psStringPrepend(&limitString, "\n");
     618  }
     619  //  printf(query,whereClause,limitString);
     620  if (!p_psDBRunQueryF(config->dbh, query, whereClause, limitString ? limitString : "")) {
     621    psError(PXTOOLS_ERR_PROG, false, "database error");
     622    psFree(limitString);
     623    psFree(query);
     624    psFree(whereClause);
     625    psFree(where);
     626    return(false);
     627  }
     628  psFree(limitString);
     629  psFree(query);
     630  psFree(whereClause);
     631  psFree(where);
     632
     633  psArray *output = p_psDBFetchResult(config->dbh);
     634  if (!output) {
     635    psErrorCode err = psErrorCodeLast();
     636    switch (err) {
     637    case PS_ERR_DB_CLIENT:
     638      psError(PXTOOLS_ERR_SYS, false, "database error");
     639    case PS_ERR_DB_SERVER:
     640      psError(PXTOOLS_ERR_PROG, false, "database error");
     641    default:
     642      psError(PXTOOLS_ERR_PROG, false, "unknown error");
     643    }
     644
     645    return false;
     646  }
     647  if (!psArrayLength(output)) {
     648    psTrace("regtool", PS_LOG_INFO, "no rows found");
     649    psFree(output);
     650    return true;
     651  }
     652
     653  // negate simple so the default is true
     654  if (!ippdbPrintMetadatas(stdout, output, "regPendingCompressImfile", !simple)) {
     655    psError(PXTOOLS_ERR_PROG, false, "failed to print array");
     656    psFree(output);
     657    return false;
     658  }
     659
     660  psFree(output);
     661
     662  return true;
    535663}
    536664
     
    549677    psString query = pxDataGet("regtool_pendingexp.sql");
    550678    if (!query) {
    551         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     679        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    552680        return false;
    553681    }
     
    626754    PXOPT_LOOKUP_STR(exp_type, config->args, "-exp_type", false, false);
    627755    PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", false, false);
     756    PXOPT_LOOKUP_STR(state, config->args, "-state", false, false);
    628757    PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false);
    629758    PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", false, false);
     
    687816    psString query = pxDataGet("regtool_pendingexp.sql");
    688817    if (!query) {
    689         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     818        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    690819        return false;
    691820    }
     
    787916        filelevel,
    788917        workdir,
     918        state,
    789919        reduction,
    790920        dvodb,
     
    9201050    psString query = pxDataGet("regtool_processedexp.sql");
    9211051    if (!query) {
    922         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     1052        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    9231053        return false;
    9241054    }
     
    9301060    PXOPT_COPY_STR(config->args,   where,  "-inst", "camera", "==");
    9311061    PXOPT_COPY_STR(config->args,   where,  "-telescope", "telescope", "==");
    932     PXOPT_COPY_TIME(config->args,  where, "-dateobs_begin", "dateobs", ">=");
    933     PXOPT_COPY_TIME(config->args,  where, "-dateobs_end", "dateobs", "<=");
     1062    PXOPT_COPY_TIME(config->args,  where,  "-dateobs_begin", "dateobs", ">=");
     1063    PXOPT_COPY_TIME(config->args,  where,  "-dateobs_end", "dateobs", "<=");
     1064    PXOPT_COPY_STR(config->args,   where,  "-state", "state", "==");
    9341065    PXOPT_COPY_STR(config->args,   where,  "-exp_tag", "exp_tag", "==");
    9351066    PXOPT_COPY_STR(config->args,   where,  "-exp_type", "exp_type", "==");
    9361067    PXOPT_COPY_STR(config->args,   where,  "-filelevel", "filelevel", "==");
    9371068    PXOPT_COPY_STR(config->args,   where,  "-reduction", "reduction", "==");
    938     PXOPT_COPY_STR(config->args,   where,  "-filter", "filter", "==");
     1069    PXOPT_COPY_STR(config->args,   where,  "-filter", "filter", "LIKE");
    9391070    PXOPT_COPY_F32(config->args,   where,  "-airmass_min", "airmass", ">=");
    9401071    PXOPT_COPY_F32(config->args,   where,  "-airmass_max", "airmass", "<");
     
    9651096    PXOPT_COPY_F32(config->args,   where,  "-sun_angle_max", "sun_angle", "<");
    9661097
     1098    psString where2 = NULL;
     1099    if (!pxmagicAddWhere(config, &where2, "rawExp")) {
     1100        psError(psErrorCodeLast(), false, "pxmagicAddWhere failed");
     1101        return false;
     1102    }
     1103    if (!pxspaceAddWhere(config, &where2, "rawExp")) {
     1104        psError(psErrorCodeLast(), false, "pxSpaceAddWhere failed");
     1105        return false;
     1106    }
     1107
    9671108    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
    9681109    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     
    9701111
    9711112    if (psListLength(where->list)) {
    972         psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp");
    973         psStringAppend(&query, " AND %s", whereClause);
    974         psFree(whereClause);
     1113      psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp");
     1114      psStringAppend(&query, " AND %s", whereClause);
     1115      psFree(whereClause);
    9751116    }
    9761117    psFree(where);
    9771118
     1119    if (where2) {
     1120        psStringAppend(&query, " %s ", where2);
     1121        psFree(where2);
     1122    }
     1123
    9781124    if (faulted) {
    979         // list only faulted rows
    980         psStringAppend(&query, " %s", "AND rawExp.fault != 0");
     1125      // list only faulted rows
     1126      psStringAppend(&query, " %s", "AND rawExp.fault != 0");
    9811127    } else {
    982         // don't list faulted rows
    983         psStringAppend(&query, " %s", "AND rawExp.fault = 0");
     1128      // don't list faulted rows
     1129      psStringAppend(&query, " %s", "AND rawExp.fault = 0");
    9841130    }
    9851131
    9861132    // treat limit == 0 as "no limit"
    9871133    if (limit) {
    988         psString limitString = psDBGenerateLimitSQL(limit);
    989         psStringAppend(&query, " %s", limitString);
    990         psFree(limitString);
     1134      psString limitString = psDBGenerateLimitSQL(limit);
     1135      psStringAppend(&query, " %s", limitString);
     1136      psFree(limitString);
    9911137    }
    9921138
    9931139    if (!p_psDBRunQuery(config->dbh, query)) {
    994         psError(PS_ERR_UNKNOWN, false, "database error");
    995         return false;
     1140      psError(PS_ERR_UNKNOWN, false, "database error");
     1141      return false;
    9961142    }
    9971143    psFree(query);
     
    9991145    psArray *output = p_psDBFetchResult(config->dbh);
    10001146    if (!output) {
    1001         psErrorCode err = psErrorCodeLast();
    1002         switch (err) {
    1003             case PS_ERR_DB_CLIENT:
    1004                 psError(PXTOOLS_ERR_SYS, false, "database error");
    1005             case PS_ERR_DB_SERVER:
    1006                 psError(PXTOOLS_ERR_PROG, false, "database error");
    1007             default:
    1008                 psError(PXTOOLS_ERR_PROG, false, "unknown error");
    1009         }
    1010 
    1011         return false;
     1147      psErrorCode err = psErrorCodeLast();
     1148      switch (err) {
     1149      case PS_ERR_DB_CLIENT:
     1150        psError(PXTOOLS_ERR_SYS, false, "database error");
     1151      case PS_ERR_DB_SERVER:
     1152        psError(PXTOOLS_ERR_PROG, false, "database error");
     1153      default:
     1154        psError(PXTOOLS_ERR_PROG, false, "unknown error");
     1155      }
     1156
     1157      return false;
    10121158    }
    10131159    if (!psArrayLength(output)) {
    1014         psTrace("regtool", PS_LOG_INFO, "no rows found");
     1160      psTrace("regtool", PS_LOG_INFO, "no rows found");
     1161      psFree(output);
     1162      return true;
     1163    }
     1164
     1165    if (psArrayLength(output)) {
     1166      // negative simple so the default is true
     1167      if (!ippdbPrintMetadatas(stdout, output, "rawExp", !simple)) {
     1168        psError(PS_ERR_UNKNOWN, false, "failed to print array");
    10151169        psFree(output);
    1016         return true;
    1017     }
    1018 
    1019     if (psArrayLength(output)) {
    1020         // negative simple so the default is true
    1021         if (!ippdbPrintMetadatas(stdout, output, "rawExp", !simple)) {
    1022             psError(PS_ERR_UNKNOWN, false, "failed to print array");
    1023             psFree(output);
    1024             return false;
    1025         }
     1170        return false;
     1171      }
    10261172    }
    10271173
     
    10331179static bool revertprocessedexpMode(pxConfig *config)
    10341180{
    1035     PS_ASSERT_PTR_NON_NULL(config, false);
    1036 
    1037     psMetadata *where = psMetadataAlloc();
    1038     PXOPT_COPY_S64(config->args, where,  "-exp_id",       "exp_id", "==");
    1039     PXOPT_COPY_S16(config->args, where,  "-fault",         "fault", "==");
    1040     PXOPT_COPY_S64(config->args, where,  "-exp_id_begin", "exp_id", ">=");
    1041     PXOPT_COPY_S64(config->args, where,  "-exp_id_end", "exp_id", "<=");
    1042 
    1043     psString query = pxDataGet("regtool_revertprocessedexp.sql");
    1044     if (!query) {
    1045         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
    1046         psFree(where);
    1047         return false;
    1048     }
    1049 
    1050     if (psListLength(where->list)) {
    1051         psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp");
    1052         psStringAppend(&query, " AND %s", whereClause);
    1053         psFree(whereClause);
    1054     } else {
    1055         psFree(where);
    1056         psError(PXTOOLS_ERR_DATA, false, "search parameters are required");
    1057         return false;
    1058     }
     1181  PS_ASSERT_PTR_NON_NULL(config, false);
     1182
     1183  psMetadata *where = psMetadataAlloc();
     1184  PXOPT_COPY_S64(config->args, where,  "-exp_id",       "exp_id", "==");
     1185  PXOPT_COPY_S16(config->args, where,  "-fault",         "fault", "==");
     1186  PXOPT_COPY_S64(config->args, where,  "-exp_id_begin", "exp_id", ">=");
     1187  PXOPT_COPY_S64(config->args, where,  "-exp_id_end", "exp_id", "<=");
     1188
     1189  psString query = pxDataGet("regtool_revertprocessedexp.sql");
     1190  if (!query) {
     1191    psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    10591192    psFree(where);
    1060 
    1061     if (!p_psDBRunQuery(config->dbh, query)) {
    1062         psError(PS_ERR_UNKNOWN, false, "database error");
    1063         psFree(query);
    1064         return false;
    1065     }
     1193    return false;
     1194  }
     1195
     1196  if (psListLength(where->list)) {
     1197    psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp");
     1198    psStringAppend(&query, " AND %s", whereClause);
     1199    psFree(whereClause);
     1200  } else {
     1201    psFree(where);
     1202    psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
     1203    return false;
     1204  }
     1205  psFree(where);
     1206
     1207  if (!p_psDBRunQuery(config->dbh, query)) {
     1208    psError(PS_ERR_UNKNOWN, false, "database error");
    10661209    psFree(query);
    1067 
    1068     int numUpdated = psDBAffectedRows(config->dbh);
    1069 
    1070     psLogMsg("regtool", PS_LOG_INFO, "Updated %d rawExp", numUpdated);
    1071 
    1072     return true;
     1210    return false;
     1211  }
     1212  psFree(query);
     1213
     1214  int numUpdated = psDBAffectedRows(config->dbh);
     1215
     1216  psLogMsg("regtool", PS_LOG_INFO, "Updated %d rawExp", numUpdated);
     1217
     1218  return true;
    10731219}
    10741220
     
    10761222static bool updateprocessedexpMode(pxConfig *config)
    10771223{
    1078     PS_ASSERT_PTR_NON_NULL(config, false);
    1079 
    1080     psMetadata *where = psMetadataAlloc();
    1081     PXOPT_COPY_S64(config->args, where,  "-exp_id",       "exp_id", "==");
    1082 
    1083     PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false);
    1084 
    1085     if (!pxSetFaultCode(config->dbh, "rawExp", where, fault)) {
    1086         psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
    1087         psFree(where);
    1088         return false;
    1089     }
     1224  PS_ASSERT_PTR_NON_NULL(config, false);
     1225
     1226  psMetadata *where = psMetadataAlloc();
     1227  PXOPT_COPY_S64(config->args, where,  "-exp_id",       "exp_id", "==");
     1228
     1229  PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false);
     1230
     1231  if (!pxSetFaultCode(config->dbh, "rawExp", where, fault)) {
     1232    psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
    10901233    psFree(where);
    1091 
    1092     return true;
    1093 }
     1234    return false;
     1235  }
     1236  psFree(where);
     1237
     1238  return true;
     1239}
     1240
     1241
     1242static bool finishcompressexpMode(pxConfig *config) {
     1243
     1244  PS_ASSERT_PTR_NON_NULL(config, false);
     1245
     1246  PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1247
     1248  psMetadata *where = psMetadataAlloc();
     1249  PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     1250
     1251  PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1252
     1253  psString query = pxDataGet("regtool_finishcompressexp.sql");
     1254  if (!query) {
     1255    psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1256    return(false);
     1257  }
     1258  if (where && psListLength(where->list)) {
     1259    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1260    psStringAppend(&query, " %s ", whereClause);
     1261    psFree(whereClause);
     1262  }
     1263  psFree(where);
     1264
     1265  if (limit) {
     1266    psString limitString = psDBGenerateLimitSQL(limit);
     1267    psStringAppend(&query, " %s ", limitString);
     1268    psFree(limitString);
     1269  }
     1270  //  printf(query);
     1271  //  return(false);
     1272  if (!p_psDBRunQuery(config->dbh, query)) {
     1273    psError(PS_ERR_UNKNOWN, false, "database error");
     1274    psFree(query);
     1275    return(false);
     1276  }
     1277  psFree(query);
     1278
     1279  psArray *output = p_psDBFetchResult(config->dbh);
     1280  if (!output) {
     1281    psError(PS_ERR_UNKNOWN, false, "database error");
     1282    return(false);
     1283  }
     1284  if (!psArrayLength(output)) {
     1285    psTrace("chiptool", PS_LOG_INFO, "no rows found");
     1286    psFree(output);
     1287    return(true);
     1288  }
     1289
     1290  for (long i = 0; i < psArrayLength(output); i++) {
     1291    psMetadata *md = output->data[i];
     1292
     1293    rawExpRow *row = rawExpObjectFromMetadata(md);
     1294    if (!psDBTransaction(config->dbh)) {
     1295      psError(PS_ERR_UNKNOWN, false, "database error");
     1296      return(false);
     1297    }
     1298
     1299    if (strcmp(row->state,"goto_compressed") == 0) {
     1300      if (!pxrawExpSetState(config,row->exp_id, "compressed")) {
     1301        psError(PS_ERR_UNKNOWN, false, "failed to set rawExp.state for exp_id: %" PRId64, row->exp_id);
     1302        psFree(row);
     1303        psFree(output);
     1304        return(false);
     1305      }
     1306    }
     1307    else if (strcmp(row->state,"goto_lossy") == 0) {
     1308      if (!pxrawExpSetState(config,row->exp_id, "lossy")) {
     1309        psError(PS_ERR_UNKNOWN, false, "failed to set rawExp.state for exp_id: %" PRId64, row->exp_id);
     1310        psFree(row);
     1311        psFree(output);
     1312        return(false);
     1313      }
     1314    }
     1315    if (!psDBCommit(config->dbh)) {
     1316      psError(PS_ERR_UNKNOWN, false, "database error");
     1317      return false;
     1318    }
     1319    psFree(row);
     1320  }
     1321
     1322  psFree(output);
     1323  return(true);
     1324}
     1325
     1326static bool updatebyqueryMode(pxConfig *config) {
     1327  PS_ASSERT_PTR_NON_NULL(config, false);
     1328
     1329  PXOPT_LOOKUP_STR(set_state, config->args, "-set_state", true, false);
     1330
     1331  // XX test this out; need to make this consistent with the list in regtoolConfig.c
     1332  psMetadata *where = psMetadataAlloc();
     1333  PXOPT_COPY_S64(config->args,   where,  "-exp_id", "rawExp.exp_id", "==");
     1334  PXOPT_COPY_STR(config->args,   where,  "-exp_name", "rawExp.exp_name", "==");
     1335  PXOPT_COPY_STR(config->args,   where,  "-inst", "rawExp.camera", "==");
     1336  PXOPT_COPY_STR(config->args,   where,  "-telescope", "rawExp.telescope", "==");
     1337  PXOPT_COPY_TIME(config->args,  where, "-dateobs_begin", "rawExp.dateobs", ">=");
     1338  PXOPT_COPY_TIME(config->args,  where, "-dateobs_end", "rawExp.dateobs", "<=");
     1339  PXOPT_COPY_STR(config->args,   where,  "-exp_tag", "rawExp.exp_tag", "==");
     1340  PXOPT_COPY_STR(config->args,   where,  "-exp_type", "rawExp.exp_type", "==");
     1341  PXOPT_COPY_STR(config->args,   where,  "-filelevel", "rawExp.filelevel", "==");
     1342  PXOPT_COPY_STR(config->args,   where,  "-state",     "rawExp.state", "==");
     1343  PXOPT_COPY_STR(config->args,   where,  "-reduction", "rawExp.reduction", "==");
     1344  PXOPT_COPY_STR(config->args,   where,  "-filter", "rawExp.filter", "==");
     1345  PXOPT_COPY_F32(config->args,   where,  "-airmass_min", "rawExp.airmass", ">=");
     1346  PXOPT_COPY_F32(config->args,   where,  "-airmass_max", "rawExp.airmass", "<");
     1347  PXOPT_COPY_RADEC(config->args, where,  "-ra_min", "rawExp.ra", ">=");
     1348  PXOPT_COPY_RADEC(config->args, where,  "-ra_max", "rawExp.ra", "<");
     1349  PXOPT_COPY_RADEC(config->args, where,  "-decl_min", "rawExp.decl", ">=");
     1350  PXOPT_COPY_RADEC(config->args, where,  "-decl_max", "rawExp.decl", "<");
     1351  PXOPT_COPY_F32(config->args,   where,  "-exp_time_min", "rawExp.exp_time", ">=");
     1352  PXOPT_COPY_F32(config->args,   where,  "-exp_time_max", "rawExp.exp_time", "<");
     1353  PXOPT_COPY_F32(config->args,   where,  "-sat_pixel_frac_min", "rawExp.sat_pixel_frac", ">=");
     1354  PXOPT_COPY_F32(config->args,   where,  "-sat_pixel_frac_max", "rawExp.sat_pixel_frac", "<");
     1355  PXOPT_COPY_F64(config->args,   where,  "-bg_min", "rawExp.bg", ">=");
     1356  PXOPT_COPY_F64(config->args,   where,  "-bg_max", "rawExp.bg", "<");
     1357  PXOPT_COPY_F64(config->args,   where,  "-bg_stdev_min", "rawExp.bg_stdev", ">=");
     1358  PXOPT_COPY_F64(config->args,   where,  "-bg_stdev_max", "rawExp.bg_stdev", "<");
     1359  PXOPT_COPY_F64(config->args,   where,  "-bg_mean_stdev_min", "rawExp.bg_mean_stdev", ">=");
     1360  PXOPT_COPY_F64(config->args,   where,  "-bg_mean_stdev_max", "rawExp.bg_mean_stdev", "<");
     1361  PXOPT_COPY_F64(config->args,   where,  "-alt_min", "rawExp.alt", ">=");
     1362  PXOPT_COPY_F64(config->args,   where,  "-alt_max", "rawExp.alt", "<");
     1363  PXOPT_COPY_F64(config->args,   where,  "-az_min", "rawExp.az", ">=");
     1364  PXOPT_COPY_F64(config->args,   where,  "-az_max", "rawExp.az", "<");
     1365  PXOPT_COPY_F64(config->args,   where,  "-ccd_temp_min", "rawExp.ccd_temp", ">=");
     1366  PXOPT_COPY_F64(config->args,   where,  "-ccd_temp_max", "rawExp.ccd_temp", "<");
     1367  PXOPT_COPY_F64(config->args,   where,  "-posang_min", "rawExp.posang", ">=");
     1368  PXOPT_COPY_F64(config->args,   where,  "-posang_max", "rawExp.posang", "<");
     1369  PXOPT_COPY_F32(config->args,   where,  "-sun_angle_min", "rawExp.sun_angle", ">=");
     1370  PXOPT_COPY_F32(config->args,   where,  "-sun_angle_max", "rawExp.sun_angle", "<");
     1371  PXOPT_COPY_STR(config->args,   where,  "-object", "rawExp.object", "==");
     1372  PXOPT_COPY_STR(config->args,   where,  "-comment", "rawExp.comment", "LIKE");
     1373  PXOPT_COPY_STR(config->args,   where,  "-obs_mode", "rawExp.obs_mode", "LIKE");
     1374
     1375
     1376  psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1377  psStringPrepend(&whereClause,"\n AND ");
     1378  PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1379  PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1380
     1381  psString limitString = NULL;
     1382  if (limit) {
     1383    limitString = psDBGenerateLimitSQL(limit);
     1384    psStringPrepend(&limitString, "\n");
     1385  }
     1386  // Update the imfiles first, because if you select by state, you'll clobber things
     1387  psString query = pxDataGet("regtool_updatebyqueryimfile.sql");
     1388  if (!query) {
     1389    psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1390    return(false);
     1391  }
     1392
     1393  //  printf(query,set_state,whereClause,limitString);
     1394  if (!p_psDBRunQueryF(config->dbh, query, set_state, whereClause, limitString ? limitString : "")) {
     1395    psError(PXTOOLS_ERR_PROG, false, "database error");
     1396    psFree(limitString);
     1397    psFree(query);
     1398    psFree(whereClause);
     1399    psFree(where);
     1400    return(false);
     1401  }
     1402
     1403  psFree(query);
     1404  // Now up date the exposure.
     1405  query = pxDataGet("regtool_updatebyquery.sql");
     1406  if (!query) {
     1407    psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1408    return(false);
     1409  }
     1410  if (!p_psDBRunQueryF(config->dbh, query, set_state,whereClause, limitString ? limitString : "")) {
     1411    psError(PXTOOLS_ERR_PROG, false, "database error");
     1412    psFree(limitString);
     1413    psFree(query);
     1414    psFree(whereClause);
     1415    psFree(where);
     1416    return(false);
     1417  }
     1418
     1419  psFree(limitString);
     1420  psFree(query);
     1421  psFree(whereClause);
     1422  psFree(where);
     1423
     1424  return true;
     1425}
     1426
    10941427
    10951428
     
    11111444            psError(PS_ERR_UNKNOWN, false, "database error");
    11121445        }
    1113         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     1446        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    11141447        return false;
    11151448    }
     
    11371470            psError(PS_ERR_UNKNOWN, false, "database error");
    11381471        }
    1139         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     1472        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    11401473        return false;
    11411474    }
     
    12181551  }
    12191552
     1553  if (!pxExportVersion(config, f)) {
     1554    psError(PS_ERR_UNKNOWN, false, "failed to write dbversion to output file");
     1555    return false;
     1556  }
     1557
    12201558  psMetadata *where = psMetadataAlloc();
    12211559  PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     
    12291567    psString query = pxDataGet(tables[i].sqlFilename);
    12301568    if (!query) {
    1231       psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     1569      psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    12321570      return false;
    12331571    }
     
    12871625
    12881626  psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false);
     1627
     1628  if (!pxCheckImportVersion(config, input)) {
     1629    psError(PS_ERR_UNKNOWN, false, "pxCheckImportVersion failed");
     1630    return false;
     1631  }
     1632
    12891633
    12901634  fprintf (stdout, "---- input ----\n");
Note: See TracChangeset for help on using the changeset viewer.