diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/optional/PooledConnectionImpl.java b/src/interfaces/jdbc/org/postgresql/jdbc2/optional/PooledConnectionImpl.java
index 50996d22b54ac8fdd4823201855f2b6627b0dc0b..4970240a030883e83487022ca925f288e25efaf9 100644
--- a/src/interfaces/jdbc/org/postgresql/jdbc2/optional/PooledConnectionImpl.java
+++ b/src/interfaces/jdbc/org/postgresql/jdbc2/optional/PooledConnectionImpl.java
@@ -4,6 +4,7 @@ import javax.sql.*;
 import java.sql.*;
 import java.util.*;
 import java.lang.reflect.*;
+import org.postgresql.PGConnection;
 
 /**
  * PostgreSQL implementation of the PooledConnection interface.  This shouldn't
@@ -12,7 +13,7 @@ import java.lang.reflect.*;
  * @see ConnectionPool
  *
  * @author Aaron Mulder (ammulder@chariotsolutions.com)
- * @version $Revision: 1.5 $
+ * @version $Revision: 1.6 $
  */
 public class PooledConnectionImpl implements PooledConnection
 {
@@ -114,7 +115,7 @@ public class PooledConnectionImpl implements PooledConnection
 		con.setAutoCommit(autoCommit);
 		ConnectionHandler handler = new ConnectionHandler(con);
 		last = handler;
-		Connection con = (Connection)Proxy.newProxyInstance(getClass().getClassLoader(), new Class[]{Connection.class}, handler);
+		Connection con = (Connection)Proxy.newProxyInstance(getClass().getClassLoader(), new Class[]{Connection.class, PGConnection.class}, handler);
         last.setProxy(con);
         return con;
 	}
@@ -213,7 +214,7 @@ public class PooledConnectionImpl implements PooledConnection
                                     throw e.getTargetException();
                                 }
 			}
-			// All the rest is from the Connection interface
+			// All the rest is from the Connection or PGConnection interface
 			if (method.getName().equals("isClosed"))
 			{
 				return con == null ? Boolean.TRUE : Boolean.FALSE;
diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/BaseDataSourceTest.java b/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/BaseDataSourceTest.java
index 8add0b19d80f1d70540dcefe3ee8bbddb82bdbb5..403d9b2b68e436dab461ccb783946cdd2c64b6b2 100644
--- a/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/BaseDataSourceTest.java
+++ b/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/BaseDataSourceTest.java
@@ -3,6 +3,7 @@ package org.postgresql.test.jdbc2.optional;
 import junit.framework.TestCase;
 import org.postgresql.test.TestUtil;
 import org.postgresql.jdbc2.optional.BaseDataSource;
+import org.postgresql.PGConnection;
 
 import java.sql.*;
 import java.util.*;
@@ -16,7 +17,7 @@ import javax.naming.*;
  * tests.
  *
  * @author Aaron Mulder (ammulder@chariotsolutions.com)
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
  */
 public abstract class BaseDataSourceTest extends TestCase
 {
@@ -179,6 +180,24 @@ public abstract class BaseDataSourceTest extends TestCase
 		}
 	}
 
+    /**
+     * Test to make sure that PGConnection methods can be called on the
+     * pooled Connection.
+     */
+    public void testPGConnection()
+    {
+        try
+        {
+            con = getDataSourceConnection();
+            ((PGConnection)con).getEncoding().name();
+            con.close();
+        }
+        catch (Exception e)
+        {
+            fail("Unable to call PGConnection method on pooled connection due to "+e.getClass().getName()+" ("+e.getMessage()+")");
+        }
+    }
+
     /**
      * Uses the mini-JNDI implementation for testing purposes
      */