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 2008/09/05 19:22:24 UTC

svn commit: r692495 - 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/depend/ engine/org/apache/derby/impl/sql/execute/ storeless/org/apache/derby/imp...

Author: kahatlen
Date: Fri Sep  5 10:22:24 2008
New Revision: 692495

URL: http://svn.apache.org/viewvc?rev=692495&view=rev
Log:
DERBY-3850: Remove unneeded workarounds for DERBY-177 and DERBY-3693

Removed the wait parameter from methods called from
SPSDescriptor.updateSYSSTATEMENTS() since waiting is prevented by
another mechanism now.

Modified:
    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/SPSDescriptor.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/TabInfoImpl.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/depend/BasicDependencyManager.java
    db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateTriggerConstantAction.java
    db/derby/code/trunk/java/storeless/org/apache/derby/impl/storeless/EmptyDictionary.java

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=692495&r1=692494&r2=692495&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 Fri Sep  5 10:22:24 2008
@@ -1072,15 +1072,13 @@
 	 *
 	 * @param descriptor	The descriptor to add
 	 * @param tc			The transaction controller
-	 * @param wait			To wait for lock or not
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
 	public void	addSPSDescriptor
 	(
 		SPSDescriptor 			descriptor,
-		TransactionController	tc,
-		boolean					wait
+		TransactionController	tc
 	) throws StandardException;
 
 	/**
@@ -1092,10 +1090,7 @@
 	 * @param recompile		whether to recompile or invalidate
 	 * @param updateSYSCOLUMNS indicate whether syscolumns needs to be updated
 	 *							or not.
-	 * @param wait		If true, then the caller wants to wait for locks. False will be
 	 * @param firstCompilation  first time SPS is getting compiled.
-	 * when we using a nested user xaction - we want to timeout right away if
-	 * the parent holds the lock.  (bug 4821)
 	 *
 	 * @exception StandardException		Thrown on error
 	 */
@@ -1104,7 +1099,6 @@
 			TransactionController	tc,
 			boolean                 recompile,
 			boolean					updateSYSCOLUMNS,
-			boolean					wait,
 			boolean                 firstCompilation)
 						throws StandardException;
 
@@ -1947,36 +1941,6 @@
 		throws StandardException;
 
 
