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 ka...@apache.org on 2012/10/19 12:19:12 UTC
svn commit: r1400024 - in
/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql:
compile/CursorNode.java execute/BaseActivation.java
execute/CursorActivation.java
Author: kahatlen
Date: Fri Oct 19 10:19:12 2012
New Revision: 1400024
URL: http://svn.apache.org/viewvc?rev=1400024&view=rev
Log:
DERBY-5947: Factor out common code from generated classes
Move authorization check for CursorNodes from generated code to
CursorActivation.
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CursorNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/BaseActivation.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CursorActivation.java
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CursorNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CursorNode.java?rev=1400024&r1=1400023&r2=1400024&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CursorNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CursorNode.java Fri Oct 19 10:19:12 2012
@@ -634,9 +634,6 @@ public class CursorNode extends DMLState
// result set of the statement.
resultSet.markStatementResultSet();
- generateAuthorizeCheck(acb, mb,
- org.apache.derby.iapi.sql.conn.Authorizer.SQL_SELECT_OP);
-
// this will generate an expression that will be a ResultSet
resultSet.generate(acb, mb);
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/BaseActivation.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/BaseActivation.java?rev=1400024&r1=1400023&r2=1400024&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/BaseActivation.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/BaseActivation.java Fri Oct 19 10:19:12 2012
@@ -276,16 +276,22 @@ public abstract class BaseActivation imp
// Create the result set tree on the first execution.
if (resultSet == null) {
- resultSet = createResultSet();
- if (isCursorActivation()) {
- ((NoPutResultSet) resultSet).markAsTopResultSet();
- }
+ resultSet = decorateResultSet();
}
return resultSet;
}
/**
+ * Create the ResultSet tree for this statement, and possibly perform
+ * extra checks or initialization required by specific sub-classes.
+ * @return the root of the ResultSet tree for this statement
+ */
+ ResultSet decorateResultSet() throws StandardException {
+ return createResultSet();
+ }
+
+ /**
* Create the ResultSet tree for this statement.
* @return the root of the ResultSet tree for this statement
*/
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CursorActivation.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CursorActivation.java?rev=1400024&r1=1400023&r2=1400024&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CursorActivation.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CursorActivation.java Fri Oct 19 10:19:12 2012
@@ -21,6 +21,11 @@
package org.apache.derby.impl.sql.execute;
+import org.apache.derby.iapi.error.StandardException;
+import org.apache.derby.iapi.sql.ResultSet;
+import org.apache.derby.iapi.sql.conn.Authorizer;
+import org.apache.derby.iapi.sql.execute.NoPutResultSet;
+
/**
*
* In the family of activation support classes,
@@ -46,4 +51,17 @@ public abstract class CursorActivation
{
return true;
}
+
+ /** @see BaseActivation#decorateResultSet */
+ ResultSet decorateResultSet() throws StandardException {
+ // CursorActivation means it's a query that returns rows. Check that
+ // the caller is authorized to run SQL read operations.
+ getLanguageConnectionContext().getAuthorizer().authorize(
+ this, Authorizer.SQL_SELECT_OP);
+
+ // The top-level result set should be marked as such.
+ NoPutResultSet rs = (NoPutResultSet) createResultSet();
+ rs.markAsTopResultSet();
+ return rs;
+ }
}