You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by da...@apache.org on 2008/01/22 18:50:24 UTC

svn commit: r614273 - in /db/derby/code/trunk/java: engine/org/apache/derby/iapi/sql/dictionary/ engine/org/apache/derby/impl/sql/catalog/ engine/org/apache/derby/impl/sql/execute/ storeless/org/apache/derby/impl/storeless/ testing/org/apache/derbyTest...

Author: dag
Date: Tue Jan 22 09:50:10 2008
New Revision: 614273

URL: http://svn.apache.org/viewvc?rev=614273&view=rev
Log:
DERBY-3137 SQL roles: add catalog support

Patch DERBY-3137-uuid adds a UUID column to SYS.SYSROLES. The new column is needed for 
implementing persistent dependencies on role definitions and grants.

Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/DataDescriptorGenerator.java
    db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/DataDictionary.java
    db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/RoleDescriptor.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/SYSROLESRowFactory.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateRoleConstantAction.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GrantRoleConstantAction.java
    db/derby/code/trunk/java/storeless/org/apache/derby/impl/storeless/EmptyDictionary.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/SystemCatalogTest.java

Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/DataDescriptorGenerator.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/DataDescriptorGenerator.java?rev=614273&r1=614272&r2=614273&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/DataDescriptorGenerator.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/DataDescriptorGenerator.java Tue Jan 22 09:50:10 2008
@@ -488,6 +488,7 @@
     /**
      * Create a new role descriptor
      *
+	 * @param uuid unique identifier for this role descriptor in time and space
      * @param roleName the name of the role for which a new descriptor
      *                 is created
      * @param grantee authorization identifier of grantee
@@ -497,7 +498,8 @@
      * @param isDef if true, this descriptor represents a role
      *              definition, otherwise it represents a grant.
      */