-	/**
-	 * Adds a descriptor to a system catalog identified by the catalogNumber. 
-	 *
-	 * @param tuple			   descriptor to insert.
-	 * @param parent           parent descriptor; e.g for a column parent is the
-	 * tabledescriptor to which the descriptor is beign inserted. for most other
-	 * objects it is the schema descriptor.
-	 * @param catalogNumber	   a value which identifies the catalog into which
-	 * the descriptor should be inserted. It is the users responsibility to
-	 * ensure that the catalogNumber is consistent with the tuple being
-	 * inserted. 
-	 * @see DataDictionary#SYSCONGLOMERATES_CATALOG_NUM
-	 * @param allowsDuplicates whether an exception should be thrown if the
-	 * insert results in a duplicate; if this parameter is FALSE then one
-	 * of the following exception will be thrown; LANG_OBJECT_ALREADY_EXISTS (if
-	 * parent is null) or LANG_OBJECT_ALREADY_EXISTS_IN_OBJECT (if parent is not
-	 * null). The error message is created by getting the name and type of the
-	 * tuple and parent.
-	 * @see org.apache.derby.impl.sql.catalog.DataDictionaryImpl#duplicateDescriptorException
-	 * @param 	tc	the transaction controller to use to do all of this.
-	 * @param wait  If true, then the caller wants to wait for locks. False will
-	 *	            be when we using a nested user xaction - we want to timeout 
-	 *              right away if the parent holds the lock. 
-	 * @see #addDescriptorArray
-	 */
-	public void addDescriptor(TupleDescriptor tuple, TupleDescriptor parent,
-							  int catalogNumber, boolean allowsDuplicates,
-							  TransactionController tc, boolean wait) 
-		throws StandardException;
-	
 	/** 
 	 * Remove all of the stored dependencies for a given dependent's ID 
 	 * from the data dictionary.

Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/SPSDescriptor.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/SPSDescriptor.java?rev=692495&r1=692494&r2=692495&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/SPSDescriptor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/dictionary/SPSDescriptor.java Fri Sep  5 10:22:24 2008
@@ -1072,10 +1072,7 @@
 	private void updateSYSSTATEMENTS(LanguageConnectionContext lcc, int mode, TransactionController tc)
 		throws StandardException
 	{
-		int[] 					colsToUpdate;
 		boolean					updateSYSCOLUMNS,  recompile;
-		//bug 4821 - we want to wait for locks if updating sysstatements on parent transaction
-		boolean wait = false;
 		boolean firstCompilation = false;
 		if (mode == RECOMPILE)
 		{
@@ -1106,14 +1103,12 @@
 
 		if (tc == null) { //bug 4821 - tc will passed null if we want to use the user transaction
 			tc = lcc.getTransactionExecute();
-			wait = true;
 		}
 
 		dd.updateSPS(this,
 					 tc, 
 					 recompile,
 					 updateSYSCOLUMNS,
-					 wait,
 					 firstCompilation);
 	}
 

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=692495&r1=692494&r2=692495&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 Fri Sep  5 10:22:24 2008
@@ -1790,23 +1790,12 @@
 							  TransactionController tc)
 		throws StandardException
 	{
-		addDescriptor(td, parent, catalogNumber, duplicatesAllowed, tc, true);
-	}
-
-	/**
-	 * @inheritDoc
-	 */
-	public void addDescriptor(TupleDescriptor td, TupleDescriptor parent,
-							  int catalogNumber, boolean duplicatesAllowed,
-							  TransactionController tc, boolean wait)
-		throws StandardException
-	{
 		TabInfoImpl ti =  (catalogNumber < NUM_CORE) ? coreInfo[catalogNumber] :
 			getNonCoreTI(catalogNumber);
 
 		ExecRow row = ti.getCatalogRowFactory().makeRow(td, parent);
 
-		int insertRetCode = ti.insertRow(row, tc, wait);
+		int insertRetCode = ti.insertRow(row, tc);
 
 		if (!duplicatesAllowed)
 		{
@@ -3377,9 +3366,6 @@
 	 * @param colsToSet 			Array of ints of columns to be modified,
 	 *								1 based.  May be null (all cols).
 	 * @param tc					The TransactionController to use
-	 * @param wait		If true, then the caller wants to wait for locks. False will be
-	 * when we using a nested user xaction - we want to timeout right away if the parent
-	 * holds the lock.  (bug 4821)
 	 *
 	 * @exception StandardException		Thrown on failure
 	 */
@@ -3387,8 +3373,7 @@
 										UUID		formerUUID,
 										String		formerName,
 										int[]		colsToSet,
-										TransactionController tc,
-										boolean wait)
+										TransactionController tc)
 		throws StandardException
 	{
 		ExecIndexRow				keyRow1 = null;
@@ -3458,8 +3443,7 @@
 					 SYSCOLUMNSRowFactory.SYSCOLUMNS_INDEX1_ID,
 					 bArray,
 					 colsToSet,
-					 tc,
-					 wait);
+					 tc);
 	}
 
 	/**
@@ -3959,8 +3943,7 @@
 	public void	addSPSDescriptor
 	(
 		SPSDescriptor 			descriptor,
-		TransactionController	tc,
-		boolean wait
+		TransactionController	tc
 	) throws StandardException
 	{
 		ExecRow        			row;
@@ -3982,7 +3965,7 @@
 			row = rf.makeSYSSTATEMENTSrow(compileMe, descriptor);
 	
 			// insert row into catalog and all its indices
-			insertRetCode = ti.insertRow(row, tc, wait);
+			insertRetCode = ti.insertRow(row, tc);
 		}
 
 		// Throw an exception duplicate table descriptor
@@ -3995,14 +3978,14 @@
 												 descriptor.getSchemaDescriptor().getSchemaName());
 		}
 
-		addSPSParams(descriptor, tc, wait);
+		addSPSParams(descriptor, tc);
 	}
 
 	/**
 	 * Add a column in SYS.SYSCOLUMNS for each parameter in the
 	 * parameter list.
 	 */
