Index: trunk/psLib/test/dataIO/tst_psDB.c
===================================================================
--- trunk/psLib/test/dataIO/tst_psDB.c	(revision 4318)
+++ trunk/psLib/test/dataIO/tst_psDB.c	(revision 4372)
@@ -9,6 +9,6 @@
  *  @author Aaron Culliney, MHPCC
  *
- *  @version $Revision: 1.24 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2005-06-20 19:04:56 $
+ *  @version $Revision: 1.25 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2005-06-24 01:49:25 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -51,4 +51,11 @@
 #define CONST_ROW_2_F64      56.75
 #define CONST_ROW_2_BOOL     FALSE
+
+#define TAB_COL_0_NAME      "key_string"
+#define TAB_COL_1_NAME      "key_s32"
+#define TAB_COL_2_NAME      "key_f32"
+#define TAB_COL_3_NAME      "key_f64"
+#define TAB_COL_4_NAME      "key_bool"
+#define TAB_COL_5_NAME      "key_s32_0"
 
 static psDB *_init_psDB( void );
@@ -98,5 +105,5 @@
                               {TPDBInsertRows,     849,  "dbInsertRows",      0, false},
                               {TPDBDumpRows,       850,  "dbDumpRows",        0, false},
-                              {TPDBDumpCols,        -11, "dbDumpCols",        0, false},
+                              {TPDBDumpCols,       851,  "dbDumpCols",        0, false},
                               {TPDBUpdateRows,      -12, "dbUpdateRows",      0, false},
                               {TPDBDeleteRows,      -13, "dbDeleteRows",      0, false},
@@ -128,10 +135,10 @@
 {
     return _get_RowMetadata(
-               "key_string", "comment-string",     "90000", // value used to determine size of field
-               "key_s32",    "Primary Key",        0,       // values unused here ...
-               "key_f32",    "Key",                0.0,
-               "key_f64",    "",                   0.0,
-               "key_bool",   "",                   FALSE,
-               "key_s32_0",  "Key,AUTO_INCREMENT", 0);
+               TAB_COL_0_NAME, "comment-string",     "90000", // value used to determine size of field
+               TAB_COL_1_NAME,    "Primary Key",        0,       // values unused here ...
+               TAB_COL_2_NAME,    "Key",                0.0,
+               TAB_COL_3_NAME,    "",                   0.0,
+               TAB_COL_4_NAME,   "",                   FALSE,
+               TAB_COL_5_NAME,  "Key,AUTO_INCREMENT", 0);
 }
 
@@ -139,9 +146,9 @@
 {
     return _get_RowMetadata(
-               "key_string", "comment-string", val0,
-               "key_s32",    "comment-s32",    val1,
-               "key_f32",    "comment-f32",    val2,
-               "key_f64",    "comment-f64",    val3,
-               "key_bool",   "comment-bool",   val4,
+               TAB_COL_0_NAME, "comment-string", val0,
+               TAB_COL_1_NAME,    "comment-s32",    val1,
+               TAB_COL_2_NAME,    "comment-f32",    val2,
+               TAB_COL_3_NAME,    "comment-f64",    val3,
+               TAB_COL_4_NAME,   "comment-bool",   val4,
                NULL,         NULL,             0.0);
 }
@@ -206,9 +213,9 @@
     snprintf(buf, 32, "%s", CONST_ROW_1_STR );
     return _get_RowMetadata(
-               "key_string", "comment-string", buf,
-               "key_s32",    "comment-s32",    CONST_ROW_1_S32,
-               "key_f32",    "comment-f32",    CONST_ROW_1_F32,
-               "key_f64",    "comment-f64",    CONST_ROW_1_F64,
-               "key_bool",   "comment-bool",   CONST_ROW_1_BOOL,
+               TAB_COL_0_NAME, "comment-string", buf,
+               TAB_COL_1_NAME,    "comment-s32",    CONST_ROW_1_S32,
+               TAB_COL_2_NAME,    "comment-f32",    CONST_ROW_1_F32,
+               TAB_COL_3_NAME,    "comment-f64",    CONST_ROW_1_F64,
+               TAB_COL_4_NAME,   "comment-bool",   CONST_ROW_1_BOOL,
                NULL,         NULL,             0.0);
 }
