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 2013/04/30 07:34:57 UTC
svn commit: r1477477 - in /db/derby/code/trunk/java/engine/org/apache/derby:
iapi/db/ impl/sql/compile/ impl/sql/execute/
Author: kahatlen
Date: Tue Apr 30 05:34:56 2013
New Revision: 1477477
URL: http://svn.apache.org/r1477477
Log:
DERBY-6169: Reduce visibility of classes and methods under impl/sql
Remove two unused methods in the TriggerExecutionContext interface,
and their implementations in InternalTriggerExecutionContext. This
also made it possible to remove some fields that were only used by the
removed methods, and also corresponding fields and parameters in
neighbour classes.
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/iapi/db/TriggerExecutionContext.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DMLModStatementNode.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DeleteResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GenericExecutionFactory.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InternalTriggerExecutionContext.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TriggerEventActivator.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TriggerInfo.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateResultSet.java
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/db/TriggerExecutionContext.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/db/TriggerExecutionContext.java?rev=1477477&r1=1477476&r2=1477477&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/db/TriggerExecutionContext.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/db/TriggerExecutionContext.java Tue Apr 30 05:34:56 2013
@@ -83,28 +83,6 @@ public interface TriggerExecutionContext
public String getEventStatementText();
/**
- * Find out if a column was changed, by column name.
- *
- * @param columnName the column to check
- *
- * @return true if the column was modified by this statement.
- * Note that this will always return true for INSERT
- * and DELETE regardless of the column name passed in.
- */
- public boolean wasColumnModified(String columnName);
-
- /**
- * Find out if a column was changed, by column number
- *
- * @param columnNumber the column to check
- *
- * @return true if the column was modified by this statement.
- * Note that this will always return true for INSERT
- * and DELETE regardless of the column name passed in.
- */
- public boolean wasColumnModified(int columnNumber);
-
- /**
* Returns a result set of the old (before) images of the changed rows.
* For a row trigger, this result set will have a single row. For
* a statement trigger, this result set has every row that has
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DMLModStatementNode.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DMLModStatementNode.java?rev=1477477&r1=1477476&r2=1477477&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DMLModStatementNode.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DMLModStatementNode.java Tue Apr 30 05:34:56 2013
@@ -649,7 +649,7 @@ abstract class DMLModStatementNode exten
getAllRelevantTriggers(dataDictionary, targetTableDescriptor,
changedColumnIds, includeTriggers);
createTriggerDependencies(relevantTriggers, dependent);
- generateTriggerInfo(relevantTriggers, targetTableDescriptor, changedColumnIds);
+ generateTriggerInfo(relevantTriggers);
if (skipCheckConstraints)
{
@@ -1062,22 +1062,12 @@ abstract class DMLModStatementNode exten
* Generate the TriggerInfo structures used during code generation.
*
* @param triggerList The trigger descriptor list
- * @param td The TableDescriptor
- * @param changedCols The columns that are being modified
- *
- * @exception StandardException Thrown on failure
*/
- private void generateTriggerInfo
- (
- GenericDescriptorList triggerList,
- TableDescriptor td,
- int[] changedCols
- )
- throws StandardException
+ private void generateTriggerInfo(GenericDescriptorList triggerList)
{
- if ((triggerList != null) && (triggerList.size() > 0))
+ if ((triggerList != null) && (!triggerList.isEmpty()))
{
- triggerInfo = new TriggerInfo(td, changedCols, triggerList);
+ triggerInfo = new TriggerInfo(triggerList);
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DeleteResultSet.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DeleteResultSet.java?rev=1477477&r1=1477476&r2=1477477&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DeleteResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DeleteResultSet.java Tue Apr 30 05:34:56 2013
@@ -440,7 +440,6 @@ class DeleteResultSet extends DMLWriteRe
if (triggerActivator == null)
{
triggerActivator = new TriggerEventActivator(lcc,
- tc,
constants.targetUUID,
triggerInfo,
TriggerExecutionContext.DELETE_EVENT,
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GenericExecutionFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GenericExecutionFactory.java?rev=1477477&r1=1477476&r2=1477477&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GenericExecutionFactory.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GenericExecutionFactory.java Tue Apr 30 05:34:56 2013
@@ -22,16 +22,13 @@
package org.apache.derby.impl.sql.execute;
import org.apache.derby.iapi.reference.EngineType;
-import org.apache.derby.iapi.sql.Activation;
import org.apache.derby.impl.sql.GenericColumnDescriptor;
import org.apache.derby.impl.sql.GenericResultDescription;
import org.apache.derby.iapi.services.monitor.ModuleControl;
import org.apache.derby.iapi.services.monitor.ModuleSupportable;
import org.apache.derby.iapi.services.monitor.Monitor;
-import org.apache.derby.iapi.services.io.FormatIdUtil;
import org.apache.derby.iapi.error.StandardException;
-import org.apache.derby.iapi.types.DataValueFactory;
import org.apache.derby.iapi.sql.conn.LanguageConnectionContext;
import org.apache.derby.iapi.sql.execute.ExecRow;
@@ -59,11 +56,6 @@ import org.apache.derby.iapi.services.lo
import org.apache.derby.iapi.services.context.ContextManager;
import org.apache.derby.catalog.UUID;
import org.apache.derby.iapi.services.io.FormatableBitSet;
-import org.apache.derby.iapi.services.io.FormatableArrayHolder;
-import org.apache.derby.iapi.services.io.FormatableHashtable;
-import org.apache.derby.iapi.services.io.FormatableIntHolder;
-import org.apache.derby.iapi.services.io.FormatableProperties;
-import org.apache.derby.catalog.TypeDescriptor;
import java.util.Properties;
import java.util.Vector;
@@ -321,8 +313,6 @@ public class GenericExecutionFactory
ConnectionContext cc,
String statementText,
int dmlType,
- int[] changedColIds,
- String[] changedColNames,
UUID targetTableId,
String targetTableName,
Vector aiCounters
@@ -330,8 +320,6 @@ public class GenericExecutionFactory
{
return new InternalTriggerExecutionContext(lcc, cc,
statementText, dmlType,
- changedColIds,
- changedColNames,
targetTableId,
targetTableName,
aiCounters);
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java?rev=1477477&r1=1477476&r2=1477477&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java Tue Apr 30 05:34:56 2013
@@ -1132,7 +1132,6 @@ class InsertResultSet extends DMLWriteRe
if (triggerActivator == null)
{
triggerActivator = new TriggerEventActivator(lcc,
- tc,
constants.targetUUID,
triggerInfo,
TriggerExecutionContext.INSERT_EVENT,
@@ -1283,7 +1282,6 @@ class InsertResultSet extends DMLWriteRe
if (triggerInfo != null)
{
triggerActivator = new TriggerEventActivator(lcc,
- tc,
constants.targetUUID,
triggerInfo,
TriggerExecutionContext.INSERT_EVENT,
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InternalTriggerExecutionContext.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InternalTriggerExecutionContext.java?rev=1477477&r1=1477476&r2=1477477&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InternalTriggerExecutionContext.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InternalTriggerExecutionContext.java Tue Apr 30 05:34:56 2013
@@ -35,7 +35,6 @@ import org.apache.derby.iapi.error.Stand
import org.apache.derby.iapi.jdbc.ConnectionContext;
import org.apache.derby.iapi.reference.SQLState;
import org.apache.derby.iapi.services.i18n.MessageService;
-import org.apache.derby.iapi.services.sanity.SanityManager;
import org.apache.derby.iapi.sql.conn.LanguageConnectionContext;
import org.apache.derby.iapi.sql.dictionary.TriggerDescriptor;
import org.apache.derby.iapi.sql.execute.ConstantAction;
@@ -63,8 +62,6 @@ class InternalTriggerExecutionContext
/*
** Immutable
*/
- protected int[] changedColIds;
- protected String[] changedColNames;
protected int dmlType;
protected String statementText;
protected ConnectionContext cc;
@@ -126,9 +123,6 @@ class InternalTriggerExecutionContext
* @param lcc the lcc
* @param statementText the text of the statement that caused the
* trigger to fire. may be null if we are replicating
- * @param changedColIds the list of columns that changed. Null
- * for all columns or INSERT/DELETE.
- * @param changedColNames the names that correspond to changedColIds
* @param targetTableId the UUID of the table upon which the trigger
* fired
* @param targetTableName the name of the table upon which the trigger
@@ -144,16 +138,12 @@ class InternalTriggerExecutionContext
ConnectionContext cc,
String statementText,
int dmlType,
- int[] changedColIds,
- String[] changedColNames,
UUID targetTableId,
String targetTableName,
Vector aiCounters
) throws StandardException
{
this.dmlType = dmlType;
- this.changedColIds = changedColIds;
- this.changedColNames = changedColNames;
this.statementText = statementText;
this.cc = cc;
this.lcc = lcc;
@@ -162,21 +152,6 @@ class InternalTriggerExecutionContext
this.resultSetVector = new Vector();
this.aiCounters = aiCounters;
- if (SanityManager.DEBUG)
- {
- if ((changedColIds == null) != (changedColNames == null))
- {
- SanityManager.THROWASSERT("bad changed cols, "+
- "(changedColsIds == null) = "+(changedColIds == null)+
- " (changedColsNames == null) = "+(changedColNames == null));
- }
- if (changedColIds != null)
- {
- SanityManager.ASSERT(changedColIds.length == changedColNames.length,
- "different number of changed col ids vs names");
- }
- }
-
lcc.pushTriggerExecutionContext(this);
}
@@ -396,58 +371,6 @@ class InternalTriggerExecutionContext
}
/**
- * Find out of a column was changed, by column name
- *
- * @param columnName the column to check
- *
- * @return true if the column was modified by this statement.
- * Note that this will always return true for INSERT
- * and DELETE regardless of the column name passed in.
- */
- public boolean wasColumnModified(String columnName)
- {
- if (changedColNames == null)
- {
- return true;
- }
-
- for (int i = 0; i < changedColNames.length; i++)
- {
- if (changedColNames[i].equals(columnName))
- {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Find out of a column was changed, by column number
- *
- * @param columnNumber the column to check
- *
- * @return true if the column was modified by this statement.
- * Note that this will always return true for INSERT
- * and DELETE regardless of the column name passed in.
- */
- public boolean wasColumnModified(int columnNumber)
- {
- if (changedColIds == null)
- {
- return true;
- }
-
- for (int i = 0; i < changedColNames.length; i++)
- {
- if (changedColIds[i] == columnNumber)
- {
- return true;
- }
- }
- return false;
- }
-
- /**
* Returns a result set row the old images of the changed rows.
* For a row trigger, the result set will have a single row. For
* a statement trigger, this result set has every row that has
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TriggerEventActivator.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TriggerEventActivator.java?rev=1477477&r1=1477476&r2=1477477&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TriggerEventActivator.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TriggerEventActivator.java Tue Apr 30 05:34:56 2013
@@ -26,20 +26,15 @@ import org.apache.derby.iapi.error.Stand
import org.apache.derby.iapi.sql.execute.CursorResultSet;
import org.apache.derby.iapi.sql.execute.NoPutResultSet;
-import org.apache.derby.iapi.sql.execute.ExecRow;
import org.apache.derby.iapi.sql.conn.LanguageConnectionContext;
import org.apache.derby.iapi.sql.dictionary.TriggerDescriptor;
import org.apache.derby.iapi.sql.Activation;
-import org.apache.derby.iapi.store.access.TransactionController;
-import org.apache.derby.impl.sql.execute.AutoincrementCounter;
-import org.apache.derby.iapi.reference.SQLState;
import org.apache.derby.iapi.jdbc.ConnectionContext;
import org.apache.derby.catalog.UUID;
import java.util.Vector;
-import java.sql.SQLException;
/**
* Responsible for firing a trigger or set of triggers
@@ -48,7 +43,6 @@ import java.sql.SQLException;
public class TriggerEventActivator
{
private LanguageConnectionContext lcc;
- private TransactionController tc;
private TriggerInfo triggerInfo;
private InternalTriggerExecutionContext tec;
private GenericTriggerExecutor[][] executors;
@@ -64,7 +58,6 @@ public class TriggerEventActivator
* Basic constructor
*
* @param lcc the lcc
- * @param tc the xact controller
* @param triggerInfo the trigger information
* @param dmlType Type of DML for which this trigger is being fired.
* @param activation the activation.
@@ -75,7 +68,6 @@ public class TriggerEventActivator
public TriggerEventActivator
(
LanguageConnectionContext lcc,
- TransactionController tc,
UUID tableId,
TriggerInfo triggerInfo,
int dmlType,
@@ -92,7 +84,6 @@ public class TriggerEventActivator
tableName = triggerInfo.triggerArray[0].getTableDescriptor().getQualifiedName();
this.lcc = lcc;
- this.tc = tc;
this.activation = activation;
this.tableId = tableId;
this.dmlType = dmlType;
@@ -109,8 +100,6 @@ public class TriggerEventActivator
cc,
statementText,
dmlType,
- triggerInfo.columnIds,
- triggerInfo.columnNames,
tableId,
tableName, aiCounters
);
@@ -134,8 +123,6 @@ public class TriggerEventActivator
cc,
statementText,
dmlType,
- triggerInfo.columnIds,
- triggerInfo.columnNames,
tableId,
tableName, aiCounters
);
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TriggerInfo.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TriggerInfo.java?rev=1477477&r1=1477476&r2=1477477&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TriggerInfo.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TriggerInfo.java Tue Apr 30 05:34:56 2013
@@ -21,28 +21,18 @@
package org.apache.derby.impl.sql.execute;
-import org.apache.derby.iapi.error.StandardException;
-
-import org.apache.derby.iapi.sql.dictionary.DataDictionary;
import org.apache.derby.iapi.sql.dictionary.GenericDescriptorList;
-import org.apache.derby.iapi.sql.dictionary.TableDescriptor;
import org.apache.derby.iapi.sql.dictionary.TriggerDescriptor;
-import org.apache.derby.iapi.services.monitor.Monitor;
-
import org.apache.derby.iapi.services.sanity.SanityManager;
import org.apache.derby.iapi.services.io.StoredFormatIds;
-import org.apache.derby.iapi.services.io.FormatIdUtil;
import org.apache.derby.iapi.services.io.ArrayUtil;
import org.apache.derby.iapi.services.io.Formatable;
-import org.apache.derby.catalog.UUID;
import java.io.ObjectOutput;
import java.io.ObjectInput;
import java.io.IOException;
-import java.util.Iterator;
-import java.util.Vector;
/**
* This is a simple class used to store the run time information
@@ -70,8 +60,6 @@ public final class TriggerInfo implement
********************************************************/
TriggerDescriptor[] triggerArray;
- String[] columnNames;
- int[] columnIds;
/**
* Niladic constructor for Formattable
@@ -81,34 +69,14 @@ public final class TriggerInfo implement
/**
* Constructor for TriggerInfo
*
- * @param td the table upon which the trigger is declared
- * @param changedCols the columns that are changed in the dml that is
- * causing the trigger to fire
* @param triggers the list of trigger descriptors
*
*/
public TriggerInfo
(
- TableDescriptor td,
- int[] changedCols,
GenericDescriptorList triggers
)
{
- this.columnIds = changedCols;
-
- if (columnIds != null)
- {
- /*
- ** Find the names of all the columns that are
- ** being changd.
- */
- columnNames = new String[columnIds.length];
- for (int i = 0; i < columnIds.length; i++)
- {
- columnNames[i] = td.getColumnDescriptor(columnIds[i]).getColumnName();
- }
- }
-
if (SanityManager.DEBUG)
{
SanityManager.ASSERT(triggers != null, "null trigger descriptor list");
@@ -118,30 +86,8 @@ public final class TriggerInfo implement
/*
** Copy the trigger descriptors into an array of the right type
*/
- Iterator descIter = triggers.iterator();
-
- int size = triggers.size();
- triggerArray = new TriggerDescriptor[size];
-
- for (int i = 0; i < size; i++)
- {
- triggerArray[i] = (TriggerDescriptor) descIter.next();
- }
- }
-
- /*
- * private constructor for TriggerInfo
- */
- private TriggerInfo
- (
- TriggerDescriptor[] triggers,
- int[] changedColsIds,
- String[] changedColsNames
- )
- {
- this.columnIds = changedColsIds;
- this.columnNames = changedColsNames;
- this.triggerArray = triggers;
+ triggerArray = (TriggerDescriptor[])
+ triggers.toArray(new TriggerDescriptor[triggers.size()]);
}
/**
@@ -162,34 +108,10 @@ public final class TriggerInfo implement
{
return false;
}
-
- return hasTrigger(new Boolean(isBefore), new Boolean(isRow));
- }
-
- /**
- * Do we have a trigger or triggers that meet
- * the criteria
- *
- * @param isBefore true for a before trigger, false
- * for after trigger, null for either
- * @param isRow true for a row trigger, false
- * for statement trigger, null for either
- *
- * @return true if we have a trigger that meets the
- * criteria
- */
- private boolean hasTrigger(Boolean isBefore, Boolean isRow)
- {
- if (triggerArray == null)
- {
- return false;
- }
for (int i = 0; i < triggerArray.length; i++)
{
- if (((isBefore == null) ||
- (triggerArray[i].isBeforeTrigger() == isBefore.booleanValue())) &&
- ((isRow == null) ||
- (triggerArray[i].isRowTrigger() == isRow.booleanValue())))
+ if ((triggerArray[i].isBeforeTrigger() == isBefore) &&
+ (triggerArray[i].isRowTrigger() == isRow))
{
return true;
}
@@ -216,8 +138,12 @@ public final class TriggerInfo implement
public void writeExternal(ObjectOutput out) throws IOException
{
ArrayUtil.writeArray(out, triggerArray);
- ArrayUtil.writeIntArray(out, columnIds);
- ArrayUtil.writeArray(out, columnNames);
+
+ // Used to write an array of changed column numbers and an array
+ // with the names of the columns, but they are not used anymore.
+ // Write dummy values to preserve the format.
+ ArrayUtil.writeIntArray(out, (int[]) null);
+ ArrayUtil.writeArray(out, (String[]) null);
}
/**
@@ -234,14 +160,9 @@ public final class TriggerInfo implement
triggerArray = new TriggerDescriptor[ArrayUtil.readArrayLength(in)];
ArrayUtil.readArrayItems(in, triggerArray);
- columnIds = ArrayUtil.readIntArray(in);
-
- int len = ArrayUtil.readArrayLength(in);
- if (len > 0)
- {
- columnNames = new String[len];
- ArrayUtil.readArrayItems(in, columnNames);
- }
+ // Discard fields that are no longer used.
+ ArrayUtil.readIntArray(in);
+ ArrayUtil.readStringArray(in);
}
/**
@@ -261,26 +182,6 @@ public final class TriggerInfo implement
if (SanityManager.DEBUG)
{
StringBuffer str = new StringBuffer();
- str.append("\nColumn names modified:\t\t(");
- for (int i = 0; i < columnNames.length; i++)
- {
- if (i > 0)
- str.append(",");
-
- str.append(columnNames[i]);
- }
- str.append(")");
-
- str.append("\nColumn ids modified:\t\t(");
- for (int i = 0; i < columnIds.length; i++)
- {
- if (i > 0)
- str.append(",");
-
- str.append(columnIds[i]);
- }
- str.append(")");
-
str.append("\nTriggers:");
for (int i = 0; i < triggerArray.length; i++)
{
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateResultSet.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateResultSet.java?rev=1477477&r1=1477476&r2=1477477&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateResultSet.java Tue Apr 30 05:34:56 2013
@@ -710,7 +710,6 @@ class UpdateResultSet extends DMLWriteRe
if (triggerActivator == null)
{
triggerActivator = new TriggerEventActivator(lcc,
- tc,
constants.targetUUID,
triggerInfo,
TriggerExecutionContext.UPDATE_EVENT,