summaryrefslogtreecommitdiff
path: root/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java
diff options
context:
space:
mode:
authorBarry Lind <barry@xythos.com>2003-03-24 03:48:32 +0000
committerBarry Lind <barry@xythos.com>2003-03-24 03:48:32 +0000
commit1e3372e6bbceddc7b9f0f7f92d8c2253838e2836 (patch)
treec859cf2c5fb14278451cabdcc54aa558989607f2 /src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java
parent0489783011ee277476bd9076767b39f08c0e0cd1 (diff)
downloadpostgresql-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.java10
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++) {