-	private void addSPSParams(SPSDescriptor spsd, TransactionController tc, boolean wait)
+	private void addSPSParams(SPSDescriptor spsd, TransactionController tc)
 			throws StandardException
 	{
 		UUID 					uuid = spsd.getUUID();
@@ -4034,7 +4017,7 @@
 										
 			addDescriptor(cd, null, SYSCOLUMNS_CATALOG_NUM, 
 						  false, // no chance of duplicates here
-						  tc, wait);
+						  tc);
 		}
 	}
 
@@ -4079,13 +4062,9 @@
 	 * @param tc			The transaction controller
 	 * @param updateParamDescriptors If true, will update the
 	 *						parameter descriptors in SYS.SYSCOLUMNS.
-	 * @param wait		If true, then the caller wants to wait for locks. False will be
 	 * @param firstCompilation  true, if Statement is getting compiled for first
 	 *                          time and SPS was created with NOCOMPILE option.
 	 *
-	 * when we using a nested user xaction - we want to timeout right away if the parent
-	 * holds the lock.  (bug 4821)
-	 *
 	 * @exception StandardException		Thrown on error
 	 */
 	public void	updateSPS(
@@ -4093,14 +4072,12 @@
 			TransactionController	tc,
 			boolean                 recompile,
 			boolean					updateParamDescriptors,
-			boolean					wait,
 			boolean                 firstCompilation)
 						throws StandardException
 	{
 		ExecIndexRow				keyRow1 = null;
 		ExecRow    					row;
 		DataValueDescriptor			idOrderable;
-		DataValueDescriptor			columnNameOrderable;
 		TabInfoImpl						ti = getNonCoreTI(SYSSTATEMENTS_CATALOG_NUM);
 		SYSSTATEMENTSRowFactory  rf = (SYSSTATEMENTSRowFactory) ti.getCatalogRowFactory();
 		int[] updCols;
@@ -4148,8 +4125,7 @@
 					 SYSSTATEMENTSRowFactory.SYSSTATEMENTS_INDEX1_ID,
 					 bArray,
 					 updCols,
-					 tc,
-					 wait);
+					 tc);
 
 
 		/*
@@ -4180,7 +4156,7 @@
 			 *creation time. As this is the first time we are compiling paramter
 			 *infor should be inserted instead of the update.
 			 */
-			addSPSParams(spsd, tc, wait);
+			addSPSParams(spsd, tc);
 		}
 		else
 		{
@@ -4220,8 +4196,7 @@
 									   cd.getReferencingUUID(), 
 									   cd.getColumnName(),
 									   columnsToSet, 
-									   tc,
-									   wait);
+									   tc);
 			}
 		}
 	}
@@ -5796,7 +5771,7 @@
 		}
 
 		// insert row into catalog and all its indices
-		ti.insertRow(row, tc, true);
+		ti.insertRow(row, tc);
 	}
 
 	/**
@@ -7309,8 +7284,7 @@
 								td.getUUID(),
 								columnName,
 								columnNameColArray, 
-								tc,
-								true);
+								tc);
 
 	}
 
@@ -7949,7 +7923,7 @@
 		TabInfoImpl						ti = getNonCoreTI(SYSDUMMY1_CATALOG_NUM);
 		ExecRow row = ti.getCatalogRowFactory().makeRow(null, null);
 
-		int insertRetCode = ti.insertRow(row, tc, true);
+		int insertRetCode = ti.insertRow(row, tc);
 	}
 
 	/**
@@ -9388,7 +9362,7 @@
 												   spsText, //sps text
 												   !nocompile );
 			
-			addSPSDescriptor(spsd, tc, true);
+			addSPSDescriptor(spsd, tc);
 		}
 	}
 
@@ -11834,7 +11808,7 @@
             //so that means we have to enter a new row in system catalog for
             //this grant.
             ExecRow row = ti.getCatalogRowFactory().makeRow( perm, (TupleDescriptor) null);
-            int insertRetCode = ti.insertRow(row, tc, true /* wait */);
+            int insertRetCode = ti.insertRow(row, tc);
             if( SanityManager.DEBUG)
                 SanityManager.ASSERT( insertRetCode == TabInfoImpl.ROWNOTDUPLICATE,
                                       "Race condition in inserting table privilege.");
