| From: | Thomas Kellerer <spam_eater(at)gmx(dot)net> | 
|---|---|
| To: | pgsql-jdbc(at)postgresql(dot)org | 
| Subject: | Strange result from DatabaseMetaData.getTablePrivileges() | 
| Date: | 2007-01-28 17:26:19 | 
| Message-ID: | epimbr$6nn$1@sea.gmane.org | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-jdbc | 
Hello,
I just noticed that getTablePrivileges() returns the same privilege for the same 
user multiple times. Additionally it returns several rows with the privilege 
"UNKNOWN".
Is this a bug, or am I simply misunderstanding something?
The following test code:
Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection("jdbc:postgresql://localhost/wbtest", 
"thomas", "****");
con.setAutoCommit(true);
stmt = con.createStatement();
stmt.executeUpdate("create table test_table (nr integer)");
stmt.executeUpdate("grant select,insert,update on test_table to postgres");
rs = con.getMetaData().getTablePrivileges(null, "public", "test_table");
while (rs.next())
{
   System.out.print("table_name: " + rs.getString("TABLE_NAME"));
   System.out.print(", grantor: " + rs.getString("GRANTOR"));
   System.out.print(", grantee: " + rs.getString("GRANTEE"));
   System.out.println(", privilege: " + rs.getString("PRIVILEGE"));
}
stmt.executeUpdate("drop table test_table");
produces the following ouput:
table_name: test_table, grantor: thomas, grantee: thomas, privilege: DELETE
table_name: test_table, grantor: thomas, grantee: thomas, privilege: INSERT
table_name: test_table, grantor: thomas, grantee: thomas, privilege: INSERT
table_name: test_table, grantor: thomas, grantee: postgres, privilege: INSERT
table_name: test_table, grantor: thomas, grantee: postgres, privilege: INSERT
table_name: test_table, grantor: thomas, grantee: thomas, privilege: REFERENCES
table_name: test_table, grantor: thomas, grantee: thomas, privilege: SELECT
table_name: test_table, grantor: thomas, grantee: postgres, privilege: SELECT
table_name: test_table, grantor: thomas, grantee: thomas, privilege: TRIGGER
table_name: test_table, grantor: thomas, grantee: thomas, privilege: TRIGGER
table_name: test_table, grantor: thomas, grantee: postgres, privilege: TRIGGER
table_name: test_table, grantor: thomas, grantee: thomas, privilege: UNKNOWN
table_name: test_table, grantor: thomas, grantee: thomas, privilege: UNKNOWN
table_name: test_table, grantor: thomas, grantee: thomas, privilege: UNKNOWN
table_name: test_table, grantor: thomas, grantee: thomas, privilege: UNKNOWN
table_name: test_table, grantor: thomas, grantee: thomas, privilege: UNKNOWN
table_name: test_table, grantor: thomas, grantee: postgres, privilege: UNKNOWN
table_name: test_table, grantor: thomas, grantee: postgres, privilege: UNKNOWN
table_name: test_table, grantor: thomas, grantee: postgres, privilege: UNKNOWN
table_name: test_table, grantor: thomas, grantee: postgres, privilege: UNKNOWN
table_name: test_table, grantor: thomas, grantee: postgres, privilege: UNKNOWN
table_name: test_table, grantor: thomas, grantee: thomas, privilege: UPDATE
table_name: test_table, grantor: thomas, grantee: postgres, privilege: UPDATE
Note that e.g. the INSERT privilege for the user postgres is returned twice, 
whereas the SELECT privilege for the user postgres is only returned once (which 
is what I would have expected)
And what are all the UNKNOWN entries?
This is with build 504 of the JDBC Driver running on Windows XP against a 
Postgres 8.2.1 installed on the same machine using JDK 1.5.
Thomas
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Kris Jurka | 2007-01-28 22:36:39 | Re: Strange result from DatabaseMetaData.getTablePrivileges() | 
| Previous Message | Ken Johanson | 2007-01-28 15:51:17 | Re: Synthesize support for Statement.getGeneratedKeys()? |