Index: /trunk/psLib/test/dataIO/tst_psDB.c
===================================================================
--- /trunk/psLib/test/dataIO/tst_psDB.c	(revision 4293)
+++ /trunk/psLib/test/dataIO/tst_psDB.c	(revision 4294)
@@ -9,6 +9,6 @@
  *  @author Aaron Culliney, MHPCC
  *
- *  @version $Revision: 1.18 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2005-06-16 23:35:07 $
+ *  @version $Revision: 1.19 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2005-06-17 02:16:53 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -662,5 +662,4 @@
 psS32 TPDBSelectColumnNum( void )
 {
-    psS32 failed = 0;
     psDB *dbh = NULL;
     const char* table = "table4";
@@ -828,88 +827,130 @@
     psDBCleanup(dbh);
 
-    return failed;
-}
-
-// Testpoint #XXX, TPDBSelectRows shall write/select data from a test table ...
+    return 0;
+}
+
+// Testpoint #847, TPDBSelectRows shall write/select data from a test table ...
 psS32 TPDBSelectRows( void )
 {
     int i;
-    psS32 failed = 0;
     psDB *dbh = NULL;
     const char* table = "table5";
     psArray *ary=NULL, *ary1=NULL, *ary2=NULL;
+    psMetadataItem *item = NULL;
+
+    // Create database table definition
     psMetadata *where=NULL, *row=NULL, *md = _get_CreateTableMetadata();
-    psMetadataItem *item = NULL;
-
+
+    // Initialize database connection
     dbh = _init_psDB();
     if (dbh == NULL) {
+        psError(PS_ERR_UNKNOWN,true,"Did not expected NULL return to initialize database");
         return 1;
     }
 
-    psLogMsg( __func__, PS_LOG_INFO, "psDBSelectRows shall select data 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);
-
-        if (!failed) {
-            where = _get_where();
-            ary1 = psDBSelectRows(dbh, table, where, 0);
-            ary2 = psDBSelectRows(dbh, table, where, 1); /* specify limit */
-            psFree(where);
-            for (i=0; i<2; i++) {
-                ary = i ? ary2 : ary1;
-                if (ary == NULL) {
-                    failed = 1;
-                } else {
-                    row = (psMetadata*)psArrayGet(ary, 0);
-                    _print_row(row);
-
-                    item = psMetadataLookup(row, "key_s32");
-                    if (item == NULL) {
-                        psLogMsg( __func__, PS_LOG_INFO, "oops, key_s32 not found!\n" );
-                        failed = 1;
-                    } else if (item->data.S32 != S32_1) {
-                        psLogMsg( __func__, PS_LOG_INFO, "oops, did not find expected output (%d vs %d)!\n",
-                                  item->data.S32,S32_1);
-                        failed = 1;
-                    } else {
-                        psLogMsg( __func__, PS_LOG_INFO, "found expected output.\n" );
-                    }
-
-                    item = psMetadataLookup(row, "key_bool");
-                    if (item == NULL) {
-                        psLogMsg( __func__, PS_LOG_INFO, "oops, key_bool not found!\n" );
-                        failed = 1;
-                    } else if (item->data.B != B_1) {
-                        psLogMsg( __func__, PS_LOG_INFO, "oops, did not find expected output (%d vs %d)!\n",
-                                  item->data.B,B_1);
-                        failed = 1;
-                    } else {
-                        psLogMsg( __func__, PS_LOG_INFO, "found expected output.\n" );
-                    }
-
-                    psFree(ary);
-                }
-            }
+    // Create database table for test
+    if(!psDBCreateTable(dbh, table, md)) {
+        psError(PS_ERR_UNKNOWN,true,"Did not expect return false for create table");
+        psDBCleanup(dbh);
+        return 2;
+    }
+
+    // Initialize database table with known rows
+    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);
+
+    // Generate valid where clause
+    where = _get_where();
+
+    // Select rows with non limit
+    ary1 = psDBSelectRows(dbh, table, where, 0);
+
+    // Select rows with a limit
+    ary2 = psDBSelectRows(dbh, table, where, 1);
+    psFree(where);
+
+    // Cycle through both arrays to verify results
+    for (i=0; i<2; i++) {
+        ary = i ? ary2 : ary1;
+
+        // Verify return array not NULL
+        if (ary == NULL) {
+            psError(PS_ERR_UNKNOWN,true,"Did not expect return NULL");
+            psDBDropTable(dbh,table);
+            psDBCleanup(dbh);
+            return 1;
         }
-        psDBDropTable(dbh, table);
-    }
+
+        // Get metadata which contains row from array
+        row = (psMetadata*)psArrayGet(ary, 0);
+
+        // Get key_s32 item from metadata
+        item = psMetadataLookup(row, "key_s32");
+        if (item == NULL) {
+            psError(PS_ERR_UNKNOWN,true,"Could not find key_s32 item in row metadata");
+            psDBDropTable(dbh,table);
+            psDBCleanup(dbh);
+            return 2;
+        }
+        if (item->data.S32 != S32_1) {
+            psError(PS_ERR_UNKNOWN,true,"Row item %d not as expected %d",
+                    item->data.S32,S32_1);
+            psDBDropTable(dbh,table);
+            psDBCleanup(dbh);
+            return 3;
+        }
+
+        // Get key_bool item from metadata
+        item = psMetadataLookup(row, "key_bool");
+        if (item == NULL) {
+            psError(PS_ERR_UNKNOWN,true,"Could not find key_bool item in row metadata");
+            psDBDropTable(dbh,table);
+            psDBCleanup(dbh);
+            return 2;
+        }
+        if (item->data.B != B_1) {
+            psError(PS_ERR_UNKNOWN,true,"Row item %d not as expected %d",
+                    item->data.S32,S32_1);
+            psDBDropTable(dbh,table);
+            psDBCleanup(dbh);
+            return 4;
+        }
+        psFree(ary);
+    }
+
+    // Attempt to select rows with NULL database object
+    psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for NULL database object");
+    if(psDBSelectRows(NULL, table, where, 0) != NULL) {
+        psError(PS_ERR_UNKNOWN,true,"Did not expect non-NULL return for NULL database object");
+        psDBDropTable(dbh,table);
+        psDBCleanup(dbh);
+        return 5;
+    }
+
+    // Attempt to select rows with invalid table
+    psLogMsg(__func__,PS_LOG_INFO,"Following should generate an error message for invalid table");
+    if(psDBSelectRows(dbh, NULL, where, 0) != NULL) {
+        psError(PS_ERR_UNKNOWN,true,"Did not expect non-NULL return for NULL database object");
+        psDBDropTable(dbh,table);
+        psDBCleanup(dbh);
+        return 5;
+    }
+
+
+    psDBDropTable(dbh, table);
 
     psFree(md);
     psDBCleanup(dbh);
 
-    return failed;
+    return 0;
 }
 
