diff --git a/src/interfaces/jdbc/org/postgresql/jdbc1/DatabaseMetaData.java b/src/interfaces/jdbc/org/postgresql/jdbc1/DatabaseMetaData.java
index 1ad080e8d0a1c5ecc1eb55d475cac770d49e915d..e482809954d7c39d3363eb557f9e62a27277f809 100644
--- a/src/interfaces/jdbc/org/postgresql/jdbc1/DatabaseMetaData.java
+++ b/src/interfaces/jdbc/org/postgresql/jdbc1/DatabaseMetaData.java
@@ -1651,7 +1651,7 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
     f[4] = new Field(connection, new String("REMARKS"), iVarcharOid, 32);
     
     // Now form the query
-    StringBuffer sql = new StringBuffer("select relname,oid from pg_class where (");
+    StringBuffer sql = new StringBuffer("select relname,oid,relkind from pg_class where (");
     boolean notFirst=false;
     for(int i=0;i<types.length;i++) {
       for(int j=0;j<getTableTypes.length;j++)
@@ -1687,10 +1687,25 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
 	  remarks = defaultRemarks;
 	dr.close();
 	
+	String relKind;
+	switch (r.getBytes(3)[0]) {
+	case 'r':
+	    relKind = "TABLE";
+	    break;
+	case 'i':
+	    relKind = "INDEX";
+	    break;
+	case 'S':
+	    relKind = "SEQUENCE";
+	    break;
+	default:
+	    relKind = null;
+	}
+
 	tuple[0] = null;		// Catalog name
 	tuple[1] = null;		// Schema name
-	tuple[2] = r.getBytes(1);	// Table name
-	tuple[3] = null;		// Table type
+	tuple[2] = r.getBytes(1);	// Table name	
+	tuple[3] = relKind.getBytes();	// Table type
 	tuple[4] = remarks;		// Remarks
 	v.addElement(tuple);
       }
diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java b/src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java
index fa58ef69c0647b0b7c18e3241d215e1378de06d7..9c7025136db066c3c671d0cfe7768c05720f9213 100644
--- a/src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java
+++ b/src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java
@@ -1651,7 +1651,7 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
     f[4] = new Field(connection, new String("REMARKS"), iVarcharOid, 32);
     
     // Now form the query
-    StringBuffer sql = new StringBuffer("select relname,oid from pg_class where (");
+    StringBuffer sql = new StringBuffer("select relname,oid,relkind from pg_class where (");
     boolean notFirst=false;
     for(int i=0;i<types.length;i++) {
       for(int j=0;j<getTableTypes.length;j++)
@@ -1687,10 +1687,25 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
 	  remarks = defaultRemarks;
 	dr.close();
 	
+	String relKind;
+	switch (r.getBytes(3)[0]) {
+	case 'r':
+	    relKind = "TABLE";
+	    break;
+	case 'i':
+	    relKind = "INDEX";
+	    break;
+	case 'S':
+	    relKind = "SEQUENCE";
+	    break;
+	default:
+	    relKind = null;
+	}
+
 	tuple[0] = null;		// Catalog name
 	tuple[1] = null;		// Schema name
-	tuple[2] = r.getBytes(1);	// Table name
-	tuple[3] = null;		// Table type
+	tuple[2] = r.getBytes(1);	// Table name	
+	tuple[3] = relKind.getBytes();	// Table type
 	tuple[4] = remarks;		// Remarks
 	v.addElement(tuple);
       }