@@ -219,9 +226,9 @@
     snprintf(buf, 32, "%s",CONST_ROW_2_STR);
     return _get_RowMetadata(
-               "key_string", "comment-string", buf,
-               "key_s32",    "comment-s32",    CONST_ROW_2_S32,
-               "key_f32",    "comment-f32",    CONST_ROW_2_F32,
-               "key_f64",    "comment-f64",    CONST_ROW_2_F64,
-               "key_bool",   "comment-bool",   CONST_ROW_2_BOOL,
+               TAB_COL_0_NAME, "comment-string", buf,
+               TAB_COL_1_NAME,    "comment-s32",    CONST_ROW_2_S32,
+               TAB_COL_2_NAME,    "comment-f32",    CONST_ROW_2_F32,
+               TAB_COL_3_NAME,    "comment-f64",    CONST_ROW_2_F64,
+               TAB_COL_4_NAME,   "comment-bool",   CONST_ROW_2_BOOL,
                NULL,         NULL,             0.0);
 }
@@ -230,9 +237,9 @@
 {
     return _get_RowMetadata(
-               "key_string", "comment-string", STR_1,
-               "key_s32",    "comment-s32",    S32_1,
-               "key_f32",    "comment-f32",    F32_1,
-               "key_f64",    "comment-f64",    F64_1,
-               "key_bool",   "comment-bool",   B_1,
+               TAB_COL_0_NAME, "comment-string", STR_1,
+               TAB_COL_1_NAME,    "comment-s32",    S32_1,
+               TAB_COL_2_NAME,    "comment-f32",    F32_1,
+               TAB_COL_3_NAME,    "comment-f64",    F64_1,
+               TAB_COL_4_NAME,   "comment-bool",   B_1,
                NULL,         NULL,             0.0);
 }
@@ -241,9 +248,9 @@
 {
     return _get_RowMetadata(
-               "key_string", "comment-string", STR_1,
-               "key_s32",    "comment-s32",    S32_1,
+               TAB_COL_0_NAME, "comment-string", STR_1,
+               TAB_COL_1_NAME,    "comment-s32",    S32_1,
                "key_999",    "comment-f32",    F32_1,
-               "key_f64",    "comment-f64",    F64_1,
-               "key_bool",   "comment-bool",   B_1,
+               TAB_COL_3_NAME,    "comment-f64",    F64_1,
+               TAB_COL_4_NAME,   "comment-bool",   B_1,
                NULL,         NULL,             0.0);
 }
@@ -259,5 +266,5 @@
         return NULL;
     }
