Index: /trunk/ippdb/Makefile.am
===================================================================
--- /trunk/ippdb/Makefile.am	(revision 10237)
+++ /trunk/ippdb/Makefile.am	(revision 10238)
@@ -39,6 +39,4 @@
     $(top_builddir)/docs/man/man3/detNormalizedImfileRow.3 \
     $(top_builddir)/docs/man/man3/detNormalizedExpRow.3 \
-    $(top_builddir)/docs/man/man3/detMasterFrameRow.3 \
-    $(top_builddir)/docs/man/man3/detMasterImfileRow.3 \
     $(top_builddir)/docs/man/man3/detResidImfileRow.3 \
     $(top_builddir)/docs/man/man3/detResidExpRow.3 \
@@ -46,5 +44,5 @@
 
 
-docs/man/man3/ippdb.3 docs/man/man3/expTagCounterRow.3 docs/man/man3/summitExpRow.3 docs/man/man3/summitImfileRow.3 docs/man/man3/pzPendingExpRow.3 docs/man/man3/pzPendingImfileRow.3 docs/man/man3/pzDoneExpRow.3 docs/man/man3/pzDoneImfileRow.3 docs/man/man3/newExpRow.3 docs/man/man3/newImfileRow.3 docs/man/man3/rawDetrendExpRow.3 docs/man/man3/rawScienceExpRow.3 docs/man/man3/rawImfileRow.3 docs/man/man3/p1PendingExpRow.3 docs/man/man3/p2PendingExpRow.3 docs/man/man3/p2PendingImfileRow.3 docs/man/man3/p2ProcessedExpRow.3 docs/man/man3/p2MaskRow.3 docs/man/man3/p2ProcessedImfileRow.3 docs/man/man3/p3PendingExpRow.3 docs/man/man3/p3ProcessedExpRow.3 docs/man/man3/p3MaskRow.3 docs/man/man3/detRunRow.3 docs/man/man3/detInputExpRow.3 docs/man/man3/detProcessedImfileRow.3 docs/man/man3/detProcessedExpRow.3 docs/man/man3/detStackedImfileRow.3 docs/man/man3/detNormalizedStatImfileRow.3 docs/man/man3/detNormalizedImfileRow.3 docs/man/man3/detNormalizedExpRow.3 docs/man/man3/detMasterFrameRow.3 docs/man/man3/detMasterImfileRow.3 docs/man/man3/detResidImfileRow.3 docs/man/man3/detResidExpRow.3 docs/man/man3/detRunSummaryRow.3:
+docs/man/man3/ippdb.3 docs/man/man3/expTagCounterRow.3 docs/man/man3/summitExpRow.3 docs/man/man3/summitImfileRow.3 docs/man/man3/pzPendingExpRow.3 docs/man/man3/pzPendingImfileRow.3 docs/man/man3/pzDoneExpRow.3 docs/man/man3/pzDoneImfileRow.3 docs/man/man3/newExpRow.3 docs/man/man3/newImfileRow.3 docs/man/man3/rawDetrendExpRow.3 docs/man/man3/rawScienceExpRow.3 docs/man/man3/rawImfileRow.3 docs/man/man3/p1PendingExpRow.3 docs/man/man3/p2PendingExpRow.3 docs/man/man3/p2PendingImfileRow.3 docs/man/man3/p2ProcessedExpRow.3 docs/man/man3/p2MaskRow.3 docs/man/man3/p2ProcessedImfileRow.3 docs/man/man3/p3PendingExpRow.3 docs/man/man3/p3ProcessedExpRow.3 docs/man/man3/p3MaskRow.3 docs/man/man3/detRunRow.3 docs/man/man3/detInputExpRow.3 docs/man/man3/detProcessedImfileRow.3 docs/man/man3/detProcessedExpRow.3 docs/man/man3/detStackedImfileRow.3 docs/man/man3/detNormalizedStatImfileRow.3 docs/man/man3/detNormalizedImfileRow.3 docs/man/man3/detNormalizedExpRow.3 docs/man/man3/detResidImfileRow.3 docs/man/man3/detResidExpRow.3 docs/man/man3/detRunSummaryRow.3:
 	$(DOXYGEN)
 
Index: /trunk/ippdb/configure.ac
===================================================================
--- /trunk/ippdb/configure.ac	(revision 10237)
+++ /trunk/ippdb/configure.ac	(revision 10238)
@@ -1,4 +1,4 @@
 dnl
-dnl This file was generated by glueforge 0.31
+dnl This file was generated by glueforge 0.32
 dnl
 dnl Do NOT directly edit this file.
@@ -7,5 +7,5 @@
 AC_PREREQ(2.59)
 
-AC_INIT([ippdb], [0.0.59], [pan-starrs.ifa.hawaii.edu])
+AC_INIT([ippdb], [0.0.60], [pan-starrs.ifa.hawaii.edu])
 AC_CONFIG_SRCDIR([ippdb.pc.in])
 
