Index: /trunk/glueforge/templates/psdb/createtable.tt
===================================================================
--- /trunk/glueforge/templates/psdb/createtable.tt	(revision 4340)
+++ /trunk/glueforge/templates/psdb/createtable.tt	(revision 4341)
@@ -26,10 +26,12 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "[% item.name %]", PS_META_BOOL, [% item.comment %], [% item.value %])) {
 [% END -%]
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, false, "failed to add item [% item.name %]");
         psFree(md);
         return false;
     }
 [% END -%]
+
     status = psDBCreateTable(dbh, [% namespace FILTER upper %]_TABLE_NAME, md);
+
     psFree(md);
 
Index: /trunk/glueforge/templates/psdb/insert.tt
===================================================================
--- /trunk/glueforge/templates/psdb/insert.tt	(revision 4340)
+++ /trunk/glueforge/templates/psdb/insert.tt	(revision 4341)
@@ -23,5 +23,5 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "[% item.name %]", PS_META_BOOL, NULL, [% item.name %])) {
 [% END -%]
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, false, "failed to add item [% item.name %]");
         psFree(md);
         return false;
Index: /trunk/glueforge/templates/psdb/insertfits.tt
===================================================================
--- /trunk/glueforge/templates/psdb/insertfits.tt	(revision 4340)
+++ /trunk/glueforge/templates/psdb/insertfits.tt	(revision 4341)
@@ -5,5 +5,5 @@
     // move to (the first?) extension named  [% namespace FILTER upper %]_TABLE_NAME
     if (!psFitsMoveExtName(fits, [% namespace FILTER upper %]_TABLE_NAME)) {
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", [% namespace FILTER upper %]_TABLE_NAME);
         return false;
     }
@@ -11,5 +11,5 @@
     // check HDU type
     if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
         return false;
     }
@@ -18,5 +18,5 @@
     rowSet = psFitsReadTable(fits);
     if (!rowSet) {
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
         psFree(rowSet);
         return false;
@@ -24,5 +24,5 @@
 
     if (!psDBInsertRows(dbh, [% namespace FILTER upper %]_TABLE_NAME, rowSet)) {
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
         psFree(rowSet);
         return false;
Index: /trunk/glueforge/templates/psdb/metadatafromobject.tt
===================================================================
--- /trunk/glueforge/templates/psdb/metadatafromobject.tt	(revision 4340)
+++ /trunk/glueforge/templates/psdb/metadatafromobject.tt	(revision 4341)
@@ -12,5 +12,5 @@
     if (!psMetadataAdd(md, PS_LIST_TAIL, "[% item.name %]", PS_META_BOOL, NULL, object->[% item.name %])) {
 [% END -%]
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, false, "failed to add item [% item.name %]");
         psFree(md);
         return NULL;
Index: /trunk/glueforge/templates/psdb/objectfrommetadata.tt
===================================================================
--- /trunk/glueforge/templates/psdb/objectfrommetadata.tt	(revision 4340)
+++ /trunk/glueforge/templates/psdb/objectfrommetadata.tt	(revision 4341)
@@ -21,5 +21,5 @@
 [% END -%]
     if (!status) {
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item [% item.name %]");
         return false;
     }
Index: /trunk/glueforge/templates/psdb/pop.tt
===================================================================
--- /trunk/glueforge/templates/psdb/pop.tt	(revision 4340)
+++ /trunk/glueforge/templates/psdb/pop.tt	(revision 4341)
@@ -24,5 +24,5 @@
     psMemIncrRefCounter(row);
     if (!row) {
-        // psError(); error or table is empty
+        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
         return NULL;
     }
@@ -31,5 +31,5 @@
     rowID = psMetadataLookupS32(&status, row, [% namespace FILTER upper %]_INDEX_NAME);
     if (!status) {
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", [% namespace FILTER upper %]_INDEX_NAME);
         psFree(row);
         return NULL;
@@ -41,5 +41,5 @@
     deleted = psDBDeleteRows(dbh, [% namespace FILTER upper %]_TABLE_NAME, popped);
     if (deleted != 1) {
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
         psFree(popped);
         psFree(row);
@@ -58,5 +58,5 @@
 [% END -%]
     if (!status) {
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item [% item.name %]");
         psFree(row);
         return false;
Index: /trunk/glueforge/templates/psdb/popfits.tt
===================================================================
--- /trunk/glueforge/templates/psdb/popfits.tt	(revision 4340)
+++ /trunk/glueforge/templates/psdb/popfits.tt	(revision 4341)
@@ -4,5 +4,5 @@
 
     if (!fooSelectRowsFits(dbh, fits, NULL, limit)) {
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
         return false;
     }
@@ -12,10 +12,10 @@
                 "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
                 [% namespace FILTER upper %]_TABLE_NAME, [% namespace FILTER upper %]_INDEX_NAME, limit) < 0) {
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %s bytes", MAX_STRING_LENGTH);
         return false;
     }
             
     if (!p_psDBRunQuery(dbh, query)) {
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, false, "database query failed");
         return false;
     }
Index: /trunk/glueforge/templates/psdb/popobject.tt
===================================================================
--- /trunk/glueforge/templates/psdb/popobject.tt	(revision 4340)
+++ /trunk/glueforge/templates/psdb/popobject.tt	(revision 4341)
@@ -21,5 +21,5 @@
 [% END -%]
 [% END %])) {
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
         return NULL;
     }
Index: /trunk/glueforge/templates/psdb/selectrowsfits.tt
===================================================================
--- /trunk/glueforge/templates/psdb/selectrowsfits.tt	(revision 4340)
+++ /trunk/glueforge/templates/psdb/selectrowsfits.tt	(revision 4341)
@@ -12,5 +12,5 @@
     for (i = 0; i < rowSet->n; i++) {
         if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, [% namespace FILTER upper %]_INDEX_NAME)) {
-            // psError(); something bad happened
+            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", [% namespace FILTER upper %]_INDEX_NAME);
             psFree(rowSet);
             return false;
@@ -20,5 +20,5 @@
     // output to fits
     if (!psFitsWriteTable(fits, NULL, rowSet)) {
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
         psFree(rowSet);
         return false;
@@ -27,5 +27,5 @@
     // FIXME: needs to be after a new ext is written?
     if (!psFitsSetExtName(fits, [% namespace FILTER upper %]_TABLE_NAME)) {
-        // psError(); something bad happened
+        psError(PS_ERR_UNKNOWN, false, "failed to set FITS HDU extension name");
         psFree(rowSet);
         return false;
