IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 28374


Ignore:
Timestamp:
Jun 16, 2010, 4:10:56 PM (16 years ago)
Author:
Paul Price
Message:

Fixing publication to work on cleaned up files.

Location:
tags/ipp-20100610/ippTools
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • tags/ipp-20100610/ippTools/share/pubtool_definerun.sql

    r27041 r28374  
    11-- Get runs to publish
    2 SELECT
     2SELECT DISTINCT
    33    client_id,
    44    stage_id,
     
    66FROM (
    77    -- Get diffs to publish
    8     SELECT
     8    SELECT DISTINCT
    99        client_id,
    1010        diff_id AS stage_id,
    11         label AS src_label
     11        diffRun.label AS src_label
    1212    FROM publishClient
    1313    JOIN diffRun
     14    JOIN diffInputSkyfile USING(diff_id)
     15    JOIN warpRun ON warpRun.warp_id = diffInputSkyfile.warp1 -- Only JOINing input, not reference!
     16    JOIN fakeRun USING(fake_id)
     17    JOIN camRun USING(cam_id)
     18    JOIN chipRun USING(chip_id)
     19    JOIN rawExp USING(exp_id)
    1420    WHERE publishClient.stage = 'diff'
    1521        AND publishClient.active = 1
    16         AND diffRun.state = 'full'
    17         AND (diffRun.magicked > 0 OR diffRun.diff_mode = 4 OR publishClient.magicked = 0)
     22        AND diffRun.state IN ('full', 'cleaned', 'goto_cleaned')
     23        AND (diffRun.magicked != 0 OR diffRun.diff_mode = 4 OR publishClient.magicked = 0)
    1824    -- WHERE hook %s
    1925    UNION
     
    2228        client_id,
    2329        cam_id AS stage_id,
    24         label AS src_label
     30        camRun.label AS src_label
    2531    FROM publishClient
    2632    JOIN camRun
     33    JOIN chipRun USING(chip_id)
     34    JOIN rawExp USING(exp_id)
    2735    WHERE publishClient.stage = 'camera'
    2836        AND publishClient.active = 1
    29         AND camRun.state = 'full'
    30         AND (camRun.magicked > 0 OR publishClient.magicked = 0)
     37        AND camRun.state IN ('full', 'cleaned', 'goto_cleaned')
     38        AND (camRun.magicked != 0 OR publishClient.magicked = 0)
    3139    -- WHERE hook %s
    3240    ) AS publishToDo
    3341-- Only get stuff that hasn't been published
    3442LEFT JOIN publishRun USING(client_id, stage_id)
    35 WHERE publishRun.client_id IS NULL
  • tags/ipp-20100610/ippTools/share/pubtool_pending.sql

    r27052 r28374  
    2626        AND publishClient.active = 1
    2727        AND publishRun.state = 'new'
    28         AND diffRun.state = 'full'
    29         AND (diffRun.magicked > 0 OR diffRun.diff_mode = 4 OR publishClient.magicked = 0)
     28        AND diffRun.state IN ('full', 'cleaned', 'goto_cleaned')
     29        AND (diffRun.magicked != 0 OR diffRun.diff_mode = 4 OR publishClient.magicked = 0)
    3030        -- WHERE hook %s
    3131    UNION
     
    4747        AND publishClient.active = 1
    4848        AND publishRun.state ='new'
    49         AND camRun.state = 'full'
    50         AND (camRun.magicked > 0 OR publishClient.magicked = 0)
     49        AND camRun.state IN ('full', 'cleaned', 'goto_cleaned')
     50        AND (camRun.magicked != 0 OR publishClient.magicked = 0)
    5151        -- WHERE hook %s
    5252) AS publishToDo
  • tags/ipp-20100610/ippTools/src/pubtool.c

    r27071 r28374  
    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", "=="); // define using newExp label
     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");
     174
     175    PXOPT_LOOKUP_STR(set_label, config->args, "-set_label", false, false);
     176    PXOPT_LOOKUP_BOOL(rerun, config->args, "-rerun", false);
     177    PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false);
     178    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     179    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    160180
    161181    psString query = pxDataGet("pubtool_definerun.sql"); // Query to run
    162182    if (!query) {
    163183        psError(PXTOOLS_ERR_SYS, false, "Failed to retreive SQL statement");
    164         psFree(where);
    165         return false;
     184        psFree(diffWhere);
     185        psFree(camWhere);
     186        return false;
     187    }
     188
     189    if (!rerun) {
     190        psStringAppend(&query, "\nWHERE publishRun.client_id IS NULL");
     191    }
     192
     193    if (limit) {
     194        psString limitString = psDBGenerateLimitSQL(limit);
     195        psStringAppend(&query, "\n%s", limitString);
     196        psFree(limitString);
    166197    }
    167198
    168199    if (!psDBTransaction(config->dbh)) {
    169200        psError(PS_ERR_UNKNOWN, false, "Database error");
    170         psFree(where);
    171         return false;
    172     }
    173 
    174     psString whereClause = psStringCopy(""); // Additional constraints to add to query
    175     if (psListLength(where->list)) {
    176         psString clause = psDBGenerateWhereConditionSQL(where, NULL);
    177         psStringAppend(&whereClause, "\n AND %s", clause);
     201        psFree(diffWhere);
     202        psFree(camWhere);
     203        return false;
     204    }
     205
     206    psString whereDiff = psStringCopy(""); // Additional constraints to add to query
     207    if (psListLength(diffWhere->list)) {
     208        psString clause = psDBGenerateWhereConditionSQL(diffWhere, NULL);
     209        psStringAppend(&whereDiff, "\n AND %s", clause);
    178210        psFree(clause);
    179211    }
    180     psFree(where);
    181 
    182     if (!p_psDBRunQueryF(config->dbh, query, whereClause, whereClause)) {
     212    psFree(diffWhere);
     213
     214    psString whereCam = psStringCopy(""); // Additional constraints to add to query
     215    if (psListLength(camWhere->list)) {
     216        psString clause = psDBGenerateWhereConditionSQL(camWhere, NULL);
     217        psStringAppend(&whereCam, "\n AND %s", clause);
     218        psFree(clause);
     219    }
     220    psFree(camWhere);
     221
     222    if (!p_psDBRunQueryF(config->dbh, query, whereDiff, whereCam)) {
    183223        psError(PS_ERR_UNKNOWN, false, "Database error");
    184224        psFree(query);
    185         psFree(whereClause);
     225        psFree(whereDiff);
     226        psFree(whereCam);
    186227        if (!psDBRollback(config->dbh)) {
    187228            psError(PS_ERR_UNKNOWN, false, "Database error");
     
    190231    }
    191232    psFree(query);
    192     psFree(whereClause);
     233    psFree(whereDiff);
     234    psFree(whereCam);
    193235
    194236    psArray *output = p_psDBFetchResult(config->dbh); // Output of SELECT statement
     
    206248    }
    207249
     250    if (pretend) {
     251        if (!ippdbPrintMetadatas(stdout, output, "publishRun", !simple)) {
     252            psError(psErrorCodeLast(), false, "Failed to print array");
     253            psFree(output);
     254            return false;
     255        }
     256        psFree(output);
     257        return true;
     258    }
     259
    208260    for (int i = 0; i < output->n; i++) {
    209261        psMetadata *row = output->data[i]; // Row of interest
    210262        psS64 client = psMetadataLookupS64(NULL, row, "client_id"); // Client identifier
    211263        psS64 stage = psMetadataLookupS64(NULL, row, "stage_id");   // Stage identifier
    212         char *label = psMetadataLookupStr(NULL, row, "src_label");   // label from correct source
    213 
    214         if (!publishRunInsert(config->dbh, 0, client, stage, label, "new")) {
     264        const char *label = psMetadataLookupStr(NULL, row, "src_label");   // label from correct source
     265
     266        if (!publishRunInsert(config->dbh, 0, client, stage, set_label ? set_label : label, "new")) {
    215267            psError(PS_ERR_UNKNOWN, false, "Unable to add fileset");
    216268            psFree(output);
     
    241293    PXOPT_COPY_STR(config->args, where, "-stage", "publishClient.stage", "==");
    242294    PXOPT_COPY_STR(config->args, where, "-comment", "publishClient.comment", "LIKE");
    243     PXOPT_COPY_STR(config->args, where, "-label", "publishRun.label", "==");
     295    pxAddLabelSearchArgs(config, where, "-label", "publishRun.label", "==");
    244296
    245297    // optional
  • tags/ipp-20100610/ippTools/src/pubtoolConfig.c

    r27311 r28374  
    6262    // -definerun
    6363    psMetadata *definerunArgs = psMetadataAlloc();
     64    psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_label", 0, "set label", NULL);
    6465    psMetadataAddS64(definerunArgs, PS_LIST_TAIL, "-client_id", 0, "search by client_id", 0);
    6566    psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "set and search by label", NULL);
     67    psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by data_group", NULL);
     68    psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL);
     69    psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<=)", NULL);
     70    psMetadataAddStr(definerunArgs,  PS_LIST_TAIL, "-filter", 0, "search for filter", NULL);
     71    psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-obs_mode", 0, "search by observation mode", NULL);
     72    psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-rerun", 0, "Re-run publish?", false);
     73    psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-pretend", 0, "Pretend to define?", false);
     74    psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple",  0, "use simple output format?", false);
     75    psMetadataAddU64(definerunArgs, PS_LIST_TAIL, "-limit",  0, "limit result set", 0);
    6676
    6777    // -pending
     
    7080    psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-stage", 0, "search on source", NULL);
    7181    psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-comment", 0, "search on comment (LIKE)", NULL);
    72     psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-label", 0, "search on label", NULL);
     82    psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search on label", NULL);
    7383    psMetadataAddBool(pendingArgs, PS_LIST_TAIL, "-simple",  0, "use simple output format?", false);
    7484    psMetadataAddU64(pendingArgs, PS_LIST_TAIL, "-limit",  0, "limit result set", 0);
Note: See TracChangeset for help on using the changeset viewer.