IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Aug 2, 2006, 4:32:20 PM (20 years ago)
Author:
jhoblitt
Message:

VERSION 0.0.8

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/jhoblitt/ippdb/src/ippdb.c

    r8079 r8084  
    51305130static void newExpRowFree(newExpRow *object);
    51315131
    5132 newExpRow *newExpRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *class)
     5132newExpRow *newExpRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles)
    51335133{
    51345134    newExpRow       *object;
     
    51425142    object->exp_type = psStringCopy(exp_type);
    51435143    object->imfiles = imfiles;
    5144     object->class = psStringCopy(class);
    51455144
    51465145    return object;
     
    51535152    psFree(object->telescope);
    51545153    psFree(object->exp_type);
    5155     psFree(object->class);
    51565154}
    51575155
     
    51925190        return false;
    51935191    }
    5194     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "64")) {
    5195         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    5196         psFree(md);
    5197         return false;
    5198     }
    51995192
    52005193    status = psDBCreateTable(dbh, NEWEXP_TABLE_NAME, md);
     
    52105203}
    52115204
    5212 bool newExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *class)
     5205bool newExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles)
    52135206{
    52145207    psMetadata      *md;
     
    52415234        return false;
    52425235    }
    5243     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, class)) {
    5244         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    5245         psFree(md);
    5246         return false;
    5247     }
    52485236
    52495237    status = psDBInsertOneRow(dbh, NEWEXP_TABLE_NAME, md);
     
    52535241}
    52545242
    5255 bool newExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **class)
     5243bool newExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles)
    52565244{
    52575245    psArray         *rowSet;
     
    53275315        return false;
    53285316    }
    5329     *class = psMetadataLookupPtr(&status, row, "class");
    5330     if (!status) {
    5331         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
    5332         psFree(row);
    5333         return false;
    5334     }
    53355317
    53365318    psFree(row);
     
    53415323bool newExpInsertObject(psDB *dbh, newExpRow *object)
    53425324{
    5343     return newExpInsert(dbh, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles, object->class);
     5325    return newExpInsert(dbh, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles);
    53445326}
    53455327
     
    53515333    char            exp_type[256];
    53525334    psS32           imfiles;
    5353     char            class[256];
    5354 
    5355     if (!newExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&class)) {
     5335
     5336    if (!newExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles)) {
    53565337        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
    53575338        return NULL;
    53585339    }
    53595340
    5360     return newExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, class);
     5341    return newExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles);
    53615342}
    53625343
     
    54825463        return NULL;
    54835464    }
    5484     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, object->class)) {
    5485         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    5486         psFree(md);
    5487         return NULL;
    5488     }
    54895465
    54905466    return md;
     
    54995475    char            *exp_type;
    55005476    psS32           imfiles;
    5501     char            *class;
    55025477
    55035478    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
     
    55265501        return false;
    55275502    }
    5528     class = psMetadataLookupPtr(&status, md, "class");
    5529     if (!status) {
    5530         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
    5531         return false;
    5532     }
    5533 
    5534     return newExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, class);
     5503
     5504    return newExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles);
    55355505}
    55365506psArray *newExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    59915961static void rawDetrendExpRowFree(rawDetrendExpRow *object);
    59925962
    5993 rawDetrendExpRow *rawDetrendExpRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF32 ra, psF32 dec, psF32 exp_time)
     5963rawDetrendExpRow *rawDetrendExpRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF64 ra, psF64 dec, psF32 exp_time, psF64 background)
    59945964{
    59955965    rawDetrendExpRow *object;
     
    60095979    object->dec = dec;
    60105980    object->exp_time = exp_time;
     5981    object->background = background;
    60115982
    60125983    return object;
     
    60746045        return false;
    60756046    }
    6076     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, 0.0)) {
     6047    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, 0.0)) {
    60776048        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    60786049        psFree(md);
    60796050        return false;
    60806051    }
    6081     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, 0.0)) {
     6052    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, 0.0)) {
    60826053        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    60836054        psFree(md);
     
    60896060        return false;
    60906061    }
     6062    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, 0.0)) {
     6063        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
     6064        psFree(md);
     6065        return false;
     6066    }
    60916067
    60926068    status = psDBCreateTable(dbh, RAWDETRENDEXP_TABLE_NAME, md);
     
    61026078}
    61036079
    6104 bool rawDetrendExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF32 ra, psF32 dec, psF32 exp_time)
     6080bool rawDetrendExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF64 ra, psF64 dec, psF32 exp_time, psF64 background)
    61056081{
    61066082    psMetadata      *md;
     
    61486124        return false;
    61496125    }
    6150     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, ra)) {
     6126    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, ra)) {
    61516127        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    61526128        psFree(md);
    61536129        return false;
    61546130    }
    6155     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, dec)) {
     6131    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, dec)) {
    61566132        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    61576133        psFree(md);
     
    61636139        return false;
    61646140    }
     6141    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, background)) {
     6142        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
     6143        psFree(md);
     6144        return false;
     6145    }
    61656146
    61666147    status = psDBInsertOneRow(dbh, RAWDETRENDEXP_TABLE_NAME, md);
     
    61706151}
    61716152
    6172 bool rawDetrendExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **filter, char **class, psF32 *airmass, psF32 *ra, psF32 *dec, psF32 *exp_time)
     6153bool rawDetrendExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **filter, char **class, psF32 *airmass, psF64 *ra, psF64 *dec, psF32 *exp_time, psF64 *background)
    61736154{
    61746155    psArray         *rowSet;
     
    62626243        return false;
    62636244    }
    6264     *ra = psMetadataLookupF32(&status, row, "ra");
     6245    *ra = psMetadataLookupF64(&status, row, "ra");
    62656246    if (!status) {
    62666247        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
     
    62686249        return false;
    62696250    }
    6270     *dec = psMetadataLookupF32(&status, row, "dec");
     6251    *dec = psMetadataLookupF64(&status, row, "dec");
    62716252    if (!status) {
    62726253        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dec");
     
    62806261        return false;
    62816262    }
     6263    *background = psMetadataLookupF64(&status, row, "background");
     6264    if (!status) {
     6265        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item background");
     6266        psFree(row);
     6267        return false;
     6268    }
    62826269
    62836270    psFree(row);
     
    62886275bool rawDetrendExpInsertObject(psDB *dbh, rawDetrendExpRow *object)
    62896276{
    6290     return rawDetrendExpInsert(dbh, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->class, object->airmass, object->ra, object->dec, object->exp_time);
     6277    return rawDetrendExpInsert(dbh, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->class, object->airmass, object->ra, object->dec, object->exp_time, object->background);
    62916278}
    62926279
     
    63016288    char            class[256];
    63026289    psF32           airmass;
    6303     psF32           ra;
    6304     psF32           dec;
     6290    psF64           ra;
     6291    psF64           dec;
    63056292    psF32           exp_time;
    6306 
    6307     if (!rawDetrendExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&filter, (char **)&class, &airmass, &ra, &dec, &exp_time)) {
     6293    psF64           background;
     6294
     6295    if (!rawDetrendExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&filter, (char **)&class, &airmass, &ra, &dec, &exp_time, &background)) {
    63086296        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
    63096297        return NULL;
    63106298    }
    63116299
    6312     return rawDetrendExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time);
     6300    return rawDetrendExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time, background);
    63136301}
    63146302
     
    64496437        return NULL;
    64506438    }
    6451     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, object->ra)) {
     6439    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, object->ra)) {
    64526440        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    64536441        psFree(md);
    64546442        return NULL;
    64556443    }
    6456     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, object->dec)) {
     6444    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, object->dec)) {
    64576445        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    64586446        psFree(md);
     
    64616449    if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, object->exp_time)) {
    64626450        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_time");
     6451        psFree(md);
     6452        return NULL;
     6453    }
     6454    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, object->background)) {
     6455        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
    64636456        psFree(md);
    64646457        return NULL;
     
    64796472    char            *class;
    64806473    psF32           airmass;
    6481     psF32           ra;
    6482     psF32           dec;
     6474    psF64           ra;
     6475    psF64           dec;
    64836476    psF32           exp_time;
     6477    psF64           background;
    64846478
    64856479    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
     
    65236517        return false;
    65246518    }
    6525     ra = psMetadataLookupF32(&status, md, "ra");
     6519    ra = psMetadataLookupF64(&status, md, "ra");
    65266520    if (!status) {
    65276521        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
    65286522        return false;
    65296523    }
    6530     dec = psMetadataLookupF32(&status, md, "dec");
     6524    dec = psMetadataLookupF64(&status, md, "dec");
    65316525    if (!status) {
    65326526        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dec");
     
    65386532        return false;
    65396533    }
    6540 
    6541     return rawDetrendExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time);
     6534    background = psMetadataLookupF64(&status, md, "background");
     6535    if (!status) {
     6536        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item background");
     6537        return false;
     6538    }
     6539
     6540    return rawDetrendExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time, background);
    65426541}
    65436542psArray *rawDetrendExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    65976596static void rawScienceExpRowFree(rawScienceExpRow *object);
    65986597
    6599 rawScienceExpRow *rawScienceExpRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF32 ra, psF32 dec, psF32 exp_time)
     6598rawScienceExpRow *rawScienceExpRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF64 ra, psF64 dec, psF32 exp_time, psF64 background)
    66006599{
    66016600    rawScienceExpRow *object;
     
    66156614    object->dec = dec;
    66166615    object->exp_time = exp_time;
     6616    object->background = background;
    66176617
    66186618    return object;
     
    66806680        return false;
    66816681    }
    6682     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, 0.0)) {
     6682    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, 0.0)) {
    66836683        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    66846684        psFree(md);
    66856685        return false;
    66866686    }
    6687     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, 0.0)) {
     6687    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, 0.0)) {
    66886688        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    66896689        psFree(md);
     
    66956695        return false;
    66966696    }
     6697    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, 0.0)) {
     6698        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
     6699        psFree(md);
     6700        return false;
     6701    }
    66976702
    66986703    status = psDBCreateTable(dbh, RAWSCIENCEEXP_TABLE_NAME, md);
     
    67086713}
    67096714
    6710 bool rawScienceExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF32 ra, psF32 dec, psF32 exp_time)
     6715bool rawScienceExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF64 ra, psF64 dec, psF32 exp_time, psF64 background)
    67116716{
    67126717    psMetadata      *md;
     
    67546759        return false;
    67556760    }
    6756     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, ra)) {
     6761    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, ra)) {
    67576762        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    67586763        psFree(md);
    67596764        return false;
    67606765    }
    6761     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, dec)) {
     6766    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, dec)) {
    67626767        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    67636768        psFree(md);
     
    67696774        return false;
    67706775    }
     6776    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, background)) {
     6777        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
     6778        psFree(md);
     6779        return false;
     6780    }
    67716781
    67726782    status = psDBInsertOneRow(dbh, RAWSCIENCEEXP_TABLE_NAME, md);
     
    67766786}
    67776787
    6778 bool rawScienceExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **filter, char **class, psF32 *airmass, psF32 *ra, psF32 *dec, psF32 *exp_time)
     6788bool rawScienceExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **filter, char **class, psF32 *airmass, psF64 *ra, psF64 *dec, psF32 *exp_time, psF64 *background)
    67796789{
    67806790    psArray         *rowSet;
     
    68686878        return false;
    68696879    }
    6870     *ra = psMetadataLookupF32(&status, row, "ra");
     6880    *ra = psMetadataLookupF64(&status, row, "ra");
    68716881    if (!status) {
    68726882        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
     
    68746884        return false;
    68756885    }
    6876     *dec = psMetadataLookupF32(&status, row, "dec");
     6886    *dec = psMetadataLookupF64(&status, row, "dec");
    68776887    if (!status) {
    68786888        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dec");
     
    68866896        return false;
    68876897    }
     6898    *background = psMetadataLookupF64(&status, row, "background");
     6899    if (!status) {
     6900        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item background");
     6901        psFree(row);
     6902        return false;
     6903    }
    68886904
    68896905    psFree(row);
     
    68946910bool rawScienceExpInsertObject(psDB *dbh, rawScienceExpRow *object)
    68956911{
    6896     return rawScienceExpInsert(dbh, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->class, object->airmass, object->ra, object->dec, object->exp_time);
     6912    return rawScienceExpInsert(dbh, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->class, object->airmass, object->ra, object->dec, object->exp_time, object->background);
    68976913}
    68986914
     
    69076923    char            class[256];
    69086924    psF32           airmass;
    6909     psF32           ra;
    6910     psF32           dec;
     6925    psF64           ra;
     6926    psF64           dec;
    69116927    psF32           exp_time;
    6912 
    6913     if (!rawScienceExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&filter, (char **)&class, &airmass, &ra, &dec, &exp_time)) {
     6928    psF64           background;
     6929
     6930    if (!rawScienceExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&filter, (char **)&class, &airmass, &ra, &dec, &exp_time, &background)) {
    69146931        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
    69156932        return NULL;
    69166933    }
    69176934
    6918     return rawScienceExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time);
     6935    return rawScienceExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time, background);
    69196936}
    69206937
     
    70557072        return NULL;
    70567073    }
    7057     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, object->ra)) {
     7074    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, object->ra)) {
    70587075        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    70597076        psFree(md);
    70607077        return NULL;
    70617078    }
    7062     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, object->dec)) {
     7079    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, object->dec)) {
    70637080        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    70647081        psFree(md);
     
    70677084    if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, object->exp_time)) {
    70687085        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_time");
     7086        psFree(md);
     7087        return NULL;
     7088    }
     7089    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, object->background)) {
     7090        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
    70697091        psFree(md);
    70707092        return NULL;
     
    70857107    char            *class;
    70867108    psF32           airmass;
    7087     psF32           ra;
    7088     psF32           dec;
     7109    psF64           ra;
     7110    psF64           dec;
    70897111    psF32           exp_time;
     7112    psF64           background;
    70907113
    70917114    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
     
    71297152        return false;
    71307153    }
    7131     ra = psMetadataLookupF32(&status, md, "ra");
     7154    ra = psMetadataLookupF64(&status, md, "ra");
    71327155    if (!status) {
    71337156        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
    71347157        return false;
    71357158    }
    7136     dec = psMetadataLookupF32(&status, md, "dec");
     7159    dec = psMetadataLookupF64(&status, md, "dec");
    71377160    if (!status) {
    71387161        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dec");
     
    71447167        return false;
    71457168    }
    7146 
    7147     return rawScienceExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time);
     7169    background = psMetadataLookupF64(&status, md, "background");
     7170    if (!status) {
     7171        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item background");
     7172        return false;
     7173    }
     7174
     7175    return rawScienceExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time, background);
    71487176}
    71497177psArray *rawScienceExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    72037231static void rawImfileRowFree(rawImfileRow *object);
    72047232
    7205 rawImfileRow *rawImfileRowAlloc(const char *exp_id, const char *class, const char *class_id, const char *uri, const char *stats)
     7233rawImfileRow *rawImfileRowAlloc(const char *exp_id, const char *class, const char *class_id, const char *uri)
    72067234{
    72077235    rawImfileRow    *object;
     
    72147242    object->class_id = psStringCopy(class_id);
    72157243    object->uri = psStringCopy(uri);
    7216     object->stats = psStringCopy(stats);
    72177244
    72187245    return object;
     
    72257252    psFree(object->class_id);
    72267253    psFree(object->uri);
    7227     psFree(object->stats);
    72287254}
    72297255
     
    72597285        return false;
    72607286    }
    7261     if (!psMetadataAddStr(md, PS_LIST_TAIL, "stats", 0, NULL, "255")) {
    7262         psError(PS_ERR_UNKNOWN, false, "failed to add item stats");
    7263         psFree(md);
    7264         return false;
    7265     }
    72667287
    72677288    status = psDBCreateTable(dbh, RAWIMFILE_TABLE_NAME, md);
     
    72777298}
    72787299
    7279 bool rawImfileInsert(psDB * dbh, const char *exp_id, const char *class, const char *class_id, const char *uri, const char *stats)
     7300bool rawImfileInsert(psDB * dbh, const char *exp_id, const char *class, const char *class_id, const char *uri)
    72807301{
    72817302    psMetadata      *md;
     
    73037324        return false;
    73047325    }
    7305     if (!psMetadataAddStr(md, PS_LIST_TAIL, "stats", 0, NULL, stats)) {
    7306         psError(PS_ERR_UNKNOWN, false, "failed to add item stats");
    7307         psFree(md);
    7308         return false;
    7309     }
    73107326
    73117327    status = psDBInsertOneRow(dbh, RAWIMFILE_TABLE_NAME, md);
     
    73157331}
    73167332
    7317 bool rawImfilePop(psDB *dbh, char **exp_id, char **class, char **class_id, char **uri, char **stats)
     7333bool rawImfilePop(psDB *dbh, char **exp_id, char **class, char **class_id, char **uri)
    73187334{
    73197335    psArray         *rowSet;
     
    73837399        return false;
    73847400    }
    7385     *stats = psMetadataLookupPtr(&status, row, "stats");
    7386     if (!status) {
    7387         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item stats");
    7388         psFree(row);
    7389         return false;
    7390     }
    73917401
    73927402    psFree(row);
     
    73977407bool rawImfileInsertObject(psDB *dbh, rawImfileRow *object)
    73987408{
    7399     return rawImfileInsert(dbh, object->exp_id, object->class, object->class_id, object->uri, object->stats);
     7409    return rawImfileInsert(dbh, object->exp_id, object->class, object->class_id, object->uri);
    74007410}
    74017411
     
    74067416    char            class_id[256];
    74077417    char            uri[256];
    7408     char            stats[256];
    7409 
    7410     if (!rawImfilePop(dbh, (char **)&exp_id, (char **)&class, (char **)&class_id, (char **)&uri, (char **)&stats)) {
     7418
     7419    if (!rawImfilePop(dbh, (char **)&exp_id, (char **)&class, (char **)&class_id, (char **)&uri)) {
    74117420        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
    74127421        return NULL;
    74137422    }
    74147423
    7415     return rawImfileRowAlloc(exp_id, class, class_id, uri, stats);
     7424    return rawImfileRowAlloc(exp_id, class, class_id, uri);
    74167425}
    74177426
     
    75327541        return NULL;
    75337542    }
    7534     if (!psMetadataAddStr(md, PS_LIST_TAIL, "stats", 0, NULL, object->stats)) {
    7535         psError(PS_ERR_UNKNOWN, false, "failed to add item stats");
    7536         psFree(md);
    7537         return NULL;
    7538     }
    75397543
    75407544    return md;
     
    75487552    char            *class_id;
    75497553    char            *uri;
    7550     char            *stats;
    75517554
    75527555    exp_id = psMetadataLookupPtr(&status, md, "exp_id");
     
    75707573        return false;
    75717574    }
    7572     stats = psMetadataLookupPtr(&status, md, "stats");
    7573     if (!status) {
    7574         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item stats");
    7575         return false;
    7576     }
    7577 
    7578     return rawImfileRowAlloc(exp_id, class, class_id, uri, stats);
     7575
     7576    return rawImfileRowAlloc(exp_id, class, class_id, uri);
    75797577}
    75807578psArray *rawImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    76347632static void p1PendingExpRowFree(p1PendingExpRow *object);
    76357633
    7636 p1PendingExpRow *p1PendingExpRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF32 ra, psF32 dec, psF32 exp_time, const char *recipe, psS32 p1_version)
     7634p1PendingExpRow *p1PendingExpRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 dec, psF32 exp_time, psF64 background, const char *recipe, psS32 p1_version)
    76377635{
    76387636    p1PendingExpRow *object;
     
    76477645    object->imfiles = imfiles;
    76487646    object->filter = psStringCopy(filter);
    7649     object->class = psStringCopy(class);
    76507647    object->airmass = airmass;
    76517648    object->ra = ra;
    76527649    object->dec = dec;
    76537650    object->exp_time = exp_time;
     7651    object->background = background;
    76547652    object->recipe = psStringCopy(recipe);
    76557653    object->p1_version = p1_version;
     
    76657663    psFree(object->exp_type);
    76667664    psFree(object->filter);
    7667     psFree(object->class);
    76687665    psFree(object->recipe);
    76697666}
     
    77107707        return false;
    77117708    }
    7712     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "255")) {
    7713         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    7714         psFree(md);
    7715         return false;
    7716     }
    77177709    if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, 0.0)) {
    77187710        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
     
    77207712        return false;
    77217713    }
    7722     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, 0.0)) {
     7714    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, 0.0)) {
    77237715        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    77247716        psFree(md);
    77257717        return false;
    77267718    }
    7727     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, 0.0)) {
     7719    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, 0.0)) {
    77287720        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    77297721        psFree(md);
     
    77357727        return false;
    77367728    }
     7729    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, 0.0)) {
     7730        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
     7731        psFree(md);
     7732        return false;
     7733    }
    77377734    if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "64")) {
    77387735        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
     
    77587755}
    77597756
    7760 bool p1PendingExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF32 ra, psF32 dec, psF32 exp_time, const char *recipe, psS32 p1_version)
     7757bool p1PendingExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 dec, psF32 exp_time, psF64 background, const char *recipe, psS32 p1_version)
    77617758{
    77627759    psMetadata      *md;
     
    77947791        return false;
    77957792    }
    7796     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, class)) {
    7797         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    7798         psFree(md);
    7799         return false;
    7800     }
    78017793    if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, airmass)) {
    78027794        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
     
    78047796        return false;
    78057797    }
    7806     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, ra)) {
     7798    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, ra)) {
    78077799        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    78087800        psFree(md);
    78097801        return false;
    78107802    }
    7811     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, dec)) {
     7803    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, dec)) {
    78127804        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    78137805        psFree(md);
     
    78197811        return false;
    78207812    }
     7813    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, background)) {
     7814        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
     7815        psFree(md);
     7816        return false;
     7817    }
    78217818    if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, recipe)) {
    78227819        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
     
    78367833}
    78377834
    7838 bool p1PendingExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **filter, char **class, psF32 *airmass, psF32 *ra, psF32 *dec, psF32 *exp_time, char **recipe, psS32 *p1_version)
     7835bool p1PendingExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **filter, psF32 *airmass, psF64 *ra, psF64 *dec, psF32 *exp_time, psF64 *background, char **recipe, psS32 *p1_version)
    78397836{
    78407837    psArray         *rowSet;
     
    79167913        return false;
    79177914    }
    7918     *class = psMetadataLookupPtr(&status, row, "class");
    7919     if (!status) {
    7920         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
    7921         psFree(row);
    7922         return false;
    7923     }
    79247915    *airmass = psMetadataLookupF32(&status, row, "airmass");
    79257916    if (!status) {
     
    79287919        return false;
    79297920    }
    7930     *ra = psMetadataLookupF32(&status, row, "ra");
     7921    *ra = psMetadataLookupF64(&status, row, "ra");
    79317922    if (!status) {
    79327923        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
     
    79347925        return false;
    79357926    }
    7936     *dec = psMetadataLookupF32(&status, row, "dec");
     7927    *dec = psMetadataLookupF64(&status, row, "dec");
    79377928    if (!status) {
    79387929        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dec");
     
    79467937        return false;
    79477938    }
     7939    *background = psMetadataLookupF64(&status, row, "background");
     7940    if (!status) {
     7941        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item background");
     7942        psFree(row);
     7943        return false;
     7944    }
    79487945    *recipe = psMetadataLookupPtr(&status, row, "recipe");
    79497946    if (!status) {
     
    79667963bool p1PendingExpInsertObject(psDB *dbh, p1PendingExpRow *object)
    79677964{
    7968     return p1PendingExpInsert(dbh, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->class, object->airmass, object->ra, object->dec, object->exp_time, object->recipe, object->p1_version);
     7965    return p1PendingExpInsert(dbh, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->airmass, object->ra, object->dec, object->exp_time, object->background, object->recipe, object->p1_version);
    79697966}
    79707967
     
    79777974    psS32           imfiles;
    79787975    char            filter[256];
    7979     char            class[256];
    79807976    psF32           airmass;
    7981     psF32           ra;
    7982     psF32           dec;
     7977    psF64           ra;
     7978    psF64           dec;
    79837979    psF32           exp_time;
     7980    psF64           background;
    79847981    char            recipe[256];
    79857982    psS32           p1_version;
    79867983
    7987     if (!p1PendingExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&filter, (char **)&class, &airmass, &ra, &dec, &exp_time, (char **)&recipe, &p1_version)) {
     7984    if (!p1PendingExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&filter, &airmass, &ra, &dec, &exp_time, &background, (char **)&recipe, &p1_version)) {
    79887985        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
    79897986        return NULL;
    79907987    }
    79917988
    7992     return p1PendingExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time, recipe, p1_version);
     7989    return p1PendingExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, airmass, ra, dec, exp_time, background, recipe, p1_version);
    79937990}
    79947991
     
    81198116        return NULL;
    81208117    }
    8121     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, object->class)) {
    8122         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    8123         psFree(md);
    8124         return NULL;
    8125     }
    81268118    if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, object->airmass)) {
    81278119        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
     
    81298121        return NULL;
    81308122    }
    8131     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, object->ra)) {
     8123    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, object->ra)) {
    81328124        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    81338125        psFree(md);
    81348126        return NULL;
    81358127    }
    8136     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, object->dec)) {
     8128    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, object->dec)) {
    81378129        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    81388130        psFree(md);
     
    81418133    if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, object->exp_time)) {
    81428134        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_time");
     8135        psFree(md);
     8136        return NULL;
     8137    }
     8138    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, object->background)) {
     8139        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
    81438140        psFree(md);
    81448141        return NULL;
     
    81678164    psS32           imfiles;
    81688165    char            *filter;
    8169     char            *class;
    81708166    psF32           airmass;
    8171     psF32           ra;
    8172     psF32           dec;
     8167    psF64           ra;
     8168    psF64           dec;
    81738169    psF32           exp_time;
     8170    psF64           background;
    81748171    char            *recipe;
    81758172    psS32           p1_version;
     
    82058202        return false;
    82068203    }
    8207     class = psMetadataLookupPtr(&status, md, "class");
    8208     if (!status) {
    8209         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
    8210         return false;
    8211     }
    82128204    airmass = psMetadataLookupF32(&status, md, "airmass");
    82138205    if (!status) {
     
    82158207        return false;
    82168208    }
    8217     ra = psMetadataLookupF32(&status, md, "ra");
     8209    ra = psMetadataLookupF64(&status, md, "ra");
    82188210    if (!status) {
    82198211        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
    82208212        return false;
    82218213    }
    8222     dec = psMetadataLookupF32(&status, md, "dec");
     8214    dec = psMetadataLookupF64(&status, md, "dec");
    82238215    if (!status) {
    82248216        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dec");
     
    82308222        return false;
    82318223    }
     8224    background = psMetadataLookupF64(&status, md, "background");
     8225    if (!status) {
     8226        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item background");
     8227        return false;
     8228    }
    82328229    recipe = psMetadataLookupPtr(&status, md, "recipe");
    82338230    if (!status) {
     
    82418238    }
    82428239
    8243     return p1PendingExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time, recipe, p1_version);
     8240    return p1PendingExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, airmass, ra, dec, exp_time, background, recipe, p1_version);
    82448241}
    82458242psArray *p1PendingExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    82998296static void p2PendingExpRowFree(p2PendingExpRow *object);
    83008297
    8301 p2PendingExpRow *p2PendingExpRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF32 ra, psF32 dec, psF32 exp_time, const char *recipe, psS32 p1_version, psS32 p2_version)
     8298p2PendingExpRow *p2PendingExpRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF32 ra, psF64 dec, psF64 exp_time, psF64 background, const char *recipe, psS32 p1_version, psS32 p2_version)
    83028299{
    83038300    p2PendingExpRow *object;
     
    83128309    object->imfiles = imfiles;
    83138310    object->filter = psStringCopy(filter);
    8314     object->class = psStringCopy(class);
    83158311    object->airmass = airmass;
    83168312    object->ra = ra;
    83178313    object->dec = dec;
    83188314    object->exp_time = exp_time;
     8315    object->background = background;
    83198316    object->recipe = psStringCopy(recipe);
    83208317    object->p1_version = p1_version;
     
    83318328    psFree(object->exp_type);
    83328329    psFree(object->filter);
    8333     psFree(object->class);
    83348330    psFree(object->recipe);
    83358331}
     
    83768372        return false;
    83778373    }
    8378     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "255")) {
    8379         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    8380         psFree(md);
    8381         return false;
    8382     }
    83838374    if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, 0.0)) {
    83848375        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
     
    83918382        return false;
    83928383    }
    8393     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, 0.0)) {
     8384    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, 0.0)) {
    83948385        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    83958386        psFree(md);
    83968387        return false;
    83978388    }
    8398     if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, 0.0)) {
     8389    if (!psMetadataAddF64(md, PS_LIST_TAIL, "exp_time", 0, NULL, 0.0)) {
    83998390        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_time");
     8391        psFree(md);
     8392        return false;
     8393    }
     8394    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, 0.0)) {
     8395        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
    84008396        psFree(md);
    84018397        return false;
     
    84298425}
    84308426
    8431 bool p2PendingExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF32 ra, psF32 dec, psF32 exp_time, const char *recipe, psS32 p1_version, psS32 p2_version)
     8427bool p2PendingExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF32 ra, psF64 dec, psF64 exp_time, psF64 background, const char *recipe, psS32 p1_version, psS32 p2_version)
    84328428{
    84338429    psMetadata      *md;
     
    84658461        return false;
    84668462    }
    8467     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, class)) {
    8468         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    8469         psFree(md);
    8470         return false;
    8471     }
    84728463    if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, airmass)) {
    84738464        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
     
    84808471        return false;
    84818472    }
    8482     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, dec)) {
     8473    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, dec)) {
    84838474        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    84848475        psFree(md);
    84858476        return false;
    84868477    }
    8487     if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, exp_time)) {
     8478    if (!psMetadataAddF64(md, PS_LIST_TAIL, "exp_time", 0, NULL, exp_time)) {
    84888479        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_time");
     8480        psFree(md);
     8481        return false;
     8482    }
     8483    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, background)) {
     8484        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
    84898485        psFree(md);
    84908486        return false;
     
    85128508}
    85138509
    8514 bool p2PendingExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **filter, char **class, psF32 *airmass, psF32 *ra, psF32 *dec, psF32 *exp_time, char **recipe, psS32 *p1_version, psS32 *p2_version)
     8510bool p2PendingExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **filter, psF32 *airmass, psF32 *ra, psF64 *dec, psF64 *exp_time, psF64 *background, char **recipe, psS32 *p1_version, psS32 *p2_version)
    85158511{
    85168512    psArray         *rowSet;
     
    85928588        return false;
    85938589    }
    8594     *class = psMetadataLookupPtr(&status, row, "class");
    8595     if (!status) {
    8596         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
    8597         psFree(row);
    8598         return false;
    8599     }
    86008590    *airmass = psMetadataLookupF32(&status, row, "airmass");
    86018591    if (!status) {
     
    86108600        return false;
    86118601    }
    8612     *dec = psMetadataLookupF32(&status, row, "dec");
     8602    *dec = psMetadataLookupF64(&status, row, "dec");
    86138603    if (!status) {
    86148604        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dec");
     
    86168606        return false;
    86178607    }
    8618     *exp_time = psMetadataLookupF32(&status, row, "exp_time");
     8608    *exp_time = psMetadataLookupF64(&status, row, "exp_time");
    86198609    if (!status) {
    86208610        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_time");
     
    86228612        return false;
    86238613    }
     8614    *background = psMetadataLookupF64(&status, row, "background");
     8615    if (!status) {
     8616        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item background");
     8617        psFree(row);
     8618        return false;
     8619    }
    86248620    *recipe = psMetadataLookupPtr(&status, row, "recipe");
    86258621    if (!status) {
     
    86488644bool p2PendingExpInsertObject(psDB *dbh, p2PendingExpRow *object)
    86498645{
    8650     return p2PendingExpInsert(dbh, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->class, object->airmass, object->ra, object->dec, object->exp_time, object->recipe, object->p1_version, object->p2_version);
     8646    return p2PendingExpInsert(dbh, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->airmass, object->ra, object->dec, object->exp_time, object->background, object->recipe, object->p1_version, object->p2_version);
    86518647}
    86528648
     
    86598655    psS32           imfiles;
    86608656    char            filter[256];
    8661     char            class[256];
    86628657    psF32           airmass;
    86638658    psF32           ra;
    8664     psF32           dec;
    8665     psF32           exp_time;
     8659    psF64           dec;
     8660    psF64           exp_time;
     8661    psF64           background;
    86668662    char            recipe[256];
    86678663    psS32           p1_version;
    86688664    psS32           p2_version;
    86698665
    8670     if (!p2PendingExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&filter, (char **)&class, &airmass, &ra, &dec, &exp_time, (char **)&recipe, &p1_version, &p2_version)) {
     8666    if (!p2PendingExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&filter, &airmass, &ra, &dec, &exp_time, &background, (char **)&recipe, &p1_version, &p2_version)) {
    86718667        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
    86728668        return NULL;
    86738669    }
    86748670
    8675     return p2PendingExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time, recipe, p1_version, p2_version);
     8671    return p2PendingExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, airmass, ra, dec, exp_time, background, recipe, p1_version, p2_version);
    86768672}
    86778673
     
    88028798        return NULL;
    88038799    }
    8804     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, object->class)) {
    8805         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    8806         psFree(md);
    8807         return NULL;
    8808     }
    88098800    if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, object->airmass)) {
    88108801        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
     
    88178808        return NULL;
    88188809    }
    8819     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, object->dec)) {
     8810    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, object->dec)) {
    88208811        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    88218812        psFree(md);
    88228813        return NULL;
    88238814    }
    8824     if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, object->exp_time)) {
     8815    if (!psMetadataAddF64(md, PS_LIST_TAIL, "exp_time", 0, NULL, object->exp_time)) {
    88258816        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_time");
     8817        psFree(md);
     8818        return NULL;
     8819    }
     8820    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, object->background)) {
     8821        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
    88268822        psFree(md);
    88278823        return NULL;
     
    88558851    psS32           imfiles;
    88568852    char            *filter;
    8857     char            *class;
    88588853    psF32           airmass;
    88598854    psF32           ra;
    8860     psF32           dec;
    8861     psF32           exp_time;
     8855    psF64           dec;
     8856    psF64           exp_time;
     8857    psF64           background;
    88628858    char            *recipe;
    88638859    psS32           p1_version;
     
    88948890        return false;
    88958891    }
    8896     class = psMetadataLookupPtr(&status, md, "class");
    8897     if (!status) {
    8898         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
    8899         return false;
    8900     }
    89018892    airmass = psMetadataLookupF32(&status, md, "airmass");
    89028893    if (!status) {
     
    89098900        return false;
    89108901    }
    8911     dec = psMetadataLookupF32(&status, md, "dec");
     8902    dec = psMetadataLookupF64(&status, md, "dec");
    89128903    if (!status) {
    89138904        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dec");
    89148905        return false;
    89158906    }
    8916     exp_time = psMetadataLookupF32(&status, md, "exp_time");
     8907    exp_time = psMetadataLookupF64(&status, md, "exp_time");
    89178908    if (!status) {
    89188909        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_time");
    89198910        return false;
    89208911    }
     8912    background = psMetadataLookupF64(&status, md, "background");
     8913    if (!status) {
     8914        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item background");
     8915        return false;
     8916    }
    89218917    recipe = psMetadataLookupPtr(&status, md, "recipe");
    89228918    if (!status) {
     
    89358931    }
    89368932
    8937     return p2PendingExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time, recipe, p1_version, p2_version);
     8933    return p2PendingExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, airmass, ra, dec, exp_time, background, recipe, p1_version, p2_version);
    89388934}
    89398935psArray *p2PendingExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    94829478static void p2DoneExpRowFree(p2DoneExpRow *object);
    94839479
    9484 p2DoneExpRow *p2DoneExpRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF32 ra, psF32 dec, psF32 exp_time, const char *recipe, psS32 p1_version, psS32 p2_version)
     9480p2DoneExpRow *p2DoneExpRowAlloc(const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 dec, psF32 exp_time, psF64 background, const char *recipe, psS32 p1_version, psS32 p2_version)
    94859481{
    94869482    p2DoneExpRow    *object;
     
    94959491    object->imfiles = imfiles;
    94969492    object->filter = psStringCopy(filter);
    9497     object->class = psStringCopy(class);
    94989493    object->airmass = airmass;
    94999494    object->ra = ra;
    95009495    object->dec = dec;
    95019496    object->exp_time = exp_time;
     9497    object->background = background;
    95029498    object->recipe = psStringCopy(recipe);
    95039499    object->p1_version = p1_version;
     
    95149510    psFree(object->exp_type);
    95159511    psFree(object->filter);
    9516     psFree(object->class);
    95179512    psFree(object->recipe);
    95189513}
     
    95599554        return false;
    95609555    }
    9561     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "255")) {
    9562         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    9563         psFree(md);
    9564         return false;
    9565     }
    95669556    if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, 0.0)) {
    95679557        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
     
    95699559        return false;
    95709560    }
    9571     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, 0.0)) {
     9561    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, 0.0)) {
    95729562        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    95739563        psFree(md);
    95749564        return false;
    95759565    }
    9576     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, 0.0)) {
     9566    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, 0.0)) {
    95779567        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    95789568        psFree(md);
     
    95849574        return false;
    95859575    }
     9576    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, 0.0)) {
     9577        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
     9578        psFree(md);
     9579        return false;
     9580    }
    95869581    if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "64")) {
    95879582        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
     
    96129607}
    96139608
    9614 bool p2DoneExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF32 ra, psF32 dec, psF32 exp_time, const char *recipe, psS32 p1_version, psS32 p2_version)
     9609bool p2DoneExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 dec, psF32 exp_time, psF64 background, const char *recipe, psS32 p1_version, psS32 p2_version)
    96159610{
    96169611    psMetadata      *md;
     
    96489643        return false;
    96499644    }
    9650     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, class)) {
    9651         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    9652         psFree(md);
    9653         return false;
    9654     }
    96559645    if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, airmass)) {
    96569646        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
     
    96589648        return false;
    96599649    }
    9660     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, ra)) {
     9650    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, ra)) {
    96619651        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    96629652        psFree(md);
    96639653        return false;
    96649654    }
    9665     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, dec)) {
     9655    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, dec)) {
    96669656        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    96679657        psFree(md);
     
    96739663        return false;
    96749664    }
     9665    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, background)) {
     9666        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
     9667        psFree(md);
     9668        return false;
     9669    }
    96759670    if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, recipe)) {
    96769671        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
     
    96959690}
    96969691
    9697 bool p2DoneExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **filter, char **class, psF32 *airmass, psF32 *ra, psF32 *dec, psF32 *exp_time, char **recipe, psS32 *p1_version, psS32 *p2_version)
     9692bool p2DoneExpPop(psDB *dbh, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **filter, psF32 *airmass, psF64 *ra, psF64 *dec, psF32 *exp_time, psF64 *background, char **recipe, psS32 *p1_version, psS32 *p2_version)
    96989693{
    96999694    psArray         *rowSet;
     
    97759770        return false;
    97769771    }
    9777     *class = psMetadataLookupPtr(&status, row, "class");
    9778     if (!status) {
    9779         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
    9780         psFree(row);
    9781         return false;
    9782     }
    97839772    *airmass = psMetadataLookupF32(&status, row, "airmass");
    97849773    if (!status) {
     
    97879776        return false;
    97889777    }
    9789     *ra = psMetadataLookupF32(&status, row, "ra");
     9778    *ra = psMetadataLookupF64(&status, row, "ra");
    97909779    if (!status) {
    97919780        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
     
    97939782        return false;
    97949783    }
    9795     *dec = psMetadataLookupF32(&status, row, "dec");
     9784    *dec = psMetadataLookupF64(&status, row, "dec");
    97969785    if (!status) {
    97979786        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dec");
     
    98059794        return false;
    98069795    }
     9796    *background = psMetadataLookupF64(&status, row, "background");
     9797    if (!status) {
     9798        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item background");
     9799        psFree(row);
     9800        return false;
     9801    }
    98079802    *recipe = psMetadataLookupPtr(&status, row, "recipe");
    98089803    if (!status) {
     
    98319826bool p2DoneExpInsertObject(psDB *dbh, p2DoneExpRow *object)
    98329827{
    9833     return p2DoneExpInsert(dbh, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->class, object->airmass, object->ra, object->dec, object->exp_time, object->recipe, object->p1_version, object->p2_version);
     9828    return p2DoneExpInsert(dbh, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->airmass, object->ra, object->dec, object->exp_time, object->background, object->recipe, object->p1_version, object->p2_version);
    98349829}
    98359830
     
    98429837    psS32           imfiles;
    98439838    char            filter[256];
    9844     char            class[256];
    98459839    psF32           airmass;
    9846     psF32           ra;
    9847     psF32           dec;
     9840    psF64           ra;
     9841    psF64           dec;
    98489842    psF32           exp_time;
     9843    psF64           background;
    98499844    char            recipe[256];
    98509845    psS32           p1_version;
    98519846    psS32           p2_version;
    98529847
    9853     if (!p2DoneExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&filter, (char **)&class, &airmass, &ra, &dec, &exp_time, (char **)&recipe, &p1_version, &p2_version)) {
     9848    if (!p2DoneExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&filter, &airmass, &ra, &dec, &exp_time, &background, (char **)&recipe, &p1_version, &p2_version)) {
    98549849        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
    98559850        return NULL;
    98569851    }
    98579852
    9858     return p2DoneExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time, recipe, p1_version, p2_version);
     9853    return p2DoneExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, airmass, ra, dec, exp_time, background, recipe, p1_version, p2_version);
    98599854}
    98609855
     
    99859980        return NULL;
    99869981    }
    9987     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, object->class)) {
    9988         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    9989         psFree(md);
    9990         return NULL;
    9991     }
    99929982    if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, object->airmass)) {
    99939983        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
     
    99959985        return NULL;
    99969986    }
    9997     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, object->ra)) {
     9987    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, object->ra)) {
    99989988        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    99999989        psFree(md);
    100009990        return NULL;
    100019991    }
    10002     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, object->dec)) {
     9992    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, object->dec)) {
    100039993        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    100049994        psFree(md);
     
    100079997    if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, object->exp_time)) {
    100089998        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_time");
     9999        psFree(md);
     10000        return NULL;
     10001    }
     10002    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, object->background)) {
     10003        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
    1000910004        psFree(md);
    1001010005        return NULL;
     
    1003810033    psS32           imfiles;
    1003910034    char            *filter;
    10040     char            *class;
    1004110035    psF32           airmass;
    10042     psF32           ra;
    10043     psF32           dec;
     10036    psF64           ra;
     10037    psF64           dec;
    1004410038    psF32           exp_time;
     10039    psF64           background;
    1004510040    char            *recipe;
    1004610041    psS32           p1_version;
     
    1007710072        return false;
    1007810073    }
    10079     class = psMetadataLookupPtr(&status, md, "class");
    10080     if (!status) {
    10081         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
    10082         return false;
    10083     }
    1008410074    airmass = psMetadataLookupF32(&status, md, "airmass");
    1008510075    if (!status) {
     
    1008710077        return false;
    1008810078    }
    10089     ra = psMetadataLookupF32(&status, md, "ra");
     10079    ra = psMetadataLookupF64(&status, md, "ra");
    1009010080    if (!status) {
    1009110081        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
    1009210082        return false;
    1009310083    }
    10094     dec = psMetadataLookupF32(&status, md, "dec");
     10084    dec = psMetadataLookupF64(&status, md, "dec");
    1009510085    if (!status) {
    1009610086        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dec");
     
    1010210092        return false;
    1010310093    }
     10094    background = psMetadataLookupF64(&status, md, "background");
     10095    if (!status) {
     10096        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item background");
     10097        return false;
     10098    }
    1010410099    recipe = psMetadataLookupPtr(&status, md, "recipe");
    1010510100    if (!status) {
     
    1011810113    }
    1011910114
    10120     return p2DoneExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time, recipe, p1_version, p2_version);
     10115    return p2DoneExpRowAlloc(exp_id, camera, telescope, exp_type, imfiles, filter, airmass, ra, dec, exp_time, background, recipe, p1_version, p2_version);
    1012110116}
    1012210117psArray *p2DoneExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1066510660static void p3PendingExpRowFree(p3PendingExpRow *object);
    1066610661
    10667 p3PendingExpRow *p3PendingExpRowAlloc(const char *exp_id, const char *camera, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF32 ra, psF32 dec, psF32 exp_time, const char *recipe, psS32 p2_version, psS32 p3_version)
     10662p3PendingExpRow *p3PendingExpRowAlloc(const char *exp_id, const char *camera, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 dec, psF32 exp_time, psF64 background, const char *recipe, psS32 p2_version, psS32 p3_version)
    1066810663{
    1066910664    p3PendingExpRow *object;
     
    1067710672    object->imfiles = imfiles;
    1067810673    object->filter = psStringCopy(filter);
    10679     object->class = psStringCopy(class);
    1068010674    object->airmass = airmass;
    1068110675    object->ra = ra;
    1068210676    object->dec = dec;
    1068310677    object->exp_time = exp_time;
     10678    object->background = background;
    1068410679    object->recipe = psStringCopy(recipe);
    1068510680    object->p2_version = p2_version;
     
    1069510690    psFree(object->exp_type);
    1069610691    psFree(object->filter);
    10697     psFree(object->class);
    1069810692    psFree(object->recipe);
    1069910693}
     
    1073510729        return false;
    1073610730    }
    10737     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "255")) {
    10738         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    10739         psFree(md);
    10740         return false;
    10741     }
    1074210731    if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, 0.0)) {
    1074310732        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
     
    1074510734        return false;
    1074610735    }
    10747     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, 0.0)) {
     10736    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, 0.0)) {
    1074810737        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    1074910738        psFree(md);
    1075010739        return false;
    1075110740    }
    10752     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, 0.0)) {
     10741    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, 0.0)) {
    1075310742        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    1075410743        psFree(md);
     
    1076010749        return false;
    1076110750    }
     10751    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, 0.0)) {
     10752        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
     10753        psFree(md);
     10754        return false;
     10755    }
    1076210756    if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "64")) {
    1076310757        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
     
    1078810782}
    1078910783
    10790 bool p3PendingExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF32 ra, psF32 dec, psF32 exp_time, const char *recipe, psS32 p2_version, psS32 p3_version)
     10784bool p3PendingExpInsert(psDB * dbh, const char *exp_id, const char *camera, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 dec, psF32 exp_time, psF64 background, const char *recipe, psS32 p2_version, psS32 p3_version)
    1079110785{
    1079210786    psMetadata      *md;
     
    1081910813        return false;
    1082010814    }
    10821     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, class)) {
    10822         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    10823         psFree(md);
    10824         return false;
    10825     }
    1082610815    if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, airmass)) {
    1082710816        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
     
    1082910818        return false;
    1083010819    }
    10831     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, ra)) {
     10820    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, ra)) {
    1083210821        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    1083310822        psFree(md);
    1083410823        return false;
    1083510824    }
    10836     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, dec)) {
     10825    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, dec)) {
    1083710826        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    1083810827        psFree(md);
     
    1084410833        return false;
    1084510834    }
     10835    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, background)) {
     10836        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
     10837        psFree(md);
     10838        return false;
     10839    }
    1084610840    if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, recipe)) {
    1084710841        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
     
    1086610860}
    1086710861
    10868 bool p3PendingExpPop(psDB *dbh, char **exp_id, char **camera, char **exp_type, psS32 *imfiles, char **filter, char **class, psF32 *airmass, psF32 *ra, psF32 *dec, psF32 *exp_time, char **recipe, psS32 *p2_version, psS32 *p3_version)
     10862bool p3PendingExpPop(psDB *dbh, char **exp_id, char **camera, char **exp_type, psS32 *imfiles, char **filter, psF32 *airmass, psF64 *ra, psF64 *dec, psF32 *exp_time, psF64 *background, char **recipe, psS32 *p2_version, psS32 *p3_version)
    1086910863{
    1087010864    psArray         *rowSet;
     
    1094010934        return false;
    1094110935    }
    10942     *class = psMetadataLookupPtr(&status, row, "class");
    10943     if (!status) {
    10944         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
    10945         psFree(row);
    10946         return false;
    10947     }
    1094810936    *airmass = psMetadataLookupF32(&status, row, "airmass");
    1094910937    if (!status) {
     
    1095210940        return false;
    1095310941    }
    10954     *ra = psMetadataLookupF32(&status, row, "ra");
     10942    *ra = psMetadataLookupF64(&status, row, "ra");
    1095510943    if (!status) {
    1095610944        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
     
    1095810946        return false;
    1095910947    }
    10960     *dec = psMetadataLookupF32(&status, row, "dec");
     10948    *dec = psMetadataLookupF64(&status, row, "dec");
    1096110949    if (!status) {
    1096210950        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dec");
     
    1097010958        return false;
    1097110959    }
     10960    *background = psMetadataLookupF64(&status, row, "background");
     10961    if (!status) {
     10962        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item background");
     10963        psFree(row);
     10964        return false;
     10965    }
    1097210966    *recipe = psMetadataLookupPtr(&status, row, "recipe");
    1097310967    if (!status) {
     
    1099610990bool p3PendingExpInsertObject(psDB *dbh, p3PendingExpRow *object)
    1099710991{
    10998     return p3PendingExpInsert(dbh, object->exp_id, object->camera, object->exp_type, object->imfiles, object->filter, object->class, object->airmass, object->ra, object->dec, object->exp_time, object->recipe, object->p2_version, object->p3_version);
     10992    return p3PendingExpInsert(dbh, object->exp_id, object->camera, object->exp_type, object->imfiles, object->filter, object->airmass, object->ra, object->dec, object->exp_time, object->background, object->recipe, object->p2_version, object->p3_version);
    1099910993}
    1100010994
     
    1100611000    psS32           imfiles;
    1100711001    char            filter[256];
    11008     char            class[256];
    1100911002    psF32           airmass;
    11010     psF32           ra;
    11011     psF32           dec;
     11003    psF64           ra;
     11004    psF64           dec;
    1101211005    psF32           exp_time;
     11006    psF64           background;
    1101311007    char            recipe[256];
    1101411008    psS32           p2_version;
    1101511009    psS32           p3_version;
    1101611010
    11017     if (!p3PendingExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&exp_type, &imfiles, (char **)&filter, (char **)&class, &airmass, &ra, &dec, &exp_time, (char **)&recipe, &p2_version, &p3_version)) {
     11011    if (!p3PendingExpPop(dbh, (char **)&exp_id, (char **)&camera, (char **)&exp_type, &imfiles, (char **)&filter, &airmass, &ra, &dec, &exp_time, &background, (char **)&recipe, &p2_version, &p3_version)) {
    1101811012        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
    1101911013        return NULL;
    1102011014    }
    1102111015
    11022     return p3PendingExpRowAlloc(exp_id, camera, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time, recipe, p2_version, p3_version);
     11016    return p3PendingExpRowAlloc(exp_id, camera, exp_type, imfiles, filter, airmass, ra, dec, exp_time, background, recipe, p2_version, p3_version);
    1102311017}
    1102411018
     
    1114411138        return NULL;
    1114511139    }
    11146     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, object->class)) {
    11147         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    11148         psFree(md);
    11149         return NULL;
    11150     }
    1115111140    if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, object->airmass)) {
    1115211141        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
     
    1115411143        return NULL;
    1115511144    }
    11156     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, object->ra)) {
     11145    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, object->ra)) {
    1115711146        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    1115811147        psFree(md);
    1115911148        return NULL;
    1116011149    }
    11161     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, object->dec)) {
     11150    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, object->dec)) {
    1116211151        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    1116311152        psFree(md);
     
    1116611155    if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, object->exp_time)) {
    1116711156        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_time");
     11157        psFree(md);
     11158        return NULL;
     11159    }
     11160    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, object->background)) {
     11161        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
    1116811162        psFree(md);
    1116911163        return NULL;
     
    1119611190    psS32           imfiles;
    1119711191    char            *filter;
    11198     char            *class;
    1119911192    psF32           airmass;
    11200     psF32           ra;
    11201     psF32           dec;
     11193    psF64           ra;
     11194    psF64           dec;
    1120211195    psF32           exp_time;
     11196    psF64           background;
    1120311197    char            *recipe;
    1120411198    psS32           p2_version;
     
    1123011224        return false;
    1123111225    }
    11232     class = psMetadataLookupPtr(&status, md, "class");
    11233     if (!status) {
    11234         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
    11235         return false;
    11236     }
    1123711226    airmass = psMetadataLookupF32(&status, md, "airmass");
    1123811227    if (!status) {
     
    1124011229        return false;
    1124111230    }
    11242     ra = psMetadataLookupF32(&status, md, "ra");
     11231    ra = psMetadataLookupF64(&status, md, "ra");
    1124311232    if (!status) {
    1124411233        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
    1124511234        return false;
    1124611235    }
    11247     dec = psMetadataLookupF32(&status, md, "dec");
     11236    dec = psMetadataLookupF64(&status, md, "dec");
    1124811237    if (!status) {
    1124911238        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dec");
     
    1125511244        return false;
    1125611245    }
     11246    background = psMetadataLookupF64(&status, md, "background");
     11247    if (!status) {
     11248        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item background");
     11249        return false;
     11250    }
    1125711251    recipe = psMetadataLookupPtr(&status, md, "recipe");
    1125811252    if (!status) {
     
    1127111265    }
    1127211266
    11273     return p3PendingExpRowAlloc(exp_id, camera, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time, recipe, p2_version, p3_version);
     11267    return p3PendingExpRowAlloc(exp_id, camera, exp_type, imfiles, filter, airmass, ra, dec, exp_time, background, recipe, p2_version, p3_version);
    1127411268}
    1127511269psArray *p3PendingExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    1166911663static void detInputExpRowFree(detInputExpRow *object);
    1167011664
    11671 detInputExpRow *detInputExpRowAlloc(psS32 det_id, psS32 iteration, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF32 ra, psF32 dec, psF32 exp_time)
     11665detInputExpRow *detInputExpRowAlloc(psS32 det_id, psS32 iteration, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 dec, psF32 exp_time, psF64 background)
    1167211666{
    1167311667    detInputExpRow  *object;
     
    1168411678    object->imfiles = imfiles;
    1168511679    object->filter = psStringCopy(filter);
    11686     object->class = psStringCopy(class);
    1168711680    object->airmass = airmass;
    1168811681    object->ra = ra;
    1168911682    object->dec = dec;
    1169011683    object->exp_time = exp_time;
     11684    object->background = background;
    1169111685
    1169211686    return object;
     
    1170011694    psFree(object->exp_type);
    1170111695    psFree(object->filter);
    11702     psFree(object->class);
    1170311696}
    1170411697
     
    1175411747        return false;
    1175511748    }
    11756     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, "255")) {
    11757         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    11758         psFree(md);
    11759         return false;
    11760     }
    1176111749    if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, 0.0)) {
    1176211750        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
     
    1176411752        return false;
    1176511753    }
    11766     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, 0.0)) {
     11754    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, 0.0)) {
    1176711755        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    1176811756        psFree(md);
    1176911757        return false;
    1177011758    }
    11771     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, 0.0)) {
     11759    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, 0.0)) {
    1177211760        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    1177311761        psFree(md);
     
    1177911767        return false;
    1178011768    }
     11769    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, 0.0)) {
     11770        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
     11771        psFree(md);
     11772        return false;
     11773    }
    1178111774
    1178211775    status = psDBCreateTable(dbh, DETINPUTEXP_TABLE_NAME, md);
     
    1179211785}
    1179311786
    11794 bool detInputExpInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, const char *class, psF32 airmass, psF32 ra, psF32 dec, psF32 exp_time)
     11787bool detInputExpInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *exp_id, const char *camera, const char *telescope, const char *exp_type, psS32 imfiles, const char *filter, psF32 airmass, psF64 ra, psF64 dec, psF32 exp_time, psF64 background)
    1179511788{
    1179611789    psMetadata      *md;
     
    1183811831        return false;
    1183911832    }
    11840     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, class)) {
    11841         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    11842         psFree(md);
    11843         return false;
    11844     }
    1184511833    if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, airmass)) {
    1184611834        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
     
    1184811836        return false;
    1184911837    }
    11850     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, ra)) {
     11838    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, ra)) {
    1185111839        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    1185211840        psFree(md);
    1185311841        return false;
    1185411842    }
    11855     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, dec)) {
     11843    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, dec)) {
    1185611844        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    1185711845        psFree(md);
     
    1186311851        return false;
    1186411852    }
     11853    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, background)) {
     11854        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
     11855        psFree(md);
     11856        return false;
     11857    }
    1186511858
    1186611859    status = psDBInsertOneRow(dbh, DETINPUTEXP_TABLE_NAME, md);
     
    1187011863}
    1187111864
    11872 bool detInputExpPop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **filter, char **class, psF32 *airmass, psF32 *ra, psF32 *dec, psF32 *exp_time)
     11865bool detInputExpPop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **exp_id, char **camera, char **telescope, char **exp_type, psS32 *imfiles, char **filter, psF32 *airmass, psF64 *ra, psF64 *dec, psF32 *exp_time, psF64 *background)
    1187311866{
    1187411867    psArray         *rowSet;
     
    1196211955        return false;
    1196311956    }
    11964     *class = psMetadataLookupPtr(&status, row, "class");
    11965     if (!status) {
    11966         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
    11967         psFree(row);
    11968         return false;
    11969     }
    1197011957    *airmass = psMetadataLookupF32(&status, row, "airmass");
    1197111958    if (!status) {
     
    1197411961        return false;
    1197511962    }
    11976     *ra = psMetadataLookupF32(&status, row, "ra");
     11963    *ra = psMetadataLookupF64(&status, row, "ra");
    1197711964    if (!status) {
    1197811965        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
     
    1198011967        return false;
    1198111968    }
    11982     *dec = psMetadataLookupF32(&status, row, "dec");
     11969    *dec = psMetadataLookupF64(&status, row, "dec");
    1198311970    if (!status) {
    1198411971        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dec");
     
    1199211979        return false;
    1199311980    }
     11981    *background = psMetadataLookupF64(&status, row, "background");
     11982    if (!status) {
     11983        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item background");
     11984        psFree(row);
     11985        return false;
     11986    }
    1199411987
    1199511988    psFree(row);
     
    1200011993bool detInputExpInsertObject(psDB *dbh, detInputExpRow *object)
    1200111994{
    12002     return detInputExpInsert(dbh, object->det_id, object->iteration, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->class, object->airmass, object->ra, object->dec, object->exp_time);
     11995    return detInputExpInsert(dbh, object->det_id, object->iteration, object->exp_id, object->camera, object->telescope, object->exp_type, object->imfiles, object->filter, object->airmass, object->ra, object->dec, object->exp_time, object->background);
    1200311996}
    1200411997
     
    1201312006    psS32           imfiles;
    1201412007    char            filter[256];
    12015     char            class[256];
    1201612008    psF32           airmass;
    12017     psF32           ra;
    12018     psF32           dec;
     12009    psF64           ra;
     12010    psF64           dec;
    1201912011    psF32           exp_time;
    12020 
    12021     if (!detInputExpPop(dbh, &det_id, &iteration, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&filter, (char **)&class, &airmass, &ra, &dec, &exp_time)) {
     12012    psF64           background;
     12013
     12014    if (!detInputExpPop(dbh, &det_id, &iteration, (char **)&exp_id, (char **)&camera, (char **)&telescope, (char **)&exp_type, &imfiles, (char **)&filter, &airmass, &ra, &dec, &exp_time, &background)) {
    1202212015        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
    1202312016        return NULL;
    1202412017    }
    1202512018
    12026     return detInputExpRowAlloc(det_id, iteration, exp_id, camera, telescope, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time);
     12019    return detInputExpRowAlloc(det_id, iteration, exp_id, camera, telescope, exp_type, imfiles, filter, airmass, ra, dec, exp_time, background);
    1202712020}
    1202812021
     
    1216312156        return NULL;
    1216412157    }
    12165     if (!psMetadataAddStr(md, PS_LIST_TAIL, "class", 0, NULL, object->class)) {
    12166         psError(PS_ERR_UNKNOWN, false, "failed to add item class");
    12167         psFree(md);
    12168         return NULL;
    12169     }
    1217012158    if (!psMetadataAddF32(md, PS_LIST_TAIL, "airmass", 0, NULL, object->airmass)) {
    1217112159        psError(PS_ERR_UNKNOWN, false, "failed to add item airmass");
     
    1217312161        return NULL;
    1217412162    }
    12175     if (!psMetadataAddF32(md, PS_LIST_TAIL, "ra", 0, NULL, object->ra)) {
     12163    if (!psMetadataAddF64(md, PS_LIST_TAIL, "ra", 0, NULL, object->ra)) {
    1217612164        psError(PS_ERR_UNKNOWN, false, "failed to add item ra");
    1217712165        psFree(md);
    1217812166        return NULL;
    1217912167    }
    12180     if (!psMetadataAddF32(md, PS_LIST_TAIL, "dec", 0, NULL, object->dec)) {
     12168    if (!psMetadataAddF64(md, PS_LIST_TAIL, "dec", 0, NULL, object->dec)) {
    1218112169        psError(PS_ERR_UNKNOWN, false, "failed to add item dec");
    1218212170        psFree(md);
     
    1218512173    if (!psMetadataAddF32(md, PS_LIST_TAIL, "exp_time", 0, NULL, object->exp_time)) {
    1218612174        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_time");
     12175        psFree(md);
     12176        return NULL;
     12177    }
     12178    if (!psMetadataAddF64(md, PS_LIST_TAIL, "background", 0, NULL, object->background)) {
     12179        psError(PS_ERR_UNKNOWN, false, "failed to add item background");
    1218712180        psFree(md);
    1218812181        return NULL;
     
    1220312196    psS32           imfiles;
    1220412197    char            *filter;
    12205     char            *class;
    1220612198    psF32           airmass;
    12207     psF32           ra;
    12208     psF32           dec;
     12199    psF64           ra;
     12200    psF64           dec;
    1220912201    psF32           exp_time;
     12202    psF64           background;
    1221012203
    1221112204    det_id = psMetadataLookupS32(&status, md, "det_id");
     
    1224912242        return false;
    1225012243    }
    12251     class = psMetadataLookupPtr(&status, md, "class");
    12252     if (!status) {
    12253         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class");
    12254         return false;
    12255     }
    1225612244    airmass = psMetadataLookupF32(&status, md, "airmass");
    1225712245    if (!status) {
     
    1225912247        return false;
    1226012248    }
    12261     ra = psMetadataLookupF32(&status, md, "ra");
     12249    ra = psMetadataLookupF64(&status, md, "ra");
    1226212250    if (!status) {
    1226312251        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item ra");
    1226412252        return false;
    1226512253    }
    12266     dec = psMetadataLookupF32(&status, md, "dec");
     12254    dec = psMetadataLookupF64(&status, md, "dec");
    1226712255    if (!status) {
    1226812256        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item dec");
     
    1227412262        return false;
    1227512263    }
    12276 
    12277     return detInputExpRowAlloc(det_id, iteration, exp_id, camera, telescope, exp_type, imfiles, filter, class, airmass, ra, dec, exp_time);
     12264    background = psMetadataLookupF64(&status, md, "background");
     12265    if (!status) {
     12266        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item background");
     12267        return false;
     12268    }
     12269
     12270    return detInputExpRowAlloc(det_id, iteration, exp_id, camera, telescope, exp_type, imfiles, filter, airmass, ra, dec, exp_time, background);
    1227812271}
    1227912272psArray *detInputExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
Note: See TracChangeset for help on using the changeset viewer.