-    public RoleDescriptor newRoleDescriptor(String roleName,
+    public RoleDescriptor newRoleDescriptor(UUID uuid,
+											String roleName,
 											String grantee,
 											String grantor,
                                             boolean withadminoption,
@@ -505,6 +507,7 @@
         throws StandardException
     {
         return new RoleDescriptor(dataDictionary,
+								  uuid,
                                   roleName,
                                   grantee,
                                   grantor,

Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/DataDictionary.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/DataDictionary.java?rev=614273&r1=614272&r2=614273&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/DataDictionary.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/DataDictionary.java Tue Jan 22 09:50:10 2008
@@ -1843,6 +1843,18 @@
 			throws StandardException;
 
 	/**
+	 * Get the descriptor corresponding to the uuid
+	 *
+	 * @param uuid
+	 *
+	 * @return The descriptor for the role (definition or grant descriptor)
+	 *
+	 * @exception StandardException  Thrown on error
+	 */
+	public RoleDescriptor getRoleDescriptor(UUID uuid)
+			throws StandardException;
+
+	/**
 	 * Get a role descriptor for a role grant
 	 *
 	 * @param roleName The name of the role whose definition we seek

Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/RoleDescriptor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/RoleDescriptor.java?rev=614273&r1=614272&r2=614273&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/RoleDescriptor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/RoleDescriptor.java Tue Jan 22 09:50:10 2008
@@ -21,16 +21,23 @@
 
 package org.apache.derby.iapi.sql.dictionary;
 
+import org.apache.derby.catalog.UUID;
+import org.apache.derby.catalog.DependableFinder;
+import org.apache.derby.catalog.Dependable;
 import org.apache.derby.iapi.error.StandardException;
 import org.apache.derby.iapi.services.sanity.SanityManager;
+import org.apache.derby.iapi.services.io.StoredFormatIds;
 import org.apache.derby.iapi.sql.conn.LanguageConnectionContext;
+import org.apache.derby.iapi.sql.depend.Provider;
 import org.apache.derby.iapi.store.access.TransactionController;
+import org.apache.derby.impl.sql.catalog.DDdependableFinder;
 
 /**
  * This class is used by rows in the SYS.SYSROLES system table.
  */
 public class RoleDescriptor extends TupleDescriptor
 {
+    private final UUID uuid;
     private final String roleName;
     private final String grantee;
     private final String grantor;
@@ -42,6 +49,8 @@
      * Constructor
      *
      * @param dd data dictionary
+     * @param uuid  unique identification in time and space of this role
+     *              descriptor
      * @param roleName
      * @param grantee
      * @param grantor
@@ -50,12 +59,14 @@
      *
      */
     RoleDescriptor(DataDictionary dd,
+                   UUID uuid,
                    String roleName,
                    String grantee,
                    String grantor,
                    boolean withAdminOption,
                    boolean isDef) {
         super(dd);
+        this.uuid = uuid;
         this.roleName = roleName;
         this.grantee = grantee;
         this.grantor = grantor;
@@ -63,6 +74,10 @@
         this.isDef = isDef;
     }
 
+    public UUID getUUID() {
+        return uuid;
+    }
+
     public String getGrantee() {
         return grantee;
     }
@@ -89,7 +104,8 @@
 
     public String toString() {
         if (SanityManager.DEBUG) {
-            return "roleName: " + roleName + "\n" +
+            return "uuid: " + uuid + "\n" +
+                "roleName: " + roleName + "\n" +
                 "grantor: " + grantor + "\n" +
                 "grantee: " + grantee + "\n" +
                 "withadminoption: " + withAdminOption + "\n" +

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java?rev=614273&r1=614272&r2=614273&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/DataDictionaryImpl.java Tue Jan 22 09:50:10 2008
@@ -1747,7 +1747,8 @@
 		keyRow.setColumn(2, granteeOrderable);
 		keyRow.setColumn(3, grantorOrderable);
 
-		ti.deleteRow(tc, keyRow, SYSROLESRowFactory.SYSROLES_INDEX1_ID );
+		ti.deleteRow(tc, keyRow,
+					 SYSROLESRowFactory.SYSROLES_INDEX_ID_EE_OR_IDX);
 	}
 
 
@@ -2696,7 +2697,7 @@
 
 		dropRoleGrants(ti,
 					   rf,
-					   rf.SYSROLES_GRANTEE_IN_INDEX1,
+					   rf.SYSROLES_GRANTEE_COLPOS_IN_INDEX_ID_EE_OR,
 					   grantee,
 					   tc);
 	}
@@ -2720,7 +2721,7 @@
 
 		dropRoleGrants(ti,
 					   rf,
-					   rf.SYSROLES_ROLEID_IN_INDEX1,
+					   rf.SYSROLES_ROLEID_COLPOS_IN_INDEX_ID_EE_OR,
 					   roleName,
 					   tc);
 	}
@@ -2758,7 +2759,7 @@
 			false);
 
 		ScanController sc = tc.openScan(
-			ti.getIndexConglomerate(rf.SYSROLES_INDEX1_ID),
+			ti.getIndexConglomerate(rf.SYSROLES_INDEX_ID_EE_OR_IDX),
 			false,   // don't hold open across commit
 			0,       // for update
 			TransactionController.MODE_RECORD,
@@ -2773,13 +2774,13 @@
 		try {
 			ExecRow outRow = rf.makeEmptyRow();
 			ExecIndexRow indexRow = getIndexRowFromHeapRow(
-				ti.getIndexRowGenerator(rf.SYSROLES_INDEX1_ID),
+				ti.getIndexRowGenerator(rf.SYSROLES_INDEX_ID_EE_OR_IDX),
 				heapCC.newRowLocationTemplate(),
 				outRow);
 
 			while (sc.fetchNext(indexRow.getRowArray())) {
 				ti.deleteRow(tc, indexRow,
-							 rf.SYSROLES_INDEX1_ID);
+							 rf.SYSROLES_INDEX_ID_EE_OR_IDX);
 			}
 		} finally {
 			if (sc != null) {
@@ -11506,6 +11507,43 @@
 		return rd;
 	}
 
+	
+	/**
+	 * Get the descriptor corresponding to the uuid
+	 *
+	 * @param uuid
+	 *
+	 * @return The descriptor for the role (definition or grant descriptor)
+	 *
+	 * @exception StandardException  Thrown on error
+	 */
+	public RoleDescriptor getRoleDescriptor(UUID uuid)
+		throws StandardException
+	{
+		DataValueDescriptor UUIDStringOrderable;
+
+		TabInfoImpl ti = getNonCoreTI(SYSROLES_CATALOG_NUM);
+
+		/* Use UUIDStringOrderable in both start and stop position for
+		 * scan.
+		 */
+		UUIDStringOrderable = getIDValueAsCHAR(uuid);
+
+		/* Set up the start/stop position for the scan */
+		ExecIndexRow keyRow = exFactory.getIndexableRow(2);
+		keyRow.setColumn(1, UUIDStringOrderable);
+
+		return (RoleDescriptor)
+					getDescriptorViaIndex(
+						SYSROLESRowFactory.SYSROLES_INDEX_UUID_IDX,
+						keyRow,
+						(ScanQualifier [][]) null,
+						ti,
+						(TupleDescriptor) null,
+						(List) null,
+						false);
+	}
+
 
 	/**
 	 * Get a role descriptor for a role grant
@@ -11559,7 +11597,7 @@
 
 		return (RoleDescriptor)
 					getDescriptorViaIndex(
-						SYSROLESRowFactory.SYSROLES_INDEX2_ID,
+						SYSROLESRowFactory.SYSROLES_INDEX_ID_DEF_IDX,
 						keyRow,
 						(ScanQualifier [][]) null,
 						ti,
@@ -11609,12 +11647,12 @@
 
 		return (RoleDescriptor)
 			getDescriptorViaIndex(
-								  SYSROLESRowFactory.SYSROLES_INDEX1_ID,
-								  keyRow,
-								  (ScanQualifier [][]) null,
-								  ti,
-								  (TupleDescriptor) null,
-								  (List) null,
-								  false);
+				SYSROLESRowFactory.SYSROLES_INDEX_ID_EE_OR_IDX,
+				keyRow,
+				(ScanQualifier [][]) null,
+				ti,
+				(TupleDescriptor) null,
+				(List) null,
+				false);
 	}
 }

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/SYSROLESRowFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/SYSROLESRowFactory.java?rev=614273&r1=614272&r2=614273&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/SYSROLESRowFactory.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/SYSROLESRowFactory.java Tue Jan 22 09:50:10 2008
@@ -21,6 +21,7 @@
 
 package org.apache.derby.impl.sql.catalog;
 
+import org.apache.derby.catalog.UUID;
 import org.apache.derby.iapi.types.SQLChar;
 import org.apache.derby.iapi.types.SQLVarchar;
 import org.apache.derby.iapi.types.DataValueDescriptor;
@@ -45,34 +46,44 @@
 {
     private static final String TABLENAME_STRING = "SYSROLES";
 
-    private static final int SYSROLES_COLUMN_COUNT = 5;
+    private static final int SYSROLES_COLUMN_COUNT = 6;
     /* Column #s for sysinfo (1 based) */
-    private static final int SYSROLES_ROLEID = 1;
-    private static final int SYSROLES_GRANTEE = 2;
-    private static final int SYSROLES_GRANTOR = 3;
-    private static final int SYSROLES_WITHADMINOPTION = 4;
-    private static final int SYSROLES_ISDEF = 5;
-
-    static final int SYSROLES_INDEX1_ID = 0;
-    static final int SYSROLES_INDEX2_ID = 1;
-
+    private static final int SYSROLES_ROLE_UUID = 1;
+    private static final int SYSROLES_ROLEID = 2;
+    private static final int SYSROLES_GRANTEE = 3;
+    private static final int SYSROLES_GRANTOR = 4;
+    private static final int SYSROLES_WITHADMINOPTION = 5;
+    private static final int SYSROLES_ISDEF = 6;
 
     private static final int[][] indexColumnPositions =
     {
         {SYSROLES_ROLEID, SYSROLES_GRANTEE, SYSROLES_GRANTOR},
-        {SYSROLES_ROLEID, SYSROLES_ISDEF}
+        {SYSROLES_ROLEID, SYSROLES_ISDEF},
+        {SYSROLES_ROLE_UUID}
     };
 
-    static final int SYSROLES_ROLEID_IN_INDEX1 = 1;
-    static final int SYSROLES_GRANTEE_IN_INDEX1 = 2;
+    // (role)ID_(grant)EE_(grant)OR
+    static final int SYSROLES_INDEX_ID_EE_OR_IDX = 0;
+    // (role)ID_(is)DEF
+    static final int SYSROLES_INDEX_ID_DEF_IDX = 1;
+    // UUID
+    static final int SYSROLES_INDEX_UUID_IDX = 2;
 
-    private static  final   boolean[]   uniqueness = {true,false};
+
+    static final int SYSROLES_ROLEID_COLPOS_IN_INDEX_ID_EE_OR = 1;
+    static final int SYSROLES_GRANTEE_COLPOS_IN_INDEX_ID_EE_OR = 2;
+
+    private static  final   boolean[]   uniqueness = {
+        true,
+        false, // many rows have same roleid and is not a definition
+        true};
 
     private static final String[] uuids = {
         "e03f4017-0115-382c-08df-ffffe275b270", // catalog UUID
         "c851401a-0115-382c-08df-ffffe275b270", // heap UUID
-        "c065801d-0115-382c-08df-ffffe275b270", // SYSROLES_INDEX1
-        "787c0020-0115-382c-08df-ffffe275b270"  // SYSROLES_INDEX2
+        "c065801d-0115-382c-08df-ffffe275b270", // SYSROLES_INDEX_ID_EE_OR
+        "787c0020-0115-382c-08df-ffffe275b270", // SYSROLES_INDEX_ID_DEF
+        "629f8094-0116-d8f9-5f97-ffffe275b270"  // SYSROLES_INDEX_UUID
     };
 
     /**
@@ -106,6 +117,7 @@
         throws StandardException
     {
         ExecRow                 row;
+        String                  oid_string = null;
         String                  roleid = null;
         String                  grantee = null;
         String                  grantor = null;
@@ -121,25 +133,30 @@
             grantor = roleDescriptor.getGrantor();
             wao = roleDescriptor.isWithAdminOption();
             isdef = roleDescriptor.isDef();
+            UUID oid = roleDescriptor.getUUID();
+            oid_string = oid.toString();
         }
 
         /* Build the row to insert */
         row = getExecutionFactory().getValueRow(SYSROLES_COLUMN_COUNT);
 
-        /* 1st column is ROLEID */
-        row.setColumn(1, new SQLVarchar(roleid));
+        /* 1st column is UUID */
+        row.setColumn(1, new SQLChar(oid_string));
+
+        /* 2nd column is ROLEID */
+        row.setColumn(2, new SQLVarchar(roleid));
 
-        /* 2nd column is GRANTEE */
-        row.setColumn(2, new SQLVarchar(grantee));
+        /* 3rd column is GRANTEE */
+        row.setColumn(3, new SQLVarchar(grantee));
 
-        /* 3rd column is GRANTOR */
-        row.setColumn(3, new SQLVarchar(grantor));
+        /* 4th column is GRANTOR */
+        row.setColumn(4, new SQLVarchar(grantor));
 
-        /* 4th column is WITHADMINOPTION */
-        row.setColumn(4, new SQLChar(wao ? "Y" : "N"));
+        /* 5th column is WITHADMINOPTION */
+        row.setColumn(5, new SQLChar(wao ? "Y" : "N"));
 
-        /* 4th column is ISDEF */
-        row.setColumn(5, new SQLChar(isdef ? "Y" : "N"));
+        /* 6th column is ISDEF */
+        row.setColumn(6, new SQLChar(isdef ? "Y" : "N"));
 
         return row;
     }
@@ -170,6 +187,7 @@
 
         DataValueDescriptor         col;
         RoleDescriptor              descriptor;
+        String                      oid_string;
         String                      roleid;
         String                      grantee;
         String                      grantor;
@@ -183,31 +201,37 @@
                                  "Wrong number of columns for a SYSROLES row");
         }
 
-        // first column is roleid (varchar(128))
+        // first column is uuid of this role descriptor (char(36))
         col = row.getColumn(1);
-        roleid = col.getString();
+        oid_string = col.getString();
 
-        // second column is grantee (varchar(128))
+        // second column is roleid (varchar(128))
         col = row.getColumn(2);
-        grantee = col.getString();
+        roleid = col.getString();
 
-        // third column is grantor (varchar(128))
+        // third column is grantee (varchar(128))
         col = row.getColumn(3);
-        grantor = col.getString();
+        grantee = col.getString();
 
-        // fourth column is withadminoption (char(1))
+        // fourth column is grantor (varchar(128))
         col = row.getColumn(4);
-        wao = col.getString();
+        grantor = col.getString();
 
-        // fifth column is isdef (char(1))
+        // fifth column is withadminoption (char(1))
         col = row.getColumn(5);
+        wao = col.getString();
+
+        // sixth column is isdef (char(1))
+        col = row.getColumn(6);
         isdef = col.getString();
 
-        descriptor = ddg.newRoleDescriptor(roleid,
-                                           grantee,
-                                           grantor,
-                                           wao.equals("Y") ? true: false,
-                                           isdef.equals("Y") ? true: false);
+        descriptor = ddg.newRoleDescriptor
+            (getUUIDFactory().recreateUUID(oid_string),
+             roleid,
+             grantee,
+             grantor,
+             wao.equals("Y") ? true: false,
+             isdef.equals("Y") ? true: false);
 
         return descriptor;
     }
