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 dj...@apache.org on 2007/03/04 16:53:10 UTC
svn commit: r514416 - in /db/derby/code/trunk/java/engine/org/apache/derby:
iapi/sql/dictionary/ impl/sql/execute/
Author: djd
Date: Sun Mar 4 07:53:09 2007
New Revision: 514416
URL: http://svn.apache.org/viewvc?view=rev&rev=514416
Log:
DERBY-2397 (partial) Move the drop logic for TriggerDecsriptor and ViewDescriptor to be centralized
in each class as an instance method. The methods do not yet have a common signature,
more investigation is needed for the ViewDescriptor's relationship to its TableDescriptor.
Added some comments to CreateViewNode to describe the set of descriptors and dependencies it creates.
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/TriggerDescriptor.java
db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/ViewDescriptor.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/AlterTableConstantAction.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateViewConstantAction.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DropTableConstantAction.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DropTriggerConstantAction.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DropViewConstantAction.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GenericConstantActionFactory.java
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/TriggerDescriptor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/TriggerDescriptor.java?view=diff&rev=514416&r1=514415&r2=514416
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/TriggerDescriptor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/TriggerDescriptor.java Sun Mar 4 07:53:09 2007
@@ -30,12 +30,14 @@
import org.apache.derby.iapi.reference.SQLState;
import org.apache.derby.iapi.services.sanity.SanityManager;
+import org.apache.derby.iapi.sql.Activation;
import org.apache.derby.iapi.sql.StatementType;
import org.apache.derby.catalog.DependableFinder;
import org.apache.derby.catalog.Dependable;
import org.apache.derby.iapi.services.io.StoredFormatIds;
import org.apache.derby.iapi.sql.depend.DependencyManager;
import org.apache.derby.iapi.sql.conn.LanguageConnectionContext;
+import org.apache.derby.iapi.store.access.TransactionController;
import org.apache.derby.iapi.services.context.ContextService;
import org.apache.derby.impl.sql.execute.DropTriggerConstantAction;
@@ -702,10 +704,7 @@
// types SELECT, UPDATE, DELETE, INSERT, REFERENCES, TRIGGER), we
// make the TriggerDescriptor drop itself.
case DependencyManager.REVOKE_PRIVILEGE:
- DropTriggerConstantAction.dropTriggerDescriptor(
- lcc, getDataDictionary().getDependencyManager(),
- getDataDictionary(), lcc.getTransactionExecute(), this,
- null);
+ drop(lcc);
break;
default:
@@ -713,6 +712,38 @@
}
}
+
+ public void drop(LanguageConnectionContext lcc) throws StandardException
+ {
+ DataDictionary dd = getDataDictionary();
+ DependencyManager dm = getDataDictionary().getDependencyManager();
+ TransactionController tc = lcc.getTransactionExecute();
+
+ dm.invalidateFor(this, DependencyManager.DROP_TRIGGER, lcc);
+
+ // Drop the trigger
+ dd.dropTriggerDescriptor(this, tc);
+
+ // Clear the dependencies for the trigger
+ dm.clearDependencies(lcc, this);
+
+ // Drop the spses
+ SPSDescriptor spsd = dd.getSPSDescriptor(this.getActionId());
+
+ // there shouldn't be any dependencies, but in case
+ // there are, lets clear them
+ dm.invalidateFor(spsd, DependencyManager.DROP_TRIGGER, lcc);
+ dm.clearDependencies(lcc, spsd);
+ dd.dropSPSDescriptor(spsd, tc);
+
+ if (getWhenClauseId() != null)
+ {
+ spsd = dd.getSPSDescriptor(getWhenClauseId());
+ dm.invalidateFor(spsd, DependencyManager.DROP_TRIGGER, lcc);
+ dm.clearDependencies(lcc, spsd);
+ dd.dropSPSDescriptor(spsd, tc);
+ }
+ }
//////////////////////////////////////////////////////////////
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/ViewDescriptor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/ViewDescriptor.java?view=diff&rev=514416&r1=514415&r2=514416
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/ViewDescriptor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/ViewDescriptor.java Sun Mar 4 07:53:09 2007
@@ -337,11 +337,9 @@
//make the ViewDescriptor drop itself.
case DependencyManager.REVOKE_PRIVILEGE:
case DependencyManager.DROP_COLUMN:
- dropViewWork(getDataDictionary(),
- getDataDictionary().getDependencyManager(), lcc,
- lcc.getTransactionExecute(),
+ drop(lcc,
getDataDictionary().getTableDescriptor(uuid).getSchemaDescriptor(),
- getDataDictionary().getTableDescriptor(uuid), false);
+ getDataDictionary().getTableDescriptor(uuid));
lcc.getLastActivation().addWarning(
StandardException.newWarning(
@@ -386,11 +384,14 @@
}
}
- public void dropViewWork(DataDictionary dd, DependencyManager dm,
- LanguageConnectionContext lcc, TransactionController tc,
- SchemaDescriptor sd, TableDescriptor td, boolean cascade)
+ public void drop(LanguageConnectionContext lcc,
+ SchemaDescriptor sd, TableDescriptor td)
throws StandardException
{
+ DataDictionary dd = getDataDictionary();
+ DependencyManager dm = dd.getDependencyManager();
+ TransactionController tc = lcc.getTransactionExecute();
+
/* Drop the columns */
dd.dropAllColumnDescriptors(td.getUUID(), tc);
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/AlterTableConstantAction.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/AlterTableConstantAction.java?view=diff&rev=514416&r1=514415&r2=514416
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/AlterTableConstantAction.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/AlterTableConstantAction.java Sun Mar 4 07:53:09 2007
@@ -766,7 +766,7 @@
{
if (cascade)
{
- DropTriggerConstantAction.dropTriggerDescriptor(lcc, dm, dd, tc, trd, activation);
+ trd.drop(lcc);
activation.addWarning(
StandardException.newWarning(SQLState.LANG_TRIGGER_DROPPED,
trd.getName(), td.getName()));
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateViewConstantAction.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateViewConstantAction.java?view=diff&rev=514416&r1=514415&r2=514416
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateViewConstantAction.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateViewConstantAction.java Sun Mar 4 07:53:09 2007
@@ -51,6 +51,20 @@
/**
* This class describes actions that are ALWAYS performed for a
* CREATE VIEW Statement at Execution time.
+ * A view is represented as:
+ * <UL>
+ * <LI> TableDescriptor with the name of the view and type VIEW_TYPE
+ * <LI> Set of ColumnDescriptor's for the column names and types
+ * <LI> ViewDescriptor describing the SQL query that makes up the view.
+ * </UL>
+ * Dependencies are created as:
+ * <UL>
+ * <LI> ViewDescriptor depends on the Providers that its compiled
+ * query depends on.
+ * <LI> ViewDescriptor depends on the privileges required to execute the view.
+ * </UL>
+ * Note there are no dependencies created between the ViewDescriptor, TableDecriptor
+ * and the ColumnDescriptor's.
*
* @author Jerry Brenner.
*/
@@ -72,14 +86,13 @@
* Make the ConstantAction for a CREATE VIEW statement.
*
* @param schemaName name for the schema that view lives in.
- * @param tableName Name of table.
- * @param tableType Type of table (e.g., BASE).
+ * @param tableName Name of view.
+ * @param tableType Type of table (ie. TableDescriptor.VIEW_TYPE).
* @param viewText Text of query expression for view definition
* @param checkOption Check option type
* @param columnInfo Information on all the columns in the table.
* @param providerInfo Information on all the Providers
* @param compSchemaId Compilation Schema Id
- * (REMIND tableDescriptor ignored)
*/
CreateViewConstantAction(
String schemaName,
@@ -117,7 +130,7 @@
/**
- * This is the guts of the Execution-time logic for CREATE TABLE.
+ * This is the guts of the Execution-time logic for CREATE VIEW.
*
* @see ConstantAction#executeConstantAction
*
@@ -128,7 +141,6 @@
{
TableDescriptor td;
UUID toid;
- SchemaDescriptor schemaDescriptor;
ColumnDescriptor columnDescriptor;
ViewDescriptor vd;
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DropTableConstantAction.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DropTableConstantAction.java?view=diff&rev=514416&r1=514415&r2=514416
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DropTableConstantAction.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DropTableConstantAction.java Sun Mar 4 07:53:09 2007
@@ -193,7 +193,7 @@
while (descs.hasMoreElements())
{
TriggerDescriptor trd = (TriggerDescriptor) descs.nextElement();
- DropTriggerConstantAction.dropTriggerDescriptor(lcc, dm, dd, tc, trd, activation);
+ trd.drop(lcc);
}
/* Drop all defaults */
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DropTriggerConstantAction.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DropTriggerConstantAction.java?view=diff&rev=514416&r1=514415&r2=514416
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DropTriggerConstantAction.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DropTriggerConstantAction.java Sun Mar 4 07:53:09 2007
@@ -89,8 +89,6 @@
LanguageConnectionContext lcc = activation.getLanguageConnectionContext();
DataDictionary dd = lcc.getDataDictionary();
- DependencyManager dm = dd.getDependencyManager();
-
/*
** Inform the data dictionary that we are about to write to it.
@@ -139,48 +137,7 @@
** cursor referencing a table/trigger that the user is attempting to
** drop.) If no one objects, then invalidate any dependent objects.
*/
- dropTriggerDescriptor(lcc, dm, dd, tc, triggerd, activation);
- }
-
- public static void dropTriggerDescriptor
- (
- LanguageConnectionContext lcc,
- DependencyManager dm,
- DataDictionary dd,
- TransactionController tc,
- TriggerDescriptor triggerd,
- Activation activation
- ) throws StandardException
- {
- if (SanityManager.DEBUG)
- {
- SanityManager.ASSERT(triggerd!=null, "trigger descriptor is null");
- }
-
- dm.invalidateFor(triggerd, DependencyManager.DROP_TRIGGER, lcc);
-
- // Drop the trigger
- dd.dropTriggerDescriptor(triggerd, tc);
-
- // Clear the dependencies for the trigger
- dm.clearDependencies(lcc, triggerd);
-
- // Drop the spses
- SPSDescriptor spsd = dd.getSPSDescriptor(triggerd.getActionId());
-
- // there shouldn't be any dependencies, but in case
- // there are, lets clear them
- dm.invalidateFor(spsd, DependencyManager.DROP_TRIGGER, lcc);
- dm.clearDependencies(lcc, spsd);
- dd.dropSPSDescriptor(spsd, tc);
-
- if (triggerd.getWhenClauseId() != null)
- {
- spsd = dd.getSPSDescriptor(triggerd.getWhenClauseId());
- dm.invalidateFor(spsd, DependencyManager.DROP_TRIGGER, lcc);
- dm.clearDependencies(lcc, spsd);
- dd.dropSPSDescriptor(spsd, tc);
- }
+ triggerd.drop(lcc);
}
public String toString()
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DropViewConstantAction.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DropViewConstantAction.java?view=diff&rev=514416&r1=514415&r2=514416
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DropViewConstantAction.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DropViewConstantAction.java Sun Mar 4 07:53:09 2007
@@ -101,8 +101,6 @@
LanguageConnectionContext lcc = activation.getLanguageConnectionContext();
DataDictionary dd = lcc.getDataDictionary();
- DependencyManager dm = dd.getDependencyManager();
- TransactionController tc = lcc.getTransactionExecute();
/*
** Inform the data dictionary that we are about to write to it.
@@ -133,6 +131,6 @@
vd = dd.getViewDescriptor(td);
- vd.dropViewWork(dd, dm, lcc, tc, sd, td, false);
+ vd.drop(lcc, sd, td);
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GenericConstantActionFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GenericConstantActionFactory.java?view=diff&rev=514416&r1=514415&r2=514416
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GenericConstantActionFactory.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GenericConstantActionFactory.java Sun Mar 4 07:53:09 2007
@@ -314,7 +314,7 @@
*
* @param schemaName Name of the schema that table lives in.
* @param tableName Name of table.
- * @param tableType Type of table (e.g., BASE).
+ * @param tableType Type of table (in this case TableDescriptor.VIEW_TYPE).
* @param viewText Text of query expression for view definition
* @param checkOption Check option type
* @param columnInfo Information on all the columns in the table.