Index: /trunk/glueforge/templates/psdb/alloc.tt
===================================================================
--- /trunk/glueforge/templates/psdb/alloc.tt	(revision 4195)
+++ /trunk/glueforge/templates/psdb/alloc.tt	(revision 4196)
@@ -4,15 +4,13 @@
 
 [% object_name %] *[% object_name %]Alloc(
-    [%- SET i = 0 -%]
-    [%- FOREACH item = columns -%]
-        [%- IF i == 0 -%]
-            [%- i = 1 -%]
-
-        [%- ELSE -%]
-, 
-        [%- END -%]
-        [%- item.ctype %] [% item.name %]
-        [%- i = i + 1 -%]
-    [%- END -%]
+[%- SET i = 0 -%]
+[% FOREACH item = columns -%]
+[% IF i == 0 %][% i = 1 %][% ELSE %], [% END -%]
+[% IF item.type == "STR" -%]
+const char *[% item.name %]
+[%- ELSE -%]
+[% item.ctype %] [% item.name %]
+[%- END -%]
+[% END -%]
 )
 {
@@ -23,5 +21,9 @@
 
 [% FOREACH item = columns -%]
+[% IF item.type == "STR" -%]
+    object->[% item.name %] = psStringCopy([% item.name %]);
+[% ELSE -%]
     object->[% item.name %] = [% item.name %];
+[% END -%]
 [% END -%]
 
Index: /trunk/glueforge/templates/psdb/alloc_h.tt
===================================================================
--- /trunk/glueforge/templates/psdb/alloc_h.tt	(revision 4195)
+++ /trunk/glueforge/templates/psdb/alloc_h.tt	(revision 4196)
@@ -10,6 +10,9 @@
 [% FOREACH item = columns -%]
 [% IF i == 0 %][% i = 1 %][% ELSE %],[% END %]
-    [% indented("$item.ctype", "$item.name") -%]
-[% i = i + 1 -%]
+[% IF item.type == "STR" -%]
+    [% indented("const char", "*$item.name") %]
+[%- ELSE -%]
+    [% indented("$item.ctype", "$item.name") %]
+[%- END -%]
 [% END %]
 );
Index: /trunk/glueforge/templates/psdb/createtable.tt
===================================================================
--- /trunk/glueforge/templates/psdb/createtable.tt	(revision 4195)
+++ /trunk/glueforge/templates/psdb/createtable.tt	(revision 4196)
@@ -6,17 +6,17 @@
     md = psMetadataAlloc();
     psMetadataAdd(md, PS_LIST_TAIL, "position", PS_META_S32, "AUTO_INCREMENT", 0.0);
-    [%- FOREACH item = columns %]
-        [%- IF item.comment;
-                SET item.comment = "\"$item.comment\"";
-            ELSE;
-                SET item.comment = 'NULL';
-            END;
-        %]
-        [%- IF item.mtype == "PS_META_STR" %]
+[% FOREACH item = columns %]
+[% IF item.comment;
+    SET item.comment = "\"$item.comment\"";
+ELSE;
+    SET item.comment = 'NULL';
+END;
+-%]
+[% IF item.mtype == "PS_META_STR" %]
     psMetadataAdd(md, PS_LIST_TAIL, "[% item.name %]", [% item.mtype %], [% item.comment %], "[% item.value %]");
-        [%- ELSE %]
+[% ELSE -%]
     psMetadataAdd(md, PS_LIST_TAIL, "[% item.name %]", [% item.mtype %], [% item.comment %], [% item.value %]);
-        [%- END %]
-    [%- END %]
+[% END -%]
+[% END -%]
     status = psDBCreateTable(dbh, [% namespace FILTER upper %]_TABLE_NAME, md);
     psFree(md);
Index: /trunk/glueforge/templates/psdb/header.tt
===================================================================
--- /trunk/glueforge/templates/psdb/header.tt	(revision 4195)
+++ /trunk/glueforge/templates/psdb/header.tt	(revision 4196)
@@ -23,5 +23,5 @@
 [% INCLUDE insertfits_h.tt %]
 [% INCLUDE popfits_h.tt %]
-[% INCLUDE selectrowsfits_h.tt %]
+[% INCLUDE selectrowsfits_h.tt -%]
 
 /// @}
Index: /trunk/glueforge/templates/psdb/insert.tt
===================================================================
--- /trunk/glueforge/templates/psdb/insert.tt	(revision 4195)
+++ /trunk/glueforge/templates/psdb/insert.tt	(revision 4196)
@@ -1,14 +1,12 @@
 bool [% namespace %]Insert(psDB * dbh,
-    [%- SET i = 0 -%]
-    [%- FOREACH item = columns -%]
-        [%- IF i == 0 -%]
-            [%- i = 1 -%]
- 
-        [%- ELSE -%]
-, 
-        [%- END -%]
-        [%- item.ctype %] [% item.name %]
-        [%- i = i + 1 -%]
-    [%- END -%]
+[%- SET i = 0 -%]
+[% FOREACH item = columns -%]
+[% IF i == 0 %][% i = 1 %] [% ELSE %], [% END -%]
+[% IF item.type == "STR" -%]
+const char *[% item.name %]
+[%- ELSE -%]
+[% item.ctype %] [% item.name %]
+[%- END -%]
+[% END -%]
 )
 {
@@ -17,7 +15,8 @@
 
     row = psMetadataAlloc();
-    [%- FOREACH item = columns %]
+[% FOREACH item = columns %]
     psMetadataAdd(row, PS_LIST_TAIL, "[% item.name %]", [% item.mtype %], NULL, [% item.name %]);
-    [%- END %]
+[% END -%]
+
     status = psDBInsertOneRow(dbh, [% namespace FILTER upper %]_TABLE_NAME, row);
     psFree(row);
Index: /trunk/glueforge/templates/psdb/insert_c.tt
===================================================================
--- /trunk/glueforge/templates/psdb/insert_c.tt	(revision 4195)
+++ /trunk/glueforge/templates/psdb/insert_c.tt	(revision 4196)
@@ -18,5 +18,5 @@
 [%- SET i = 0 -%]
 [%- FOREACH item = columns -%]
-    [%- IF i == 0 -%][%- i = 1 -%][%- ELSE -%], [% END -%] [%- item.test -%]
+[%- IF i == 0 -%][%- i = 1 -%][%- ELSE -%], [% END -%] [%- item.test -%]
 [%- END -%]
 );
