Index: DatabaseMetaData.java =================================================================== RCS file: /home/projects/pgsql/cvsroot/pgsql/src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java,v retrieving revision 1.25 diff -c -r1.25 DatabaseMetaData.java *** DatabaseMetaData.java 2001/07/08 11:08:13 1.25 --- DatabaseMetaData.java 2001/07/08 21:37:04 *************** *** 2096,2103 **** */ public java.sql.ResultSet getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) throws SQLException { ! // XXX-Not Implemented ! return null; } /** --- 2096,2164 ---- */ public java.sql.ResultSet getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern) throws SQLException { ! Field f[] = new Field[8]; ! Vector v = new Vector(); ! ! if(tableNamePattern==null) ! tableNamePattern="%"; ! ! f[0] = new Field(connection,"TABLE_CAT",iVarcharOid,32); ! f[1] = new Field(connection,"TABLE_SCHEM",iVarcharOid,32); ! f[2] = new Field(connection,"TABLE_NAME",iVarcharOid,32); ! f[3] = new Field(connection,"COLUMN_NAME",iVarcharOid,32); ! f[4] = new Field(connection,"GRANTOR",iVarcharOid,32); ! f[5] = new Field(connection,"GRANTEE",iVarcharOid,32); ! f[6] = new Field(connection,"PRIVILEGE",iVarcharOid,32); ! f[7] = new Field(connection,"IS_GRANTABLE",iVarcharOid,32); ! ! java.sql.ResultSet r = connection.ExecSQL("SELECT c.relname, u.usename, c.relacl " ! + "FROM pg_class c, pg_user u " ! + "WHERE (c.relkind='r' OR relkind='v') AND " ! + " c.relname !~ '^pg_'" ! + " AND c.relname like '"+tableNamePattern.toLowerCase()+"'" ! + " AND c.relowner = u.usesysid " ! + "ORDER BY c.relname"); ! while(r.next()) { ! byte[][] tuple = new byte[8][0]; ! tuple[0] = tuple[1] = tuple[3] = "".getBytes(); ! tuple[2] = r.getBytes(1); ! tuple[4] = r.getBytes(2); ! String S=r.getString(3); ! int size=S.length(); ! for(int i=0;i-1) P.append("ALL"); ! else { ! if(privs.indexOf('r')>-1) P.append("SELECT"); ! if(privs.indexOf('w')>-1) { ! if(P.length()>0) P.append(", "); ! P.append("UPDATE/DELETE"); ! } ! if(privs.indexOf('a')>-1) { ! if(P.length()>0) P.append(", "); ! P.append("INSERT"); ! } ! if(privs.indexOf('a')>-1) { ! if(P.length()>0) P.append(", "); ! P.append("RULE"); ! } ! } ! tuple[6]=P.toString().getBytes(); ! } ! v.addElement(tuple); ! } ! } ! ! return new ResultSet(connection,f,v,"OK",1); } /**