Index: /trunk/ippdb/src/ippdb.c
===================================================================
--- /trunk/ippdb/src/ippdb.c	(revision 10237)
+++ /trunk/ippdb/src/ippdb.c	(revision 10238)
@@ -20,5 +20,5 @@
 /*
  *
- * This file was generated by glueforge 0.31
+ * This file was generated by glueforge 0.32
  *
  * Do NOT directly edit this file.
@@ -60,6 +60,4 @@
 #define DETNORMALIZEDIMFILE_TABLE_NAME "detNormalizedImfile"
 #define DETNORMALIZEDEXP_TABLE_NAME "detNormalizedExp"
-#define DETMASTERFRAME_TABLE_NAME "detMasterFrame"
-#define DETMASTERIMFILE_TABLE_NAME "detMasterImfile"
 #define DETRESIDIMFILE_TABLE_NAME "detResidImfile"
 #define DETRESIDEXP_TABLE_NAME "detResidExp"
@@ -542,12 +540,9 @@
         return false;
     }
-    psTime* dateobs = psTimeFromISO("", PS_TIME_UTC);
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, dateobs)) {
-        psFree(dateobs);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
         psFree(md);
         return false;
     }
-    psFree(dateobs);
     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_type", PS_DATA_STRING, NULL, "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_type");
@@ -2718,12 +2713,9 @@
         return false;
     }
-    psTime* dateobs = psTimeFromISO("", PS_TIME_UTC);
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, dateobs)) {
-        psFree(dateobs);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
         psFree(md);
         return false;
     }
-    psFree(dateobs);
     if (!psMetadataAdd(md, PS_LIST_TAIL, "exp_type", PS_DATA_STRING, NULL, "64")) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_type");
@@ -3519,12 +3511,9 @@
         return false;
     }
-    psTime* dateobs = psTimeFromISO("0001-01-01T00:00:00", PS_TIME_UTC);
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, dateobs)) {
-        psFree(dateobs);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
         psFree(md);
         return false;
     }
-    psFree(dateobs);
 
     bool status = psDBCreateTable(dbh, RAWDETRENDEXP_TABLE_NAME, md);
@@ -4165,12 +4154,9 @@
         return false;
     }
-    psTime* dateobs = psTimeFromISO("0001-01-01T00:00:00", PS_TIME_UTC);
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, dateobs)) {
-        psFree(dateobs);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
         psFree(md);
         return false;
     }
-    psFree(dateobs);
 
     bool status = psDBCreateTable(dbh, RAWSCIENCEEXP_TABLE_NAME, md);
@@ -4812,12 +4798,9 @@
         return false;
     }
-    psTime* dateobs = psTimeFromISO("0001-01-01T00:00:00", PS_TIME_UTC);
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, dateobs)) {
-        psFree(dateobs);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "dateobs", PS_DATA_TIME, NULL, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
         psFree(md);
         return false;
     }
-    psFree(dateobs);
 
     bool status = psDBCreateTable(dbh, RAWIMFILE_TABLE_NAME, md);
@@ -8657,28 +8640,19 @@
         return false;
     }
-    psTime* registered = psTimeFromISO("0001-01-01T00:00:00", PS_TIME_TAI);
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "registered", PS_DATA_TIME, NULL, registered)) {
-        psFree(registered);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "registered", PS_DATA_TIME, NULL, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item registered");
         psFree(md);
         return false;
     }
-    psFree(registered);
-    psTime* use_begin = psTimeFromISO("0001-01-01T00:00:00", PS_TIME_TAI);
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "use_begin", PS_DATA_TIME, NULL, use_begin)) {
-        psFree(use_begin);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "use_begin", PS_DATA_TIME, NULL, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item use_begin");
         psFree(md);
         return false;
     }
-    psFree(use_begin);
-    psTime* use_end = psTimeFromISO("0001-01-01T00:00:00", PS_TIME_TAI);
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "use_end", PS_DATA_TIME, NULL, use_end)) {
-        psFree(use_end);
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "use_end", PS_DATA_TIME, NULL, NULL)) {
         psError(PS_ERR_UNKNOWN, false, "failed to add item use_end");
         psFree(md);
         return false;
     }
-    psFree(use_end);
 
     bool status = psDBCreateTable(dbh, DETRUN_TABLE_NAME, md);
@@ -11875,629 +11849,4 @@
     return true;
 }
-static void detMasterFrameRowFree(detMasterFrameRow *object);
-
-detMasterFrameRow *detMasterFrameRowAlloc(psS32 det_id, psS32 iteration, const char *comment)
-{
-    detMasterFrameRow *_object;
-
-    _object = psAlloc(sizeof(detMasterFrameRow));
-    psMemSetDeallocator(_object, (psFreeFunc)detMasterFrameRowFree);
-
-    _object->det_id = det_id;
-    _object->iteration = iteration;
-    _object->comment = psStringCopy(comment);
-
-    return _object;
-}
-
-static void detMasterFrameRowFree(detMasterFrameRow *object)
-{
-    psFree(object->comment);
-}
-
-bool detMasterFrameCreateTable(psDB *dbh)
-{
-    psMetadata *md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S32, "Primary Key", 0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, "Primary Key", 0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "comment", PS_DATA_STRING, NULL, "255")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item comment");
-        psFree(md);
-        return false;
-    }
-
-    bool status = psDBCreateTable(dbh, DETMASTERFRAME_TABLE_NAME, md);
-
-    psFree(md);
-
-    return status;
-}
-
-bool detMasterFrameDropTable(psDB *dbh)
-{
-    return psDBDropTable(dbh, DETMASTERFRAME_TABLE_NAME);
-}
-
-bool detMasterFrameInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *comment)
-{
-    psMetadata *md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S32, NULL, det_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, NULL, iteration)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "comment", PS_DATA_STRING, NULL, comment)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item comment");
-        psFree(md);
-        return false;
-    }
-
-    bool status = psDBInsertOneRow(dbh, DETMASTERFRAME_TABLE_NAME, md);
-    psFree(md);
-
-    return status;
-}
-
-long long detMasterFrameDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
-{
-    long long       deleted = 0;
-
-    long long count = psDBDeleteRows(dbh, DETMASTERFRAME_TABLE_NAME, where, limit);
-    if (count < 0) {
-        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detMasterFrame");
-        return count;
-
-        deleted += count;
-    }
-
-    return deleted;
-}
-bool detMasterFrameInsertObject(psDB *dbh, detMasterFrameRow *object)
-{
-    return detMasterFrameInsert(dbh, object->det_id, object->iteration, object->comment);
-}
-
-bool detMasterFrameInsertObjects(psDB *dbh, psArray *objects)
-{
-    for (long i = 0; i < psArrayLength(objects); i++) {
-        if (!detMasterFrameInsertObject(dbh, objects->data[i])) {
-            return false;
-        }
-    }
-
-    return true;
-}
-
-bool detMasterFrameInsertFits(psDB *dbh, const psFits *fits)
-{
-    psArray         *rowSet;
-
-    // move to (the first?) extension named  DETMASTERFRAME_TABLE_NAME
-    if (!psFitsMoveExtName(fits, DETMASTERFRAME_TABLE_NAME)) {
-        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETMASTERFRAME_TABLE_NAME);
-        return false;
-    }
-
-    // check HDU type
-    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
-        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
-        return false;
-    }
-
-    // read fits table
-    rowSet = psFitsReadTable(fits);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
-        psFree(rowSet);
-        return false;
-    }
-
-    if (!psDBInsertRows(dbh, DETMASTERFRAME_TABLE_NAME, rowSet)) {
-        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
-        psFree(rowSet);
-        return false;
-    }
-
-    psFree(rowSet);
-
-    return true;
-}
-
-bool detMasterFrameSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
-{
-    psArray         *rowSet;
-
-    rowSet = psDBSelectRows(dbh, DETMASTERFRAME_TABLE_NAME, where, limit);
-    if (!rowSet) {
-        return false;
-    }
-
-    // output to fits
-    if (!psFitsWriteTable(fits, NULL, rowSet, DETMASTERFRAME_TABLE_NAME)) {
-        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
-        psFree(rowSet);
-        return false;
-    }
-
-    psFree(rowSet);
-
-    return true;
-}
-
-psMetadata *detMasterFrameMetadataFromObject(const detMasterFrameRow *object)
-{
-    psMetadata *md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S32, NULL, object->det_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "iteration", PS_DATA_S32, NULL, object->iteration)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "comment", PS_DATA_STRING, NULL, object->comment)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item comment");
-        psFree(md);
-        return false;
-    }
-
-
-    return md;
-}
-
-detMasterFrameRow *detMasterFrameObjectFromMetadata(psMetadata *md)
-{
-
-bool status = false;
-    psS32 det_id = psMetadataLookupS32(&status, md, "det_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
-        return false;
-    }
-    psS32 iteration = psMetadataLookupS32(&status, md, "iteration");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item iteration");
-        return false;
-    }
-    char* comment = psMetadataLookupPtr(&status, md, "comment");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item comment");
-        return false;
-    }
-
-    return detMasterFrameRowAlloc(det_id, iteration, comment);
-}
-psArray *detMasterFrameSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
-{
-    psArray         *rowSet;
-    psArray         *returnSet;
-    psU64           i;
-
-    rowSet = psDBSelectRows(dbh, DETMASTERFRAME_TABLE_NAME, where, limit);
-    if (!rowSet) {
-        return NULL;
-    }
-
-    // convert psMetadata rows to row objects
-
-    returnSet = psArrayAllocEmpty(rowSet->n);
-
-    for (i = 0; i < rowSet->n; i++) {
-        detMasterFrameRow *object = detMasterFrameObjectFromMetadata(rowSet->data[i]);
-        psArrayAdd(returnSet, 0, object);
-        psFree(object);
-    }
-
-    psFree(rowSet);
-
-    return returnSet;
-}
-bool detMasterFrameDeleteObject(psDB *dbh, const detMasterFrameRow *object)
-{
-    psMetadata *where = detMasterFrameMetadataFromObject(object);
-    long long count = psDBDeleteRows(dbh, DETMASTERFRAME_TABLE_NAME, where, 0);
-    psFree(where)
-    if (count < 0) {
-        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detMasterFrame");
-        return false;
-    }
-    if (count > 1) {
-        // XXX should this be a psAbort() instead?  It is possible that
-        // having an object match multiple rows was by design.
-        psError(PS_ERR_UNKNOWN, true, "detMasterFrameRow object matched more then one row.  Check your database schema");
-        return false;
-    }
-
-    return true;
-}
-long long detMasterFrameDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
-{
-    long long       deleted = 0;
-
-    for (long long i = 0; i < objects->n; i++) {
-        detMasterFrameRow *object = objects->data[i];
-        psMetadata *where = detMasterFrameMetadataFromObject(object);
-        long long count = psDBDeleteRows(dbh, DETMASTERFRAME_TABLE_NAME, where, limit);
-        psFree(where)
-        if (count < 0) {
-            psError(PS_ERR_UNKNOWN, true, "failed to delete row from detMasterFrame");
-            return count;
-        }
-
-        deleted += count;
-    }
-
-    return deleted;
-}
-bool detMasterFramePrintObjects(FILE *stream, psArray *objects, bool mdcf)
-{
-    PS_ASSERT_PTR_NON_NULL(objects, false);
-
-    psMetadata *output = psMetadataAlloc();
-    for (long i = 0; i < psArrayLength(objects); i++) {
-        psMetadata *md = detMasterFrameMetadataFromObject(objects->data[i]);
-        if (!psMetadataAddMetadata(
-            output,
-            PS_LIST_TAIL,
-            DETMASTERFRAME_TABLE_NAME,
-            PS_META_DUPLICATE_OK,
-            NULL,
-            md
-        )) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
-            psFree(md);
-            psFree(output);
-            return false;
-        }
-        psFree(md);
-    }
-
-    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
-        psFree(output);
-    }
-    psFree(output);
-
-    return true;
-}
-static void detMasterImfileRowFree(detMasterImfileRow *object);
-
-detMasterImfileRow *detMasterImfileRowAlloc(psS32 det_id, const char *class_id, const char *uri, const char *recipe)
-{
-    detMasterImfileRow *_object;
-
-    _object = psAlloc(sizeof(detMasterImfileRow));
-    psMemSetDeallocator(_object, (psFreeFunc)detMasterImfileRowFree);
-
-    _object->det_id = det_id;
-    _object->class_id = psStringCopy(class_id);
-    _object->uri = psStringCopy(uri);
-    _object->recipe = psStringCopy(recipe);
-
-    return _object;
-}
-
-static void detMasterImfileRowFree(detMasterImfileRow *object)
-{
-    psFree(object->class_id);
-    psFree(object->uri);
-    psFree(object->recipe);
-}
-
-bool detMasterImfileCreateTable(psDB *dbh)
-{
-    psMetadata *md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S32, "Primary Key", 0)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, "Primary Key", "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, "255")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "recipe", PS_DATA_STRING, NULL, "64")) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
-        psFree(md);
-        return false;
-    }
-
-    bool status = psDBCreateTable(dbh, DETMASTERIMFILE_TABLE_NAME, md);
-
-    psFree(md);
-
-    return status;
-}
-
-bool detMasterImfileDropTable(psDB *dbh)
-{
-    return psDBDropTable(dbh, DETMASTERIMFILE_TABLE_NAME);
-}
-
-bool detMasterImfileInsert(psDB * dbh, psS32 det_id, const char *class_id, const char *uri, const char *recipe)
-{
-    psMetadata *md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S32, NULL, det_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, class_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "recipe", PS_DATA_STRING, NULL, recipe)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
-        psFree(md);
-        return false;
-    }
-
-    bool status = psDBInsertOneRow(dbh, DETMASTERIMFILE_TABLE_NAME, md);
-    psFree(md);
-
-    return status;
-}
-
-long long detMasterImfileDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
-{
-    long long       deleted = 0;
-
-    long long count = psDBDeleteRows(dbh, DETMASTERIMFILE_TABLE_NAME, where, limit);
-    if (count < 0) {
-        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detMasterImfile");
-        return count;
-
-        deleted += count;
-    }
-
-    return deleted;
-}
-bool detMasterImfileInsertObject(psDB *dbh, detMasterImfileRow *object)
-{
-    return detMasterImfileInsert(dbh, object->det_id, object->class_id, object->uri, object->recipe);
-}
-
-bool detMasterImfileInsertObjects(psDB *dbh, psArray *objects)
-{
-    for (long i = 0; i < psArrayLength(objects); i++) {
-        if (!detMasterImfileInsertObject(dbh, objects->data[i])) {
-            return false;
-        }
-    }
-
-    return true;
-}
-
-bool detMasterImfileInsertFits(psDB *dbh, const psFits *fits)
-{
-    psArray         *rowSet;
-
-    // move to (the first?) extension named  DETMASTERIMFILE_TABLE_NAME
-    if (!psFitsMoveExtName(fits, DETMASTERIMFILE_TABLE_NAME)) {
-        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETMASTERIMFILE_TABLE_NAME);
-        return false;
-    }
-
-    // check HDU type
-    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
-        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
-        return false;
-    }
-
-    // read fits table
-    rowSet = psFitsReadTable(fits);
-    if (!rowSet) {
-        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
-        psFree(rowSet);
-        return false;
-    }
-
-    if (!psDBInsertRows(dbh, DETMASTERIMFILE_TABLE_NAME, rowSet)) {
-        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
-        psFree(rowSet);
-        return false;
-    }
-
-    psFree(rowSet);
-
-    return true;
-}
-
-bool detMasterImfileSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
-{
-    psArray         *rowSet;
-
-    rowSet = psDBSelectRows(dbh, DETMASTERIMFILE_TABLE_NAME, where, limit);
-    if (!rowSet) {
-        return false;
-    }
-
-    // output to fits
-    if (!psFitsWriteTable(fits, NULL, rowSet, DETMASTERIMFILE_TABLE_NAME)) {
-        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
-        psFree(rowSet);
-        return false;
-    }
-
-    psFree(rowSet);
-
-    return true;
-}
-
-psMetadata *detMasterImfileMetadataFromObject(const detMasterImfileRow *object)
-{
-    psMetadata *md = psMetadataAlloc();
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "det_id", PS_DATA_S32, NULL, object->det_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "class_id", PS_DATA_STRING, NULL, object->class_id)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
-        psFree(md);
-        return false;
-    }
-    if (!psMetadataAdd(md, PS_LIST_TAIL, "recipe", PS_DATA_STRING, NULL, object->recipe)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
-        psFree(md);
-        return false;
-    }
-
-
-    return md;
-}
-
-detMasterImfileRow *detMasterImfileObjectFromMetadata(psMetadata *md)
-{
-
-bool status = false;
-    psS32 det_id = psMetadataLookupS32(&status, md, "det_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
-        return false;
-    }
-    char* class_id = psMetadataLookupPtr(&status, md, "class_id");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item class_id");
-        return false;
-    }
-    char* uri = psMetadataLookupPtr(&status, md, "uri");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
-        return false;
-    }
-    char* recipe = psMetadataLookupPtr(&status, md, "recipe");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item recipe");
-        return false;
-    }
-
-    return detMasterImfileRowAlloc(det_id, class_id, uri, recipe);
-}
-psArray *detMasterImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
-{
-    psArray         *rowSet;
-    psArray         *returnSet;
-    psU64           i;
-
-    rowSet = psDBSelectRows(dbh, DETMASTERIMFILE_TABLE_NAME, where, limit);
-    if (!rowSet) {
-        return NULL;
-    }
-
-    // convert psMetadata rows to row objects
-
-    returnSet = psArrayAllocEmpty(rowSet->n);
-
-    for (i = 0; i < rowSet->n; i++) {
-        detMasterImfileRow *object = detMasterImfileObjectFromMetadata(rowSet->data[i]);
-        psArrayAdd(returnSet, 0, object);
-        psFree(object);
-    }
-
-    psFree(rowSet);
-
-    return returnSet;
-}
-bool detMasterImfileDeleteObject(psDB *dbh, const detMasterImfileRow *object)
-{
-    psMetadata *where = detMasterImfileMetadataFromObject(object);
-    long long count = psDBDeleteRows(dbh, DETMASTERIMFILE_TABLE_NAME, where, 0);
-    psFree(where)
-    if (count < 0) {
-        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detMasterImfile");
-        return false;
-    }
-    if (count > 1) {
-        // XXX should this be a psAbort() instead?  It is possible that
-        // having an object match multiple rows was by design.
-        psError(PS_ERR_UNKNOWN, true, "detMasterImfileRow object matched more then one row.  Check your database schema");
-        return false;
-    }
-
-    return true;
-}
-long long detMasterImfileDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
-{
-    long long       deleted = 0;
-
-    for (long long i = 0; i < objects->n; i++) {
-        detMasterImfileRow *object = objects->data[i];
-        psMetadata *where = detMasterImfileMetadataFromObject(object);
-        long long count = psDBDeleteRows(dbh, DETMASTERIMFILE_TABLE_NAME, where, limit);
-        psFree(where)
-        if (count < 0) {
-            psError(PS_ERR_UNKNOWN, true, "failed to delete row from detMasterImfile");
-            return count;
-        }
-
-        deleted += count;
-    }
-
-    return deleted;
-}
-bool detMasterImfilePrintObjects(FILE *stream, psArray *objects, bool mdcf)
-{
-    PS_ASSERT_PTR_NON_NULL(objects, false);
-
-    psMetadata *output = psMetadataAlloc();
-    for (long i = 0; i < psArrayLength(objects); i++) {
-        psMetadata *md = detMasterImfileMetadataFromObject(objects->data[i]);
-        if (!psMetadataAddMetadata(
-            output,
-            PS_LIST_TAIL,
-            DETMASTERIMFILE_TABLE_NAME,
-            PS_META_DUPLICATE_OK,
-            NULL,
-            md
-        )) {
-            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
-            psFree(md);
-            psFree(output);
-            return false;
-        }
-        psFree(md);
-    }
-
-    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
-        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
-        psFree(output);
-    }
-    psFree(output);
-
-    return true;
-}
 static void detResidImfileRowFree(detResidImfileRow *object);
 
Index: /trunk/ippdb/src/ippdb.h
===================================================================
--- /trunk/ippdb/src/ippdb.h	(revision 10237)
+++ /trunk/ippdb/src/ippdb.h	(revision 10238)
@@ -20,5 +20,5 @@
 /*
  *
- * This file was generated by glueforge 0.31
+ * This file was generated by glueforge 0.32
  *
  * Do NOT directly edit this file.
@@ -5976,383 +5976,4 @@
     bool            mdcf                ///< format as mdconfig or simple
 );
-/** detMasterFrameRow data structure
- *
- * Structure for representing a single row of detMasterFrame table data.
- */
-
-typedef struct {
-    psS32           det_id;
-    psS32           iteration;
-    char            *comment;
-} detMasterFrameRow;
-
-/** Creates a new detMasterFrameRow object
- *
- *  @return A new detMasterFrameRow object or NULL on failure.
- */
-
-detMasterFrameRow *detMasterFrameRowAlloc(
-    psS32           det_id,
-    psS32           iteration,
-    const char      *comment
-);
-
-/** Creates a new detMasterFrame table
- *
- * @return true on success
- */
-
-bool detMasterFrameCreateTable(
-    psDB            *dbh                ///< Database handle
-);
-
-/** Deletes a detMasterFrame table
- *
- * @return true on success
- */
-
-bool detMasterFrameDropTable(
-    psDB            *dbh                ///< Database handle
-);
-
-/** Insert a single row into a table
- *
- * This function constructs and inserts a single row based on it's parameters.
- *
- * @return true on success
- */
-
-bool detMasterFrameInsert(
-    psDB            *dbh,               ///< Database handle
-    psS32           det_id,
-    psS32           iteration,
-    const char      *comment
-);
-
-/** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
- *
- * @return A The number of rows removed or a negative value on error
- */
-
-long long detMasterFrameDelete(
-    psDB            *dbh,               ///< Database handle
-    const psMetadata *where,            ///< Row match criteria
-    unsigned long long limit            ///< Maximum number of elements to delete 
-);
-
-/** Insert a single detMasterFrameRow object into a table
- *
- * This function constructs and inserts a single row based on it's parameters.
- *
- * @return true on success
- */
-
-bool detMasterFrameInsertObject(
-    psDB            *dbh,               ///< Database handle
-    detMasterFrameRow *object             ///< detMasterFrameRow object
-);
-
-/** Insert an array of detMasterFrameRow object into a table
- *
- * This function constructs and inserts multiple rows based on it's parameters.
- *
- * @return true on success
- */
-
-bool detMasterFrameInsertObjects(
-    psDB            *dbh,               ///< Database handle
-    psArray         *objects            ///< array of detMasterFrameRow objects
-);
-
-/** Insert data from a binary FITS table detMasterFrameRow into the database
- *
- * This function expects a psFits object with a FITS table as the first
- * extension.  The table must have at least one row of data in it, that is of
- * the appropriate format (number of columns and their type).  All other
- * extensions are ignored.
- *
- * @return true on success
- */
-
-bool detMasterFrameInsertFits(
-    psDB            *dbh,               ///< Database handle
-    const psFits    *fits               ///< psFits object
-);
-
-/** Selects up to limit from the database and returns them in a binary FITS table
- *
- * This function assumes an empty psFits object and will create a FITS table
- * as the first extension.
- *
- *  See psDBSelectRows() for documentation on the format of where.
- *
- * @return true on success
- */
-
-bool detMasterFrameSelectRowsFits(
-    psDB            *dbh,               ///< Database handle
-    psFits          *fits,              ///< psFits object
-    const psMetadata *where,            ///< Row match criteria
-    unsigned long long limit            ///< Maximum number of elements to return
-);
-
-/** Convert a detMasterFrameRow into an equivalent psMetadata
- *
- * @return A psMetadata pointer or NULL on error
- */
-
-psMetadata *detMasterFrameMetadataFromObject(
-    const detMasterFrameRow *object             ///< fooRow to convert into a psMetadata
-);
-
-/** Convert a psMetadata into an equivalent fooRow
- *
- * @return A detMasterFrameRow pointer or NULL on error
- */
-
-detMasterFrameRow *detMasterFrameObjectFromMetadata(
-    psMetadata      *md                 ///< psMetadata to convert into a fooRow
-);
-/** Selects up to limit rows from the database and returns as detMasterFrameRow objects in a psArray
- *
- *  See psDBSelectRows() for documentation on the format of where.
- *
- * @return A psArray pointer or NULL on error
- */
-
-psArray *detMasterFrameSelectRowObjects(
-    psDB            *dbh,               ///< Database handle
-    const psMetadata *where,            ///< Row match criteria
-    unsigned long long limit            ///< Maximum number of elements to return
-);
-/** Deletes a row from the database coresponding to an detMasterFrame
- *
- *  Note that a 'where' search psMetadata is constructed from each object and
- *  used to find rows to delete.
- *
- * @return A The number of rows removed or a negative value on error
- */
-
-bool detMasterFrameDeleteObject(
-    psDB            *dbh,               ///< Database handle
-    const detMasterFrameRow *object    ///< Object to delete
-);
-/** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
- *
- *  Note that a 'where' search psMetadata is constructed from each object and
- *  used to find rows to delete.
- *
- * @return A The number of rows removed or a negative value on error
- */
-
-long long detMasterFrameDeleteRowObjects(
-    psDB            *dbh,               ///< Database handle
-    const psArray   *objects,           ///< Array of objects to delete
-    unsigned long long limit            ///< Maximum number of elements to delete 
-);
-/** Formats and prints an array of detMasterFrameRow objects
- *
- * When mdcf is set the formated output is in psMetadataConfig
- * format, otherwise it is in a simple tabular format.
- *
- * @return true on success
- */
-
-bool detMasterFramePrintObjects(
-    FILE            *stream,            ///< a stream
-    psArray         *objects,           ///< An array of detMasterFrameRow objects
-    bool            mdcf                ///< format as mdconfig or simple
-);
-/** detMasterImfileRow data structure
- *
- * Structure for representing a single row of detMasterImfile table data.
- */
-
-typedef struct {
-    psS32           det_id;
-    char            *class_id;
-    char            *uri;
-    char            *recipe;
-} detMasterImfileRow;
-
-/** Creates a new detMasterImfileRow object
- *
- *  @return A new detMasterImfileRow object or NULL on failure.
- */
-
-detMasterImfileRow *detMasterImfileRowAlloc(
-    psS32           det_id,
-    const char      *class_id,
-    const char      *uri,
-    const char      *recipe
-);
-
-/** Creates a new detMasterImfile table
- *
- * @return true on success
- */
-
-bool detMasterImfileCreateTable(
-    psDB            *dbh                ///< Database handle
-);
-
-/** Deletes a detMasterImfile table
- *
- * @return true on success
- */
-
-bool detMasterImfileDropTable(
-    psDB            *dbh                ///< Database handle
-);
-
-/** Insert a single row into a table
- *
- * This function constructs and inserts a single row based on it's parameters.
- *
- * @return true on success
- */
-
-bool detMasterImfileInsert(
-    psDB            *dbh,               ///< Database handle
-    psS32           det_id,
-    const char      *class_id,
-    const char      *uri,
-    const char      *recipe
-);
-
-/** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
- *
- * @return A The number of rows removed or a negative value on error
- */
-
-long long detMasterImfileDelete(
-    psDB            *dbh,               ///< Database handle
-    const psMetadata *where,            ///< Row match criteria
-    unsigned long long limit            ///< Maximum number of elements to delete 
-);
-
-/** Insert a single detMasterImfileRow object into a table
- *
- * This function constructs and inserts a single row based on it's parameters.
- *
- * @return true on success
- */
-
-bool detMasterImfileInsertObject(
-    psDB            *dbh,               ///< Database handle
-    detMasterImfileRow *object             ///< detMasterImfileRow object
-);
-
-/** Insert an array of detMasterImfileRow object into a table
- *
- * This function constructs and inserts multiple rows based on it's parameters.
- *
- * @return true on success
- */
-
-bool detMasterImfileInsertObjects(
-    psDB            *dbh,               ///< Database handle
-    psArray         *objects            ///< array of detMasterImfileRow objects
-);
-
-/** Insert data from a binary FITS table detMasterImfileRow into the database
- *
- * This function expects a psFits object with a FITS table as the first
- * extension.  The table must have at least one row of data in it, that is of
- * the appropriate format (number of columns and their type).  All other
- * extensions are ignored.
- *
- * @return true on success
- */
-
-bool detMasterImfileInsertFits(
-    psDB            *dbh,               ///< Database handle
-    const psFits    *fits               ///< psFits object
-);
-
-/** Selects up to limit from the database and returns them in a binary FITS table
- *
- * This function assumes an empty psFits object and will create a FITS table
- * as the first extension.
- *
- *  See psDBSelectRows() for documentation on the format of where.
- *
- * @return true on success
- */
-
-bool detMasterImfileSelectRowsFits(
-    psDB            *dbh,               ///< Database handle
-    psFits          *fits,              ///< psFits object
-    const psMetadata *where,            ///< Row match criteria
-    unsigned long long limit            ///< Maximum number of elements to return
-);
-
-/** Convert a detMasterImfileRow into an equivalent psMetadata
- *
- * @return A psMetadata pointer or NULL on error
- */
-
-psMetadata *detMasterImfileMetadataFromObject(
-    const detMasterImfileRow *object             ///< fooRow to convert into a psMetadata
-);
-
-/** Convert a psMetadata into an equivalent fooRow
- *
- * @return A detMasterImfileRow pointer or NULL on error
- */
-
-detMasterImfileRow *detMasterImfileObjectFromMetadata(
-    psMetadata      *md                 ///< psMetadata to convert into a fooRow
-);
-/** Selects up to limit rows from the database and returns as detMasterImfileRow objects in a psArray
- *
- *  See psDBSelectRows() for documentation on the format of where.
- *
- * @return A psArray pointer or NULL on error
- */
-
-psArray *detMasterImfileSelectRowObjects(
-    psDB            *dbh,               ///< Database handle
-    const psMetadata *where,            ///< Row match criteria
-    unsigned long long limit            ///< Maximum number of elements to return
-);
-/** Deletes a row from the database coresponding to an detMasterImfile
- *
- *  Note that a 'where' search psMetadata is constructed from each object and
- *  used to find rows to delete.
- *
- * @return A The number of rows removed or a negative value on error
- */
-
-bool detMasterImfileDeleteObject(
-    psDB            *dbh,               ///< Database handle
-    const detMasterImfileRow *object    ///< Object to delete
-);
-/** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
- *
- *  Note that a 'where' search psMetadata is constructed from each object and
- *  used to find rows to delete.
- *
- * @return A The number of rows removed or a negative value on error
- */
-
-long long detMasterImfileDeleteRowObjects(
-    psDB            *dbh,               ///< Database handle
-    const psArray   *objects,           ///< Array of objects to delete
-    unsigned long long limit            ///< Maximum number of elements to delete 
-);
-/** Formats and prints an array of detMasterImfileRow objects
- *
- * When mdcf is set the formated output is in psMetadataConfig
- * format, otherwise it is in a simple tabular format.
- *
- * @return true on success
- */
-
-bool detMasterImfilePrintObjects(
-    FILE            *stream,            ///< a stream
-    psArray         *objects,           ///< An array of detMasterImfileRow objects
-    bool            mdcf                ///< format as mdconfig or simple
-);
 /** detResidImfileRow data structure
  *
Index: /trunk/ippdb/tests/alloc.c
===================================================================
--- /trunk/ippdb/tests/alloc.c	(revision 10237)
+++ /trunk/ippdb/tests/alloc.c	(revision 10238)
@@ -1257,58 +1257,4 @@
 
     {
-        detMasterFrameRow *object;
-
-        object = detMasterFrameRowAlloc(-32, -32, "a string"    );
-
-        if (!object) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!object->det_id == -32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->iteration == -32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->comment, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(object);
-    }
-
-    {
-        detMasterImfileRow *object;
-
-        object = detMasterImfileRowAlloc(-32, "a string", "a string", "a string"    );
-
-        if (!object) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!object->det_id == -32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(object);
-    }
-
-    {
         detResidImfileRow *object;
 
Index: /trunk/ippdb/tests/createtable.c
===================================================================
--- /trunk/ippdb/tests/createtable.c	(revision 10237)
+++ /trunk/ippdb/tests/createtable.c	(revision 10238)
@@ -448,34 +448,4 @@
         }
 
-        if(!detMasterFrameCreateTable(dbh)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        if(!detMasterImfileCreateTable(dbh)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
         if(!detResidImfileCreateTable(dbh)) {
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/dbcleanup.c
===================================================================
--- /trunk/ippdb/tests/dbcleanup.c	(revision 10237)
+++ /trunk/ippdb/tests/dbcleanup.c	(revision 10238)
@@ -40,6 +40,4 @@
     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detNormalizedImfile");
     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detNormalizedExp");
-    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detMasterFrame");
-    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detMasterImfile");
     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detResidImfile");
     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detResidExp");
Index: /trunk/ippdb/tests/dbsetup.c
===================================================================
--- /trunk/ippdb/tests/dbsetup.c	(revision 10237)
+++ /trunk/ippdb/tests/dbsetup.c	(revision 10238)
@@ -100,10 +100,4 @@
     detNormalizedExpCreateTable(dbh);
 
-    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detMasterFrame");
-    detMasterFrameCreateTable(dbh);
-
-    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detMasterImfile");
-    detMasterImfileCreateTable(dbh);
-
     p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detResidImfile");
     detResidImfileCreateTable(dbh);
Index: /trunk/ippdb/tests/droptable.c
===================================================================
--- /trunk/ippdb/tests/droptable.c	(revision 10237)
+++ /trunk/ippdb/tests/droptable.c	(revision 10238)
@@ -448,34 +448,4 @@
         }
 
-        if (!detMasterFrameDropTable(dbh)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!detMasterImfileDropTable(dbh)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
         if (!detResidImfileDropTable(dbh)) {
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/insert.c
===================================================================
--- /trunk/ippdb/tests/insert.c	(revision 10237)
+++ /trunk/ippdb/tests/insert.c	(revision 10238)
@@ -448,34 +448,4 @@
         }
 
-        if (!detMasterFrameInsert(dbh, -32, -32, "a string")) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!detMasterImfileInsert(dbh, -32, "a string", "a string", "a string")) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
         if (!detResidImfileInsert(dbh, -32, -32, "a string", "a string", "a string", "a string", 64.64, 64.64, 64.64, "a string", "a string")) {
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/insertfits.c
===================================================================
--- /trunk/ippdb/tests/insertfits.c	(revision 10237)
+++ /trunk/ippdb/tests/insertfits.c	(revision 10238)
@@ -778,56 +778,4 @@
         }
 
-        if (!detMasterFrameInsertFits(dbh, fits)) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!psFitsClose(fits)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        psFits          *fits;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        // open a temp
-        fits = psFitsOpen(TMP_FILENAME, "r");
-        if (!fits) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!detMasterImfileInsertFits(dbh, fits)) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!psFitsClose(fits)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        psFits          *fits;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        // open a temp
-        fits = psFitsOpen(TMP_FILENAME, "r");
-        if (!fits) {
-            exit(EXIT_FAILURE);
-        }
-
         if (!detResidImfileInsertFits(dbh, fits)) {
             exit(EXIT_FAILURE);
Index: /trunk/ippdb/tests/insertobject.c
===================================================================
--- /trunk/ippdb/tests/insertobject.c	(revision 10237)
+++ /trunk/ippdb/tests/insertobject.c	(revision 10238)
@@ -645,48 +645,4 @@
     {
         psDB            *dbh;
-        detMasterFrameRow *object;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        object = detMasterFrameRowAlloc(-32, -32, "a string");
-        if (!object) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!detMasterFrameInsertObject(dbh, object)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(object);
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        detMasterImfileRow *object;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        object = detMasterImfileRowAlloc(-32, "a string", "a string", "a string");
-        if (!object) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!detMasterImfileInsertObject(dbh, object)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(object);
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
         detResidImfileRow *object;
 
Index: /trunk/ippdb/tests/metadatafromobject.c
===================================================================
--- /trunk/ippdb/tests/metadatafromobject.c	(revision 10237)
+++ /trunk/ippdb/tests/metadatafromobject.c	(revision 10238)
@@ -1490,74 +1490,4 @@
     {
         psMetadata      *md;
-        detMasterFrameRow *object;
-        bool            status;
-
-        object = detMasterFrameRowAlloc(-32, -32, "a string");
-        if (!object) {
-            exit(EXIT_FAILURE);
-        }
-
-        md = detMasterFrameMetadataFromObject(object);
-        if (!md) {
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(object);
-
-        if (!psMetadataLookupS32(&status, md, "det_id") == -32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataLookupS32(&status, md, "iteration") == -32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(psMetadataLookupPtr(&status, md, "comment"), "a string", MAX_STRING_LENGTH)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(md);
-    }
-
-    {
-        psMetadata      *md;
-        detMasterImfileRow *object;
-        bool            status;
-
-        object = detMasterImfileRowAlloc(-32, "a string", "a string", "a string");
-        if (!object) {
-            exit(EXIT_FAILURE);
-        }
-
-        md = detMasterImfileMetadataFromObject(object);
-        if (!md) {
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(object);
-
-        if (!psMetadataLookupS32(&status, md, "det_id") == -32) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(psMetadataLookupPtr(&status, md, "class_id"), "a string", MAX_STRING_LENGTH)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(psMetadataLookupPtr(&status, md, "uri"), "a string", MAX_STRING_LENGTH)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(md);
-    }
-
-    {
-        psMetadata      *md;
         detResidImfileRow *object;
         bool            status;
Index: /trunk/ippdb/tests/objectfrommetadata.c
===================================================================
--- /trunk/ippdb/tests/objectfrommetadata.c	(revision 10237)
+++ /trunk/ippdb/tests/objectfrommetadata.c	(revision 10238)
@@ -2274,96 +2274,4 @@
     {
         psMetadata      *md;
-        detMasterFrameRow *object;
-
-        md = psMetadataAlloc();
-        if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, NULL, -32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddS32(md, PS_LIST_TAIL, "iteration", 0, NULL, -32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "comment", 0, NULL, "a string")) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-
-        object = detMasterFrameObjectFromMetadata(md);
-        if (!object) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(md);
-
-        if (!object->det_id == -32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (!object->iteration == -32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->comment, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(object);
-    }
-
-    {
-        psMetadata      *md;
-        detMasterImfileRow *object;
-
-        md = psMetadataAlloc();
-        if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, NULL, -32)) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "class_id", 0, NULL, "a string")) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "uri", 0, NULL, "a string")) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-
-        object = detMasterImfileObjectFromMetadata(md);
-        if (!object) {
-            psFree(md);
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(md);
-
-        if (!object->det_id == -32) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->class_id, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->uri, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
-            psFree(object);
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(object);
-    }
-
-    {
-        psMetadata      *md;
         detResidImfileRow *object;
 
Index: /trunk/ippdb/tests/selectrowsfits.c
===================================================================
--- /trunk/ippdb/tests/selectrowsfits.c	(revision 10237)
+++ /trunk/ippdb/tests/selectrowsfits.c	(revision 10238)
@@ -659,48 +659,4 @@
         }
 
-        if (!detMasterFrameSelectRowsFits(dbh, fits, NULL, 1)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(fits);
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        psFits          *fits;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        fits = psFitsOpen(TMP_FILENAME, "w");
-        if (!fits) {
-            exit(EXIT_FAILURE);
-        }
-
-        if (!detMasterImfileSelectRowsFits(dbh, fits, NULL, 1)) {
-            exit(EXIT_FAILURE);
-        }
-
-        psFree(fits);
-        psDBCleanup(dbh);
-    }
-
-    {
-        psDB            *dbh;
-        psFits          *fits;
-
-        dbh = psDBInit("localhost", "test", NULL, "test");
-        if (!dbh) {
-            exit(EXIT_FAILURE);
-        }
-
-        fits = psFitsOpen(TMP_FILENAME, "w");
-        if (!fits) {
-            exit(EXIT_FAILURE);
-        }
-
         if (!detResidImfileSelectRowsFits(dbh, fits, NULL, 1)) {
             exit(EXIT_FAILURE);