-    s32 = psMetadataItemAllocS32("key_s32", "", S32_1);
+    s32 = psMetadataItemAllocS32(TAB_COL_1_NAME, "", S32_1);
     if (s32 == NULL) {
         psError(PS_ERR_UNKNOWN, true, "could not create psMetadataItem in %s!", __func__ );
@@ -283,5 +290,5 @@
     psMetadataItem*   item        = NULL;
 
-    item = psMetadataLookup(row,"key_string");
+    item = psMetadataLookup(row,TAB_COL_0_NAME);
     if((item==NULL) || (strcmp(item->data.V,STR_1)!=0)) {
         psError(PS_ERR_UNKNOWN,true,"Column key_string item %s not as expected %s",
@@ -290,5 +297,5 @@
     }
 
-    item = psMetadataLookup(row,"key_s32");
+    item = psMetadataLookup(row,TAB_COL_1_NAME);
     if((item==NULL) || (item->data.S32 != S32_1)) {
         psError(PS_ERR_UNKNOWN,true,"Column key_s32 item %d not as expected %d",
@@ -297,5 +304,5 @@
     }
 
-    item = psMetadataLookup(row,"key_f32");
+    item = psMetadataLookup(row,TAB_COL_2_NAME);
     if((item==NULL) || (fabs(item->data.F32-F32_1)>ERROR_TOL)) {
         psError(PS_ERR_UNKNOWN,true,"Column key_f32 item %f not as expected %f",
@@ -304,5 +311,5 @@
     }
 
-    item = psMetadataLookup(row,"key_f64");
+    item = psMetadataLookup(row,TAB_COL_3_NAME);
     if((item==NULL) || (fabs(item->data.F64-F64_1)>ERROR_TOL)) {
         psError(PS_ERR_UNKNOWN,true,"Column key_f64 item %lf not as expected %lf",
@@ -311,5 +318,5 @@
     }
 
-    item = psMetadataLookup(row,"key_bool");
+    item = psMetadataLookup(row,TAB_COL_4_NAME);
     if((item==NULL) || (item->data.B != B_1)) {
         psError(PS_ERR_UNKNOWN,true,"Column key_bool item %d not as expected %d",
@@ -326,5 +333,5 @@
     psMetadataItem*   item        = NULL;
 
-    item = psMetadataLookup(row,"key_string");
+    item = psMetadataLookup(row,TAB_COL_0_NAME);
     if((item==NULL) || (strcmp(item->data.V,CONST_ROW_1_STR)!=0)) {
         psError(PS_ERR_UNKNOWN,true,"Column key_string item %s not as expected %s",
@@ -333,5 +340,5 @@
     }
 
-    item = psMetadataLookup(row,"key_s32");
+    item = psMetadataLookup(row,TAB_COL_1_NAME);
     if((item==NULL) || (item->data.S32 != CONST_ROW_1_S32)) {
         psError(PS_ERR_UNKNOWN,true,"Column key_s32 item %d not as expected %d",
@@ -340,5 +347,5 @@
     }
 
-    item = psMetadataLookup(row,"key_f32");
+    item = psMetadataLookup(row,TAB_COL_2_NAME);
     if((item==NULL) || (fabs(item->data.F32-CONST_ROW_1_F32)>ERROR_TOL)) {
         psError(PS_ERR_UNKNOWN,true,"Column key_f32 item %f not as expected %f",
@@ -347,5 +354,5 @@
     }
 
-    item = psMetadataLookup(row,"key_f64");
+    item = psMetadataLookup(row,TAB_COL_3_NAME);
     if((item==NULL) || (fabs(item->data.F64-CONST_ROW_1_F64)>ERROR_TOL)) {
         psError(PS_ERR_UNKNOWN,true,"Column key_f64 item %lf not as expected %lf",
@@ -354,5 +361,5 @@
     }
 
-    item = psMetadataLookup(row,"key_bool");
+    item = psMetadataLookup(row,TAB_COL_4_NAME);
     if((item==NULL) || (item->data.B != CONST_ROW_1_BOOL)) {
         psError(PS_ERR_UNKNOWN,true,"Column key_bool item %d not as expected %d",
@@ -369,5 +376,5 @@
     psMetadataItem*   item        = NULL;
 
-    item = psMetadataLookup(row,"key_string");
+    item = psMetadataLookup(row,TAB_COL_0_NAME);
     if((item==NULL) || (strcmp(item->data.V,CONST_ROW_2_STR)!=0)) {
         psError(PS_ERR_UNKNOWN,true,"Column key_string item %s not as expected %s",
@@ -376,5 +383,5 @@
     }
 
-    item = psMetadataLookup(row,"key_s32");
+    item = psMetadataLookup(row,TAB_COL_1_NAME);
     if((item==NULL) || (item->data.S32 != CONST_ROW_2_S32)) {
         psError(PS_ERR_UNKNOWN,true,"Column key_s32 item %d not as expected %d",
@@ -383,5 +390,5 @@
     }
 
-    item = psMetadataLookup(row,"key_f32");
+    item = psMetadataLookup(row,TAB_COL_2_NAME);
     if((item==NULL) || (fabs(item->data.F32-CONST_ROW_2_F32)>ERROR_TOL)) {
         psError(PS_ERR_UNKNOWN,true,"Column key_f32 item %f not as expected %f",
@@ -390,5 +397,5 @@
     }
 
-    item = psMetadataLookup(row,"key_f64");
+    item = psMetadataLookup(row,TAB_COL_3_NAME);
     if((item==NULL) || (fabs(item->data.F64-CONST_ROW_2_F64)>ERROR_TOL)) {
         psError(PS_ERR_UNKNOWN,true,"Column key_f64 item %lf not as expected %lf",
@@ -397,5 +404,5 @@
     }
 
-    item = psMetadataLookup(row,"key_bool");
+    item = psMetadataLookup(row,TAB_COL_4_NAME);
     if((item==NULL) || (item->data.B != CONST_ROW_2_BOOL)) {
         psError(PS_ERR_UNKNOWN,true,"Column key_bool item %d not as expected %d",
@@ -676,5 +683,5 @@
 
     // Select all items in column key_string with valid arguments
-    ary = psDBSelectColumn(dbh, table, "key_string", 0);
+    ary = psDBSelectColumn(dbh, table, TAB_COL_0_NAME, 0);
     if (ary == NULL) {
         psError(PS_ERR_UNKNOWN,true,"Did not expect return value of NULL");
@@ -719,5 +726,5 @@
 
     // Select items in column key_bool with limit 10 and valid arguments
-    ary = psDBSelectColumn(dbh, table, "key_bool", 10);
+    ary = psDBSelectColumn(dbh, table, TAB_COL_4_NAME, 10);
     if (ary == NULL) {
         psError(PS_ERR_UNKNOWN,true,"Did not expect return value of NULL");
@@ -842,5 +849,5 @@
 
     // Use valid arguments to select column with numeric values to return vector
-    vec = psDBSelectColumnNum(dbh, table, "key_s32", PS_TYPE_S32, 0);
+    vec = psDBSelectColumnNum(dbh, table, TAB_COL_1_NAME, PS_TYPE_S32, 0);
 
     // Verify vector returned
@@ -888,5 +895,5 @@
 
     // Use valid arguments to select column with numeric values to return vector
-    vec = psDBSelectColumnNum(dbh, table, "key_bool", PS_TYPE_BOOL, 0);
+    vec = psDBSelectColumnNum(dbh, table, TAB_COL_4_NAME, PS_TYPE_BOOL, 0);
 
     // Verify vector returned
@@ -935,5 +942,5 @@
     // Attempt to select columns from NULL database
     psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error for NULL database object");
-    if(psDBSelectColumnNum(NULL,table,"key_bool",PS_TYPE_BOOL,10) != NULL) {
+    if(psDBSelectColumnNum(NULL,table,TAB_COL_4_NAME,PS_TYPE_BOOL,10) != NULL) {
         psError(PS_ERR_UNKNOWN,true,"Did not expect non-NULL return with NULL database object");
         psDBDropTable(dbh,table);
@@ -944,5 +951,5 @@
     // Attempt to select columns from NULL table
     psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error for NULL table");
-    if(psDBSelectColumnNum(dbh,NULL,"key_bool",PS_TYPE_BOOL,10) != NULL) {
+    if(psDBSelectColumnNum(dbh,NULL,TAB_COL_4_NAME,PS_TYPE_BOOL,10) != NULL) {
         psError(PS_ERR_UNKNOWN,true,"Did not expect non-NULL return with NULL table");
         psDBDropTable(dbh,table);
@@ -962,5 +969,5 @@
     // Attempt to select columns from invalid column
     psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error for invalid type");
-    if(psDBSelectColumnNum(dbh,table,"key_string",0,10) != NULL) {
+    if(psDBSelectColumnNum(dbh,table,TAB_COL_0_NAME,0,10) != NULL) {
         psError(PS_ERR_UNKNOWN,true,"Did not expect non-NULL return with invalid type");
         psDBDropTable(dbh,table);
@@ -1050,5 +1057,5 @@
 
         // Get key_s32 item from metadata
-        item = psMetadataLookup(row, "key_s32");
+        item = psMetadataLookup(row, TAB_COL_1_NAME);
         if (item == NULL) {
             psError(PS_ERR_UNKNOWN,true,"Could not find key_s32 item in row metadata");
@@ -1066,5 +1073,5 @@
 
         // Get key_bool item from metadata
-        item = psMetadataLookup(row, "key_bool");
+        item = psMetadataLookup(row, TAB_COL_4_NAME);
         if (item == NULL) {
             psError(PS_ERR_UNKNOWN,true,"Could not find key_bool item in row metadata");
@@ -1291,5 +1298,5 @@
     row = (psMetadata*)psArrayGet(dumpRowSet, 0);
     // Verify contents for column key_s32
-    item = psMetadataLookup(row, "key_s32");
+    item = psMetadataLookup(row, TAB_COL_1_NAME);
     if ((item == NULL) || (item->data.S32 != S32_1)) {
         psError(PS_ERR_UNKNOWN,true,"Column value %d not as expected %d",
@@ -1300,5 +1307,5 @@
     }
     // Verify contents for column key_bool
-    item = psMetadataLookup(row, "key_bool");
+    item = psMetadataLookup(row, TAB_COL_4_NAME);
     if ((item == NULL) || (item->data.B != B_1)) {
         psError(PS_ERR_UNKNOWN,true,"Column value %d not as expected %d",
@@ -1470,48 +1477,265 @@
 }
 
-// Testpoint #XXX, TPDBDumpCols shall dump all cols from a test table ...
+// Testpoint #851, TPDBDumpCols shall dump all cols from a test table ...
 psS32 TPDBDumpCols( void )
 {
-    psS32 failed = 0;
-    psDB *dbh = NULL;
-    const char* table = "table9";
-    psMetadata *row=NULL, *meta=NULL, *md = _get_CreateTableMetadata();
-
+    psDB*                dbh     = NULL;
+    const char*          table   = "table9";
+    psMetadata*          row     = NULL;
+    psMetadata*          meta    = NULL;
+    psMetadata*          md      = NULL;
+    psMetadataIterator*  mdIter  = NULL;
+    psMetadataItem*      mdItem  = NULL;
+    int                  itemNum = 0;
+
+    // Create database table definition
+    md = _get_CreateTableMetadata();
+
+    // Initialize database connection
     dbh = _init_psDB();
     if (dbh == NULL) {
+        psError(PS_ERR_UNKNOWN,true,"Did not expect NULL return to initialize database");
         return 1;
     }
 
-    psLogMsg( __func__, PS_LOG_INFO, "psDBDumpCols shall dump all cols from a test table.\n" );
-
-    failed = ! psDBCreateTable(dbh, table, md);
-    if (!failed) {
-
-        row = _get_const_row1();
-        psDBInsertOneRow(dbh, table, row);
-        psFree(row);
-
-        row = _get_const_row2();
-        psDBInsertOneRow(dbh, table, row);
-        psFree(row);
-
-        row = _get_row();
-        failed = ! psDBInsertOneRow(dbh, table, row);
-        psFree(row);
-
-        meta = psDBDumpCols(dbh, table);
-        if (meta == NULL) {
-            failed = 1;
-        } else {
-            _print_row(meta);
-            psFree(meta);
+    // Create database table for testing
+    if(!psDBCreateTable(dbh, table, md)) {
+        psError(PS_ERR_UNKNOWN,true,"Did not expect return of false to create test table");
+        psDBCleanup(dbh);
+        return 2;
+    }
+
+    // Add row with known data values
+    row = _get_const_row1();
+    psDBInsertOneRow(dbh, table, row);
+    psFree(row);
+
+    row = _get_const_row2();
+    psDBInsertOneRow(dbh, table, row);
+    psFree(row);
+
+    row = _get_row();
+    psDBInsertOneRow(dbh, table, row);
+    psFree(row);
+
+    // Dump columns with valid arguments
+    meta = psDBDumpCols(dbh, table);
+    mdIter = psMetadataIteratorAlloc(meta,PS_LIST_HEAD,NULL);
+
+    // Verify contents of metadata returned
+    if (meta == NULL) {
+        psError(PS_ERR_UNKNOWN,true,"Did not expect return value NULL for dumpCols with valid args");
+        psDBDropTable(dbh,table);
+        psDBCleanup(dbh);
+        return 3;
+    }
+    if(meta->list->size != 6) {
+        psError(PS_ERR_UNKNOWN,true,"Number of cols = %d not as expected %d",
+                meta->list->size,6);
+        psDBDropTable(dbh,table);
+        psDBCleanup(dbh);
+        return 4;
+    }
+    // Verify the metadata items
+    itemNum = 0;
+    while ((mdItem = psMetadataGetAndIncrement(mdIter)) != NULL) {
+        switch(itemNum) {
+        case 0:
+            if(mdItem->type != PS_META_ARRAY) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d type %d not as expected %d",
+                        itemNum,mdItem->type,PS_META_ARRAY);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 5*(itemNum+1);
+            }
+            //                if(((psArray*)mdItem->data[0])->type.type != PS_TYPE_S32) {
+            //                    psError(PS_ERR_UNKNOWN,true,"Column #%d vector type %d not as expected %d",
+            //                            itemNum,((psVector*)mdItem->data.V)->type.type, PS_TYPE_S32);
+            //                    psDBDropTable(dbh,table);
+            //                    psDBCleanup(dbh);
+            //                    return 6*(itemNum+1);
+            //                }
+            if(((psArray*)mdItem->data.V)->n != 3) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d vector size %d not as expected %d",
+                        itemNum,((psArray*)mdItem->data.V)->n,3);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 7*(itemNum+1);
+            }
+            if(strcmp(mdItem->name,TAB_COL_0_NAME) != 0) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d name %s not as expected %s",
+                        itemNum,mdItem->name,TAB_COL_0_NAME);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 8*(itemNum+1);
+            }
+            break;
+        case 1:
+            if(mdItem->type != PS_META_VEC) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d type %d not as expected %d",
+                        itemNum,mdItem->type,PS_META_VEC);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 5*(itemNum+1);
+            }
+            if(((psVector*)mdItem->data.V)->type.type != PS_TYPE_S32) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d vector type %d not as expected %d",
+                        itemNum,((psVector*)mdItem->data.V)->type.type, PS_TYPE_S32);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 6*(itemNum+1);
+            }
+            if(((psVector*)mdItem->data.V)->n != 3) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d vector size %d not as expected %d",
+                        itemNum,((psVector*)mdItem->data.V)->n,3);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 7*(itemNum+1);
+            }
+            if(strcmp(mdItem->name,TAB_COL_1_NAME) != 0) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d name %s not as expected %s",
+                        itemNum,mdItem->name,TAB_COL_1_NAME);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 8*(itemNum+1);
+            }
+            break;
+        case 2:
+            if(mdItem->type != PS_META_VEC) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d type %d not as expected %d",
+                        itemNum,mdItem->type,PS_META_VEC);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 5*(itemNum+1);
+            }
+            if(((psVector*)mdItem->data.V)->type.type != PS_TYPE_F32) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d vector type %d not as expected %d",
+                        itemNum,((psVector*)mdItem->data.V)->type.type, PS_TYPE_F32);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 6*(itemNum+1);
+            }
+            if(((psVector*)mdItem->data.V)->n != 3) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d vector size %d not as expected %d",
+                        itemNum,((psVector*)mdItem->data.V)->n,3);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 7*(itemNum+1);
+            }
+            if(strcmp(mdItem->name,TAB_COL_2_NAME) != 0) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d name %s not as expected %s",
+                        itemNum,mdItem->name,TAB_COL_2_NAME);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 8*(itemNum+1);
+            }
+            break;
+        case 3:
+            if(mdItem->type != PS_META_VEC) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d type %d not as expected %d",
+                        itemNum,mdItem->type,PS_META_VEC);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 5*(itemNum+1);
+            }
+            if(((psVector*)mdItem->data.V)->type.type != PS_TYPE_F64) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d vector type %d not as expected %d",
+                        itemNum,((psVector*)mdItem->data.V)->type.type, PS_TYPE_F64);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 6*(itemNum+1);
+            }
+            if(((psVector*)mdItem->data.V)->n != 3) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d vector size %d not as expected %d",
+                        itemNum,((psVector*)mdItem->data.V)->n,3);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 7*(itemNum+1);
+            }
+            if(strcmp(mdItem->name,TAB_COL_3_NAME) != 0) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d name %s not as expected %s",
+                        itemNum,mdItem->name,TAB_COL_3_NAME);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 8*(itemNum+1);
+            }
+            break;
+        case 4:
+            if(mdItem->type != PS_META_VEC) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d type %d not as expected %d",
+                        itemNum,mdItem->type,PS_META_VEC);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 5*(itemNum+1);
+            }
+            if(((psVector*)mdItem->data.V)->type.type != PS_TYPE_BOOL) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d vector type %d not as expected %d",
+                        itemNum,((psVector*)mdItem->data.V)->type.type, PS_TYPE_BOOL);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 6*(itemNum+1);
+            }
+            if(((psVector*)mdItem->data.V)->n != 3) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d vector size %d not as expected %d",
+                        itemNum,((psVector*)mdItem->data.V)->n,3);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 7*(itemNum+1);
+            }
+            if(strcmp(mdItem->name,TAB_COL_4_NAME) != 0) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d name %s not as expected %s",
+                        itemNum,mdItem->name,TAB_COL_4_NAME);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 8*(itemNum+1);
+            }
+            break;
+        case 5:
+            if(mdItem->type != PS_META_VEC) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d type %d not as expected %d",
+                        itemNum,mdItem->type,PS_META_VEC);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 5*(itemNum+1);
+            }
+            if(((psVector*)mdItem->data.V)->type.type != PS_TYPE_S32) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d vector type %d not as expected %d",
+                        itemNum,((psVector*)mdItem->data.V)->type.type, PS_TYPE_S32);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 6*(itemNum+1);
+            }
+            if(((psVector*)mdItem->data.V)->n != 3) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d vector size %d not as expected %d",
+                        itemNum,((psVector*)mdItem->data.V)->n,3);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 7*(itemNum+1);
+            }
+            if(strcmp(mdItem->name,TAB_COL_5_NAME) != 0) {
+                psError(PS_ERR_UNKNOWN,true,"Column #%d name %s not as expected %s",
+                        itemNum,mdItem->name,TAB_COL_5_NAME);
+                psDBDropTable(dbh,table);
+                psDBCleanup(dbh);
+                return 8*(itemNum+1);
+            }
+            break;
+            break;
+
+        default:
+            break;
         }
-        psDBDropTable(dbh, table);
-    }
+        itemNum++;
+    }
+    psFree(mdIter);
+    psFree(meta);
+
+    psDBDropTable(dbh, table);
 
     psFree(md);
+
     psDBCleanup(dbh);
 
-    return failed;
+    return 0;
 }
 
@@ -1564,5 +1788,5 @@
                 _print_row(row);
 
-                item = psMetadataLookup(row, "key_s32");
+                item = psMetadataLookup(row, TAB_COL_1_NAME);
                 if ((item == NULL) || (item->data.S32 != S32_2)) {
                     psLogMsg( __func__, PS_LOG_INFO, "oops, did not find expected output!\n" );
@@ -1572,5 +1796,5 @@
                 }
 
-                item = psMetadataLookup(row, "key_bool");
+                item = psMetadataLookup(row, TAB_COL_4_NAME);
                 if ((item == NULL) || (item->data.B != B_2)) {
                     psLogMsg( __func__, PS_LOG_INFO, "oops, did not find expected output!\n" );
