diff options
author | Barry Lind <barry@xythos.com> | 2003-03-24 03:48:32 +0000 |
---|---|---|
committer | Barry Lind <barry@xythos.com> | 2003-03-24 03:48:32 +0000 |
commit | 1e3372e6bbceddc7b9f0f7f92d8c2253838e2836 (patch) | |
tree | c859cf2c5fb14278451cabdcc54aa558989607f2 /src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java | |
parent | 0489783011ee277476bd9076767b39f08c0e0cd1 (diff) | |
download | postgresql-1e3372e6bbceddc7b9f0f7f92d8c2253838e2836.tar.gz |
Fix bug in reading acls (didn't treat null acl as meaning the table owner had
full privs), also updated the regression test for this case.
Modified Files:
jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java
jdbc/org/postgresql/test/jdbc2/DatabaseMetaDataTest.java
Diffstat (limited to 'src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java')
-rw-r--r-- | src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java b/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java index 328079ce51..98af4ce983 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java @@ -2466,7 +2466,7 @@ public abstract class AbstractJdbc1DatabaseMetaData byte column[] = rs.getBytes("attname"); String owner = rs.getString("usename"); String acl = rs.getString("relacl"); - Hashtable permissions = parseACL(acl); + Hashtable permissions = parseACL(acl, owner); String permNames[] = new String[permissions.size()]; Enumeration e = permissions.keys(); int i=0; @@ -2569,7 +2569,7 @@ public abstract class AbstractJdbc1DatabaseMetaData byte table[] = rs.getBytes("relname"); String owner = rs.getString("usename"); String acl = rs.getString("relacl"); - Hashtable permissions = parseACL(acl); + Hashtable permissions = parseACL(acl, owner); String permNames[] = new String[permissions.size()]; Enumeration e = permissions.keys(); int i=0; @@ -2693,7 +2693,11 @@ public abstract class AbstractJdbc1DatabaseMetaData * a Hashtable mapping the SQL permission name to a Vector of * usernames who have that permission. */ - protected Hashtable parseACL(String aclArray) { + protected Hashtable parseACL(String aclArray, String owner) { + if (aclArray == null || aclArray == "") { + //null acl is a shortcut for owner having full privs + aclArray = "{" + owner + "=arwdRxt}"; + } Vector acls = parseACLArray(aclArray); Hashtable privileges = new Hashtable(); for (int i=0; i<acls.size(); i++) { |