Index: /trunk/psLib/test/dataIO/verified/tst_psDB.stderr
===================================================================
--- /trunk/psLib/test/dataIO/verified/tst_psDB.stderr	(revision 4293)
+++ /trunk/psLib/test/dataIO/verified/tst_psDB.stderr	(revision 4294)
@@ -156,37 +156,15 @@
 
 <DATE><TIME>|<HOST>|I|TPDBSelectRows
-    psDBSelectRows shall select data from a test table.
-<DATE><TIME>|<HOST>|I|_print_row
-    [key_string]=[hello world!]
-<DATE><TIME>|<HOST>|I|_print_row
-    [key_s32]=[1974]
-<DATE><TIME>|<HOST>|I|_print_row
-    [key_f32]=[3.14159]
-<DATE><TIME>|<HOST>|I|_print_row
-    [key_f64]=[2.71828]
-<DATE><TIME>|<HOST>|I|_print_row
-    [key_bool]=[Yay]
-<DATE><TIME>|<HOST>|I|_print_row
-    [key_s32_0]=[3]
+    Following should generate an error message for NULL database object
+<DATE><TIME>|<HOST>|E|p_psDBRunQuery (FILE:LINENO)
+    Invalid psDB has been specified.
+<DATE><TIME>|<HOST>|E|psDBSelectRows (FILE:LINENO)
+    Query execution failed.
 <DATE><TIME>|<HOST>|I|TPDBSelectRows
-    found expected output.
-<DATE><TIME>|<HOST>|I|TPDBSelectRows
-    found expected output.
-<DATE><TIME>|<HOST>|I|_print_row
-    [key_string]=[hello world!]
-<DATE><TIME>|<HOST>|I|_print_row
-    [key_s32]=[1974]
-<DATE><TIME>|<HOST>|I|_print_row
-    [key_f32]=[3.14159]
-<DATE><TIME>|<HOST>|I|_print_row
-    [key_f64]=[2.71828]
-<DATE><TIME>|<HOST>|I|_print_row
-    [key_bool]=[Yay]
-<DATE><TIME>|<HOST>|I|_print_row
-    [key_s32_0]=[3]
-<DATE><TIME>|<HOST>|I|TPDBSelectRows
-    found expected output.
-<DATE><TIME>|<HOST>|I|TPDBSelectRows
-    found expected output.
+    Following should generate an error message for invalid table
+<DATE><TIME>|<HOST>|E|p_psDBRunQuery (FILE:LINENO)
+    Failed to execute SQL query.  Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'null) WHERE key_s32=1974' at line 1
+<DATE><TIME>|<HOST>|E|psDBSelectRows (FILE:LINENO)
+    Query execution failed.
 
 ---> TESTPOINT PASSED (psDB{dbSelectRows} | tst_psDB.c)
