Index: /trunk/glueforge/templates/psdb/insert.tt
===================================================================
--- /trunk/glueforge/templates/psdb/insert.tt	(revision 4337)
+++ /trunk/glueforge/templates/psdb/insert.tt	(revision 4338)
@@ -11,14 +11,24 @@
 )
 {
-    psMetadata      *row;
+    psMetadata      *md;
     bool            status;
 
-    row = psMetadataAlloc();
+    md = psMetadataAlloc();
 [% FOREACH item = columns -%]
-    psMetadataAdd(row, PS_LIST_TAIL, "[% item.name %]", [% item.mtype %], NULL, [% item.name %]);
+[% IF item.type == "S32" or item.type == "F32" or item.type == "F64" -%]
+    if (!psMetadataAdd[% item.type %](md, PS_LIST_TAIL, "[% item.name %]", NULL, [% item.name %])) {
+[% ELSIF item.type == "STR" -%]
+    if (!psMetadataAddStr(md, PS_LIST_TAIL, "[% item.name %]", NULL, psStringCopy([% item.name %]))) {
+[% ELSIF item.type == "BOOL" -%]
+    if (!psMetadataAdd(md, PS_LIST_TAIL, "[% item.name %]", PS_META_BOOL, NULL, [% item.name %])) {
+[% END -%]
+        // psError(); something bad happened
+        psFree(md);
+        return false;
+    }
 [% END -%]
 
-    status = psDBInsertOneRow(dbh, [% namespace FILTER upper %]_TABLE_NAME, row);
-    psFree(row);
+    status = psDBInsertOneRow(dbh, [% namespace FILTER upper %]_TABLE_NAME, md);
+    psFree(md);
 
     return status;