@@ -221,6 +245,7 @@
     public SystemColumn[]   buildColumnList()
     {
         return new SystemColumn[] {
+            SystemColumnImpl.getUUIDColumn("UUID", false),
             SystemColumnImpl.getIdentifierColumn("ROLEID", false),
             SystemColumnImpl.getIdentifierColumn("GRANTEE", false),
             SystemColumnImpl.getIdentifierColumn("GRANTOR", false),

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateRoleConstantAction.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateRoleConstantAction.java?rev=614273&r1=614272&r2=614273&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateRoleConstantAction.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateRoleConstantAction.java Tue Jan 22 09:50:10 2008
@@ -97,11 +97,13 @@
         // can't guarantee against collision if users are externally
         // defined or added later).
 
-        rd = ddg.newRoleDescriptor(roleName,
-                                   currentAuthId,// grantee
-                                   Authorizer.SYSTEM_AUTHORIZATION_ID,// grantor
-                                   true,         // with admin option
-                                   true);        // is definition
+        rd = ddg.newRoleDescriptor(
+            dd.getUUIDFactory().createUUID(),
+            roleName,
+            currentAuthId,// grantee
+            Authorizer.SYSTEM_AUTHORIZATION_ID,// grantor
+            true,         // with admin option
+            true);        // is definition
 
         dd.startWriting(lcc);
         dd.addDescriptor(rd,

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GrantRoleConstantAction.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GrantRoleConstantAction.java?rev=614273&r1=614272&r2=614273&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GrantRoleConstantAction.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GrantRoleConstantAction.java Tue Jan 22 09:50:10 2008
@@ -150,16 +150,19 @@
                         // FIXME: Grantee is role, need to check for circularity
                     }
 
-                    rd = ddg.newRoleDescriptor(role,
-                                               grantee,
-                                               grantor, // dbo for now
-                                               withAdminOption,
-                                               false);  // not definition
-                    dd.addDescriptor(rd,
-                                     null,  // parent
-                                     DataDictionary.SYSROLES_CATALOG_NUM,
-                                     false, // no duplicatesAllowed
-                                     tc);
+                    rd = ddg.newRoleDescriptor(
+                        dd.getUUIDFactory().createUUID(),
+                        role,
+                        grantee,
+                        grantor, // dbo for now
+                        withAdminOption,
+                        false);  // not definition
+                    dd.addDescriptor(
+                        rd,
+                        null,  // parent
+                        DataDictionary.SYSROLES_CATALOG_NUM,
+                        false, // no duplicatesAllowed
+                        tc);
                 } // else exists already, no need to add
             }
         }