@@ -11883,7 +11857,8 @@
                         changedColCount == colsToUpdate.length,
                         "return value of " + rf.getClass().getName() +
                         ".orPermissions does not match the number of booleans it set in colsChanged.");
-                ti.updateRow( key, existingRow, primaryIndexNumber, indicesToUpdate, colsToUpdate, tc, true /* wait */);
+                ti.updateRow(key, existingRow, primaryIndexNumber,
+                             indicesToUpdate, colsToUpdate, tc);
             }
         }
         // Remove cached permissions data. The cache may hold permissions data for this key even if

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/TabInfoImpl.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/TabInfoImpl.java?rev=692495&r1=692494&r2=692495&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/TabInfoImpl.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/catalog/TabInfoImpl.java Fri Sep  5 10:22:24 2008
@@ -413,19 +413,18 @@
 	 *
 	 *	@param	row			row to insert
 	 *	@param	tc			transaction
-	 *	@param	wait		to wait on lock or quickly TIMEOUT
 	 *	@return	row number (>= 0) if duplicate row inserted into an index
 	 *			ROWNOTDUPLICATE otherwise
 	 *
 	 * @exception StandardException		Thrown on failure
 	 */
-	int insertRow( ExecRow row, TransactionController tc, boolean wait)
+	int insertRow( ExecRow row, TransactionController tc)
 		throws StandardException
 	{
 
 		RowLocation[] 			notUsed = new RowLocation[1]; 
 
-		return insertRowListImpl(new ExecRow[] {row},tc,notUsed, wait);
+		return insertRowListImpl(new ExecRow[] {row},tc,notUsed);
 	}
 
 	/**
@@ -446,7 +445,7 @@
 	{
 		RowLocation[] 			notUsed = new RowLocation[1]; 
 
-		return insertRowListImpl(rowList,tc,notUsed, true);
+		return insertRowListImpl(rowList,tc,notUsed);
 	}
 
 	/**
@@ -461,12 +460,11 @@
 	  @param tc	transaction controller
 	  @param rowLocationOut on output rowLocationOut[0] is set to the
 	         last RowLocation inserted.
-	  @param wait   to wait on lock or quickly TIMEOUT
 	  @return row number (>= 0) if duplicate row inserted into an index
 	  			ROWNOTDUPLICATE otherwise
 	 */
-	private int insertRowListImpl(ExecRow[] rowList, TransactionController tc, RowLocation[] rowLocationOut,
-								   boolean wait)
+	private int insertRowListImpl(ExecRow[] rowList, TransactionController tc,
+                                  RowLocation[] rowLocationOut)
 		throws StandardException
 	{
 		ConglomerateController		heapController;
@@ -482,8 +480,7 @@
             tc.openConglomerate(
                 getHeapConglomerate(), 
                 false,
-				(TransactionController.OPENMODE_FORUPDATE |
-                    ((wait) ? 0 : TransactionController.OPENMODE_LOCK_NOWAIT)),
+				TransactionController.OPENMODE_FORUPDATE,
                 TransactionController.MODE_RECORD,
                 TransactionController.ISOLATION_REPEATABLE_READ);
 		
@@ -504,8 +501,7 @@
 		            tc.openConglomerate( 
 			            conglomNumber, 
                         false,
-						(TransactionController.OPENMODE_FORUPDATE |
-                    		((wait) ? 0 : TransactionController.OPENMODE_LOCK_NOWAIT)),
+						TransactionController.OPENMODE_FORUPDATE,
 					    TransactionController.MODE_RECORD,
 						TransactionController.ISOLATION_REPEATABLE_READ);
 			}
@@ -935,44 +931,12 @@
 						   int						indexNumber,
 						   boolean[]				indicesToUpdate,
 						   int[]					colsToUpdate,
