diff --git a/src/interfaces/jdbc/build.xml b/src/interfaces/jdbc/build.xml
index 633daa72db354b251e37f1bea33a5c8977530f51..eccb81674dc916a4f48a19184be1afb2091ab6c8 100644
--- a/src/interfaces/jdbc/build.xml
+++ b/src/interfaces/jdbc/build.xml
@@ -6,7 +6,7 @@
 
   This file now requires Ant 1.4.1.  2002-04-18
 
-  $Header: /cvsroot/pgsql/src/interfaces/jdbc/Attic/build.xml,v 1.36 2003/08/24 22:10:09 barry Exp $
+  $Header: /cvsroot/pgsql/src/interfaces/jdbc/Attic/build.xml,v 1.37 2003/11/03 15:28:26 davec Exp $
 
 -->
 
@@ -305,7 +305,9 @@
   <!-- This compiles and executes the JUnit tests -->
 
   <!-- defaults for the tests - override these if required -->
-  <property name="database" value="jdbc:postgresql:test" />
+  <property name="server" value="localhost" />
+  <property name="port" value="${def_pgport}" />
+  <property name="database" value="test" />
   <property name="username" value="test" />
   <!-- Password must be something.  Doesn't matter if trust is used! -->
   <property name="password" value="password" />
@@ -337,6 +339,8 @@
     <junit>
       <formatter type="brief" usefile="false"/>
 
+      <sysproperty key="server" value="${server}" />
+      <sysproperty key="port" value="${port}" />
       <sysproperty key="database" value="${database}" />
       <sysproperty key="username" value="${username}" />
       <sysproperty key="password" value="${password}" />
diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java b/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java
index b8590dff847dabcafa10528e9d61e730e5437527..87992f7e44dd8a84b8d10b489bfb4bdc216d3161 100644
--- a/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java
+++ b/src/interfaces/jdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java
@@ -9,7 +9,7 @@
  * Copyright (c) 2003, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/AbstractJdbc2ResultSet.java,v 1.25 2003/10/29 02:39:09 davec Exp $
+ *	  $Header: /cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/Attic/AbstractJdbc2ResultSet.java,v 1.26 2003/11/03 15:28:26 davec Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -493,6 +493,7 @@ public abstract class AbstractJdbc2ResultSet extends org.postgresql.jdbc1.Abstra
 		if (--current_row < 0)
 			return false;
 		this_row = (byte[][]) rows.elementAt(current_row);
+		rowBuffer = new byte[this_row.length][];
 		System.arraycopy(this_row, 0, rowBuffer, 0, this_row.length);
 		return true;
 	}
diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc2/ResultSetTest.java b/src/interfaces/jdbc/org/postgresql/test/jdbc2/ResultSetTest.java
index d7e621e20c699eb1ba28dc168084da61a118987c..c09ac49a9825bb42011bf558b28d08a7e63eaf4c 100644
--- a/src/interfaces/jdbc/org/postgresql/test/jdbc2/ResultSetTest.java
+++ b/src/interfaces/jdbc/org/postgresql/test/jdbc2/ResultSetTest.java
@@ -83,6 +83,16 @@ public class ResultSetTest extends TestCase
 		TestUtil.closeDB(con);
 	}
 
