IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 18923


Ignore:
Timestamp:
Aug 5, 2008, 2:07:07 PM (18 years ago)
Author:
eugene
Message:

updates from HEAD

Location:
branches/eam_branch_20080719/ippTools
Files:
10 added
3 deleted
25 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branch_20080719/ippTools/configure.ac

    r17879 r18923  
    1818PKG_CHECK_MODULES([PSLIB], [pslib >= 1.1.0])
    1919PKG_CHECK_MODULES([PSMODULES], [psmodules >= 1.1.0])
    20 PKG_CHECK_MODULES([IPPDB], [ippdb >= 1.1.38])
     20PKG_CHECK_MODULES([IPPDB], [ippdb >= 1.1.39])
    2121
    2222PXTOOLS_CFLAGS="${PSLIB_CFLAGS=} ${PSMODULES_CFLAGS=} ${IPPDB_CFLAGS=}"
  • branches/eam_branch_20080719/ippTools/share/Makefile.am

    r18622 r18923  
    5858        dettool_tostacked.sql \
    5959        difftool_inputskyfile.sql \
    60         difftool_queue.sql \
     60        difftool_definebyquery.sql \
    6161        difftool_revertdiffskyfile.sql \
    6262        difftool_skyfile.sql \
     
    7575        flatcorr_find_processedimfiles.sql \
    7676        flatcorr_pending.sql \
    77         magictool_create_tmp_warpcomplete.sql \
    78         magictool_find_complete_diffed_exposures.sql \
    79         magictool_find_complete_warpruns.sql \
    80         magictool_find_unmagiced.sql \
     77        magictool_definebyquery_temp_create.sql \
     78        magictool_definebyquery_temp_insert.sql \
     79        magictool_definebyquery_temp_insert_groupby.sql \
     80        magictool_definebyquery_select_part1.sql \
     81        magictool_definebyquery_select_part2.sql \
     82        magictool_definebyquery_insert.sql \
    8183        magictool_inputskyfile.sql \
    8284        magictool_totree.sql \
  • branches/eam_branch_20080719/ippTools/share/chiptool_processedimfile.sql

    r14118 r18923  
    66    chipProcessedImfile.bg_mean_stdev,
    77    chipProcessedImfile.path_base,
     8    rawExp.exp_id,
    89    rawExp.exp_tag,
    910    rawExp.exp_name,
  • branches/eam_branch_20080719/ippTools/share/faketool_find_pendingexp.sql

    r18644 r18923  
    11-- this query is used by both camtool -pendingexp & camtool -addprocessedexp it
    22-- does a little more work then is necessary for -addprocessed but it seems
    3 -- "cleaner" to use the same query for both cases 
     3-- "cleaner" to use the same query for both cases
    44SELECT * FROM
    55    (SELECT
     
    2929        AND chipRun.state = 'full'
    3030        AND fakeMask.label IS NULL
    31         AND fakeProcessedImfile.fake_id IS NULL
     31        AND fakeProcessedImfile.fake_id IS NOT NULL
    3232    GROUP BY
    3333        fakeRun.fake_id
  • branches/eam_branch_20080719/ippTools/share/faketool_pendingimfile.sql

    r18125 r18923  
    1 SELECT DISTINCT * FROM
    2      -- the subselect is so where criteria can be specified without knowing
    3      -- which table the field came from
    4     (SELECT
     1SELECT DISTINCT * FROM (
     2    -- the subselect is so where criteria can be specified without knowing
     3    -- which table the field came from
     4    SELECT
    55        fakeRun.*,
    66        chipProcessedImfile.exp_id,
     
    2929        rawExp.filelevel
    3030    FROM fakeRun
    31     JOIN camRun
    32         USING(cam_id)
    33     JOIN camProcessedExp
    34         USING(cam_id)
    35     JOIN chipRun
    36         USING(chip_id)
    37     JOIN chipProcessedImfile
    38         USING(chip_id)
     31    JOIN camRun USING(cam_id)
     32    JOIN camProcessedExp USING(cam_id)
     33    JOIN chipRun USING(chip_id)
     34    JOIN chipProcessedImfile USING(chip_id)
    3935    JOIN rawExp
    4036        ON chipProcessedImfile.exp_id = rawExp.exp_id
    4137    LEFT JOIN fakeProcessedImfile
    4238        ON fakeRun.fake_id = fakeProcessedImfile.fake_id
     39        AND chipProcessedImfile.class_id = fakeProcessedImfile.class_id
    4340    LEFT JOIN fakeMask
    4441        ON fakeRun.label = fakeMask.label
     
    4744        AND fakeProcessedImfile.class_id IS NULL
    4845        AND fakeMask.label IS NULL
    49     ) as foo
     46    ) as fakePendingImfile
  • branches/eam_branch_20080719/ippTools/share/magictool_inputs.sql

    r18622 r18923  
    77    magicInputSkyfile.node,
    88    diffSkyfile.uri,
     9    diffSkyfile.path_base,
    910    diffSkyfile.fault
    1011FROM magicInputSkyfile
     
    2021    magicTree.node,
    2122    magicNodeResult.uri,
     23    NULL, -- magicNodeResult doesn't have a path_base
    2224    magicNodeResult.fault
    2325FROM magicTree
  • branches/eam_branch_20080719/ippTools/share/magictool_tomask.sql

    r18622 r18923  
    11SELECT
    22    magic_id,
     3    exp_id,
     4    camera,
     5    magicRun.workdir,
    36    uri
    47FROM magicRun
    5 JOIN magicTree
    6     USING(magic_id)
    7 LEFT JOIN magicNodeResult
    8     USING(magic_id, node)
     8JOIN rawExp USING(exp_id)
     9JOIN magicTree USING(magic_id)
     10LEFT JOIN magicNodeResult USING(magic_id, node)
    911WHERE
    1012    magicRun.state = 'run'
  • branches/eam_branch_20080719/ippTools/share/magictool_toprocess_inputs.sql

    r18622 r18923  
    11SELECT
    22    magicTree.*,
     3    rawExp.camera,
     4    diffSkyfile.path_base,
    35    -- convert magic_id into a boolean value (1 or 0)
    46    -- note that the type stays a 64 bit int
    57    magicNodeResult.magic_id IS TRUE as done
    68FROM magicTree
    7 JOIN magicRun
    8     USING(magic_id)
    9 JOIN magicInputSkyfile
    10     USING(magic_id, node)
    11 JOIN diffSkyfile
    12     using(diff_id)
     9JOIN magicRun USING(magic_id)
     10JOIN magicInputSkyfile USING(magic_id, node)
     11JOIN diffSkyfile USING(diff_id)
     12JOIN rawExp USING(exp_id)
    1313LEFT JOIN magicNodeResult
    1414    ON magicTree.magic_id = magicNodeResult.magic_id
  • branches/eam_branch_20080719/ippTools/share/magictool_toprocess_tree.sql

    r18622 r18923  
    11SELECT
    22    magicTree.*,
     3    exp_id,
     4    camera,
     5    magicRun.workdir,
    36    -- convert magic_id into a boolean value (1 or 0)
    47    -- note that the type stays a 64 bit int
     
    69    magicNodeResult.fault IS TRUE as bad
    710FROM magicTree
    8 JOIN magicRun
    9     USING(magic_id)
     11JOIN magicRun USING(magic_id)
     12JOIN rawExp USING(exp_id)
    1013LEFT JOIN magicNodeResult
    1114    ON magicTree.magic_id = magicNodeResult.magic_id
  • branches/eam_branch_20080719/ippTools/share/magictool_totree.sql

    r18622 r18923  
    11SELECT
    2     magic_id
     2    magic_id,
     3    exp_id,
     4    camera,
     5    workdir,
     6    ra,
     7    decl,
     8    tess_id
    39FROM magicRun
     10JOIN rawExp USING(exp_id)
    411LEFT JOIN magicTree
    512    USING(magic_id)
  • branches/eam_branch_20080719/ippTools/share/pxadmin_create_tables.sql

    r18643 r18923  
    235235CREATE TABLE chipRun (
    236236    chip_id BIGINT AUTO_INCREMENT,
    237     exp_id BIGINT, 
    238     state VARCHAR(64), 
    239     workdir VARCHAR(255), 
    240     workdir_state VARCHAR(64), 
    241     label VARCHAR(64), 
     237    exp_id BIGINT,
     238    state VARCHAR(64),
     239    workdir VARCHAR(255),
     240    workdir_state VARCHAR(64),
     241    label VARCHAR(64),
    242242    reduction VARCHAR(64),
    243      expgroup VARCHAR(64), 
    244     dvodb VARCHAR(255), 
    245     tess_id VARCHAR(64), 
    246     end_stage VARCHAR(64), 
    247     PRIMARY KEY(chip_id), 
    248     KEY(chip_id), KEY(exp_id), 
    249     KEY(state), 
     243     expgroup VARCHAR(64),
     244    dvodb VARCHAR(255),
     245    tess_id VARCHAR(64),
     246    end_stage VARCHAR(64),
     247    PRIMARY KEY(chip_id),
     248    KEY(chip_id), KEY(exp_id),
     249    KEY(state),
    250250    KEY(workdir_state),
    251     KEY(label), 
    252     KEY(expgroup), 
    253     KEY(end_stage), 
    254     INDEX(chip_id, exp_id), 
    255     FOREIGN KEY (exp_id) 
     251    KEY(label),
     252    KEY(expgroup),
     253    KEY(end_stage),
     254    INDEX(chip_id, exp_id),
     255    FOREIGN KEY (exp_id)
    256256        REFERENCES rawExp(exp_id))
    257257ENGINE=innodb DEFAULT CHARSET=latin1;
    258258
    259259CREATE TABLE chipProcessedImfile (
    260     chip_id BIGINT, 
    261     exp_id BIGINT, 
    262     class_id VARCHAR(64), 
    263     uri VARCHAR(255), 
    264     bg FLOAT, 
    265     bg_stdev FLOAT, 
    266     bg_mean_stdev FLOAT, 
    267     bias FLOAT, 
    268     bias_stdev FLOAT, 
    269     fringe_0 FLOAT, 
    270     fringe_1 FLOAT, 
    271     fringe_2 FLOAT, 
    272     sigma_ra FLOAT, 
    273     sigma_dec FLOAT, 
    274     ap_resid FLOAT, 
    275     ap_resid_stdev FLOAT, 
    276     zp_mean FLOAT, 
    277     zp_stdev FLOAT, 
    278     fwhm_major FLOAT, 
    279     fwhm_minor FLOAT, 
    280     dtime_detrend FLOAT, 
    281     dtime_photom FLOAT, 
    282     dtime_astrom FLOAT, 
    283     hostname VARCHAR(64), 
    284     n_stars INT, 
    285     n_extended INT, 
    286     n_cr INT, 
    287     n_astrom INT, 
    288     path_base VARCHAR(255), 
    289     fault SMALLINT NOT NULL, 
    290     PRIMARY KEY(chip_id, exp_id, class_id), 
    291     KEY(fault), 
    292     FOREIGN KEY (chip_id, exp_id) 
     260    chip_id BIGINT,
     261    exp_id BIGINT,
     262    class_id VARCHAR(64),
     263    uri VARCHAR(255),
     264    bg FLOAT,
     265    bg_stdev FLOAT,
     266    bg_mean_stdev FLOAT,
     267    bias FLOAT,
     268    bias_stdev FLOAT,
     269    fringe_0 FLOAT,
     270    fringe_1 FLOAT,
     271    fringe_2 FLOAT,
     272    sigma_ra FLOAT,
     273    sigma_dec FLOAT,
     274    ap_resid FLOAT,
     275    ap_resid_stdev FLOAT,
     276    zp_mean FLOAT,
     277    zp_stdev FLOAT,
     278    fwhm_major FLOAT,
     279    fwhm_minor FLOAT,
     280    dtime_detrend FLOAT,
     281    dtime_photom FLOAT,
     282    dtime_astrom FLOAT,
     283    hostname VARCHAR(64),
     284    n_stars INT,
     285    n_extended INT,
     286    n_cr INT,
     287    n_astrom INT,
     288    path_base VARCHAR(255),
     289    fault SMALLINT NOT NULL,
     290    PRIMARY KEY(chip_id, exp_id, class_id),
     291    KEY(fault),
     292    FOREIGN KEY (chip_id, exp_id)
    293293        REFERENCES  chipRun(chip_id, exp_id),
    294294    FOREIGN KEY (exp_id, class_id)
     
    297297
    298298CREATE TABLE chipMask (
    299     label VARCHAR(64), 
    300     PRIMARY KEY(label)) 
     299    label VARCHAR(64),
     300    PRIMARY KEY(label))
    301301ENGINE=innodb DEFAULT CHARSET=latin1;
    302302
    303303CREATE TABLE camRun (
    304     cam_id BIGINT AUTO_INCREMENT, 
    305     chip_id BIGINT, 
    306     state VARCHAR(64), 
    307     workdir VARCHAR(255), 
    308     workdir_state VARCHAR(64), 
    309     label VARCHAR(64), 
    310     reduction VARCHAR(64), 
    311     expgroup VARCHAR(64), 
    312     dvodb VARCHAR(255), 
    313     tess_id VARCHAR(64), 
    314     end_stage VARCHAR(64), 
    315     PRIMARY KEY(cam_id), 
    316     KEY(cam_id), 
    317     KEY(chip_id), 
    318     KEY(state), 
    319     KEY(workdir_state), 
    320     KEY(label), 
    321     KEY(expgroup), 
    322     KEY(end_stage), 
    323     INDEX(cam_id, chip_id), 
    324     FOREIGN KEY (chip_id) 
    325         REFERENCES chipRun(chip_id)) 
     304    cam_id BIGINT AUTO_INCREMENT,
     305    chip_id BIGINT,
     306    state VARCHAR(64),
     307    workdir VARCHAR(255),
     308    workdir_state VARCHAR(64),
     309    label VARCHAR(64),
     310    reduction VARCHAR(64),
     311    expgroup VARCHAR(64),
     312    dvodb VARCHAR(255),
     313    tess_id VARCHAR(64),
     314    end_stage VARCHAR(64),
     315    PRIMARY KEY(cam_id),
     316    KEY(cam_id),
     317    KEY(chip_id),
     318    KEY(state),
     319    KEY(workdir_state),
     320    KEY(label),
     321    KEY(expgroup),
     322    KEY(end_stage),
     323    INDEX(cam_id, chip_id),
     324    FOREIGN KEY (chip_id)
     325        REFERENCES chipRun(chip_id))
    326326ENGINE=innodb DEFAULT CHARSET=latin1;
    327327
    328328CREATE TABLE camProcessedExp (
    329329    cam_id BIGINT,
    330     uri VARCHAR(255), 
    331     bg FLOAT, 
    332     bg_stdev FLOAT, 
    333     bg_mean_stdev FLOAT, 
    334     bias FLOAT, 
    335     bias_stdev FLOAT, 
    336     fringe_0 FLOAT, 
    337     fringe_1 FLOAT, 
    338     fringe_2 FLOAT, 
    339     sigma_ra FLOAT, 
    340     sigma_dec FLOAT, 
    341     ap_resid FLOAT, 
    342     ap_resid_stdev FLOAT, 
    343     zp_mean FLOAT, 
    344     zp_stdev FLOAT, 
    345     fwhm_major FLOAT, 
    346     fwhm_minor FLOAT, 
    347     dtime_detrend FLOAT, 
    348     dtime_photom FLOAT, 
    349     dtime_astrom FLOAT, 
     330    uri VARCHAR(255),
     331    bg FLOAT,
     332    bg_stdev FLOAT,
     333    bg_mean_stdev FLOAT,
     334    bias FLOAT,
     335    bias_stdev FLOAT,
     336    fringe_0 FLOAT,
     337    fringe_1 FLOAT,
     338    fringe_2 FLOAT,
     339    sigma_ra FLOAT,
     340    sigma_dec FLOAT,
     341    ap_resid FLOAT,
     342    ap_resid_stdev FLOAT,
     343    zp_mean FLOAT,
     344    zp_stdev FLOAT,
     345    fwhm_major FLOAT,
     346    fwhm_minor FLOAT,
     347    dtime_detrend FLOAT,
     348    dtime_photom FLOAT,
     349    dtime_astrom FLOAT,
    350350    hostname VARCHAR(64),
    351     n_stars INT, 
    352     n_extended INT, 
    353     n_cr INT, 
    354     n_astrom INT, 
    355     path_base VARCHAR(255), 
    356     fault SMALLINT NOT NULL, 
    357     PRIMARY KEY(cam_id), 
    358     KEY(fault), 
    359     FOREIGN KEY (cam_id) 
    360         REFERENCES camRun(cam_id)) 
     351    n_stars INT,
     352    n_extended INT,
     353    n_cr INT,
     354    n_astrom INT,
     355    path_base VARCHAR(255),
     356    fault SMALLINT NOT NULL,
     357    PRIMARY KEY(cam_id),
     358    KEY(fault),
     359    FOREIGN KEY (cam_id)
     360        REFERENCES camRun(cam_id))
    361361ENGINE=innodb DEFAULT CHARSET=latin1;
    362362
     
    367367
    368368CREATE TABLE fakeRun (
    369     fake_id BIGINT AUTO_INCREMENT, 
    370     cam_id BIGINT, 
    371     state VARCHAR(64), 
    372     workdir VARCHAR(255), 
    373     label VARCHAR(64), 
    374     reduction VARCHAR(64), 
    375     expgroup VARCHAR(64), 
    376     dvodb VARCHAR(255), 
    377     tess_id VARCHAR(64), 
    378     end_stage VARCHAR(64), 
    379     epoch TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    380     PRIMARY KEY(fake_id), 
    381     KEY(cam_id), 
    382     KEY(state), 
    383     KEY(label), 
    384     KEY(expgroup), 
    385     KEY(end_stage), 
    386     INDEX(fake_id, cam_id), 
    387     FOREIGN KEY (cam_id) 
    388         REFERENCES camRun(cam_id)) 
     369    fake_id BIGINT AUTO_INCREMENT,
     370    cam_id BIGINT,
     371    state VARCHAR(64),
     372    workdir VARCHAR(255),
     373    label VARCHAR(64),
     374    reduction VARCHAR(64),
     375    expgroup VARCHAR(64),
     376    dvodb VARCHAR(255),
     377    tess_id VARCHAR(64),
     378    end_stage VARCHAR(64),
     379    epoch TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
     380    PRIMARY KEY(fake_id),
     381    KEY(cam_id),
     382    KEY(state),
     383    KEY(label),
     384    KEY(expgroup),
     385    KEY(end_stage),
     386    INDEX(fake_id, cam_id),
     387    FOREIGN KEY (cam_id)
     388        REFERENCES camRun(cam_id))
    389389ENGINE=innodb DEFAULT CHARSET=latin1;
    390390
    391391CREATE TABLE fakeProcessedImfile (
    392     fake_id BIGINT AUTO_INCREMENT, 
    393     exp_id BIGINT, 
    394     class_id VARCHAR(64), 
    395     uri VARCHAR(255), 
    396     dtime_fake FLOAT, 
     392    fake_id BIGINT AUTO_INCREMENT,
     393    exp_id BIGINT,
     394    class_id VARCHAR(64),
     395    uri VARCHAR(255),
     396    dtime_fake FLOAT,
    397397    hostname VARCHAR(64),
    398     path_base VARCHAR(255), 
    399     fault SMALLINT NOT NULL, 
    400     epoch TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    401     PRIMARY KEY(fake_id, exp_id, class_id), 
    402     KEY(fault),
    403     FOREIGN KEY (fake_id) 
     398    path_base VARCHAR(255),
     399    fault SMALLINT NOT NULL,
     400    epoch TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
     401    PRIMARY KEY(fake_id, exp_id, class_id),
     402    KEY(fault),
     403    FOREIGN KEY (fake_id)
    404404        REFERENCES fakeRun(fake_id),
    405     FOREIGN KEY (exp_id, class_id) 
    406         REFERENCES rawImfile(exp_id, class_id)) 
     405    FOREIGN KEY (exp_id, class_id)
     406        REFERENCES rawImfile(exp_id, class_id))
    407407ENGINE=innodb DEFAULT CHARSET=latin1;
    408408
    409409CREATE TABLE fakeMask (
    410     label VARCHAR(64), 
    411     PRIMARY KEY(label)) 
     410    label VARCHAR(64),
     411    PRIMARY KEY(label))
    412412ENGINE=innodb DEFAULT CHARSET=latin1;
    413413
     
    419419    state VARCHAR(64),
    420420    filelevel VARCHAR(64),
    421     workdir VARCHAR(255), 
    422     camera VARCHAR(64), 
    423     telescope VARCHAR(64), 
    424     exp_type VARCHAR(64), 
    425     reduction VARCHAR(64), 
    426     filter VARCHAR(64), 
    427     airmass_min FLOAT, 
    428     airmass_max FLOAT, 
    429     exp_time_min FLOAT, 
    430     exp_time_max FLOAT, 
    431     ccd_temp_min FLOAT, 
    432     ccd_temp_max FLOAT, 
    433     posang_min DOUBLE, 
    434     posang_max DOUBLE, 
    435     registered DATETIME, 
    436     time_begin DATETIME, 
    437     time_end DATETIME, 
    438     use_begin DATETIME, 
    439     use_end DATETIME, 
    440     solang_min FLOAT, 
    441     solang_max FLOAT, 
    442     label VARCHAR(64), 
    443     parent INT, 
    444     PRIMARY KEY(det_id), 
    445     KEY(det_id), 
    446     KEY(iteration), 
    447     KEY(det_type), 
    448     KEY(mode), 
    449     KEY(state), 
    450     KEY(label), 
    451     KEY(parent), 
    452     INDEX(det_id, iteration)) 
     421    workdir VARCHAR(255),
     422    camera VARCHAR(64),
     423    telescope VARCHAR(64),
     424    exp_type VARCHAR(64),
     425    reduction VARCHAR(64),
     426    filter VARCHAR(64),
     427    airmass_min FLOAT,
     428    airmass_max FLOAT,
     429    exp_time_min FLOAT,
     430    exp_time_max FLOAT,
     431    ccd_temp_min FLOAT,
     432    ccd_temp_max FLOAT,
     433    posang_min DOUBLE,
     434    posang_max DOUBLE,
     435    registered DATETIME,
     436    time_begin DATETIME,
     437    time_end DATETIME,
     438    use_begin DATETIME,
     439    use_end DATETIME,
     440    solang_min FLOAT,
     441    solang_max FLOAT,
     442    label VARCHAR(64),
     443    parent INT,
     444    PRIMARY KEY(det_id),
     445    KEY(det_id),
     446    KEY(iteration),
     447    KEY(det_type),
     448    KEY(mode),
     449    KEY(state),
     450    KEY(label),
     451    KEY(parent),
     452    INDEX(det_id, iteration))
    453453ENGINE=innodb DEFAULT CHARSET=latin1;
    454454
    455455CREATE TABLE detInputExp (
    456 det_id BIGINT, 
    457 iteration INT, 
    458 exp_id BIGINT, 
    459 include TINYINT, 
    460 PRIMARY KEY(det_id, iteration, exp_id), 
    461 INDEX(det_id, exp_id), 
    462 INDEX(det_id, iteration), 
    463 FOREIGN KEY (det_id) 
    464 REFERENCES  detRun(det_id), 
    465 FOREIGN KEY (exp_id) 
    466 REFERENCES  rawExp(exp_id)) 
     456det_id BIGINT,
     457iteration INT,
     458exp_id BIGINT,
     459include TINYINT,
     460PRIMARY KEY(det_id, iteration, exp_id),
     461INDEX(det_id, exp_id),
     462INDEX(det_id, iteration),
     463FOREIGN KEY (det_id)
     464REFERENCES  detRun(det_id),
     465FOREIGN KEY (exp_id)
     466REFERENCES  rawExp(exp_id))
    467467ENGINE=innodb DEFAULT CHARSET=latin1;
    468468
    469469CREATE TABLE detProcessedImfile (
    470470    det_id BIGINT,
    471     exp_id BIGINT, 
    472     class_id VARCHAR(64), 
    473     uri VARCHAR(255), 
    474     recipe VARCHAR(64), 
    475     bg DOUBLE, 
    476     bg_stdev DOUBLE, 
    477     bg_mean_stdev DOUBLE, 
    478     fringe_0 DOUBLE, 
    479     fringe_1 DOUBLE, 
    480     fringe_2 DOUBLE, 
    481     user_1 DOUBLE, 
    482     user_2 DOUBLE, 
    483     user_3 DOUBLE, 
    484     user_4 DOUBLE, 
    485     user_5 DOUBLE, 
    486     path_base VARCHAR(255), 
    487     fault SMALLINT NOT NULL, 
    488     PRIMARY KEY(det_id, exp_id, class_id), 
    489     KEY(fault), 
    490     INDEX(det_id, class_id), 
    491     INDEX(det_id, exp_id), 
    492     FOREIGN KEY (det_id, exp_id) 
    493         REFERENCES  detInputExp(det_id, exp_id), 
    494     FOREIGN KEY (exp_id, class_id) 
     471    exp_id BIGINT,
     472    class_id VARCHAR(64),
     473    uri VARCHAR(255),
     474    recipe VARCHAR(64),
     475    bg DOUBLE,
     476    bg_stdev DOUBLE,
     477    bg_mean_stdev DOUBLE,
     478    fringe_0 DOUBLE,
     479    fringe_1 DOUBLE,
     480    fringe_2 DOUBLE,
     481    user_1 DOUBLE,
     482    user_2 DOUBLE,
     483    user_3 DOUBLE,
     484    user_4 DOUBLE,
     485    user_5 DOUBLE,
     486    path_base VARCHAR(255),
     487    fault SMALLINT NOT NULL,
     488    PRIMARY KEY(det_id, exp_id, class_id),
     489    KEY(fault),
     490    INDEX(det_id, class_id),
     491    INDEX(det_id, exp_id),
     492    FOREIGN KEY (det_id, exp_id)
     493        REFERENCES  detInputExp(det_id, exp_id),
     494    FOREIGN KEY (exp_id, class_id)
    495495        REFERENCES  rawImfile(exp_id, class_id)
    496496) ENGINE=innodb DEFAULT CHARSET=latin1;
    497497
    498498CREATE TABLE detProcessedExp (
    499     det_id BIGINT, 
    500     exp_id BIGINT, 
    501     recipe VARCHAR(64), 
    502     bg DOUBLE, 
    503     bg_stdev DOUBLE, 
    504     bg_mean_stdev DOUBLE, 
    505     fringe_0 DOUBLE, 
    506     fringe_1 DOUBLE, 
    507     fringe_2 DOUBLE, 
    508     user_1 DOUBLE, 
    509     user_2 DOUBLE, 
    510     user_3 DOUBLE, 
    511     user_4 DOUBLE, 
    512     user_5 DOUBLE, 
    513     path_base VARCHAR(255), 
    514     fault SMALLINT NOT NULL, 
    515     PRIMARY KEY(det_id, exp_id), 
    516     KEY(fault), 
    517     FOREIGN KEY (det_id, exp_id) 
    518         REFERENCES  detInputExp(det_id, exp_id), 
    519     FOREIGN KEY (det_id, exp_id) 
     499    det_id BIGINT,
     500    exp_id BIGINT,
     501    recipe VARCHAR(64),
     502    bg DOUBLE,
     503    bg_stdev DOUBLE,
     504    bg_mean_stdev DOUBLE,
     505    fringe_0 DOUBLE,
     506    fringe_1 DOUBLE,
     507    fringe_2 DOUBLE,
     508    user_1 DOUBLE,
     509    user_2 DOUBLE,
     510    user_3 DOUBLE,
     511    user_4 DOUBLE,
     512    user_5 DOUBLE,
     513    path_base VARCHAR(255),
     514    fault SMALLINT NOT NULL,
     515    PRIMARY KEY(det_id, exp_id),
     516    KEY(fault),
     517    FOREIGN KEY (det_id, exp_id)
     518        REFERENCES  detInputExp(det_id, exp_id),
     519    FOREIGN KEY (det_id, exp_id)
    520520        REFERENCES  detProcessedImfile(det_id, exp_id)
    521521) ENGINE=innodb DEFAULT CHARSET=latin1;
     
    528528    recipe VARCHAR(64),
    529529    bg DOUBLE,
    530     bg_stdev DOUBLE, 
    531     bg_mean_stdev DOUBLE, 
    532     user_1 DOUBLE, 
    533     user_2 DOUBLE, 
    534     user_3 DOUBLE, 
    535     user_4 DOUBLE, 
    536     user_5 DOUBLE, 
    537     fault SMALLINT NOT NULL, 
    538     PRIMARY KEY(det_id, iteration, class_id), 
    539     KEY(fault), 
    540     FOREIGN KEY (det_id, iteration) 
    541         REFERENCES  detInputExp(det_id, iteration), 
    542     FOREIGN KEY (det_id, class_id) 
     530    bg_stdev DOUBLE,
     531    bg_mean_stdev DOUBLE,
     532    user_1 DOUBLE,
     533    user_2 DOUBLE,
     534    user_3 DOUBLE,
     535    user_4 DOUBLE,
     536    user_5 DOUBLE,
     537    fault SMALLINT NOT NULL,
     538    PRIMARY KEY(det_id, iteration, class_id),
     539    KEY(fault),
     540    FOREIGN KEY (det_id, iteration)
     541        REFERENCES  detInputExp(det_id, iteration),
     542    FOREIGN KEY (det_id, class_id)
    543543        REFERENCES  detProcessedImfile(det_id, class_id)
    544544) ENGINE=innodb DEFAULT CHARSET=latin1;
    545545
    546546CREATE TABLE detNormalizedStatImfile (
    547     det_id BIGINT, 
    548     iteration INT, 
    549     class_id VARCHAR(64), 
    550     norm FLOAT, 
    551     fault SMALLINT NOT NULL, 
    552     PRIMARY KEY(det_id, iteration, class_id), 
    553     KEY(fault), 
    554     FOREIGN KEY (det_id, iteration) 
    555     REFERENCES  detInputExp(det_id, iteration), 
    556     FOREIGN KEY (det_id, iteration, class_id) 
     547    det_id BIGINT,
     548    iteration INT,
     549    class_id VARCHAR(64),
     550    norm FLOAT,
     551    fault SMALLINT NOT NULL,
     552    PRIMARY KEY(det_id, iteration, class_id),
     553    KEY(fault),
     554    FOREIGN KEY (det_id, iteration)
     555    REFERENCES  detInputExp(det_id, iteration),
     556    FOREIGN KEY (det_id, iteration, class_id)
    557557    REFERENCES  detStackedImfile(det_id, iteration, class_id)
    558558) ENGINE=innodb DEFAULT CHARSET=latin1;
    559559
    560560CREATE TABLE detNormalizedImfile (
    561     det_id BIGINT, 
    562     iteration INT, 
    563     class_id VARCHAR(64), 
    564     uri VARCHAR(255), 
    565     bg DOUBLE, 
    566     bg_stdev DOUBLE, 
    567     bg_mean_stdev DOUBLE, 
    568     user_1 DOUBLE, 
    569     user_2 DOUBLE, 
    570     user_3 DOUBLE, 
    571     user_4 DOUBLE, 
    572     user_5 DOUBLE, 
    573     path_base VARCHAR(255), 
    574     fault SMALLINT NOT NULL, 
    575     PRIMARY KEY(det_id, iteration, class_id), 
    576     KEY(fault), 
    577     INDEX(det_id, iteration), 
    578     FOREIGN KEY (det_id) 
    579     REFERENCES  detInputExp(det_id), 
    580     FOREIGN KEY (det_id, iteration, class_id) 
     561    det_id BIGINT,
     562    iteration INT,
     563    class_id VARCHAR(64),
     564    uri VARCHAR(255),
     565    bg DOUBLE,
     566    bg_stdev DOUBLE,
     567    bg_mean_stdev DOUBLE,
     568    user_1 DOUBLE,
     569    user_2 DOUBLE,
     570    user_3 DOUBLE,
     571    user_4 DOUBLE,
     572    user_5 DOUBLE,
     573    path_base VARCHAR(255),
     574    fault SMALLINT NOT NULL,
     575    PRIMARY KEY(det_id, iteration, class_id),
     576    KEY(fault),
     577    INDEX(det_id, iteration),
     578    FOREIGN KEY (det_id)
     579    REFERENCES  detInputExp(det_id),
     580    FOREIGN KEY (det_id, iteration, class_id)
    581581    REFERENCES  detNormalizedStatImfile(det_id, iteration, class_id)
    582582) ENGINE=innodb DEFAULT CHARSET=latin1;
    583583
    584584CREATE TABLE detNormalizedExp (
    585     det_id BIGINT, 
    586     iteration INT, 
    587     recipe VARCHAR(64), 
    588     bg DOUBLE, 
    589     bg_stdev DOUBLE, 
    590     bg_mean_stdev DOUBLE, 
    591     user_1 DOUBLE, 
    592     user_2 DOUBLE, 
    593     user_3 DOUBLE, 
    594     user_4 DOUBLE, 
    595     user_5 DOUBLE, 
    596     path_base VARCHAR(255), 
    597     fault SMALLINT NOT NULL, 
    598     PRIMARY KEY(det_id, iteration), 
    599     KEY(fault), 
    600     FOREIGN KEY (det_id, iteration) 
    601     REFERENCES  detInputExp(det_id, iteration), 
    602     FOREIGN KEY (det_id, iteration) 
     585    det_id BIGINT,
     586    iteration INT,
     587    recipe VARCHAR(64),
     588    bg DOUBLE,
     589    bg_stdev DOUBLE,
     590    bg_mean_stdev DOUBLE,
     591    user_1 DOUBLE,
     592    user_2 DOUBLE,
     593    user_3 DOUBLE,
     594    user_4 DOUBLE,
     595    user_5 DOUBLE,
     596    path_base VARCHAR(255),
     597    fault SMALLINT NOT NULL,
     598    PRIMARY KEY(det_id, iteration),
     599    KEY(fault),
     600    FOREIGN KEY (det_id, iteration)
     601    REFERENCES  detInputExp(det_id, iteration),
     602    FOREIGN KEY (det_id, iteration)
    603603    REFERENCES  detNormalizedImfile(det_id, iteration)
    604604) ENGINE=innodb DEFAULT CHARSET=latin1;
    605605
    606606CREATE TABLE detResidImfile (
    607     det_id BIGINT, 
    608     iteration INT, 
    609     exp_id BIGINT, 
    610     class_id VARCHAR(64), 
    611     uri VARCHAR(255), 
    612     recipe VARCHAR(64), 
    613     bg DOUBLE, 
    614     bg_stdev DOUBLE, 
    615     bg_mean_stdev DOUBLE, 
    616     bg_skewness DOUBLE, 
    617     bg_kurtosis DOUBLE, 
    618     bin_stdev DOUBLE, 
    619     fringe_0 DOUBLE, 
    620     fringe_1 DOUBLE, 
    621     fringe_2 DOUBLE, 
    622     fringe_resid_0 DOUBLE, 
    623     fringe_resid_1 DOUBLE, 
    624     fringe_resid_2 DOUBLE, 
     607    det_id BIGINT,
     608    iteration INT,
     609    exp_id BIGINT,
     610    class_id VARCHAR(64),
     611    uri VARCHAR(255),
     612    recipe VARCHAR(64),
     613    bg DOUBLE,
     614    bg_stdev DOUBLE,
     615    bg_mean_stdev DOUBLE,
     616    bg_skewness DOUBLE,
     617    bg_kurtosis DOUBLE,
     618    bin_stdev DOUBLE,
     619    fringe_0 DOUBLE,
     620    fringe_1 DOUBLE,
     621    fringe_2 DOUBLE,
     622    fringe_resid_0 DOUBLE,
     623    fringe_resid_1 DOUBLE,
     624    fringe_resid_2 DOUBLE,
    625625    user_1 DOUBLE,
    626     user_2 DOUBLE, 
    627     user_3 DOUBLE, 
    628     user_4 DOUBLE, 
    629     user_5 DOUBLE, 
    630     path_base VARCHAR(255), 
    631     fault SMALLINT NOT NULL, 
    632     PRIMARY KEY(det_id, iteration, exp_id, class_id), 
    633     KEY(fault), 
    634     INDEX(det_id, iteration, exp_id), 
    635     FOREIGN KEY (det_id, iteration, exp_id) 
    636     REFERENCES  detInputExp(det_id, iteration, exp_id), 
    637     FOREIGN KEY (det_id, exp_id, class_id) 
    638     REFERENCES  detProcessedImfile(det_id, exp_id, class_id), 
    639     FOREIGN KEY (det_id, iteration) 
     626    user_2 DOUBLE,
     627    user_3 DOUBLE,
     628    user_4 DOUBLE,
     629    user_5 DOUBLE,
     630    path_base VARCHAR(255),
     631    fault SMALLINT NOT NULL,
     632    PRIMARY KEY(det_id, iteration, exp_id, class_id),
     633    KEY(fault),
     634    INDEX(det_id, iteration, exp_id),
     635    FOREIGN KEY (det_id, iteration, exp_id)
     636    REFERENCES  detInputExp(det_id, iteration, exp_id),
     637    FOREIGN KEY (det_id, exp_id, class_id)
     638    REFERENCES  detProcessedImfile(det_id, exp_id, class_id),
     639    FOREIGN KEY (det_id, iteration)
    640640    REFERENCES  detNormalizedExp(det_id, iteration)
    641641) ENGINE=innodb DEFAULT CHARSET=latin1;
     
    646646
    647647CREATE TABLE warpRun (
    648     warp_id BIGINT AUTO_INCREMENT, 
    649     fake_id BIGINT, 
    650     mode VARCHAR(64), 
    651     state VARCHAR(64), 
    652     workdir VARCHAR(255), 
    653     workdir_state VARCHAR(64), 
    654     label VARCHAR(64), 
    655     dvodb VARCHAR(255), 
    656     tess_id VARCHAR(64), 
    657     end_stage VARCHAR(64), 
    658     registered DATETIME, 
    659     magiced TINYINT, 
    660     PRIMARY KEY(warp_id), 
    661     KEY(warp_id), 
    662     KEY(fake_id), 
    663     KEY(mode), 
    664     KEY(state), 
    665     KEY(workdir_state), 
    666     KEY(label), 
    667     KEY(end_stage), 
    668     KEY(magiced), 
    669     INDEX(warp_id, fake_id), 
    670     FOREIGN KEY (fake_id) 
     648    warp_id BIGINT AUTO_INCREMENT,
     649    fake_id BIGINT,
     650    mode VARCHAR(64),
     651    state VARCHAR(64),
     652    workdir VARCHAR(255),
     653    workdir_state VARCHAR(64),
     654    label VARCHAR(64),
     655    dvodb VARCHAR(255),
     656    tess_id VARCHAR(64),
     657    end_stage VARCHAR(64),
     658    registered DATETIME,
     659    magiced TINYINT,
     660    PRIMARY KEY(warp_id),
     661    KEY(warp_id),
     662    KEY(fake_id),
     663    KEY(mode),
     664    KEY(state),
     665    KEY(workdir_state),
     666    KEY(label),
     667    KEY(end_stage),
     668    KEY(magiced),
     669    INDEX(warp_id, fake_id),
     670    FOREIGN KEY (fake_id)
    671671        REFERENCES fakeRun(fake_id)
    672672) ENGINE=innodb DEFAULT CHARSET=latin1;
     
    685685
    686686CREATE TABLE warpSkyfile (
    687     warp_id BIGINT, 
    688     skycell_id VARCHAR(64), 
    689     tess_id VARCHAR(64), 
    690     uri VARCHAR(255), 
    691     path_base VARCHAR(255), 
    692     bg DOUBLE, 
    693     bg_stdev DOUBLE, 
    694     dtime_warp FLOAT, 
    695     hostname VARCHAR(64), 
    696     good_frac FLOAT, 
    697     xmin INT, 
    698     xmax INT, 
    699     ymin INT, 
    700     ymax INT, 
    701     ignored TINYINT, 
    702     fault SMALLINT, 
    703     PRIMARY KEY(warp_id, skycell_id, tess_id), 
    704     KEY(good_frac), 
    705     KEY(ignored), KEY(fault), 
    706     FOREIGN KEY (warp_id, skycell_id, tess_id) 
     687    warp_id BIGINT,
     688    skycell_id VARCHAR(64),
     689    tess_id VARCHAR(64),
     690    uri VARCHAR(255),
     691    path_base VARCHAR(255),
     692    bg DOUBLE,
     693    bg_stdev DOUBLE,
     694    dtime_warp FLOAT,
     695    hostname VARCHAR(64),
     696    good_frac FLOAT,
     697    xmin INT,
     698    xmax INT,
     699    ymin INT,
     700    ymax INT,
     701    ignored TINYINT,
     702    fault SMALLINT,
     703    PRIMARY KEY(warp_id, skycell_id, tess_id),
     704    KEY(good_frac),
     705    KEY(ignored), KEY(fault),
     706    FOREIGN KEY (warp_id, skycell_id, tess_id)
    707707        REFERENCES warpSkyCellMap(warp_id, skycell_id, tess_id)
    708708) ENGINE=innodb DEFAULT CHARSET=latin1;
     
    714714
    715715CREATE TABLE stackRun (
    716         stack_id BIGINT AUTO_INCREMENT,
    717         state VARCHAR(64),
    718         workdir VARCHAR(255),
    719         dvodb VARCHAR(255),
    720         registered DATETIME,
    721         skycell_id VARCHAR(64),
    722         tess_id VARCHAR(64),
    723         filter VARCHAR(64),
    724         PRIMARY KEY(stack_id),
    725         KEY(stack_id),
    726         KEY(state),
    727         KEY(skycell_id),
    728         KEY(tess_id)
     716        stack_id BIGINT AUTO_INCREMENT,
     717        state VARCHAR(64),
     718        workdir VARCHAR(255),
     719        dvodb VARCHAR(255),
     720        registered DATETIME,
     721        skycell_id VARCHAR(64),
     722        tess_id VARCHAR(64),
     723        filter VARCHAR(64),
     724        PRIMARY KEY(stack_id),
     725        KEY(stack_id),
     726        KEY(state),
     727        KEY(skycell_id),
     728        KEY(tess_id)
    729729) ENGINE=innodb DEFAULT CHARSET=latin1;
    730730
    731731CREATE TABLE stackInputSkyfile (
    732         stack_id BIGINT,
    733         warp_id BIGINT,
    734         PRIMARY KEY(stack_id, warp_id),
    735         FOREIGN KEY (stack_id)  REFERENCES  stackRun(stack_id),
    736         FOREIGN KEY (warp_id)  REFERENCES  warpSkyfile(warp_id)
     732        stack_id BIGINT,
     733        warp_id BIGINT,
     734        PRIMARY KEY(stack_id, warp_id),
     735        FOREIGN KEY (stack_id)  REFERENCES  stackRun(stack_id),
     736        FOREIGN KEY (warp_id)  REFERENCES  warpSkyfile(warp_id)
    737737) ENGINE=innodb DEFAULT CHARSET=latin1;
    738738
    739739CREATE TABLE stackSumSkyfile (
    740         stack_id BIGINT,
    741         uri VARCHAR(255),
    742         path_base VARCHAR(255),
    743         bg DOUBLE,
    744         bg_stdev DOUBLE,
    745         dtime_stack FLOAT,
    746         hostname VARCHAR(64),
    747         good_frac FLOAT,
    748         fault SMALLINT,
    749         PRIMARY KEY(stack_id),
    750         KEY(dtime_stack),
    751         KEY(good_frac),
    752         KEY(fault),
    753         FOREIGN KEY (stack_id)  REFERENCES  stackRun(stack_id)
     740        stack_id BIGINT,
     741        uri VARCHAR(255),
     742        path_base VARCHAR(255),
     743        bg DOUBLE,
     744        bg_stdev DOUBLE,
     745        dtime_stack FLOAT,
     746        hostname VARCHAR(64),
     747        good_frac FLOAT,
     748        fault SMALLINT,
     749        PRIMARY KEY(stack_id),
     750        KEY(dtime_stack),
     751        KEY(good_frac),
     752        KEY(fault),
     753        FOREIGN KEY (stack_id)  REFERENCES  stackRun(stack_id)
    754754) ENGINE=innodb DEFAULT CHARSET=latin1;
    755755
    756756CREATE TABLE diffRun (
    757         diff_id BIGINT AUTO_INCREMENT,
    758         state VARCHAR(64),
    759         workdir VARCHAR(255),
    760         dvodb VARCHAR(255),
    761         registered DATETIME,
    762         skycell_id VARCHAR(64),
    763         tess_id VARCHAR(64),
    764         PRIMARY KEY(diff_id),
    765         KEY(diff_id),
    766         KEY(state),
    767         KEY(skycell_id),
    768         KEY(tess_id)
     757        diff_id BIGINT AUTO_INCREMENT,
     758        state VARCHAR(64),
     759        workdir VARCHAR(255),
     760        dvodb VARCHAR(255),
     761        registered DATETIME,
     762        skycell_id VARCHAR(64),
     763        tess_id VARCHAR(64),
     764        PRIMARY KEY(diff_id),
     765        KEY(diff_id),
     766        KEY(state),
     767        KEY(skycell_id),
     768        KEY(tess_id)
    769769) ENGINE=innodb DEFAULT CHARSET=latin1;
    770770
    771771CREATE TABLE diffInputSkyfile (
    772         diff_id BIGINT,
    773         template TINYINT,
    774         stack_id BIGINT,
    775         warp_id BIGINT,
    776         skycell_id VARCHAR(64),
    777         tess_id VARCHAR(64),
    778         kind VARCHAR(64),
    779         PRIMARY KEY(diff_id, template),
    780         KEY(stack_id),
    781         KEY(warp_id),
    782         KEY(skycell_id),
    783         KEY(tess_id),
    784         KEY(kind),
    785         FOREIGN KEY (diff_id)  REFERENCES  diffRun(diff_id),
    786         FOREIGN KEY (stack_id)  REFERENCES  stackSumSkyfile(stack_id),
    787         FOREIGN KEY (warp_id, skycell_id, tess_id)  REFERENCES  warpSkyfile(warp_id, skycell_id, tess_id)
     772        diff_id BIGINT,
     773        template TINYINT,
     774        stack_id BIGINT,
     775        warp_id BIGINT,
     776        skycell_id VARCHAR(64),
     777        tess_id VARCHAR(64),
     778        kind VARCHAR(64),
     779        PRIMARY KEY(diff_id, template),
     780        KEY(stack_id),
     781        KEY(warp_id),
     782        KEY(skycell_id),
     783        KEY(tess_id),
     784        KEY(kind),
     785        FOREIGN KEY (diff_id)  REFERENCES  diffRun(diff_id),
     786        FOREIGN KEY (stack_id)  REFERENCES  stackSumSkyfile(stack_id),
     787        FOREIGN KEY (warp_id, skycell_id, tess_id)  REFERENCES  warpSkyfile(warp_id, skycell_id, tess_id)
    788788) ENGINE=innodb DEFAULT CHARSET=latin1;
    789789
    790790CREATE TABLE diffSkyfile (
    791         diff_id BIGINT,
    792         uri VARCHAR(255),
    793         path_base VARCHAR(255),
    794         bg DOUBLE,
    795         bg_stdev DOUBLE,
    796         stamps_num INT,
    797         stamps_rms FLOAT,
    798         sources INT,
    799         dtime_diff FLOAT,
    800         hostname VARCHAR(64),
    801         good_frac FLOAT,
    802         fault SMALLINT,
    803         PRIMARY KEY(diff_id),
    804         KEY(good_frac),
    805         KEY(fault),
    806         FOREIGN KEY (diff_id)  REFERENCES  diffRun(diff_id)
     791        diff_id BIGINT,
     792        uri VARCHAR(255),
     793        path_base VARCHAR(255),
     794        bg DOUBLE,
     795        bg_stdev DOUBLE,
     796        stamps_num INT,
     797        stamps_rms FLOAT,
     798        sources INT,
     799        dtime_diff FLOAT,
     800        hostname VARCHAR(64),
     801        good_frac FLOAT,
     802        fault SMALLINT,
     803        PRIMARY KEY(diff_id),
     804        KEY(good_frac),
     805        KEY(fault),
     806        FOREIGN KEY (diff_id)  REFERENCES  diffRun(diff_id)
    807807) ENGINE=innodb DEFAULT CHARSET=latin1;
    808808
    809809CREATE TABLE magicRun (
    810         magic_id BIGINT AUTO_INCREMENT,
    811         state VARCHAR(64),
    812         workdir VARCHAR(255),
    813         workdir_state VARCHAR(255),
    814         label VARCHAR(64),
    815         dvodb VARCHAR(255),
    816         registered DATETIME,
    817         fault SMALLINT,
    818         PRIMARY KEY(magic_id),
    819         KEY(magic_id),
    820         KEY(state),
    821         KEY(workdir_state),
    822         KEY(label),
    823         KEY(fault)
     810        magic_id BIGINT AUTO_INCREMENT,
     811        exp_id BIGINT,
     812        state VARCHAR(64),
     813        workdir VARCHAR(255),
     814        workdir_state VARCHAR(255),
     815        label VARCHAR(64),
     816        dvodb VARCHAR(255),
     817        registered DATETIME,
     818        fault SMALLINT,
     819        PRIMARY KEY(magic_id),
     820        KEY(magic_id),
     821        KEY(state),
     822        KEY(workdir_state),
     823        KEY(label),
     824        KEY(fault),
     825        FOREIGN KEY (exp_id)  REFERENCES  rawExp(exp_id)
    824826) ENGINE=innodb DEFAULT CHARSET=latin1;
    825827
    826828CREATE TABLE magicInputSkyfile (
    827         magic_id BIGINT,
    828         diff_id BIGINT,
    829         node VARCHAR(64),
    830         PRIMARY KEY(magic_id, diff_id),
    831         FOREIGN KEY (magic_id)  REFERENCES  magicRun(magic_id),
    832         FOREIGN KEY (diff_id)  REFERENCES  diffRun(diff_id)
     829        magic_id BIGINT,
     830        diff_id BIGINT,
     831        node VARCHAR(64),
     832        PRIMARY KEY(magic_id, diff_id),
     833        FOREIGN KEY (magic_id)  REFERENCES  magicRun(magic_id),
     834        FOREIGN KEY (diff_id)  REFERENCES  diffRun(diff_id)
    833835) ENGINE=innodb DEFAULT CHARSET=latin1;
    834836
    835837CREATE TABLE magicTree (
    836         magic_id BIGINT,
    837         node VARCHAR(64),
    838         dep VARCHAR(64),
    839         KEY(magic_id),
    840         KEY(node),
    841         KEY(dep),
    842         INDEX(magic_id, node),
    843         FOREIGN KEY (magic_id)  REFERENCES  magicRun(magic_id)
     838        magic_id BIGINT,
     839        node VARCHAR(64),
     840        dep VARCHAR(64),
     841        KEY(magic_id),
     842        KEY(node),
     843        KEY(dep),
     844        INDEX(magic_id, node),
     845        FOREIGN KEY (magic_id)  REFERENCES  magicRun(magic_id)
    844846) ENGINE=innodb DEFAULT CHARSET=latin1;
    845847
    846848CREATE TABLE magicNodeResult (
    847         magic_id BIGINT,
    848         node VARCHAR(64),
    849         uri VARCHAR(255),
    850         fault SMALLINT,
    851         PRIMARY KEY(magic_id, node),
    852         FOREIGN KEY (magic_id)  REFERENCES  magicRun(magic_id),
    853         FOREIGN KEY (magic_id, node)  REFERENCES  magicTree(magic_id, node),
    854         KEY(fault)
     849        magic_id BIGINT,
     850        node VARCHAR(64),
     851        uri VARCHAR(255),
     852        fault SMALLINT,
     853        PRIMARY KEY(magic_id, node),
     854        FOREIGN KEY (magic_id)  REFERENCES  magicRun(magic_id),
     855        FOREIGN KEY (magic_id, node)  REFERENCES  magicTree(magic_id, node),
     856        KEY(fault)
    855857) ENGINE=innodb DEFAULT CHARSET=latin1;
    856858
    857859CREATE TABLE magicMask (
    858         magic_id BIGINT,
    859         uri VARCHAR(255),
    860         streaks INT,
    861         fault SMALLINT,
    862         PRIMARY KEY(magic_id),
    863         FOREIGN KEY (magic_id)  REFERENCES  magicRun(magic_id),
    864         KEY(fault)
    865 ) ENGINE=innodb DEFAULT CHARSET=latin1;
    866 
    867 CREATE TABLE calDB (cal_id BIGINT AUTO_INCREMENT, dvodb VARCHAR(64), state VARCHAR(64), PRIMARY KEY(cal_id), KEY(cal_id)) ENGINE=innodb DEFAULT CHARSET=latin1;
    868 CREATE TABLE calRun (cal_id BIGINT AUTO_INCREMENT, region VARCHAR(64), last_step VARCHAR(64), state VARCHAR(64), PRIMARY KEY(cal_id), KEY(cal_id), KEY(last_step), FOREIGN KEY (cal_id)  REFERENCES  calDB(cal_id)) ENGINE=innodb DEFAULT CHARSET=latin1;
    869 CREATE TABLE flatcorrRun (corr_id BIGINT AUTO_INCREMENT, dvodb VARCHAR(64), filter VARCHAR(64), state VARCHAR(64), workdir VARCHAR(255), label VARCHAR(64), stats VARCHAR(255), region VARCHAR(255), PRIMARY KEY(corr_id), KEY(corr_id)) ENGINE=innodb DEFAULT CHARSET=latin1;
    870 CREATE TABLE flatcorrExp (corr_id BIGINT, chip_id BIGINT, PRIMARY KEY(corr_id, chip_id), FOREIGN KEY (corr_id)  REFERENCES  flatcorrRun(corr_id), FOREIGN KEY (chip_id)  REFERENCES  chipRun(chip_id)) ENGINE=innodb DEFAULT CHARSET=latin1;
    871 CREATE TABLE pstampDataStore (ds_id BIGINT AUTO_INCREMENT, state VARCHAR(64), lastFileset VARCHAR(64), outProduct VARCHAR(64) UNIQUE, uri VARCHAR(255), PRIMARY KEY(ds_id), KEY(ds_id)) ENGINE=innodb DEFAULT CHARSET=latin1;
    872 CREATE TABLE pstampRequest (req_id BIGINT AUTO_INCREMENT, ds_id BIGINT, state VARCHAR(64), outFileset VARCHAR(64) UNIQUE, uri VARCHAR(255), resultsFile SMALLINT, PRIMARY KEY(req_id), KEY(req_id)) ENGINE=innodb DEFAULT CHARSET=latin1;
    873 CREATE TABLE pstampJob (job_id BIGINT AUTO_INCREMENT, req_id BIGINT, state VARCHAR(64), jobType VARCHAR(16), result INT, uri VARCHAR(255), outputBase VARCHAR(255), args VARCHAR(511), PRIMARY KEY(job_id, req_id), KEY(job_id), FOREIGN KEY (req_id)  REFERENCES  pstampRequest(req_id)) ENGINE=innodb DEFAULT CHARSET=latin1
     860        magic_id BIGINT,
     861        uri VARCHAR(255),
     862        streaks INT,
     863        fault SMALLINT,
     864        PRIMARY KEY(magic_id),
     865        FOREIGN KEY (magic_id)  REFERENCES  magicRun(magic_id),
     866        KEY(fault)
     867) ENGINE=innodb DEFAULT CHARSET=latin1;
     868
     869CREATE TABLE calDB (
     870        cal_id BIGINT AUTO_INCREMENT,
     871        dvodb VARCHAR(64),
     872        state VARCHAR(64),
     873        PRIMARY KEY(cal_id),
     874        KEY(cal_id)
     875) ENGINE=innodb DEFAULT CHARSET=latin1;
     876
     877CREATE TABLE calRun (
     878        cal_id BIGINT AUTO_INCREMENT,
     879        region VARCHAR(64),
     880        last_step VARCHAR(64),
     881        state VARCHAR(64),
     882        PRIMARY KEY(cal_id),
     883        KEY(cal_id),
     884        KEY(last_step),
     885        FOREIGN KEY (cal_id)  REFERENCES  calDB(cal_id)
     886) ENGINE=innodb DEFAULT CHARSET=latin1;
     887
     888CREATE TABLE flatcorrRun (
     889        corr_id BIGINT AUTO_INCREMENT,
     890        dvodb VARCHAR(64),
     891        filter VARCHAR(64),
     892        state VARCHAR(64),
     893        workdir VARCHAR(255),
     894        label VARCHAR(64),
     895        stats VARCHAR(255),
     896        region VARCHAR(255),
     897        PRIMARY KEY(corr_id),
     898        KEY(corr_id)
     899) ENGINE=innodb DEFAULT CHARSET=latin1;
     900
     901CREATE TABLE flatcorrExp (
     902        corr_id BIGINT,
     903        chip_id BIGINT,
     904        PRIMARY KEY(corr_id, chip_id),
     905        FOREIGN KEY (corr_id)  REFERENCES  flatcorrRun(corr_id),
     906        FOREIGN KEY (chip_id)  REFERENCES  chipRun(chip_id)
     907) ENGINE=innodb DEFAULT CHARSET=latin1;
     908
     909CREATE TABLE pstampDataStore (
     910        ds_id BIGINT AUTO_INCREMENT,
     911        state VARCHAR(64),
     912        lastFileset VARCHAR(64),
     913        outProduct VARCHAR(64) UNIQUE,
     914        uri VARCHAR(255),
     915        PRIMARY KEY(ds_id),
     916        KEY(ds_id)
     917) ENGINE=innodb DEFAULT CHARSET=latin1;
     918
     919CREATE TABLE pstampRequest (
     920        req_id BIGINT AUTO_INCREMENT,
     921        ds_id BIGINT,
     922        state VARCHAR(64),
     923        name VARCHAR(64) UNIQUE,
     924        reqType VARCHAR(16),
     925        outProduct VARCHAR(64),
     926        uri VARCHAR(255),
     927        fault SMALLINT,
     928        PRIMARY KEY(req_id),
     929        KEY(req_id)
     930) ENGINE=innodb DEFAULT CHARSET=latin1;
     931
     932CREATE TABLE pstampJob (
     933        job_id BIGINT AUTO_INCREMENT,
     934        req_id BIGINT,
     935        rownum VARCHAR(64),
     936        state VARCHAR(64),
     937        jobType VARCHAR(16),
     938        fault SMALLINT,
     939        uri VARCHAR(255),
     940        outputBase VARCHAR(255),
     941        args VARCHAR(511),
     942        PRIMARY KEY(job_id, req_id),
     943        KEY(job_id),
     944        FOREIGN KEY (req_id)  REFERENCES  pstampRequest(req_id)
     945) ENGINE=innodb DEFAULT CHARSET=latin1
  • branches/eam_branch_20080719/ippTools/share/warptool_tooverlap.sql

    r18644 r18923  
    77    rawExp.camera,
    88    exp_id,
     9    exp_tag,
    910    warpRun.magiced
    1011FROM warpRun
  • branches/eam_branch_20080719/ippTools/src/chiptool.c

    r18561 r18923  
    522522    psMetadata *where = psMetadataAlloc();
    523523    PXOPT_COPY_S64(config->args, where, "-chip_id", "chipRun.chip_id", "==");
    524     PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.chip_id", "==");
    525     PXOPT_COPY_STR(config->args, where, "-class_id", "rawImfile.class_id", "==");
    526     PXOPT_COPY_STR(config->args, where, "-inst", "rawExp.telescope", "==");
     524    PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "==");
     525    PXOPT_COPY_STR(config->args, where, "-class_id", "chipProcessedImfile.class_id", "==");
     526    PXOPT_COPY_STR(config->args, where, "-inst", "rawExp.camera", "==");
    527527    PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "==");
    528528
     
    534534
    535535    if (where && psListLength(where->list)) {
    536         psString whereClause = psDBGenerateWhereConditionSQL(where, "chipProcessedImfile");
     536        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
    537537        psStringAppend(&query, " AND %s", whereClause);
    538538        psFree(whereClause);
     
    628628    PXOPT_COPY_F32(config->args, where, "-solang_min", "solang", ">=");
    629629    PXOPT_COPY_F32(config->args, where, "-solang_max", "solang", "<");
     630    PXOPT_COPY_S16(config->args, where, "-code", "fault", "=");
    630631
    631632    if (!psListLength(where->list)
     
    782783        return false;
    783784    }
    784    
     785
    785786    if (where) {
    786787        psString whereClause = psDBGenerateWhereSQL(where, "chipUnmask");
  • branches/eam_branch_20080719/ippTools/src/difftool.c

    r18659 r18923  
    652652
    653653// Generate a single populated run
    654 static bool populatedrun(const char *workdir, // Working directory
     654static bool populatedrun(psArray *list, // List of runs, to print
     655                         const char *workdir, // Working directory
    655656                         const char *skycell_id, // Skycell identifier
    656657                         const char *tess_id, // Tessellation identifier
     
    759760    }
    760761
    761     if (!diffRunPrintObject(stdout, run, !simple)) {
    762             psError(PS_ERR_UNKNOWN, false, "failed to print object");
    763             psFree(run);
    764             return false;
     762    if (list) {
     763        psArrayAdd(list, list->n, run);
    765764    }
    766765
     
    782781    PXOPT_LOOKUP_S64(input_warp_id, config->args, "-input_warp_id", false, false);
    783782    PXOPT_LOOKUP_S64(input_stack_id, config->args, "-input_stack_id", false, false);
     783    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    784784
    785785    if (template_stack_id && template_warp_id) {
     
    803803    }
    804804
    805     return populatedrun(workdir, skycell_id, tess_id,
    806                         input_warp_id ? input_warp_id : PS_MAX_S64,
    807                         input_stack_id ? input_stack_id : PS_MAX_S64,
    808                         template_warp_id ? template_warp_id : PS_MAX_S64,
    809                         template_stack_id ? template_stack_id : PS_MAX_S64,
    810                         config);
     805    psArray *list = psArrayAllocEmpty(16); // List of runs, to print
     806
     807    if (!populatedrun(list, workdir, skycell_id, tess_id,
     808                      input_warp_id ? input_warp_id : PS_MAX_S64,
     809                      input_stack_id ? input_stack_id : PS_MAX_S64,
     810                      template_warp_id ? template_warp_id : PS_MAX_S64,
     811                      template_stack_id ? template_stack_id : PS_MAX_S64,
     812                      config)) {
     813        psError(PS_ERR_UNKNOWN, false, "failed to create populated diffRun");
     814        psFree(list);
     815        return false;
     816    }
     817
     818    if (!diffRunPrintObjects(stdout, list, !simple)) {
     819            psError(PS_ERR_UNKNOWN, false, "failed to print object");
     820            psFree(list);
     821            return false;
     822    }
     823    psFree(list);
    811824
    812825    return true;
     
    820833    psMetadata *where = psMetadataAlloc();
    821834
    822     PXOPT_COPY_S64(config->args, where,  "-diff_id", "diff_id", "==");
    823835    PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "==");
    824836    PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id", "==");
    825     PXOPT_COPY_STR(config->args, where,  "-tess_id", "tess_id", "==");
     837    PXOPT_COPY_STR(config->args, where, "-tess_id", "tess_id", "==");
     838    PXOPT_COPY_STR(config->args, where, "-filter", "filter", "==");
    826839    PXOPT_COPY_STR(config->args, where,  "-kind", "kind", "==");
     840    PXOPT_COPY_F32(config->args, where,  "-good_frac", "good_frac", ">=");
    827841    PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); // required options
    828842    PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false);
    829     PXOPT_LOOKUP_BOOL(template, config->args, "-template", false);
    830843    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     844    PXOPT_LOOKUP_BOOL(newTemplates, config->args, "-new-templates", false);
    831845
    832846    // find all things to queue
    833     psString query = pxDataGet("difftool_queue.sql");
     847    psString query = pxDataGet("difftool_definebyquery.sql");
    834848    if (!query) {
    835849        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     
    837851    }
    838852
    839     if (template) {
    840         // list only faulted rows
    841         psStringAppend(&query, " %s", " AND diffInputSkyfile.template != 0");
     853    if (newTemplates) {
     854        // Warps that haven't been diffed OR warps that can take a newer template in the diff
     855        psStringAppend(&query, " WHERE (diff_id IS NULL OR best_stack_id > current_stack_id)");
    842856    } else {
    843         // don't list faulted rows
    844         psStringAppend(&query, " %s",
    845                        " AND (diffInputSkyfile.template = 0 OR diffInputSkyfile.template IS NULL)");
     857        // Only warps that haven't been diffed
     858        psStringAppend(&query, " WHERE diff_id IS NULL");
    846859    }
    847860
    848861    if (psListLength(where->list)) {
    849         psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     862        psString whereClause = psDBGenerateWhereConditionSQL(where, "warpsToDiff");
    850863        psStringAppend(&query, " AND %s", whereClause);
    851864        psFree(whereClause);
     
    880893    }
    881894
     895    psArray *list = psArrayAllocEmpty(16); // List of runs, to print
    882896    long numGood = 0;                   // Number of good rows added
    883897    for (long i = 0; i < output->n; i++) {
     
    896910            continue;
    897911        }
    898         psS64 stack_id = psMetadataLookupS64(&mdok, row, "stack_id");
     912        psS64 stack_id = psMetadataLookupS64(&mdok, row, "best_stack_id");
    899913        if (!mdok) {
    900914            psWarning("stack_id not found --- ignoring row %ld", i);
     
    907921        }
    908922
    909         if (!populatedrun(workdir, skycell_id, tess_id, warp_id, PS_MAX_S64, PS_MAX_S64, stack_id, config)) {
     923        if (!populatedrun(list, workdir, skycell_id, tess_id, warp_id, PS_MAX_S64, PS_MAX_S64,
     924                          stack_id, config)) {
    910925            psWarning("Unable to add run for %s,%s,%" PRId64 ",%" PRId64, skycell_id, tess_id,
    911926                      warp_id, stack_id);
     
    916931        numGood++;
    917932    }
    918 
    919     psLogMsg("difftool", PS_LOG_INFO, "%ld runs added.", numGood);
    920 
    921933    psFree(output);
     934
     935    if (!diffRunPrintObjects(stdout, list, !simple)) {
     936        psError(PS_ERR_UNKNOWN, false, "failed to print object");
     937        psFree(list);
     938        return false;
     939    }
     940    psFree(list);
    922941
    923942    return true;
  • branches/eam_branch_20080719/ippTools/src/faketool.c

    r18659 r18923  
    341341
    342342    psMetadata *where = psMetadataAlloc();
    343     PXOPT_COPY_STR(config->args, where, "-fake_id", "fake_id", "==");
    344     PXOPT_COPY_STR(config->args, where, "-cam_id", "cam_id", "==");
    345     PXOPT_COPY_STR(config->args, where, "-chip_id", "chip_id", "==");
     343    PXOPT_COPY_S64(config->args, where, "-fake_id", "fake_id", "==");
     344    PXOPT_COPY_S64(config->args, where, "-cam_id", "cam_id", "==");
     345    PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "==");
    346346
    347347    psString query = pxDataGet("faketool_find_pendingexp.sql");
     
    798798        return false;
    799799    }
    800    
     800
    801801    if (where) {
    802802        psString whereClause = psDBGenerateWhereSQL(where, "fakeUnmask");
  • branches/eam_branch_20080719/ippTools/src/faketoolConfig.c

    r18376 r18923  
    233233    // -pendingexp
    234234    psMetadata *pendingexpArgs = psMetadataAlloc();
     235    psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-fake_id", 0,
     236            "search by fake ID", 0);
    235237    psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-cam_id", 0,
    236238            "search by camtool ID", 0);
  • branches/eam_branch_20080719/ippTools/src/magictool.c

    r18573 r18923  
    110110    PS_ASSERT_PTR_NON_NULL(config, false);
    111111
     112    // Required
    112113    PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", false, false);
     114
     115    // Optional
    113116    PXOPT_LOOKUP_STR(label, config->args, "-label", false, false);
    114117    PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false);
    115118    PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false);
    116 
    117     // create warped skycells temp table
     119    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     120
     121    // Create temporary table of the best diffs
    118122    {
    119         psString query = pxDataGet("magictool_create_tmp_warpcomplete.sql");
     123        psString query = pxDataGet("magictool_definebyquery_temp_create.sql");
    120124        if (!query) {
    121125            psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     
    127131            return false;
    128132        }
    129     }
    130 
    131     // find warped skycells
     133        psFree(query);
     134    }
     135
     136    // Insert list of best diffs into temporary table
    132137    {
    133         psString query = pxDataGet("magictool_find_complete_warpruns.sql");
     138        psString query = pxDataGet("magictool_definebyquery_temp_insert.sql");
    134139        if (!query) {
    135140            psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
    136141            return false;
    137142        }
     143
     144        psMetadata *where = psMetadataAlloc();
     145        PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     146        PXOPT_COPY_F32(config->args, where, "-good_frac", "warpSkyfile.good_frac", ">=");
     147
     148        if (psListLength(where->list)) {
     149            psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     150            psStringAppend(&query, " AND %s", whereClause);
     151            psFree(whereClause);
     152        }
     153        psFree(where);
     154
     155        psString groupby = pxDataGet("magictool_definebyquery_temp_insert_groupby.sql");
     156        if (!groupby) {
     157            psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     158            psFree(query);
     159            return false;
     160        }
     161
     162        psStringAppend(&query, " %s", groupby);
     163        psFree(groupby);
    138164
    139165        if (!p_psDBRunQuery(config->dbh, query)) {
     
    145171    }
    146172
    147     // find the diff_id's of the warped skycells
     173    // Get list of exposures ready to magic
    148174    {
    149         psString query = pxDataGet("magictool_find_complete_diffed_exposures.sql");
     175        psString query = pxDataGet("magictool_definebyquery_select_part1.sql");
    150176        if (!query) {
    151177            psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
    152178            return false;
    153179        }
     180
     181        {
     182            psMetadata *where = psMetadataAlloc();
     183            PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     184            PXOPT_COPY_F32(config->args, where, "-good_frac", "warpSkyfile.good_frac", ">=");
     185
     186            if (psListLength(where->list)) {
     187                psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     188                psStringAppend(&query, " AND %s", whereClause);
     189                psFree(whereClause);
     190            }
     191            psFree(where);
     192        }
     193
     194        psString part2 = pxDataGet("magictool_definebyquery_select_part2.sql");
     195        if (!part2) {
     196            psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     197            return false;
     198        }
     199
     200        psStringAppend(&query, " %s", part2);
     201        psFree(part2);
    154202
    155203        if (!p_psDBRunQuery(config->dbh, query)) {
     
    180228    }
    181229
    182     // pre-allocate enough hash buckets for 1 unique warp_id per row
    183     psHash *groups = psHashAlloc(psArrayLength(output));
    184     // iterate over result set, and group by warp_id
     230    if (!psDBTransaction(config->dbh)) {
     231        psError(PS_ERR_UNKNOWN, false, "database error");
     232        return false;
     233    }
     234
     235    psString insert = pxDataGet("magictool_definebyquery_insert.sql"); // Insert query
     236
     237    psArray *list = psArrayAllocEmpty(16); // List of runs, to print
    185238    for (long i = 0; i < psArrayLength(output); i++) {
    186         // lookup the key we're grouping by
    187         bool status = false;
    188         psS64 warp_id = psMetadataLookupS64(&status, output->data[i], "warp_id");
    189         if (!status) {
    190             psAbort("failed to lookup value for warp_id");
    191         }
    192 
    193         psString key = psDBIntToString(warp_id);
    194         // look to see if there is a bin for this key
    195         psArray *groupBin = psHashLookup(groups, key);
    196         if (!groupBin) {
    197             // if not, create one
    198             groupBin = psArrayAlloc(0);
    199             psHashAdd(groups, key, groupBin);
    200         }
    201         psFree(key);
    202 
    203         // add this row to the bin
    204         psArrayAdd(groupBin, 0, output->data[i]);
    205         psFree(groupBin);
    206     }
    207     psFree(output);
    208 
    209     // create a magic run
    210     psArray *grouped =  psHashToArray(groups);
    211     psFree(groups);
    212 
    213     // iterate over array of grouped warp_ids
    214     for (long i = 0; i < psArrayLength(grouped); i++) {
    215         psArray *group = grouped->data[i];
     239        psMetadata *row = output->data[i]; // Row of interest
     240        psS64 exp_id = psMetadataLookupS64(NULL, row, "exp_id"); // Exposure identifier
    216241
    217242        // create a new magicRun for this group
    218         magicRunRow *run = magicRunRowAlloc(
    219             0,                          // ID
    220             "reg",                      // state
    221             workdir,                    // workdir
    222             "dirty",                    // workdir_state
    223             label,                      // label
    224             dvodb,                      // dvodb
    225             registered,                 // registered
    226             0                           // fault
    227             );
     243        magicRunRow *run = magicRunRowAlloc(0, exp_id, "run", workdir, "dirty", label, dvodb, registered, 0);
    228244        if (!run) {
    229245            psAbort("failed to alloc magicRun object");
    230246        }
     247
    231248        if (!magicRunInsertObject(config->dbh, run)) {
    232249            psError(PS_ERR_UNKNOWN, false, "database error");
    233250            psFree(run);
    234             psFree(grouped);
    235             return false;
    236         }
    237 
    238         // get the assigned warp_id
    239         psS64 magic_id = psDBLastInsertID(config->dbh);
    240 
    241         // insert all rows in this bin into the new magicRun
    242         for (long j = 0; j < psArrayLength(group); j++) {
    243             psMetadata *row = group->data[j];
    244 
    245             bool status = false;
    246             psS64 diff_id = psMetadataLookupS64(&status, row, "diff_id");
    247             if (!status) {
    248                 psAbort("failed to lookup value for diff_id");
     251            psFree(insert);
     252            psFree(output);
     253            psFree(list);
     254            if (!psDBRollback(config->dbh)) {
     255                psError(PS_ERR_UNKNOWN, false, "database error");
    249256            }
    250             psString node = psMetadataLookupStr(&status, row, "skycell_id");
    251             if (!status) {
    252                 psAbort("failed to lookup value for diff_id");
     257            return false;
     258        }
     259
     260        psS64 magic_id = psDBLastInsertID(config->dbh); // Assigned identifier
     261        run->magic_id = magic_id;
     262
     263        psArrayAdd(list, list->n, run);
     264        psFree(run);
     265
     266        // Create a suitable insertion query for this run
     267        psString thisInsert = psStringCopy(insert);
     268        {
     269            psString idString = NULL;
     270            psStringAppend(&idString, "%" PRId64, magic_id);
     271            psStringSubstitute(&thisInsert, idString, "@MAGIC_ID@");
     272            psFree(idString);
     273        }
     274        {
     275            psString idString = NULL;
     276            psStringAppend(&idString, "%" PRId64, exp_id);
     277            psStringSubstitute(&thisInsert, idString, "@EXP_ID@");
     278            psFree(idString);
     279        }
     280
     281        if (!p_psDBRunQuery(config->dbh, thisInsert, magic_id, exp_id)) {
     282            psError(PS_ERR_UNKNOWN, false, "database error");
     283            psFree(thisInsert);
     284            psFree(insert);
     285            psFree(output);
     286            psFree(list);
     287            if (!psDBRollback(config->dbh)) {
     288                psError(PS_ERR_UNKNOWN, false, "database error");
    253289            }
    254 
    255             if (!magicInputSkyfileInsert(config->dbh,
    256                                          magic_id,
    257                                          diff_id,
    258                                          node)) {
    259                 psError(PS_ERR_UNKNOWN, false, "database error");
    260                 psFree(grouped);
    261                 return false;
    262             }
    263         }
    264 
    265         // set magicRun.state to 'run'
    266         return setmagicRunState(config, magic_id, "run");
    267     }
    268     psFree(grouped);
     290            return false;
     291        }
     292        psFree(thisInsert);
     293    }
     294
     295    if (!psDBCommit(config->dbh)) {
     296        psError(PS_ERR_UNKNOWN, false, "database error");
     297        return false;
     298    }
     299    psFree(output);
     300
     301    if (!magicRunPrintObjects(stdout, list, !simple)) {
     302        psError(PS_ERR_UNKNOWN, false, "failed to print object");
     303        psFree(list);
     304        return false;
     305    }
     306
     307    psFree(list);
    269308
    270309    return true;
     
    277316    // required
    278317    PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false);
     318    PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", true, false);
    279319
    280320    // optional
     
    286326    magicRunRow *run = magicRunRowAlloc(
    287327            0,          // ID
     328            exp_id,
    288329            "reg",      // state
    289330            workdir,
     
    658699    }
    659700
     701    if (!node->data) {
     702        // It's a leaf node, not done
     703        return false;
     704    }
     705
    660706    if (psMetadataLookupBool(NULL, node->data, "done")) {
    661707        // It's already done
     
    671717        while ((child = psListGetAndIncrement(iter))) {
    672718            psMetadata *data = child->data;
     719            if (!data) {
     720                // Child is a leaf node, not done
     721                psFree(iter);
     722                psFree(work);
     723                return false;
     724            }
    673725
    674726            bool status = false;
     
    812864
    813865    // find the root of the tree
    814     pxNode *root = psHashLookup(forest, "root");
     866    pxNode *root = psMemIncrRefCounter(psHashLookup(forest, "root"));
    815867    psFree(forest);
    816     // pxTreePrint(stdout, root);
     868    //    pxTreePrint(stdout, root);
    817869
    818870    // crawl through the tree and looking for nodes with children that are all
  • branches/eam_branch_20080719/ippTools/src/magictoolConfig.c

    r18573 r18923  
    4848
    4949    // -definebyquery
    50     psMetadata *queueArgs = psMetadataAlloc();
    51     psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-workdir",     0, "define workdir (required)", NULL);
    52     psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-label",       0, "define label", NULL);
    53     psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-dvodb",       0, "define dvodb", NULL);
    54     psMetadataAddTime(queueArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now);
     50    psMetadata *definebyqueryArgs = psMetadataAlloc();
     51    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-workdir",     0, "define workdir (required)", NULL);
     52    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label",       0, "define label", NULL);
     53    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-dvodb",       0, "define dvodb", NULL);
     54    psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now);
     55    psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-exp_id", 0, "search exp_id", 0);
     56    psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-good_frac", 0, "limit good_frac", NAN);
     57    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
    5558
    5659    // -definerun
    5760    psMetadata *definerunArgs = psMetadataAlloc();
    5861    psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL);
     62    psMetadataAddS64(definerunArgs, PS_LIST_TAIL, "-exp_id", 0, "define exp_id (required)", 0);
    5963    psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL);
    6064    psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-dvodb", 0, "define dvodb", NULL);
     
    152156    psMetadata *modes   = psMetadataAlloc();
    153157
    154     PXOPT_ADD_MODE("-definebyquery",   "", MAGICTOOL_MODE_DEFINEBYQUERY,   queueArgs);
     158    PXOPT_ADD_MODE("-definebyquery",   "", MAGICTOOL_MODE_DEFINEBYQUERY,   definebyqueryArgs);
    155159    PXOPT_ADD_MODE("-definerun",       "", MAGICTOOL_MODE_DEFINERUN,       definerunArgs);
    156160    PXOPT_ADD_MODE("-updaterun",       "", MAGICTOOL_MODE_UPDATERUN,       updaterunArgs);
  • branches/eam_branch_20080719/ippTools/src/pstamptool.c

    r18622 r18923  
    250250
    251251    psMetadata *where = psMetadataAlloc();
    252     PXOPT_COPY_STR(config->args, where, "-ds_id", "ds_id", "==");
     252    PXOPT_COPY_STR(config->args, where, "-req_id", "req_id", "==");
    253253
    254254    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     
    625625
    626626    psMetadata *where = psMetadataAlloc();
    627     PXOPT_COPY_S64(config->args, where, "-cam_id", "cam_id", "==");
    628 
     627
     628    PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "==");
    629629    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
    630630    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
  • branches/eam_branch_20080719/ippTools/src/pstamptoolConfig.c

    r18561 r18923  
    119119    // -pendingjob
    120120    psMetadata *pendingjobArgs = psMetadataAlloc();
    121     psMetadataAddStr(pendingjobArgs, PS_LIST_TAIL, "-job_id", 0,            "define job", NULL);
     121    psMetadataAddS64(pendingjobArgs, PS_LIST_TAIL, "-job_id", 0,            "define job", 0);
    122122    psMetadataAddU64(pendingjobArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
    123123    psMetadataAddBool(pendingjobArgs, PS_LIST_TAIL, "-simple", 0,            "use the simple output format", false);
  • branches/eam_branch_20080719/ippTools/src/pxadmin.c

    r18622 r18923  
    128128        psString dbName = psMetadataLookupStr(&status, config->modules->complete, "DBNAME");
    129129
    130         fprintf (stdout, "*** delete the chip tables from database %s? ***\n", dbName);
    131         fprintf (stdout, "*** to delete the tables, answer YES, and give password ***\n");
    132         fprintf (stdout, "*** WARNING: this action is permanent ***\n\n");
    133 
    134         fprintf (stdout, "delete the chip tables (YES/[n]): ");
    135         fgets (line, 128, stdin);
    136         sscanf (line, "%s", answer);
     130        fprintf(stdout, "*** delete the tables from database %s? ***\n", dbName);
     131        fprintf(stdout, "*** to delete the tables, answer YES, and give password ***\n");
     132        fprintf(stdout, "*** WARNING: this action is permanent ***\n\n");
     133
     134        fprintf(stdout, "delete the tables (YES/[n]): ");
     135        if (!fgets(line, 128, stdin)) {
     136            psError(PS_ERR_IO, true, "Unable to read response.");
     137            return false;
     138        }
     139        sscanf(line, "%s", answer);
    137140        if (strcmp (answer, "YES"))  {
    138141            psError(PS_ERR_UNKNOWN, true, "tables NOT deleleted");
     
    140143        }
    141144
    142         fprintf (stdout, "enter dbh connection password: ");
    143         fgets (line, 128, stdin);
    144         sscanf (line, "%s", answer);
     145        fprintf(stdout, "enter dbh connection password: ");
     146        if (!fgets(line, 128, stdin)) {
     147            psError(PS_ERR_IO, true, "Unable to read response.");
     148            return false;
     149        }
     150        sscanf(line, "%s", answer);
    145151
    146152        psString dbPassword = psMetadataLookupStr(&status, config->modules->complete, "DBPASSWORD");
  • branches/eam_branch_20080719/ippTools/src/pxtree.c

    r18622 r18923  
    8888                                              ?  node->parent->name
    8989                                              : NULL);
    90     psListIterator *iter = psListIteratorAlloc(node->children, 0, false);                                         
     90    psListIterator *iter = psListIteratorAlloc(node->children, 0, false);
    9191    pxNode *child = NULL;
    9292    while ((child = psListGetAndIncrement(iter))) {
     
    120120    }
    121121
    122     psListIterator *iter = psListIteratorAlloc(node->children, 0, false);                                         
     122    psListIterator *iter = psListIteratorAlloc(node->children, 0, false);
    123123    pxNode *child = NULL;
    124124    while ((child = psListGetAndIncrement(iter))) {
     
    215215        // get from a hashlookup
    216216        psFree(node);
     217    } else if (!node->data) {
     218        pxNodeAddData(node, data);
    217219    }
    218220
  • branches/eam_branch_20080719/ippTools/src/pzgetexp.c

    r18622 r18923  
    7474    PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false);
    7575
     76    //optional
     77    PXOPT_LOOKUP_S32(timeout, config->args, "-timeout", false, false);
     78    PXOPT_LOOKUP_BOOL(all, config->args, "-all", false);
     79
    7680    // find last fileset/exp_name (if we have one)
    7781    bool haveLastFileSet = false;
    7882    psString lastFileSet = NULL;
    79     {
     83
     84    // -all means "request all known filesets"
     85    if (!all) {
    8086        char *query = "SELECT * from summitExp WHERE camera = \"%s\" and TELESCOPE = \"%s\" ORDER BY dateobs DESC LIMIT 1";
    8187        if (!p_psDBRunQuery(config->dbh, query, camera, telescope)) {
     
    110116    } else {
    111117        psStringAppend(&cmd, "%s --uri %s", PRODUCT_LS_CMD, uri);
     118    }
     119    if (timeout) {
     120        psStringAppend(&cmd, " --timeout %d", timeout);
    112121    }
    113122
  • branches/eam_branch_20080719/ippTools/src/pzgetexpConfig.c

    r18622 r18923  
    22 * pzgetexpConfig.c
    33 *
    4  * Copyright (C) 2006  Joshua Hoblitt
     4 * Copyright (C) 2006-2008  Joshua Hoblitt
    55 *
    66 * This program is free software; you can redistribute it and/or modify it
     
    5151    psMetadataAddStr(args , PS_LIST_TAIL, "-telescope",  0,
    5252        "telescope name (required)", "");
     53    psMetadataAddS32(args, PS_LIST_TAIL, "-timeout",  0,
     54        "HTTP timeout", 0);
     55    psMetadataAddBool(args, PS_LIST_TAIL, "-all",  0,
     56        "download ALL filesets", 0);
     57
    5358
    5459    bool status = false;
     
    6166        fprintf(stderr, "error parsing arguments\n");
    6267        printf("\nPan-STARRS Phase Z Get Exposures Tool\n");
    63         printf("Usage: %s -uri <uri> -inst <camera> -telescope <telescope>\n\n",
     68        printf("Usage: %s -uri <uri> -inst <camera> -telescope <telescope> [-timeout <n>]\n\n",
    6469            argv[0]);
    6570        psArgumentHelp(args);
  • branches/eam_branch_20080719/ippTools/src/stacktool.c

    r18659 r18923  
    107107    psMetadata *whereRE = psMetadataAlloc(); // rawExp where
    108108    psMetadata *whereWSF = psMetadataAlloc(); // warpSkyfile where
    109     psMetadata *having = psMetadataAlloc(); // having
     109    psMetadata *having = psMetadataAlloc(); // HAVING clause
    110110    // map -inst -> camera, etc
    111111    PXOPT_COPY_STR(config->args, whereRE, "-select_inst", "camera", "==");
     
    128128
    129129    PXOPT_COPY_STR(config->args, having, "-select_skycell_id", "skycell_id", "==");
     130    PXOPT_COPY_S32(config->args, having, "-min_num", "num_warp", ">=");
    130131
    131132    PXOPT_LOOKUP_S32(randomLimit, config->args, "-random", false, false);
    132133
    133     PXOPT_COPY_S32(config->args, having, "-min_num", "num_warp", ">=");
    134     PXOPT_COPY_S32(config->args, having, "-min_new", "(num_warp - num_stack)", ">=");
    135 
     134    PXOPT_LOOKUP_S32(min_new, config->args, "-min_new", false, false);
    136135    PXOPT_LOOKUP_F32(min_frac, config->args, "-min_frac", false, false);
    137136
     
    178177    psFree(groupby);
    179178
    180     if (psListLength(having->list)) {
    181         psString havingClause = psDBGenerateWhereConditionSQL(having, NULL);
    182         psStringAppend(&select, " HAVING %s", havingClause);
    183         psFree(havingClause);
    184     }
    185 
    186     // Gotta handle this one explicitly --- want to avoid divisions
    187     if (isfinite(min_frac)) {
     179    // Restriction on aggregated quantities using HAVING
     180    {
     181        psString havingClause = NULL;   // HAVING string
    188182        if (psListLength(having->list)) {
    189             psStringAppend(&select, " AND");
    190         } else {
    191             psStringAppend(&select, " HAVING");
    192         }
    193         psStringAppend(&select, " num_warp >= %f * num_stack", (double)min_frac);
    194     }
    195 
     183            havingClause = psDBGenerateWhereConditionSQL(having, NULL);
     184        }
     185
     186        if (min_new > 0) {
     187            if (havingClause) {
     188                psStringAppend(&havingClause, " AND");
     189            }
     190            psStringAppend(&havingClause,
     191                           " (num_warp - num_stack >= %d OR (num_warp >= %d AND num_stack IS NULL))",
     192                           min_new, min_new);
     193        }
     194        if (isfinite(min_frac)) {
     195            if (havingClause) {
     196                psStringAppend(&havingClause, " AND");
     197            }
     198            // Avoiding division by zero
     199            psStringAppend(&havingClause, " (num_warp >= %f * num_stack OR num_stack IS NULL)",
     200                           (double)min_frac);
     201        }
     202        if (havingClause) {
     203            psStringAppend(&select, " HAVING %s", havingClause);
     204            psFree(havingClause);
     205        }
     206    }
    196207    psFree(having);
     208
    197209
    198210    if (!p_psDBRunQuery(config->dbh, select)) {
     
    239251    }
    240252
     253    psArray *list = psArrayAllocEmpty(16); // List of runs, to print
    241254    for (long i = 0; i < output->n; i++) {
    242255        psMetadata *row = output->data[i]; // Row from select
     
    249262            psFree(output);
    250263            psFree(insert);
     264            psFree(list);
    251265            if (!psDBRollback(config->dbh)) {
    252266                psError(PS_ERR_UNKNOWN, false, "database error");
     
    260274            psFree(output);
    261275            psFree(insert);
     276            psFree(list);
    262277            if (!psDBRollback(config->dbh)) {
    263278                psError(PS_ERR_UNKNOWN, false, "database error");
     
    271286            psFree(output);
    272287            psFree(insert);
     288            psFree(list);
    273289            if (!psDBRollback(config->dbh)) {
    274290                psError(PS_ERR_UNKNOWN, false, "database error");
     
    296312            psFree(run);
    297313            psFree(insert);
     314            psFree(list);
    298315            if (!psDBRollback(config->dbh)) {
    299316                psError(PS_ERR_UNKNOWN, false, "database error");
     
    306323        run->stack_id = stack_id;
    307324
    308         if (!stackRunPrintObject(stdout, run, !simple)) {
    309             psError(PS_ERR_UNKNOWN, false, "failed to print object");
    310             psFree(run);
    311             psFree(insert);
    312             if (!psDBRollback(config->dbh)) {
    313                 psError(PS_ERR_UNKNOWN, false, "database error");
    314             }
    315             return false;
    316         }
     325        psArrayAdd(list, list->n, run);
    317326        psFree(run);
    318327
     
    331340            psFree(insert);
    332341            psFree(output);
     342            psFree(list);
    333343            if (!psDBRollback(config->dbh)) {
    334344                psError(PS_ERR_UNKNOWN, false, "database error");
     
    338348        psFree(thisInsert);
    339349    }
     350    psFree(output);
    340351
    341352    if (!psDBCommit(config->dbh)) {
    342353        psError(PS_ERR_UNKNOWN, false, "database error");
    343         return false;
    344     }
    345 
    346     psFree(output);
     354        psFree(list);
     355        return false;
     356    }
     357
     358    if (!stackRunPrintObjects(stdout, list, !simple)) {
     359        psError(PS_ERR_UNKNOWN, false, "failed to print object");
     360        return false;
     361    }
     362
     363    psFree(list);
    347364
    348365    return true;
Note: See TracChangeset for help on using the changeset viewer.