]> granicus.if.org Git - postgresql/commitdiff
Applied to jdbc1 and jdbc2.
authorBruce Momjian <bruce@momjian.us>
Tue, 12 Sep 2000 04:51:43 +0000 (04:51 +0000)
committerBruce Momjian <bruce@momjian.us>
Tue, 12 Sep 2000 04:51:43 +0000 (04:51 +0000)
This is a patch which lets the DatabaseMetaData return the object type
when getTables(....) is called.  It does not really fix any bug, but it
fills in some functionality that should be there anyway.  The diff
included here is off of the CVS as of just now :)

----------------------------------------------------------------
Travis Bauer | CS Grad Student | IU |www.cs.indiana.edu/~trbauer
----------------------------------------------------------------

src/interfaces/jdbc/org/postgresql/jdbc1/DatabaseMetaData.java
src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java

index 1ad080e8d0a1c5ecc1eb55d475cac770d49e915d..e482809954d7c39d3363eb557f9e62a27277f809 100644 (file)
@@ -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);
       }
index fa58ef69c0647b0b7c18e3241d215e1378de06d7..9c7025136db066c3c671d0cfe7768c05720f9213 100644 (file)
@@ -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);
       }