IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 20954


Ignore:
Timestamp:
Dec 10, 2008, 6:11:39 PM (17 years ago)
Author:
bills
Message:

diff re-work nearly complete

Location:
branches/bills_081204
Files:
21 edited

Legend:

Unmodified
Added
Removed
  • branches/bills_081204/dbconfig/changes.txt

    r20903 r20954  
    131131ALTER TABLE warpRun ADD CONSTRAINT FOREIGN KEY(cam_id) REFERENCES
    132132camRun(cam_id);
    133 ALTER TABLE warpRun ADD COLUMN magiced TINYINT AFTER registered;
     133ALTER TABLE warpRun ADD COLUMN magicked TINYINT AFTER registered;
    134134ALTER TABLE warpSkyCellMap DROP FOREIGN KEY warpSkyCellMap_ibfk_1;
    135135UPDATE warpRun JOIN warpInputExp USING(warp_id) SET warpRun.cam_id =
     
    723723ALTER TABLE warpRun ADD CONSTRAINT FOREIGN KEY(cam_id) REFERENCES
    724724camRun(cam_id);
    725 ALTER TABLE warpRun ADD COLUMN magiced TINYINT AFTER registered;
     725ALTER TABLE warpRun ADD COLUMN magicked TINYINT AFTER registered;
    726726ALTER TABLE warpSkyCellMap DROP FOREIGN KEY warpSkyCellMap_ibfk_1;
    727727UPDATE warpRun JOIN warpInputExp USING(warp_id) SET warpRun.cam_id =
     
    10491049UPDATE stackSumSkyfile SET data_state = 'full';
    10501050
    1051 alter table diffRun add column label varchar(64) after workdir;
    1052 alter table diffRun add column reduction varchar(64) after label;
    1053 
    1054 ALTER TABLE diffSkyfile add column data_state varchar(64) after path_base;
     1051ALTER TABLE diffRun ADD COLUMN label VARCHAR(64) AFTER workdir;
     1052ALTER TABLE diffRun ADD COLUMN reduction VARCHAR(64) AFTER label;
     1053
     1054ALTER TABLE diffSkyfile ADD COLUMN data_state VARCHAR(64) AFTER path_base;
    10551055UPDATE diffSkyfile SET data_state = 'full';
    10561056
    1057 ALTER TABLE warpSkyfile add column data_state varchar(64) after path_base;
     1057ALTER TABLE warpSkyfile ADD COLUMN data_state VARCHAR(64) AFTER path_base;
    10581058UPDATE warpSkyfile SET data_state = 'full';
    10591059
     
    13091309ALTER TABLE magicDSRun ADD COLUMN cam_id BIGINT AFTER stage_id;
    13101310
     1311--  Version: 1.1.47 is this correct?
     1312
     1313
     1314-- fix order of workdir to match pxadmin_create_tables.sql
     1315ALTER TABLE diffRun CHANGE COLUMN workdir workdir VARCHAR(255) AFTER state;
     1316
     1317ALTER TABLE diffRun ADD COLUMN exp_id BIGINT;
     1318ALTER TABLE diffRun ADD FOREIGN KEY (exp_id) REFERENCES rawExp(exp_id);
     1319ALTER TABLE diffRun DROP COLUMN skycell_id;
     1320
     1321
     1322-- drop exiting foreign key constraints
     1323ALTER TABLE diffInputSkyfile drop FOREIGN KEY diffInputSkyfile_ibfk_1;
     1324ALTER TABLE diffInputSkyfile drop FOREIGN KEY diffInputSkyfile_ibfk_2;
     1325ALTER TABLE diffInputSkyfile drop FOREIGN KEY diffInputSkyfile_ibfk_3;
     1326
     1327ALTER TABLE diffInputSkyfile DROP COLUMN kind;
     1328ALTER TABLE diffInputSkyfile CHANGE COLUMN skycell_id skycell_id VARCHAR(64) AFTER diff_id;
     1329
     1330-- run script collapse_diffinputs.pl
     1331DELETE FROM diffInputSkyfile where template = 1;
     1332
     1333ALTER TABLE diffInputSkyfile DROP PRIMARY KEY;
     1334ALTER TABLE diffInputSkyfile ADD PRIMARY KEY (diff_id, skycell_id);
     1335ALTER TABLE diffInputSkyfile DROP COLUMN template;
     1336
     1337ALTER TABLE diffInputSkyfile CHANGE COLUMN warp_id warp1 BIGINT;
     1338ALTER TABLE diffInputSkyfile ADD COLUMN stack1 BIGINT AFTER warp1, ADD KEY(stack1);
     1339ALTER TABLE diffInputSkyfile ADD COLUMN warp2 BIGINT AFTER stack1, ADD KEY(warp2);
     1340ALTER TABLE diffInputSkyfile CHANGE COLUMN stack_id stack2 BIGINT AFTER warp2;
     1341ALTER TABLE diffInputSkyfile ADD FOREIGN KEY (diff_id) REFERENCES diffRun(diff_id);
     1342
     1343# need to check these
     1344ALTER TABLE diffInputSkyfile ADD FOREIGN KEY (warp1, skycell_id, tess_id) REFERENCES warpSkyfile(warp_id, skycell_id, tess_id);
     1345ALTER TABLE diffInputSkyfile ADD FOREIGN KEY (warp2, skycell_id, tess_id) REFERENCES warpSkyfile(warp_id, skycell_id, tess_id);
     1346
     1347ALTER TABLE diffInputSkyfile ADD FOREIGN KEY (stack1) REFERENCES stackRun(stack_id);
     1348ALTER TABLE diffInputSkyfile ADD FOREIGN KEY (stack2) REFERENCES stackRun(stack_id);
     1349
     1350-- add unique ids for each image and flags that indicate whether the image has been
     1351-- magic destreaked
     1352ALTER TABLE diffSkyfile ADD COLUMN skycell_id VARCHAR(64) AFTER diff_id;
     1353ALTER TABLE diffSkyfile DROP PRIMARY KEY, ADD PRIMARY KEY (diff_id, skycell_id);
     1354ALTER TABLE diffSkyfile ADD COLUMN diff_image_id BIGINT NOT NULL AUTO_INCREMENT, ADD KEY(diff_image_id);
     1355ALTER TABLE diffSkyfile ADD COLUMN magicked TINYINT;
     1356
     1357ALTER TABLE warpRun DROP COLUMN magiced;
     1358
     1359ALTER TABLE warpSkyfile ADD COLUMN warp_image_id BIGINT NOT NULL AUTO_INCREMENT, ADD KEY(warp_image_id);
     1360ALTER TABLE warpSkyfile ADD COLUMN magicked TINYINT;
     1361
     1362ALTER TABLE chipProcessedImfile ADD COLUMN chip_image_id BIGINT NOT NULL AUTO_INCREMENT, ADD KEY(chip_image_id);
     1363ALTER TABLE chipProcessedImfile ADD COLUMN magicked TINYINT;
     1364
     1365ALTER TABLE rawImfile ADD COLUMN raw_image_id BIGINT NOT NULL AUTO_INCREMENT, ADD KEY(raw_image_id);
     1366ALTER TABLE rawImfile ADD COLUMN magicked TINYINT;
    13111367
    13121368
     
    13141370ALTER TABLE magicRun ADD COLUMN diff_id BIGINT AFTER exp_id;
    13151371ALTER TABLE magicRun ADD CONSTRAINT FOREIGN KEY(diff_id) REFERENCES diffRun(diff_id);
    1316 
    1317 ALTER TABLE magicInputSkyfile DROP FOREIGN KEY magicInputSkyfile_ibfk_2;
    1318 ALTER TABLE magicInputSkyfile DROP column diff_id;
  • branches/bills_081204/dbconfig/chip.md

    r20240 r20954  
    8181    path_base       STR     255
    8282    fault           S16     0       # Key NOT NULL
     83    chip_image_id   S64     0       # Key AUTO_INCREMENT
     84    magicked        BOOL    f
    8385END
    8486
  • branches/bills_081204/dbconfig/diff.md

    r20903 r20954  
    1 # $Id: diff.md,v 1.14.8.1 2008-12-04 23:44:33 bills Exp $
     1# $Id: diff.md,v 1.14.8.2 2008-12-11 04:11:39 bills Exp $
    22
    33diffRun METADATA
    44    diff_id     S64         0       # Primary Key AUTO_INCREMENT
    55    state       STR         64      # Key
     6    workdir     STR         255
    67    label       STR         64      # Key
    78    reduction   STR         64      # Reduction class
    8     workdir     STR         255
    99    dvodb       STR         255
    1010    registered  TAI         NULL
     11    tess_id     STR         64      # Key
    1112    exp_id      S64         0       # fkey(exp_id) ref rawExp(exp_id)
    12     tess_id     STR         64      # Key
    1313END
    1414
     
    1919diffInputSkyfile METADATA
    2020    diff_id     S64         0       # Primary Key fkey(diff_id) ref diffRun(diff_id)
     21    skycell_id  STR         64      # Primary Key
    2122    warp1       S64         0       # fkey(warp1, skycell_id, tess_id) ref warpSkyfile(warp_id, skycell_id, tess_id)
     23    stack1      S64         0       # fkey(stack1) ref stackSumSkyfile(stack_id)
    2224    warp2       S64         0       # fkey(warp2, skycell_id, tess_id) ref warpSkyfile(warp_id, skycell_id, tess_id)
    23     stack1      S64         0       # fkey(stack1) ref stackSumSkyfile(stack_id)
    2425    stack2      S64         0       # fkey(stack2) ref stackSumSkyfile(stack_id)
    25     skycell_id  STR         64      # Key
    2626    tess_id     STR         64      # Key
    2727END
     
    2929diffSkyfile METADATA
    3030    diff_id      S64        0       # Primary Key fkey(diff_id) ref diffRun(diff_id)
    31     skycell_id   STR        64      # Key
     31    skycell_id   STR        64      #
    3232    uri          STR        255
    3333    path_base    STR        255
     
    5252    good_frac    F32        0.0     # Key
    5353    fault        S16        0       # Key
     54    diff_image_id S64       0       # Key NOT NULL AUTO_INCREMENT
     55    magicked     BOOL       f
    5456END
  • branches/bills_081204/dbconfig/magic.md

    r20903 r20954  
    1 # $Id: magic.md,v 1.12.2.1 2008-12-04 23:44:33 bills Exp $
     1# $Id: magic.md,v 1.12.2.2 2008-12-11 04:11:39 bills Exp $
    22
    33### Fault in magicRun indicates that the processing tree failed
     
    1717magicInputSkyfile METADATA
    1818    magic_id    S64         0       # Primary Key fkey(magic_id) ref magicRun(magic_id)
     19    diff_id     S64         0       # Primary Key fkey(diff_id) ref diffRun(diff_id)
    1920    node        STR         64      #
    2021END
  • branches/bills_081204/dbconfig/tasks.md

    r20890 r20954  
    1 # $Id: tasks.md,v 1.158 2008-11-09 23:51:01 price Exp $
     1# $Id: tasks.md,v 1.158.2.1 2008-12-11 04:11:39 bills Exp $
    22
    33# this table records all exposure ID ever seen from the summit
     
    239239    fault       S16         0       # Key NOT NULL
    240240    epoch       UTC         0001-01-01T00:00:00Z
    241 END
     241    magicked    BOOL        f
     242END
  • branches/bills_081204/dbconfig/warp.md

    r19930 r20954  
    1 # $Id: warp.md,v 1.19 2008-10-07 00:01:28 price Exp $
     1# $Id: warp.md,v 1.19.10.1 2008-12-11 04:11:39 bills Exp $
    22
    33#
     
    1111warpRun METADATA
    1212    warp_id     S64         0       # Primary Key AUTO_INCREMENT
    13     fake_id      S64         0       # Key INDEX(warp_id, fake_id) fkey(fake_id) ref camProcessedExp(fake_id)
     13    fake_id     S64         0       # Key INDEX(warp_id, fake_id) fkey(fake_id) ref camProcessedExp(fake_id)
    1414    mode        STR         64      # Key
    1515    state       STR         64      # Key
     
    2222    registered  TAI         NULL
    2323# if magic is T then look for the exp_id in the magic output tables
    24     magiced     BOOL        f       # Key
    2524END
    2625
     
    5251    ignored        BOOL     f       # Key
    5352    fault          S16      0       # Key
     53    warp_image_id  S64      0       # Key AUTO_INCREMENT
     54    magicked       BOOL     f
    5455END
    5556
  • branches/bills_081204/ippTasks/diff.pro

    r20903 r20954  
    9898  task.exit    0
    9999    # convert 'stdout' to book format
    100     ipptool2book stdout diffSkyfile -key diff_id -uniq -setword dbname $options:0 -setword pantaskState INIT
     100    ipptool2book stdout diffSkyfile -key diff_id:skycell_id -uniq -setword dbname $options:0 -setword pantaskState INIT
    101101    if ($VERBOSE > 2)
    102102      book listbook diffSkyfile
     
    214214  task.exit    0
    215215    # convert 'stdout' to book format
    216     ipptool2book stdout diffCleanup -key diff_id -uniq -setword dbname $options:0 -setword pantaskState INIT
     216    ipptool2book stdout diffCleanup -key diff_id:skycell_id -uniq -setword dbname $options:0 -setword pantaskState INIT
    217217    if ($VERBOSE > 2)
    218218      book listbook diffCleanup
  • branches/bills_081204/ippTools/share/Makefile.am

    r20903 r20954  
    7272     difftool_completed_runs.sql \
    7373     difftool_definebyquery.sql \
     74     difftool_definebyquery_part1.sql \
     75     difftool_definebyquery_part2.sql \
     76     difftool_definebyquery_temp_create.sql \
    7477     difftool_donecleanup.sql \
    7578     difftool_inputskyfile.sql \
  • branches/bills_081204/ippTools/share/difftool_completed_runs.sql

    r20904 r20954  
    33FROM (
    44    SELECT
     5        COUNT(diffInputSkyfile.skycell_id), COUNT(diffSkyfile.skycell_id),
    56        diffSkyfile.*
    67    FROM diffRun
    78    JOIN diffInputSkyfile USING(diff_id)
    8     LEFT JOIN diffSkyfile USING(diff_id)
     9    LEFT JOIN diffSkyfile USING(diff_id, skycell_id)
    910    WHERE
    1011        diffRun.state = 'new'
    1112    GROUP BY
    12         diffSkyfile.diff_id
     13        diffInputSkyfile.diff_id
    1314    HAVING
    14         COUNT(diffInputSkyfile.diff_id) = COUNT(diffSkyfile.diff_id)
     15        COUNT(diffInputSkyfile.skycell_id) = COUNT(diffSkyfile.skycell_id)
    1516        AND SUM(diffSkyfile.fault) = 0
    1617    ) as Foo
  • branches/bills_081204/ippTools/share/difftool_todiffskyfile.sql

    r20903 r20954  
    5656LEFT JOIN diffSkyfile
    5757    ON diffInputSkyfile.diff_id = diffSkyfile.diff_id
     58    AND diffInputSkyfile.skycell_id = diffSkyfile.skycell_id
    5859WHERE
    5960-- Ready to be processed
  • branches/bills_081204/ippTools/share/magictool_definebyquery_insert.sql

    r20903 r20954  
    33SELECT
    44    @MAGIC_ID@, -- Update this with the appropriate magic_id
     5    diff_id,
    56    skycell_id
    67FROM diffSkyfile
  • branches/bills_081204/ippTools/share/pxadmin_create_tables.sql

    r20903 r20954  
    238238    fault SMALLINT NOT NULL,
    239239    epoch TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
     240    raw_image_id BIGINT AUTO_INCREMENT,
     241    magicked TINYINT,
    240242    PRIMARY KEY(exp_id, class_id),
    241243    KEY(tmp_class_id),
    242244    KEY(fault),
     245    KEY(raw_image_id),
    243246    UNIQUE KEY(exp_id, tmp_class_id),
    244247    FOREIGN KEY (exp_id, tmp_class_id)
     
    330333    path_base VARCHAR(255),
    331334    fault SMALLINT NOT NULL,
     335    chip_image_id BIGINT AUTO_INCREMENT,
     336    magicked BIGINT,
    332337    PRIMARY KEY(chip_id, exp_id, class_id),
    333338    KEY(data_state),
    334339    KEY(fault),
     340    KEY(chip_image_id),
    335341    FOREIGN KEY (chip_id, exp_id)
    336342        REFERENCES  chipRun(chip_id, exp_id),
     
    815821    end_stage VARCHAR(64),
    816822    registered DATETIME,
    817     magiced TINYINT,
    818823    PRIMARY KEY(warp_id),
    819824    KEY(warp_id),
     
    824829    KEY(label),
    825830    KEY(end_stage),
    826     KEY(magiced),
    827831    INDEX(warp_id, fake_id),
    828832    FOREIGN KEY (fake_id)
     
    861865    ignored TINYINT,
    862866    fault SMALLINT,
     867    warp_image_id BIGINT AUTO_INCREMENT,
     868    magicked TINYINT,
    863869    PRIMARY KEY(warp_id, skycell_id, tess_id),
    864870    KEY(good_frac),
    865871    KEY(ignored), KEY(fault),
     872    KEY(warp_image_id),
    866873    FOREIGN KEY (warp_id, skycell_id, tess_id)
    867874        REFERENCES warpSkyCellMap(warp_id, skycell_id, tess_id)
     
    941948        dvodb VARCHAR(255),
    942949        registered DATETIME,
     950        tess_id VARCHAR(64),
    943951        exp_id  BIGINT,
    944         tess_id VARCHAR(64),
    945952        PRIMARY KEY(diff_id),
    946953        KEY(diff_id),
    947954        KEY(state),
    948         KEY(tess_id)
     955        KEY(tess_id),
     956        FOREIGN KEY (exp_id) REFERENCES rawExp(exp_id)
    949957) ENGINE=innodb DEFAULT CHARSET=latin1;
    950958
    951959CREATE TABLE diffInputSkyfile (
    952960        diff_id BIGINT,
     961        skycell_id VARCHAR(64),
    953962        warp1 BIGINT,
     963        stack1 BIGINT,
    954964        warp2 BIGINT,
    955         stack1 BIGINT,
    956965        stack2 BIGINT,
    957         skycell_id VARCHAR(64),
    958966        tess_id VARCHAR(64),
    959         PRIMARY KEY(diff_id),
     967        PRIMARY KEY(diff_id, skycell_id),
    960968        KEY(warp1),
    961969        KEY(warp2),
     
    9961004        good_frac FLOAT,
    9971005        fault SMALLINT,
    998         PRIMARY KEY(diff_id),
     1006        diff_image_id BIGINT AUTO_INCREMENT,
     1007        magicked TINYINT,
     1008        PRIMARY KEY(diff_id, skycell_id),
    9991009        KEY(good_frac),
    10001010        KEY(fault),
    1001         KEY(skycell_id),
     1011        KEY(diff_image_id),
    10021012        FOREIGN KEY (diff_id)  REFERENCES  diffRun(diff_id)
    10031013) ENGINE=innodb DEFAULT CHARSET=latin1;
     
    10261036CREATE TABLE magicInputSkyfile (
    10271037        magic_id BIGINT,
     1038        diff_id BIGINT,
    10281039        node VARCHAR(64),
    1029         PRIMARY KEY(magic_id),
    1030         FOREIGN KEY (magic_id)  REFERENCES  magicRun(magic_id)
     1040        PRIMARY KEY(magic_id, diff_id),
     1041        FOREIGN KEY (magic_id)  REFERENCES  magicRun(magic_id),
     1042        FOREIGN KEY (diff_id) REFERENCES diffRun(diff_id)
    10311043) ENGINE=innodb DEFAULT CHARSET=latin1;
    10321044
  • branches/bills_081204/ippTools/share/warptool_tooverlap.sql

    r19092 r20954  
    77    rawExp.camera,
    88    exp_id,
    9     exp_tag,
    10     warpRun.magiced
     9    exp_tag
    1110FROM warpRun
    1211JOIN fakeRun
  • branches/bills_081204/ippTools/src/chiptool.c

    r20890 r20954  
    484484                                   n_cr,
    485485                                   path_base,
    486                                    code
     486                                   code,
     487                                   0,   // chip_image_id
     488                                   0    // magic_ds_id
    487489            )) {
    488490        // rollback
  • branches/bills_081204/ippTools/src/difftool.c

    r20903 r20954  
    121121            0,          // ID
    122122            "reg",      // state
     123            workdir,
    123124            label,
    124125            reduction,
    125             workdir,
    126126            NULL,       // dvodb
    127127            registered,
    128             exp_id,
    129             tess_id
     128            tess_id,
     129            exp_id
    130130    );
    131131    if (!run) {
     
    234234    if (!diffInputSkyfileInsert(config->dbh,
    235235            diff_id,
     236            skycell_id,
    236237            warp1 ? warp1 : PS_MAX_S64, // defined or NULL
     238            stack1 ? stack1 : PS_MAX_S64, // defined or NULL
    237239            warp2 ? warp2 : PS_MAX_S64, // defined or NULL
    238             stack1 ? stack1 : PS_MAX_S64, // defined or NULL
    239240            stack2 ? stack2 : PS_MAX_S64, // defined or NULL
    240             skycell_id,
    241241            tess_id
    242242        )) {
     
    304304    PXOPT_COPY_S64(config->args, where,  "-diff_id", "diff_id", "==");
    305305    PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "==");
    306     PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id", "==");
     306    PXOPT_COPY_STR(config->args, where, "-skycell_id", "diffInputSkyfile.skycell_id", "==");
    307307    PXOPT_COPY_STR(config->args, where,  "-tess_id", "tess_id", "==");
    308308
     
    531531                           hostname,
    532532                           good_frac,
    533                            code
     533                           code,
     534                           0,       // diff_image_id
     535                           0        // magic_ds_id
    534536          )) {
    535537        if (!psDBRollback(config->dbh)) {
     
    795797            0,          // ID
    796798            "reg",      // state
     799            workdir,
    797800            label,
    798801            reduction,
    799             workdir,
    800802            NULL,       // dvodb
    801803            registered,
    802             exp_id,
    803             tess_id
     804            tess_id,
     805            exp_id
    804806    );
    805807
     
    826828    if (!diffInputSkyfileInsert(config->dbh,
    827829            run->diff_id,
     830            skycell_id,
    828831            input_warp_id,
     832            input_stack_id,
    829833            template_warp_id,
    830             input_stack_id,
    831834            template_stack_id,
    832             skycell_id,
    833835            tess_id
    834836        )) {
     
    936938    PS_ASSERT_PTR_NON_NULL(config, false);
    937939
     940    psMetadata *expWhere = psMetadataAlloc();
    938941    psMetadata *warpWhere = psMetadataAlloc();
    939942    psMetadata *stackWhere = psMetadataAlloc();
    940943
     944    PXOPT_COPY_S64(config->args, expWhere, "-exp_id", "exp_id", "==");
    941945    PXOPT_COPY_S64(config->args, warpWhere, "-warp_id", "warpRun.warp_id", "==");
    942946    PXOPT_COPY_STR(config->args, warpWhere, "-skycell_id", "warpRun.skycell_id", "==");
     
    953957    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    954958    PXOPT_LOOKUP_BOOL(newTemplates, config->args, "-new-templates", false);
     959    PXOPT_LOOKUP_BOOL(reRun, config->args, "-rerun", false);
     960    PXOPT_LOOKUP_BOOL(available, config->args, "-available", false);
    955961
    956962    // find all things to queue
    957     psString query = pxDataGet("difftool_definebyquery.sql");
     963    psString query = pxDataGet("difftool_definebyquery_part1.sql");
    958964    if (!query) {
    959965        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     
    961967    }
    962968
    963     if (newTemplates) {
    964         // Warps that haven't been diffed OR warps that can take a newer template in the diff
    965         psStringAppend(&query, " WHERE (diff_id IS NULL OR best_stack_id > current_stack_id)");
    966     } else {
    967         // Only warps that haven't been diffed
    968         psStringAppend(&query, " WHERE diff_id IS NULL");
    969     }
    970 
    971969    psString warpQuery = NULL;
    972970    psString stackQuery = NULL;
    973 
     971    psString expQuery = NULL;
     972
     973    if (psListLength(expWhere->list)) {
     974        psString whereClause = psDBGenerateWhereConditionSQL(expWhere, NULL);
     975        psStringAppend(&expQuery, "\n AND %s", whereClause);
     976        psFree(whereClause);
     977    } else {
     978        expQuery = psStringCopy("\n");
     979    }
     980    psFree(expWhere);
    974981    if (psListLength(warpWhere->list)) {
    975982        psString whereClause = psDBGenerateWhereConditionSQL(warpWhere, NULL);
     
    977984        psFree(whereClause);
    978985    } else {
    979         warpQuery = psStringCopy("");
     986        warpQuery = psStringCopy("\n");
    980987    }
    981988    psFree(warpWhere);
     989
     990    if (!available) {
     991        // diff what's available, even if warp run has some faults and is incomplete
     992        psStringAppend(&warpQuery, " AND warpRun.state = 'full'");
     993    }
     994
     995    // don't queue for exposures that have already been diff'd unless requested
     996    psString diffQuery = NULL;
     997    if (! (reRun || newTemplates) ) {
     998        psStringAppend(&diffQuery, "\nAND diff_id IS NULL");
     999    }
    9821000
    9831001    if (psListLength(stackWhere->list)) {
    9841002        psString whereClause = psDBGenerateWhereConditionSQL(stackWhere, NULL);
    985         psStringAppend(&stackQuery, "\n AND %s", whereClause);
     1003        psStringAppend(&stackQuery, "\nAND %s", whereClause);
    9861004        psFree(whereClause);
    9871005    } else {
     
    9901008    psFree(stackWhere);
    9911009
    992     psTrace("difftool", 1, query, warpQuery, stackQuery);
    993 
    994     if (!p_psDBRunQuery(config->dbh, query, warpQuery, stackQuery)) {
     1010    psTrace("difftool", 1, query, warpQuery, diffQuery, expQuery, stackQuery);
     1011
     1012
     1013    if (!p_psDBRunQuery(config->dbh, query, warpQuery, expQuery, diffQuery)) {
    9951014        psError(PS_ERR_UNKNOWN, false, "database error");
    9961015        psFree(query);
     
    10191038    }
    10201039
     1040    // create temporary table
     1041    query = pxDataGet("difftool_definebyquery_temp_create.sql");
     1042    if (!p_psDBRunQuery(config->dbh, query)) {
     1043        psError(PS_ERR_UNKNOWN, false, "database error");
     1044        psFree(query);
     1045        return false;
     1046    }
     1047    psFree(query);
     1048    query = NULL;
     1049
     1050    psString skycell_query = pxDataGet("difftool_definebyquery_part2.sql");
     1051
    10211052    psArray *list = psArrayAllocEmpty(16); // List of runs, to print
    10221053    long numGood = 0;                   // Number of good rows added
     1054    psS64 last_exp_id = 0;
    10231055    for (long i = 0; i < output->n; i++) {
    10241056        psMetadata *row = output->data[i]; // Output row from query
    1025 
    1026         // Selected parameters
    10271057        bool mdok;                      // Status of MD lookup
    1028         const char *skycell_id = psMetadataLookupStr(&mdok, row, "skycell_id");
    1029         if (!mdok || !skycell_id) {
    1030             psWarning("skycell_id not found --- ignoring row %ld", i);
     1058
     1059        // Take the first warp for each exposure.
     1060        // The list is sorted by exposure id and warp_id and the warps are in descending
     1061        // order.
     1062        psS64 exp_id = psMetadataLookupS64(&mdok, row, "exp_id");
     1063        if (!mdok) {
     1064            psError(PXTOOLS_ERR_PROG, false, "exp_id not found");
     1065            return false;
     1066        }
     1067        if (exp_id == last_exp_id) {
    10311068            continue;
    10321069        }
    1033         const char *tess_id = psMetadataLookupStr(&mdok, row, "tess_id");
    1034         if (!mdok || !tess_id) {
    1035             psWarning("tess_id not found --- ignoring row %ld", i);
    1036             continue;
    1037         }
    1038         psS64 stack_id = psMetadataLookupS64(&mdok, row, "best_stack_id");
    1039         if (!mdok) {
    1040             psWarning("stack_id not found --- ignoring row %ld", i);
    1041             continue;
     1070        last_exp_id = exp_id;
     1071
     1072        // clear temporary table
     1073        if (!p_psDBRunQuery(config->dbh, "DELETE FROM skycellsToDiff")) {
     1074            psError(PS_ERR_UNKNOWN, false, "database error");
     1075            psFree(warpQuery);
     1076            psFree(stackQuery);
     1077            psFree(skycell_query);
     1078            return false;
    10421079        }
    10431080        psS64 warp_id = psMetadataLookupS64(&mdok, row, "warp_id");
    10441081        if (!mdok) {
    1045             psWarning("warp_id not found --- ignoring row %ld", i);
     1082            psError(PXTOOLS_ERR_PROG, false, "warp_id not found --- ignoring row %ld", i);
     1083            psFree(warpQuery);
     1084            psFree(stackQuery);
     1085            psFree(skycell_query);
     1086            return false;
     1087        }
     1088        psS64 skycell_count = psMetadataLookupS64(&mdok, row, "skycell_count");
     1089        if (!mdok) {
     1090            psError(PXTOOLS_ERR_PROG, false, "skycell_count not found");
     1091            psFree(warpQuery);
     1092            psFree(stackQuery);
     1093            psFree(skycell_query);
     1094            return false;
     1095        }
     1096        psString tess_id = psMetadataLookupStr(&mdok, row, "tess_id");
     1097        if (!mdok) {
     1098            psError(PXTOOLS_ERR_PROG, false, "tess_id not found");
     1099            psFree(warpQuery);
     1100            psFree(stackQuery);
     1101            psFree(skycell_query);
     1102            return false;
     1103        }
     1104        if (!p_psDBRunQuery(config->dbh, skycell_query, warp_id, warpQuery, stackQuery)) {
     1105            psError(PS_ERR_UNKNOWN, false, "database error");
     1106            psFree(warpQuery);
     1107            psFree(stackQuery);
     1108            psFree(skycell_query);
     1109            return false;
     1110        }
     1111        psS64 num = psDBAffectedRows(config->dbh);
     1112
     1113        if (num == 0) {
     1114            psTrace("difftool", PS_LOG_INFO, "no skycells with stack found for %" PRId64, warp_id);
    10461115            continue;
    10471116        }
    1048         psS64 exp_id = psMetadataLookupS64(&mdok, row, "exp_id");
    1049         if (!mdok) {
    1050             psWarning("exp_id not found --- ignoring row %ld", i);
     1117
     1118        if (!available && (num != skycell_count)) {
     1119            psTrace("difftool", PS_LOG_INFO, "%" PRId64 " skyfiles with stack found for warp_id %"
     1120                PRId64 " need %" PRId64, num, skycell_count, warp_id);
    10511121            continue;
    10521122        }
    10531123
    1054         if (!populatedrun(list, workdir, skycell_id, tess_id, label, reduction, warp_id,
    1055                           PS_MAX_S64, PS_MAX_S64, stack_id, exp_id, config)) {
    1056             psWarning("Unable to add run for %s,%s,%" PRId64 ",%" PRId64, skycell_id, tess_id,
    1057                       warp_id, stack_id);
    1058             psErrorClear();
    1059             continue;
    1060         }
    1061 
     1124        // ok we've got one create the diffRun
     1125        diffRunRow *run = diffRunRowAlloc(
     1126                0,          // ID
     1127                "reg",      // state
     1128                workdir,
     1129                label,
     1130                reduction,
     1131                NULL,       // dvodb
     1132                registered,
     1133                tess_id,
     1134                exp_id
     1135        );
     1136
     1137        if (!diffRunInsertObject(config->dbh, run)) {
     1138            psError(PS_ERR_UNKNOWN, false, "database error");
     1139            psFree(run);
     1140            return true;
     1141        }
     1142        run->diff_id = psDBLastInsertID(config->dbh);
     1143
     1144        psStringAppend(&query, "UPDATE skycellsToDiff SET diff_id = %" PRId64, run->diff_id);
     1145        if (!p_psDBRunQuery(config->dbh, query)) {
     1146            psError(PS_ERR_UNKNOWN, false, "database error");
     1147            psFree(warpQuery);
     1148            psFree(stackQuery);
     1149            psFree(skycell_query);
     1150            psFree(query);
     1151            return false;
     1152        }
     1153        psFree(query);
     1154        query = NULL;
     1155        psStringAppend(&query, "INSERT INTO diffInputSkyfile SELECT * from skycellsToDiff");
     1156        if (!p_psDBRunQuery(config->dbh, query)) {
     1157            psError(PS_ERR_UNKNOWN, false, "database error");
     1158            psFree(warpQuery);
     1159            psFree(stackQuery);
     1160            psFree(skycell_query);
     1161            psFree(query);
     1162            return false;
     1163        }
     1164
     1165        if (!setdiffRunState(config, run->diff_id, "new")) {
     1166            psError(PS_ERR_UNKNOWN, false, "failed to change diffRun.state for diff_id: %" PRId64,
     1167                run->diff_id);
     1168            psFree(warpQuery);
     1169            psFree(stackQuery);
     1170            psFree(skycell_query);
     1171            psFree(query);
     1172            return false;
     1173        }
     1174
     1175        psArrayAdd(list, list->n, run);
    10621176        numGood++;
    10631177    }
  • branches/bills_081204/ippTools/src/difftoolConfig.c

    r20903 r20954  
    145145    // -definebyquery
    146146    psMetadata *definebyqueryArgs = psMetadataAlloc();
    147     psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-diff_id", 0, "search by diff ID", 0);
    148147    psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warp ID", 0);
     148    psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0);
    149149    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell ID", NULL);
    150150    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tess ID", NULL);
     
    158158    psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now);
    159159    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-new-templates", 0, "also search for diffs with new template", false);
     160    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-rerun", 0, "define new run even if one exists", false);
     161    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-available", 0, "define new run even if warpRun has some faults", false);
    160162    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
    161163
  • branches/bills_081204/ippTools/src/magictool.c

    r20903 r20954  
    362362            config->dbh,
    363363            magic_id,
     364            diff_id,
    364365            node
    365366    );
  • branches/bills_081204/ippTools/src/pxwarp.c

    r19092 r20954  
    147147        tess_id,
    148148        end_stage,
    149         NULL,       // registered
    150         false       // magiced
     149        NULL       // registered
    151150    )) {
    152151        psError(PS_ERR_UNKNOWN, false, "database error");
  • branches/bills_081204/ippTools/src/regtool.c

    r20608 r20954  
    299299        hostname,
    300300        code,
    301         NULL
     301        NULL,
     302        0
    302303    )) {
    303304        psError(PS_ERR_UNKNOWN, false, "database error");
  • branches/bills_081204/ippTools/src/warptool.c

    r20723 r20954  
    134134    PXOPT_LOOKUP_STR(end_stage, config->args, "-end_stage", false, false);
    135135    PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false);
    136     PXOPT_LOOKUP_BOOL(magiced, config->args, "-magiced", false);
    137136    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    138137
     
    154153            tess_id,
    155154            end_stage,
    156             registered,
    157             magiced
     155            registered
    158156    );
    159157    if (!warpRun) {
     
    246244
    247245    PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false);
    248     PXOPT_LOOKUP_BOOL(magiced, config->args, "-magiced", false);
    249246    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    250247
     
    942939                           ymax,
    943940                           !accept,
    944                            code
     941                           code,
     942                           0,           // warp_image_id
     943                           0            // magic_ds_id
    945944        )) {
    946945        if (!psDBRollback(config->dbh)) {
  • branches/bills_081204/ippTools/src/warptoolConfig.c

    r20890 r20954  
    103103
    104104    psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-registered",  0,            "time detrend run was registered", now);
    105     psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-magiced",  0,            "has this exposure been magiced", false);
    106105    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
    107106
     
    116115    psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-end_stage", 0,            "define end stage", NULL);
    117116    psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-registered",  0,            "time detrend run was registered", now);
    118     psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-magiced",  0,            "has this exposure been magiced", false);
    119117    psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
    120118
Note: See TracChangeset for help on using the changeset viewer.