Modified: db/derby/code/trunk/java/storeless/org/apache/derby/impl/storeless/EmptyDictionary.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/storeless/org/apache/derby/impl/storeless/EmptyDictionary.java?rev=614273&r1=614272&r2=614273&view=diff
==============================================================================
--- db/derby/code/trunk/java/storeless/org/apache/derby/impl/storeless/EmptyDictionary.java (original)
+++ db/derby/code/trunk/java/storeless/org/apache/derby/impl/storeless/EmptyDictionary.java Tue Jan 22 09:50:10 2008
@@ -201,6 +201,14 @@
 		return null;
 	}
 
+
+	public RoleDescriptor getRoleDescriptor(UUID uuid)
+			throws StandardException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+
 	public RoleDescriptor getRoleGrantDescriptor(String roleName,
 												 String grantee,
 												 String grantor)

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/SystemCatalogTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/SystemCatalogTest.java?rev=614273&r1=614272&r2=614273&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/SystemCatalogTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/SystemCatalogTest.java Tue Jan 22 09:50:10 2008
@@ -238,11 +238,12 @@
 				{"SYSFOREIGNKEYS", "UPDATERULE", "5", "CHAR(1) NOT NULL"},
 				{"SYSKEYS", "CONGLOMERATEID", "2", "CHAR(36) NOT NULL"},
 				{"SYSKEYS", "CONSTRAINTID", "1", "CHAR(36) NOT NULL"},
