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 ba...@apache.org on 2006/01/06 19:00:57 UTC

svn commit: r366544 - in /db/derby/code/trunk/java: engine/org/apache/derby/iapi/sql/conn/ engine/org/apache/derby/impl/sql/compile/ engine/org/apache/derby/impl/sql/conn/ testing/org/apache/derbyTesting/functionTests/master/ testing/org/apache/derbyTe...

Author: bandaram
Date: Fri Jan  6 09:59:54 2006
New Revision: 366544

URL: http://svn.apache.org/viewcvs?rev=366544&view=rev
Log:
DERBY-464: Enable Grant and Revoke DDLs again that were disabled because of two test failures.

Submitted by Satheesh Bandaram (satheesh@sourcery.org)

Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/conn/Authorizer.java
    db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/conn/LanguageConnectionContext.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CompilerContextImpl.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/conn/GenericAuthorizer.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/conn/GenericLanguageConnectionContext.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/connect.out
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect.sql

Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/conn/Authorizer.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/conn/Authorizer.java?rev=366544&r1=366543&r2=366544&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/conn/Authorizer.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/conn/Authorizer.java Fri Jan  6 09:59:54 2006
@@ -125,12 +125,4 @@
 	 @exception StandardException Oops.
 	 */
    public void refresh() throws StandardException;  
-
-	/**
- 	  * @return true if the authorizer uses the SQL standard permissions (grant/revoke),
-	  *         false if the legacy Derby permissions system is used.
-	  *
-	  * @exception StandardException standard error policy.
-	 */
-	public boolean usesSqlStandardPermissions() throws StandardException;
 }

Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/conn/LanguageConnectionContext.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/conn/LanguageConnectionContext.java?rev=366544&r1=366543&r2=366544&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/conn/LanguageConnectionContext.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/conn/LanguageConnectionContext.java Fri Jan  6 09:59:54 2006
@@ -1111,4 +1111,10 @@
 	 */
 	public String getDbname();
 
+	/**
+	 * Check if in SQL standard mode, with support for Grant & Revoke
+	 *
+	 * @return True if SQL standard permissions are being used
+	 */
+	public boolean usesSqlStandardPermissions();
 }

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CompilerContextImpl.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CompilerContextImpl.java?rev=366544&r1=366543&r2=366544&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CompilerContextImpl.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CompilerContextImpl.java Fri Jan  6 09:59:54 2006
@@ -693,18 +693,14 @@
 		requiredColumnPrivileges = null;
 		requiredTablePrivileges = null;
 		requiredRoutinePrivileges = null;
-		try
+		LanguageConnectionContext lcc = (LanguageConnectionContext)
+		getContextManager().getContext(LanguageConnectionContext.CONTEXT_ID);
+		if( lcc.usesSqlStandardPermissions())
 		{
-			LanguageConnectionContext lcc = (LanguageConnectionContext)
-			getContextManager().getContext(LanguageConnectionContext.CONTEXT_ID);
-			if( lcc.getAuthorizer().usesSqlStandardPermissions())
-			{
-				requiredColumnPrivileges = new HashMap();
-				requiredTablePrivileges = new HashMap();
-				requiredRoutinePrivileges = new HashMap();
-			}
+			requiredColumnPrivileges = new HashMap();
+			requiredTablePrivileges = new HashMap();
+			requiredRoutinePrivileges = new HashMap();
 		}