+	public void testBackward() throws Exception
+	{
+		Statement stmt = con.createStatement();
+		ResultSet rs = stmt.executeQuery("SELECT * FROM testrs");
+		rs.afterLast();
+		assertTrue(rs.previous());
+		rs.close();
+		stmt.close();
+	}
+
 	public void testAbsolute() throws Exception
 	{
 		Statement stmt = con.createStatement();
diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/ConnectionPoolTest.java b/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/ConnectionPoolTest.java
index 8f84193990a5e1ab1bbbbd7f45d99b0f00fedd76..caac23d18b290fa675afae45e58a589365432f4c 100644
--- a/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/ConnectionPoolTest.java
+++ b/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/ConnectionPoolTest.java
@@ -11,7 +11,7 @@ import java.sql.*;
  * interface to the PooledConnection is through the CPDS.
  *
  * @author Aaron Mulder (ammulder@chariotsolutions.com)
- * @version $Revision: 1.6 $
+ * @version $Revision: 1.7 $
  */
 public class ConnectionPoolTest extends BaseDataSourceTest
 {
@@ -31,16 +31,9 @@ public class ConnectionPoolTest extends BaseDataSourceTest
 		if (bds == null)
 		{
 			bds = new ConnectionPool();
-			String db = TestUtil.getURL();
-			if (db.indexOf('/') > -1)
-			{
-				db = db.substring(db.lastIndexOf('/') + 1);
-			}
-			else if (db.indexOf(':') > -1)
-			{
-				db = db.substring(db.lastIndexOf(':') + 1);
-			}
-			bds.setDatabaseName(db);
+			bds.setServerName(TestUtil.getServer());
+			bds.setPortNumber(TestUtil.getPort());
+			bds.setDatabaseName(TestUtil.getDatabase());
 			bds.setUser(TestUtil.getUser());
 			bds.setPassword(TestUtil.getPassword());
 		}
diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/PoolingDataSourceTest.java b/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/PoolingDataSourceTest.java
index 9b08eca7d0ce9413925dda44185741ba9e625680..6f4a6eaf376755d948aa81f1a601c6f9068a390b 100644
--- a/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/PoolingDataSourceTest.java
+++ b/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/PoolingDataSourceTest.java
@@ -9,7 +9,7 @@ import org.postgresql.jdbc2.optional.BaseDataSource;
  * Minimal tests for pooling DataSource.  Needs many more.
  *
  * @author Aaron Mulder (ammulder@chariotsolutions.com)
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
  */
 public class PoolingDataSourceTest extends BaseDataSourceTest
 {
@@ -40,16 +40,9 @@ public class PoolingDataSourceTest extends BaseDataSourceTest
         if (bds == null)
         {
             bds = new PoolingDataSource();
-            String db = TestUtil.getURL();
-            if (db.indexOf('/') > -1)
-            {
-                db = db.substring(db.lastIndexOf('/') + 1);
-            }
-            else if (db.indexOf(':') > -1)
-            {
-                db = db.substring(db.lastIndexOf(':') + 1);
-            }
-            bds.setDatabaseName(db);
+            bds.setServerName(TestUtil.getServer());
+            bds.setPortNumber(TestUtil.getPort());
+            bds.setDatabaseName(TestUtil.getDatabase());
             bds.setUser(TestUtil.getUser());
             bds.setPassword(TestUtil.getPassword());
             ((PoolingDataSource) bds).setDataSourceName(DS_NAME);
diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/SimpleDataSourceTest.java b/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/SimpleDataSourceTest.java
index b5c3e100ecd04ba50c30ca1fc49d200d05559acc..405112223570f7fedd88b01f25001c0de4773270 100644
--- a/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/SimpleDataSourceTest.java
+++ b/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/SimpleDataSourceTest.java
@@ -8,7 +8,7 @@ import org.postgresql.jdbc2.optional.SimpleDataSource;
  * configuration logic.
  *
  * @author Aaron Mulder (ammulder@chariotsolutions.com)
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
  */
 public class SimpleDataSourceTest extends BaseDataSourceTest
 {
@@ -28,16 +28,9 @@ public class SimpleDataSourceTest extends BaseDataSourceTest
 		if (bds == null)
 		{
 			bds = new SimpleDataSource();
-			String db = TestUtil.getURL();
-			if (db.indexOf('/') > -1)
-			{
-				db = db.substring(db.lastIndexOf('/') + 1);
-			}
-			else if (db.indexOf(':') > -1)
-			{
-				db = db.substring(db.lastIndexOf(':') + 1);
-			}
-			bds.setDatabaseName(db);
+			bds.setServerName(TestUtil.getServer());
+			bds.setPortNumber(TestUtil.getPort());
+			bds.setDatabaseName(TestUtil.getDatabase());
 			bds.setUser(TestUtil.getUser());
 			bds.setPassword(TestUtil.getPassword());
 		}
diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc3/Jdbc3ConnectionPoolTest.java b/src/interfaces/jdbc/org/postgresql/test/jdbc3/Jdbc3ConnectionPoolTest.java
index f679c48f77c04efa30d8782b30b078dbeb6c58ce..013a18a8f94cbd432d8b969b22756d99a613b044 100644
--- a/src/interfaces/jdbc/org/postgresql/test/jdbc3/Jdbc3ConnectionPoolTest.java
+++ b/src/interfaces/jdbc/org/postgresql/test/jdbc3/Jdbc3ConnectionPoolTest.java
@@ -12,7 +12,7 @@ import javax.sql.PooledConnection;
  * Tests JDBC3 implementation of ConnectionPoolDataSource.
  *
  * @author Aaron Mulder (ammulder@chariotsolutions.com)
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
  */
 public class Jdbc3ConnectionPoolTest extends ConnectionPoolTest
 {
@@ -29,16 +29,9 @@ public class Jdbc3ConnectionPoolTest extends ConnectionPoolTest
         if (bds == null)
         {
             bds = new Jdbc3ConnectionPool();
-            String db = TestUtil.getURL();
-            if (db.indexOf('/') > -1)
-            {
-                db = db.substring(db.lastIndexOf('/') + 1);
-            }
-            else if (db.indexOf(':') > -1)
-            {
-                db = db.substring(db.lastIndexOf(':') + 1);
-            }
-            bds.setDatabaseName(db);
+            bds.setServerName(TestUtil.getServer());
+            bds.setPortNumber(TestUtil.getPort());
+            bds.setDatabaseName(TestUtil.getDatabase());
             bds.setUser(TestUtil.getUser());
             bds.setPassword(TestUtil.getPassword());
         }
diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc3/Jdbc3PoolingDataSourceTest.java b/src/interfaces/jdbc/org/postgresql/test/jdbc3/Jdbc3PoolingDataSourceTest.java
index 55374cb1b81e629455b7886893201a6a9f216a77..c6c603b7f0cde9fb83644ef9924dcae8ad79541f 100644
--- a/src/interfaces/jdbc/org/postgresql/test/jdbc3/Jdbc3PoolingDataSourceTest.java
+++ b/src/interfaces/jdbc/org/postgresql/test/jdbc3/Jdbc3PoolingDataSourceTest.java
@@ -13,7 +13,7 @@ import org.postgresql.jdbc2.optional.PoolingDataSource;
  * Minimal tests for JDBC3 pooling DataSource.  Needs many more.
  *
  * @author Aaron Mulder (ammulder@chariotsolutions.com)
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
  */
 public class Jdbc3PoolingDataSourceTest extends PoolingDataSourceTest
 {
@@ -42,15 +42,9 @@ public class Jdbc3PoolingDataSourceTest extends PoolingDataSourceTest
     private void configureDataSource(PoolingDataSource source)
     {
         String db = TestUtil.getURL();
-        if (db.indexOf('/') > -1)
-        {
-            db = db.substring(db.lastIndexOf('/') + 1);
-        }
-        else if (db.indexOf(':') > -1)
-        {
-            db = db.substring(db.lastIndexOf(':') + 1);
-        }
-        source.setDatabaseName(db);
+        source.setServerName(TestUtil.getServer());
+        source.setPortNumber(TestUtil.getPort());
+        source.setDatabaseName(TestUtil.getDatabase());
         source.setUser(TestUtil.getUser());
         source.setPassword(TestUtil.getPassword());
         source.setDataSourceName(DS_NAME);
diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc3/Jdbc3SimpleDataSourceTest.java b/src/interfaces/jdbc/org/postgresql/test/jdbc3/Jdbc3SimpleDataSourceTest.java
index cef4c83f6515bfc069d110de6c273fd625f5d5b8..7c1157deb31b5b0031fc499209b4e1e78d3cefa0 100644
--- a/src/interfaces/jdbc/org/postgresql/test/jdbc3/Jdbc3SimpleDataSourceTest.java
+++ b/src/interfaces/jdbc/org/postgresql/test/jdbc3/Jdbc3SimpleDataSourceTest.java
@@ -10,7 +10,7 @@ import org.postgresql.jdbc3.*;
  * Tests JDBC3 non-pooling DataSource.
  *
  * @author Aaron Mulder (ammulder@chariotsolutions.com)
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
  */
 public class Jdbc3SimpleDataSourceTest extends SimpleDataSourceTest {
     /**
@@ -29,16 +29,9 @@ public class Jdbc3SimpleDataSourceTest extends SimpleDataSourceTest {
         if (bds == null)
         {
             bds = new Jdbc3SimpleDataSource();
-            String db = TestUtil.getURL();
-            if (db.indexOf('/') > -1)
-            {
-                db = db.substring(db.lastIndexOf('/') + 1);
-            }
-            else if (db.indexOf(':') > -1)
-            {
-                db = db.substring(db.lastIndexOf(':') + 1);
-            }
-            bds.setDatabaseName(db);
+            bds.setServerName(TestUtil.getServer());
+            bds.setPortNumber(TestUtil.getPort());
+            bds.setDatabaseName(TestUtil.getDatabase());
             bds.setUser(TestUtil.getUser());
             bds.setPassword(TestUtil.getPassword());
         }