-						   TransactionController	tc )
-		throws StandardException
-	{
-		updateRow(key, newRow, indexNumber, indicesToUpdate, colsToUpdate, tc, true);
-	}
-
-	/**
-	 * Updates a base row in a catalog and updates all the corresponding
-	 * index rows.
-	 *
-	 *	@param	key			key row
-	 *	@param	newRow		new version of the row
-	 *	@param	indexNumber	index that key operates
-	 *	@param	indicesToUpdate	array of booleans, one for each index on the catalog.
-	 *							if a boolean is true, that means we must update the
-	 *							corresponding index because changes in the newRow
-	 *							affect it.
-	 *	@param  colsToUpdate	array of ints indicating which columns (1 based)
-	 *							to update.  If null, do all.
-	 *	@param	tc			transaction controller
-	 *	@param wait		If true, then the caller wants to wait for locks. False will be
-	 *	when we using a nested user xaction - we want to timeout right away if the parent
-	 *	holds the lock.  (bug 4821)
-	 *
-	 * @exception StandardException		Thrown on failure
-	 */
-	void updateRow( ExecIndexRow				key, 
-						   ExecRow					newRow, 
-						   int						indexNumber,
-						   boolean[]				indicesToUpdate,
-						   int[]					colsToUpdate,
-						   TransactionController	tc,
-						   boolean	wait )
+						   TransactionController	tc)
 		throws StandardException
 	{
 		ExecRow[] newRows = new ExecRow[1];
 		newRows[0] = newRow;
-		updateRow(key, newRows, indexNumber, indicesToUpdate, colsToUpdate, tc, wait);
+		updateRow(key, newRows, indexNumber, indicesToUpdate, colsToUpdate, tc, true);
 	}
 
 	/**

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/depend/BasicDependencyManager.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/depend/BasicDependencyManager.java?rev=692495&r1=692494&r2=692495&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/depend/BasicDependencyManager.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/depend/BasicDependencyManager.java Fri Sep  5 10:22:24 2008
@@ -162,14 +162,16 @@
 				/* Add a stored dependency */
 				LanguageConnectionContext	lcc = getLanguageConnectionContext(cm);
 				DependencyDescriptor		dependencyDescriptor;
-				boolean wait = (tc == null);
+                // tc == null means do it in the user transaction
+                TransactionController tcToUse =
+                        (tc == null) ? lcc.getTransactionExecute() : tc;
 			
 				dependencyDescriptor = new DependencyDescriptor(d, p);
 
 				/* We can finally call the DataDictionary to store the dependency */
 				dd.addDescriptor(dependencyDescriptor, null,
 								 DataDictionary.SYSDEPENDS_CATALOG_NUM, true,
-								 ((wait)?lcc.getTransactionExecute():tc), wait);
+								 tcToUse);
 			}
 		}
 	}

Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateTriggerConstantAction.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateTriggerConstantAction.java?rev=692495&r1=692494&r2=692495&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateTriggerConstantAction.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateTriggerConstantAction.java Fri Sep  5 10:22:24 2008
@@ -399,7 +399,7 @@
 		spsd.prepareAndRelease(lcc, triggerTable);
 
 
-		dd.addSPSDescriptor(spsd, tc, true);
+		dd.addSPSDescriptor(spsd, tc);
 
 		return spsd;
 	}

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=692495&r1=692494&r2=692495&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 Fri Sep  5 10:22:24 2008
@@ -450,13 +450,13 @@
 	}
 
 	public void addSPSDescriptor(SPSDescriptor descriptor,
-			TransactionController tc, boolean wait) throws StandardException {
+			TransactionController tc) throws StandardException {
 		// TODO Auto-generated method stub
 
 	}
 
 	public void updateSPS(SPSDescriptor spsd, TransactionController tc,
-			boolean recompile, boolean updateSYSCOLUMNS, boolean wait,
+			boolean recompile, boolean updateSYSCOLUMNS,
 			boolean firstCompilation) throws StandardException {
 		// TODO Auto-generated method stub
 
@@ -794,12 +794,6 @@
 		return null;
 	}
 
-	public void addDescriptor(TupleDescriptor tuple, TupleDescriptor parent,
-			int catalogNumber, boolean allowsDuplicates,
-			TransactionController tc, boolean wait) throws StandardException {
-	}
-
-
 	public void dropDependentsStoredDependencies(UUID dependentsUUID,
 			TransactionController tc, boolean wait) throws StandardException {
 		// TODO Auto-generated method stub