-				{"SYSROLES", "GRANTEE", "2", "VARCHAR(128) NOT NULL"},
-				{"SYSROLES", "GRANTOR", "3", "VARCHAR(128) NOT NULL"},
-				{"SYSROLES", "ISDEF", "5", "CHAR(1) NOT NULL"},
-				{"SYSROLES", "ROLEID", "1", "VARCHAR(128) NOT NULL"},
-				{"SYSROLES", "WITHADMINOPTION", "4", "CHAR(1) NOT NULL"},
+				{"SYSROLES", "GRANTEE", "3", "VARCHAR(128) NOT NULL"},
+				{"SYSROLES", "GRANTOR", "4", "VARCHAR(128) NOT NULL"},
+				{"SYSROLES", "ISDEF", "6", "CHAR(1) NOT NULL"},
+				{"SYSROLES", "ROLEID", "2", "VARCHAR(128) NOT NULL"},
+				{"SYSROLES", "UUID", "1", "CHAR(36) NOT NULL"},
+				{"SYSROLES", "WITHADMINOPTION", "5", "CHAR(1) NOT NULL"},
 				{"SYSROUTINEPERMS", "ALIASID", "4", "CHAR(36) NOT NULL"},
 				{"SYSROUTINEPERMS", "GRANTEE", "2", "VARCHAR(128) NOT NULL"},
 				{"SYSROUTINEPERMS", "GRANTOPTION", "5", "CHAR(1) NOT NULL"},
@@ -354,6 +355,7 @@
 				{"SYSKEYS", "SYSKEYS_HEAP", "false"},
 				{"SYSKEYS", "SYSKEYS_INDEX1", "true"},
 				{"SYSROLES", "SYSROLES_HEAP", "false"},
+				{"SYSROLES", "SYSROLES_INDEX3", "true"},
 				{"SYSROLES", "SYSROLES_INDEX2", "true"},
 				{"SYSROLES", "SYSROLES_INDEX1", "true"},
 				{"SYSROUTINEPERMS", "SYSROUTINEPERMS_HEAP", "false"},