-		catch( StandardException se){}
 	} // end of initRequiredPriv
 
 	/**

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj?rev=366544&r1=366543&r2=366544&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj Fri Jan  6 09:59:54 2006
@@ -326,7 +326,7 @@
     */
 	private void checkSqlStandardAccess( String command) throws StandardException
 	{
-		if( getLanguageConnectionContext().getAuthorizer().usesSqlStandardPermissions())
+		if( getLanguageConnectionContext().usesSqlStandardPermissions())
 			return;
 
 		throw StandardException.newException(SQLState.LANG_GRANT_REVOKE_WITH_LEGACY_ACCESS,
@@ -11736,8 +11736,7 @@
 {
 	<EXTERNAL> <SECURITY>
 	{
-		// GrantRevoke TODO: This needs to check for 10.2 version
-		checkVersion( DataDictionary.DD_VERSION_DERBY_10_1, "EXTERNAL SECURITY");
+		checkVersion( DataDictionary.DD_VERSION_DERBY_10_2, "EXTERNAL SECURITY");
 		checkSqlStandardAccess( "EXTERNAL SECURITY");
 	}
 	( invocationType = securityDefinerInvoker())
@@ -11771,8 +11770,7 @@
 {
 	<GRANT>
 	{
-		// GrantRevoke TODO: This needs to check for 10.2 version
-		checkVersion( DataDictionary.DD_VERSION_DERBY_10_1, "GRANT");
+		checkVersion( DataDictionary.DD_VERSION_DERBY_10_2, "GRANT");
 		checkSqlStandardAccess( "GRANT");
 	}
 	( node = tableGrantStatement() | node = routineGrantStatement() )

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/conn/GenericAuthorizer.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/conn/GenericAuthorizer.java?rev=366544&r1=366543&r2=366544&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/conn/GenericAuthorizer.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/conn/GenericAuthorizer.java Fri Jan  6 09:59:54 2006
@@ -284,21 +284,4 @@
 		if (userAccessLevel == NO_ACCESS)
 			throw StandardException.newException(SQLState.AUTH_DATABASE_CONNECTION_REFUSED);
 	}
-
-    public boolean usesSqlStandardPermissions() throws StandardException
-    {
-		// GrantRevoke TODO: Disabling this mode because of two failing tests.
-		if (true)
-		return false;
-
-		// RESOLVE use getDefaultAccessLevel() when SQL standard permissions are fully implemented
-		// GrantRevoke TODO: May need to make database property value override system value
-		PersistentSet tc = lcc.getTransactionExecute();
-		String modeS = (String)
-		PropertyUtil.getServiceProperty(tc,
-									Property.DEFAULT_CONNECTION_MODE_PROPERTY);
-		if( modeS == null)
-            return false;
-		return StringUtil.SQLEqualsIgnoreCase(modeS, Property.SQL_STANDARD_ACCESS);
-    } // end of usesSqlStandardPermissions
 }

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/conn/GenericLanguageConnectionContext.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/conn/GenericLanguageConnectionContext.java?rev=366544&r1=366543&r2=366544&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/conn/GenericLanguageConnectionContext.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/conn/GenericLanguageConnectionContext.java Fri Jan  6 09:59:54 2006
@@ -188,6 +188,7 @@
 	protected String userName = null; //The name the user connects with.
 	                                  //May still be quoted.
 	
+	protected boolean usesSqlPermissions = false;
 	protected SchemaDescriptor	sd;
 
 	// RESOLVE - How do we want to set the default.
@@ -302,6 +303,13 @@
 					"derby.language.logQueryPlan");
 		logQueryPlan = Boolean.valueOf(logQueryPlanProperty).booleanValue();
 
+		// GrantRevoke TODO: May need to make database property value override system value
+		String modeS = PropertyUtil.getServiceProperty(getTransactionCompile(),
+									Property.DEFAULT_CONNECTION_MODE_PROPERTY);
+		if (modeS != null &&
+			 StringUtil.SQLEqualsIgnoreCase(modeS, Property.SQL_STANDARD_ACCESS))
+			usesSqlPermissions = true;
+
 		setRunTimeStatisticsMode(logQueryPlan);
 
 		lockEscalationThreshold = 
@@ -395,6 +403,14 @@
 	public boolean getLogQueryPlan()
 	{
 		return logQueryPlan;
+	}
+
+	/**
+	 * @see LanguageConnectionContext#usesSqlStandardPermissions
+	 */
+	public boolean usesSqlStandardPermissions()
+	{
+		return usesSqlPermissions;
 	}
 
 	/**

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/connect.out
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/connect.out?rev=366544&r1=366543&r2=366544&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/connect.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/connect.out Fri Jan  6 09:59:54 2006
@@ -29,4 +29,14 @@
 ij> -- and this should succeed (no database name in URL)
 connect 'jdbc:derby:;databaseName=wombat';
 ij> disconnect;
+ij> -- Doing some simple grant/revoke negative tests in legacy database.
+-- All should fail with errors.
+connect 'jdbc:derby:wombat';
+ij> create table mytab(i int);
+0 rows inserted/updated/deleted
+ij> grant select on mytab to satheesh;
+ERROR 42Z60: GRANT not allowed unless database property derby.database.defaultConnectionMode has value 'sqlStandard'.
+ij> revoke select on mytab to satheesh;
+ERROR 42Z60: REVOKE not allowed unless database property derby.database.defaultConnectionMode has value 'sqlStandard'.
+ij> disconnect;
 ij> 

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect.sql
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect.sql?rev=366544&r1=366543&r2=366544&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect.sql (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/connect.sql Fri Jan  6 09:59:54 2006
@@ -26,3 +26,13 @@
 -- and this should succeed (no database name in URL)
 connect 'jdbc:derby:;databaseName=wombat';
 disconnect;
+
+-- Doing some simple grant/revoke negative tests in legacy database.
+-- All should fail with errors.
+
+connect 'jdbc:derby:wombat';
+create table mytab(i int);
+
+grant select on mytab to satheesh;
+revoke select on mytab to satheesh;
+disconnect;