Index: /trunk/glueforge/templates/psdb/insert_h.tt
===================================================================
--- /trunk/glueforge/templates/psdb/insert_h.tt	(revision 4195)
+++ /trunk/glueforge/templates/psdb/insert_h.tt	(revision 4196)
@@ -13,6 +13,9 @@
 [% FOREACH item = columns -%]
 [% IF i == 0 %][% i = 1 %][% ELSE %],[% END %]
+[% IF item.type == "STR" -%]
+    [% indented("const char", "*$item.name") -%]
+[% ELSE -%]
     [% indented("$item.ctype", "$item.name") -%]
-[% i = i + 1 -%]
+[% END -%]
 [% END %]
 );
Index: /trunk/glueforge/templates/psdb/insertobject.tt
===================================================================
--- /trunk/glueforge/templates/psdb/insertobject.tt	(revision 4195)
+++ /trunk/glueforge/templates/psdb/insertobject.tt	(revision 4196)
@@ -4,10 +4,9 @@
 
     status = [% namespace %]Insert(dbh,
-    [%- SET i = 0 -%]
-    [%- FOREACH item = columns -%]
-        [%- IF i == 0 -%][%- i = 1 -%] [% ELSE %], [% END -%]
+[%- SET i = 0 -%]
+[%- FOREACH item = columns -%]
+[%- IF i == 0 -%][%- i = 1 -%] [% ELSE %], [% END -%]
 object->[% item.name -%]
-        [%- i = i + 1 -%]
-    [%- END -%]
+[%- END -%]
 );
 
Index: /trunk/glueforge/templates/psdb/object_h.tt
===================================================================
--- /trunk/glueforge/templates/psdb/object_h.tt	(revision 4195)
+++ /trunk/glueforge/templates/psdb/object_h.tt	(revision 4196)
@@ -9,5 +9,9 @@
 [% SET i = 0 -%]
 [% FOREACH item = columns -%]
+[% IF item.type == "STR" -%]
+    [% indented("char", "*$item.name") %];
+[% ELSE -%]
     [% indented("$item.ctype", "$item.name") %];
 [% END -%]
+[% END -%]
 } [% object_name %];
Index: /trunk/glueforge/templates/psdb/pop_h.tt
===================================================================
--- /trunk/glueforge/templates/psdb/pop_h.tt	(revision 4195)
+++ /trunk/glueforge/templates/psdb/pop_h.tt	(revision 4196)
@@ -11,6 +11,9 @@
 [% FOREACH item = columns -%]
 [% IF i == 0 %][% i = 1 %][% ELSE %],[% END %]
+[% IF item.type == "STR" -%]
+    [% indented("char", "**$item.name") -%]
+[% ELSE -%]
     [% indented("$item.ctype", "*$item.name") -%]
-[% i = i + 1 -%]
+[% END -%]
 [% END %]
 );
Index: /trunk/glueforge/templates/psdb/popobject.tt
===================================================================
--- /trunk/glueforge/templates/psdb/popobject.tt	(revision 4195)
+++ /trunk/glueforge/templates/psdb/popobject.tt	(revision 4196)
@@ -28,10 +28,6 @@
 [% FOREACH item = columns -%]
 [% IF i == 0 -%][%- i = 1 -%][% ELSE %], [% END -%]
-[%- IF item.type == "STR" -%]
-psStringCopy([% item.name %])
-[%- ELSE -%]
 [% item.name %]
-[%- END -%]
-[% END -%]);
+[%- END -%]);
 
     return object;
Index: /trunk/glueforge/templates/psdb/selectrowsfits.tt
===================================================================
--- /trunk/glueforge/templates/psdb/selectrowsfits.tt	(revision 4195)
+++ /trunk/glueforge/templates/psdb/selectrowsfits.tt	(revision 4196)
@@ -1,3 +1,3 @@
-bool [% namespace %]SelectRowsFits(psDB *dbh, psFits *fits, psMetadata *where, unsigned long limit)
+bool [% namespace %]SelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long limit)
 {
     psArray         *rowSet;
Index: /trunk/glueforge/templates/psdb/selectrowsfits_h.tt
===================================================================
--- /trunk/glueforge/templates/psdb/selectrowsfits_h.tt	(revision 4195)
+++ /trunk/glueforge/templates/psdb/selectrowsfits_h.tt	(revision 4196)
@@ -12,5 +12,5 @@
     psDB            *dbh,               ///< Database handle
     psFits          *fits,              ///< psFits object
-    psMetadata      *where,             ///< Row match criteria
+    const psMetadata *where,            ///< Row match criteria
     unsigned long   limit               ///< Maximum number of elements to return
 );
