[teiid-commits] teiid SVN: r3014 - in trunk/engine/src: main/java/org/teiid/query/optimizer/relational/plantree and 23 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Tue Mar 22 09:00:06 EDT 2011


Author: shawkins
Date: 2011-03-22 09:00:05 -0400 (Tue, 22 Mar 2011)
New Revision: 3014

Modified:
   trunk/engine/src/main/java/org/teiid/query/optimizer/relational/PlanToProcessConverter.java
   trunk/engine/src/main/java/org/teiid/query/optimizer/relational/plantree/PlanNode.java
   trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleCopyCriteria.java
   trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePushAggregates.java
   trunk/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java
   trunk/engine/src/main/java/org/teiid/query/resolver/command/ExecResolver.java
   trunk/engine/src/main/java/org/teiid/query/resolver/command/XMLQueryResolver.java
   trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java
   trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverVisitor.java
   trunk/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
   trunk/engine/src/main/java/org/teiid/query/sql/lang/From.java
   trunk/engine/src/main/java/org/teiid/query/sql/lang/Insert.java
   trunk/engine/src/main/java/org/teiid/query/sql/lang/StoredProcedure.java
   trunk/engine/src/main/java/org/teiid/query/sql/lang/UnaryFromClause.java
   trunk/engine/src/main/java/org/teiid/query/sql/lang/Update.java
   trunk/engine/src/main/java/org/teiid/query/sql/symbol/AllInGroupSymbol.java
   trunk/engine/src/main/java/org/teiid/query/sql/symbol/AllSymbol.java
   trunk/engine/src/main/java/org/teiid/query/sql/symbol/ElementSymbol.java
   trunk/engine/src/main/java/org/teiid/query/sql/symbol/GroupSymbol.java
   trunk/engine/src/main/java/org/teiid/query/sql/symbol/SingleElementSymbol.java
   trunk/engine/src/main/java/org/teiid/query/sql/symbol/Symbol.java
   trunk/engine/src/main/java/org/teiid/query/sql/visitor/AbstractSymbolMappingVisitor.java
   trunk/engine/src/main/java/org/teiid/query/sql/visitor/ExpressionMappingVisitor.java
   trunk/engine/src/main/java/org/teiid/query/tempdata/TempTableDataManager.java
   trunk/engine/src/main/java/org/teiid/query/validator/UpdateValidator.java
   trunk/engine/src/test/java/org/teiid/dqp/internal/datamgr/TestElementImpl.java
   trunk/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourceElementReplacementVisitor.java
   trunk/engine/src/test/java/org/teiid/query/optimizer/TestOptimizer.java
   trunk/engine/src/test/java/org/teiid/query/optimizer/TestUnionPlanning.java
   trunk/engine/src/test/java/org/teiid/query/optimizer/relational/TestAliasGenerator.java
   trunk/engine/src/test/java/org/teiid/query/parser/TestOptionsAndHints.java
   trunk/engine/src/test/java/org/teiid/query/parser/TestParser.java
   trunk/engine/src/test/java/org/teiid/query/processor/FakeDataManager.java
   trunk/engine/src/test/java/org/teiid/query/processor/TestProcedureRelational.java
   trunk/engine/src/test/java/org/teiid/query/resolver/TestResolver.java
   trunk/engine/src/test/java/org/teiid/query/resolver/TestXMLResolver.java
   trunk/engine/src/test/java/org/teiid/query/rewriter/TestQueryRewriter.java
   trunk/engine/src/test/java/org/teiid/query/sql/symbol/TestElementSymbol.java
   trunk/engine/src/test/java/org/teiid/query/sql/symbol/TestGroupSymbol.java
   trunk/engine/src/test/java/org/teiid/query/sql/util/TestElementSymbolOptimizer.java
   trunk/engine/src/test/java/org/teiid/query/sql/visitor/TestSQLStringVisitor.java
   trunk/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFacade.java
   trunk/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFactory.java
   trunk/engine/src/test/java/org/teiid/query/unittest/FakeMetadataObject.java
   trunk/engine/src/test/java/org/teiid/query/validator/TestValidator.java
Log:
TEIID-1520 better string storage on group/element symbols

Modified: trunk/engine/src/main/java/org/teiid/query/optimizer/relational/PlanToProcessConverter.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/optimizer/relational/PlanToProcessConverter.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/optimizer/relational/PlanToProcessConverter.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -93,7 +93,6 @@
 import org.teiid.query.sql.symbol.ElementSymbol;
 import org.teiid.query.sql.symbol.Expression;
 import org.teiid.query.sql.symbol.GroupSymbol;
-import org.teiid.query.sql.symbol.SingleElementSymbol;
 import org.teiid.query.sql.util.SymbolMap;
 import org.teiid.query.sql.visitor.EvaluatableVisitor;
 import org.teiid.query.sql.visitor.GroupCollectorVisitor;
@@ -474,7 +473,7 @@
 		String groupName = node.getGroups().iterator().next().getName();
 		tt.getGroupSymbol().setName(groupName);
 		for (ElementSymbol symbol : tt.getProjectedSymbols()) {
-			symbol.setName(groupName + SingleElementSymbol.SEPARATOR + symbol.getShortName());
+			symbol.setGroupSymbol(new GroupSymbol(groupName));
 		}
 	}
 

Modified: trunk/engine/src/main/java/org/teiid/query/optimizer/relational/plantree/PlanNode.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/optimizer/relational/plantree/PlanNode.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/optimizer/relational/plantree/PlanNode.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -26,9 +26,10 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -67,7 +68,7 @@
     // --------------------- Planning Info --------------------------
 
     /** The set of groups that this node deals with. */
-    private Set<GroupSymbol> groups = new HashSet<GroupSymbol>();
+    private Set<GroupSymbol> groups = new LinkedHashSet<GroupSymbol>();
         
     // =========================================================================
     //                         C O N S T R U C T O R S
@@ -172,7 +173,7 @@
 
     public Object setProperty(NodeConstants.Info propertyID, Object value) {
         if(nodeProperties == null) {
-            nodeProperties = new HashMap<NodeConstants.Info, Object>();
+            nodeProperties = new LinkedHashMap<NodeConstants.Info, Object>();
         }    
         return nodeProperties.put(propertyID, value);
     }

Modified: trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleCopyCriteria.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleCopyCriteria.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleCopyCriteria.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -25,8 +25,8 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -190,7 +190,7 @@
             List<Criteria> joinCrits = (List<Criteria>) node.getProperty(NodeConstants.Info.JOIN_CRITERIA);
             Set<Criteria> combinedCriteria = null;
             if (joinCrits != null) {
-                combinedCriteria = new HashSet<Criteria>(joinCrits); 
+                combinedCriteria = new LinkedHashSet<Criteria>(joinCrits); 
                 combinedCriteria.addAll(leftChildCriteria[1]);
                 combinedCriteria.addAll(rightChildCriteria[1]);
             }
@@ -262,8 +262,8 @@
             case NodeConstants.Types.PROJECT: 
             {
                 if (criteriaInfo[0] == null) {
-                    criteriaInfo[0] = new HashSet<Criteria>();
-                    criteriaInfo[1] = new HashSet<Criteria>();
+                    criteriaInfo[0] = new LinkedHashSet<Criteria>();
+                    criteriaInfo[1] = new LinkedHashSet<Criteria>();
                 } else {
                     criteriaInfo[0].clear();
                     criteriaInfo[1].clear();

Modified: trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePushAggregates.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePushAggregates.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePushAggregates.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -485,7 +485,7 @@
 	private void updateSymbolName(List<SingleElementSymbol> projectCols, int i,
 			ElementSymbol virtualElem, SingleElementSymbol projectedSymbol) {
 		if (projectedSymbol instanceof AliasSymbol) {
-			((AliasSymbol)projectedSymbol).setName(virtualElem.getShortCanonicalName());
+			((AliasSymbol)projectedSymbol).setShortName(virtualElem.getShortCanonicalName());
 		} else {
 			projectCols.set(i, new AliasSymbol(virtualElem.getShortCanonicalName(), projectedSymbol));
 		}

Modified: trunk/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -190,7 +190,7 @@
 		    	if (!positional) {
 		    		symbolMap.put(new ElementSymbol(ProcedureReservedWords.INPUT + ElementSymbol.SEPARATOR + name), (ElementSymbol)elementSymbol.clone());
 		    		symbolMap.put(new ElementSymbol(ProcedureReservedWords.INPUTS + ElementSymbol.SEPARATOR + name), (ElementSymbol)elementSymbol.clone());
-		    		elementSymbol.setName(name);
+		    		elementSymbol.setShortName(name);
 		    	}
 		        elements.add(elementSymbol);
 		    }

Modified: trunk/engine/src/main/java/org/teiid/query/resolver/command/ExecResolver.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/resolver/command/ExecResolver.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/resolver/command/ExecResolver.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -216,7 +216,7 @@
         discoveredMetadata.addTempGroup(procName, tempElements, isVirtual);
 
         // Resolve tempElements against new metadata
-        GroupSymbol procGroup = new GroupSymbol(procName);
+        GroupSymbol procGroup = new GroupSymbol(storedProcedureInfo.getProcedureCallableName());
         procGroup.setProcedure(true);
         TempMetadataID tid = discoveredMetadata.getTempGroupID(procName);
         tid.setOriginalMetadataID(storedProcedureCommand.getProcedureID());

Modified: trunk/engine/src/main/java/org/teiid/query/resolver/command/XMLQueryResolver.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/resolver/command/XMLQueryResolver.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/resolver/command/XMLQueryResolver.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -309,7 +309,7 @@
         
         // Get exact matching name
         String critElemName = elem.getName();
-        String critElemNameSuffix = "." + critElemName.toUpperCase(); //$NON-NLS-1$
+        String critElemNameSuffix = "." + elem.getCanonicalName(); //$NON-NLS-1$
 
         // Prepare results
         ElementSymbol exactMatch = null;
@@ -375,13 +375,14 @@
         }
 
         if(exactMatch != null) {
-            String name = elem.getName();
+            String name = elem.getOutputName();
             // Resolve based on exact match
-            elem.setName(exactMatch.getName());
-            elem.setOutputName(name);
+            elem.setShortName(exactMatch.getShortName());
+            elem.setShortCanonicalName(exactMatch.getShortCanonicalName());
             elem.setMetadataID(exactMatch.getMetadataID());
             elem.setType(exactMatch.getType());
             elem.setGroupSymbol(exactMatch.getGroupSymbol());
+            elem.setOutputName(name);
         } else if(partialMatches.size() == 0 && attributeMatches.size() == 0){
             try {
                 ResolverVisitor.resolveLanguageObject(elem, Collections.EMPTY_LIST, externalGroups, metadata);

Modified: trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -43,6 +43,7 @@
 import org.teiid.core.types.DataTypeManager;
 import org.teiid.core.types.TransformationException;
 import org.teiid.core.types.DataTypeManager.DefaultDataTypes;
+import org.teiid.core.util.StringUtil;
 import org.teiid.query.QueryPlugin;
 import org.teiid.query.function.FunctionDescriptor;
 import org.teiid.query.function.FunctionLibrary;
@@ -503,21 +504,20 @@
 
     		LinkedHashMap<Object, ElementSymbol> symbols = new LinkedHashMap<Object, ElementSymbol>(elementIDs.size());
                         
-            boolean groupIsAliased = group.getDefinition() != null;
+            String groupFullName = metadata.getFullName(group.getMetadataID());
+            boolean isXml = metadata.isXMLGroup(group.getMetadataID());
             
             for (Object elementID : elementIDs) {
-                String elementName = metadata.getFullName(elementID);
-                String fullName = elementName;
-    			// This is only really needed if the group is an ALIAS.  Doing the check outside the loop
-                // and NOT doing unnecessary work if Aliased group.
-                if(groupIsAliased) {
-                	String shortName = metadata.getShortElementName(elementName);
-                    fullName = metadata.getFullElementName(group.getName(), shortName);
-                }
-
+            	String elementName = metadata.getFullName(elementID);
+            	if (isXml) {
+            		elementName = elementName.substring(groupFullName.length() + 1);
+            	} else {
+            		//the logic about should work in either case, 
+            		//but there is a lot of metadata to correct
+            		elementName = metadata.getShortElementName(elementName);
+            	}
                 // Form an element symbol from the ID
-                ElementSymbol element = new ElementSymbol(fullName);
-                element.setGroupSymbol(group);
+                ElementSymbol element = new ElementSymbol(elementName, DataTypeManager.getCanonicalString(StringUtil.toUpperCase(elementName)), group);
                 element.setMetadataID(elementID);
                 element.setType( DataTypeManager.getDataTypeClass(metadata.getElementType(element.getMetadataID())) );
 

Modified: trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverVisitor.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverVisitor.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/resolver/util/ResolverVisitor.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -35,7 +35,6 @@
 import org.teiid.api.exception.query.QueryResolverException;
 import org.teiid.api.exception.query.UnresolvedSymbolDescription;
 import org.teiid.core.TeiidComponentException;
-import org.teiid.core.TeiidRuntimeException;
 import org.teiid.core.types.DataTypeManager;
 import org.teiid.core.types.DataTypeManager.DefaultDataClasses;
 import org.teiid.query.QueryPlugin;
@@ -151,7 +150,7 @@
         
         // look up group and element parts of the potentialID
         String groupContext = metadata.getGroupName(potentialID);
-        String elementShortName = metadata.getShortElementName(potentialID);
+        String elementShortName = elementSymbol.getShortCanonicalName();
         if (groupContext != null) {
             groupContext = groupContext.toUpperCase();
         	try {
@@ -170,7 +169,7 @@
    }
 
 	private boolean internalResolveElementSymbol(ElementSymbol elementSymbol,
-			String groupContext, String elementShortName, String expectedGroupContext)
+			String groupContext, String shortCanonicalName, String expectedGroupContext)
 			throws TeiidComponentException, QueryResolverException {
 		boolean isExternal = false;
         boolean groupMatched = false;
@@ -205,7 +204,6 @@
         }
         
         LinkedList<ElementMatch> matches = new LinkedList<ElementMatch>();
-        String shortCanonicalName = elementShortName.toUpperCase();
         while (root != null) {
             Collection<GroupSymbol> matchedGroups = ResolverUtil.findMatchingGroups(groupContext, root.getGroups(), metadata);
             if (matchedGroups != null && !matchedGroups.isEmpty()) {
@@ -252,22 +250,18 @@
         }
         if (isExternal //convert input to inputs
         		&& isScalar(resolvedSymbol, ProcedureReservedWords.INPUT)) {
-        	resolvedSymbol = new ElementSymbol(ProcedureReservedWords.INPUTS + ElementSymbol.SEPARATOR + elementShortName);
+        	resolvedSymbol = new ElementSymbol(shortCanonicalName);
+        	resolvedSymbol.setGroupSymbol(new GroupSymbol(ProcedureReservedWords.INPUTS));
         	resolveElementSymbol(resolvedSymbol);
         	oldName = resolvedSymbol.getOutputName();
-        	resolvedGroup = new GroupSymbol(ProcedureReservedWords.INPUTS);
-        	try {
-				ResolverUtil.resolveGroup(resolvedGroup, metadata);
-			} catch (QueryResolverException e) {
-				throw new TeiidRuntimeException(e);
-			}
+        	resolvedGroup = resolvedSymbol.getGroupSymbol();
         } 
         elementSymbol.setIsExternalReference(isExternal);
         elementSymbol.setType(resolvedSymbol.getType());
         elementSymbol.setMetadataID(resolvedSymbol.getMetadataID());
         elementSymbol.setGroupSymbol(resolvedGroup);
-        elementSymbol.setName(resolvedSymbol.getName());
-        elementSymbol.setCanonicalName(resolvedSymbol.getCanonicalName());
+        elementSymbol.setShortName(resolvedSymbol.getShortName());
+        elementSymbol.setShortCanonicalName(resolvedSymbol.getShortCanonicalName());
         elementSymbol.setOutputName(oldName);
         return true;
 	}

Modified: trunk/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -2784,7 +2784,7 @@
         	SingleElementSymbol actual = iter.next();
         	if (!ses.getShortCanonicalName().equals(actual.getShortCanonicalName())) {
 	        	if (ses instanceof AliasSymbol) {
-	        		((AliasSymbol)ses).setName(actual.getShortName());
+	        		((AliasSymbol)ses).setShortName(actual.getShortName());
 	        	} else {
 	        		ses = new AliasSymbol(actual.getShortName(), ses);
 	        	}

Modified: trunk/engine/src/main/java/org/teiid/query/sql/lang/From.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/lang/From.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/sql/lang/From.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -22,13 +22,16 @@
 
 package org.teiid.query.sql.lang;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
 
 import org.teiid.core.util.EquivalenceUtil;
 import org.teiid.core.util.HashCodeUtil;
-import org.teiid.query.sql.*;
+import org.teiid.query.sql.LanguageObject;
+import org.teiid.query.sql.LanguageVisitor;
 import org.teiid.query.sql.symbol.GroupSymbol;
-import org.teiid.query.sql.visitor.*;
+import org.teiid.query.sql.visitor.SQLStringVisitor;
 
 
 /**
@@ -38,22 +41,21 @@
  */
 public class From implements LanguageObject {
 
-	// List of <FromClause>
-    private List clauses;
+    private List<FromClause> clauses;
 
     /**
      * Constructs a default instance of this class.
      */
     public From() {
-    	clauses = new ArrayList();
+    	clauses = new ArrayList<FromClause>();
     }
 
     /**
      * Constructs an instance of this class from an ordered set of from clauses
      * @param parameters The ordered list of from clauses
      */
-    public From( List parameters ) {
-        clauses = new ArrayList( parameters );
+    public From( List<? extends FromClause> parameters ) {
+        clauses = new ArrayList<FromClause>( parameters );
     }
 
     // =========================================================================
@@ -72,15 +74,15 @@
 	 * Add clauses to the FROM 
 	 * @param clauses Collection of {@link FromClause}s
 	 */
-	public void addClauses(Collection clauses) {
-		this.clauses.addAll(clauses);
+	public void addClauses(Collection<? extends FromClause> toAdd) {
+		this.clauses.addAll(toAdd);
 	}
 	
 	/** 
 	 * Get all the clauses in FROM
 	 * @return List of {@link FromClause}
 	 */
-	public List getClauses() {
+	public List<FromClause> getClauses() {
 		return this.clauses;
 	}
     
@@ -88,7 +90,7 @@
 	 * Set all the clauses
 	 * @param clauses List of {@link FromClause}
 	 */
-	public void setClauses(List clauses) {
+	public void setClauses(List<FromClause> clauses) {
 		this.clauses = clauses;
 	}
 	
@@ -123,7 +125,7 @@
         List<GroupSymbol> groups = new ArrayList<GroupSymbol>();
         if(clauses != null) {
             for(int i=0; i<clauses.size(); i++) {
-                FromClause clause = (FromClause) clauses.get(i);
+                FromClause clause = clauses.get(i);
                 clause.collectGroups(groups);
             }
         }
@@ -152,16 +154,7 @@
      * Return copy of this From clause.
      */
     public Object clone() {
-        List copyClauses = new ArrayList(clauses.size());
-        if(clauses.size() > 0) { 
-            Iterator iter = clauses.iterator();
-            while(iter.hasNext()) { 
-                FromClause c = (FromClause) iter.next();
-                copyClauses.add(c.clone());
-            }
-        }
-        
-		return new From(copyClauses);
+		return new From(LanguageObject.Util.deepClone(clauses, FromClause.class));
     }
 
 	/**

Modified: trunk/engine/src/main/java/org/teiid/query/sql/lang/Insert.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/lang/Insert.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/sql/lang/Insert.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -237,7 +237,7 @@
         
         for (int j = 0; j < iSize; j++) {
             ElementSymbol symbol = (ElementSymbol)variables.get( j ).clone();
-            symbol.setName(ProcedureReservedWords.INPUTS + SingleElementSymbol.SEPARATOR + symbol.getShortCanonicalName());
+            symbol.setGroupSymbol(new GroupSymbol(ProcedureReservedWords.INPUTS));
             map.put(symbol, values.get( j ) );
         } // for 
         return map;

Modified: trunk/engine/src/main/java/org/teiid/query/sql/lang/StoredProcedure.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/lang/StoredProcedure.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/sql/lang/StoredProcedure.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -116,7 +116,7 @@
         return this.procedureName;
     }
     public String getProcedureCallableName(){
-        return this.callableName;
+        return this.callableName != null?this.callableName:this.procedureName;
     }
     public void setProcedureCallableName(String callableName){
         this.callableName = callableName;
@@ -265,11 +265,11 @@
 		for (SPParameter parameter : mapOfParameters.values()) {
 			if(parameter.getParameterType() == ParameterInfo.RETURN_VALUE){
                 ElementSymbol symbol = parameter.getParameterSymbol();
-                symbol.setGroupSymbol(getGroup());
+                symbol.setGroupSymbol(this.getGroup());
                 result.add(0, symbol);
 	        } else if(parameter.getParameterType() == ParameterInfo.INOUT || parameter.getParameterType() == ParameterInfo.OUT){
                 ElementSymbol symbol = parameter.getParameterSymbol();
-                symbol.setGroupSymbol(getGroup());
+                symbol.setGroupSymbol(this.getGroup());
 	        	result.add(symbol);
 	        }
 		}
@@ -320,7 +320,7 @@
 
     public GroupSymbol getGroup() {
         if(group == null) {
-            return new GroupSymbol(this.getProcedureName());
+            return new GroupSymbol(this.getProcedureCallableName());
         }
         return group;
     }

Modified: trunk/engine/src/main/java/org/teiid/query/sql/lang/UnaryFromClause.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/lang/UnaryFromClause.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/sql/lang/UnaryFromClause.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -98,8 +98,12 @@
         
         UnaryFromClause other = (UnaryFromClause)obj;
         
-        return EquivalenceUtil.areEqual(getGroup(), other.getGroup()) &&
-             other.isOptional() == this.isOptional();
+        if( (this.getGroup().getDefinition() == null && other.getGroup().getDefinition() == null) ||
+        		(this.getGroup().getDefinition() != null && other.getGroup().getDefinition() != null) ) {
+        	return EquivalenceUtil.areEqual(getGroup(), other.getGroup()) &&
+            other.isOptional() == this.isOptional();	
+        }
+        return false;
 	}
 	
 	/**

Modified: trunk/engine/src/main/java/org/teiid/query/sql/lang/Update.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/lang/Update.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/sql/lang/Update.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -33,7 +33,6 @@
 import org.teiid.query.sql.symbol.ElementSymbol;
 import org.teiid.query.sql.symbol.Expression;
 import org.teiid.query.sql.symbol.GroupSymbol;
-import org.teiid.query.sql.symbol.SingleElementSymbol;
 import org.teiid.query.sql.visitor.SQLStringVisitor;
 
 
@@ -265,7 +264,7 @@
         for (Iterator iter = getChangeList().getClauses().iterator(); iter.hasNext();) {
         	SetClause setClause = (SetClause)iter.next();
             ElementSymbol symbol = (ElementSymbol)(setClause.getSymbol()).clone();
-            symbol.setName(ProcedureReservedWords.INPUTS + SingleElementSymbol.SEPARATOR + symbol.getShortCanonicalName());
+            symbol.setGroupSymbol(new GroupSymbol(ProcedureReservedWords.INPUTS));
             map.put( symbol, setClause.getValue() );
         } // for
         

Modified: trunk/engine/src/main/java/org/teiid/query/sql/symbol/AllInGroupSymbol.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/symbol/AllInGroupSymbol.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/sql/symbol/AllInGroupSymbol.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -22,9 +22,10 @@
 
 package org.teiid.query.sql.symbol;
 
-import java.util.*;
+import java.util.List;
 
-import org.teiid.query.sql.*;
+import org.teiid.query.sql.LanguageObject;
+import org.teiid.query.sql.LanguageVisitor;
 
 /**
  * <p>This is a subclass of Symbol representing <group>.*, which contains all of
@@ -61,15 +62,9 @@
 	public Object clone() {
 		AllInGroupSymbol copy = new AllInGroupSymbol(getName(), getCanonical());
 		
-		List elements = getElementSymbols();
+		List<ElementSymbol> elements = getElementSymbols();
 		if(elements != null && elements.size() > 0) {
-			ArrayList copyElements = new ArrayList(elements.size());
-			Iterator iter = elements.iterator();
-			while(iter.hasNext()) {
-				ElementSymbol element = (ElementSymbol) iter.next();
-				copyElements.add( element.clone() );
-			}
-			copy.setElementSymbols(copyElements);				
+			copy.setElementSymbols(LanguageObject.Util.deepClone(elements, ElementSymbol.class));				
 		}	
 
 		return copy;

Modified: trunk/engine/src/main/java/org/teiid/query/sql/symbol/AllSymbol.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/symbol/AllSymbol.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/sql/symbol/AllSymbol.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -22,9 +22,10 @@
 
 package org.teiid.query.sql.symbol;
 
-import java.util.*;
+import java.util.List;
 
-import org.teiid.query.sql.*;
+import org.teiid.query.sql.LanguageObject;
+import org.teiid.query.sql.LanguageVisitor;
 
 /**
  * <p>This is a subclass of Symbol representing *, which contains all of
@@ -63,15 +64,9 @@
 	public Object clone() {
 		AllSymbol copy = new AllSymbol(ALL_SYMBOL_NAME, ALL_SYMBOL_NAME);
 
-		List elements = getElementSymbols();
+		List<ElementSymbol> elements = getElementSymbols();
 		if(elements != null && elements.size() > 0) {
-			ArrayList copyElements = new ArrayList(elements.size());
-			Iterator iter = elements.iterator();
-			while(iter.hasNext()) {
-				ElementSymbol element = (ElementSymbol) iter.next();
-				copyElements.add( element.clone() );
-			}
-			copy.setElementSymbols(copyElements);				
+			copy.setElementSymbols(LanguageObject.Util.deepClone(elements, ElementSymbol.class));				
 		}	
 
 		return copy;

Modified: trunk/engine/src/main/java/org/teiid/query/sql/symbol/ElementSymbol.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/symbol/ElementSymbol.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/sql/symbol/ElementSymbol.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -22,7 +22,8 @@
 
 package org.teiid.query.sql.symbol;
 
-import org.teiid.query.sql.*;
+import org.teiid.core.util.HashCodeUtil;
+import org.teiid.query.sql.LanguageVisitor;
 
 /**
  * <p>This is a subclass of Symbol representing a single element.  An ElementSymbol
@@ -67,6 +68,11 @@
         super(name);		
     }
     
+    public ElementSymbol(String shortName, String shortCanonical, GroupSymbol group) {
+    	super(shortName, shortCanonical);
+    	this.groupSymbol = group;
+    }
+    
     /**
      * Constructor taking a name and a flag whether to display fully qualified.
      * @param name Name of the symbol
@@ -77,6 +83,48 @@
 		setDisplayFullyQualified(displayFullyQualified);
     }
     
+    @Override
+    public String getName() {
+    	if (this.groupSymbol != null) {
+    		return this.groupSymbol.getName() + SingleElementSymbol.SEPARATOR + this.getShortName();
+    	}
+    	return super.getName();
+    }
+    
+    @Override
+    public String getCanonicalName() {
+    	if (this.groupSymbol != null) {
+    		return this.groupSymbol.getCanonicalName() + SingleElementSymbol.SEPARATOR + this.getShortCanonicalName();
+    	}
+    	return super.getCanonicalName();
+    }
+    
+    @Override
+    public boolean equals(Object obj) {
+    	if (this.groupSymbol == null) {
+        	return super.equals(obj);
+    	}
+    	if (obj == this) {
+    		return true;
+    	}
+    	if (!(obj instanceof ElementSymbol)) {
+    		return false;
+    	}
+    	ElementSymbol other = (ElementSymbol)obj;
+    	if (other.groupSymbol == null) {
+        	return super.equals(obj);
+    	}
+    	return this.groupSymbol.equals(other.groupSymbol) && this.getShortCanonicalName().equals(other.getShortCanonicalName());
+    }
+    
+    @Override
+    public int hashCode() {
+    	if (this.groupSymbol != null) {
+    		return HashCodeUtil.hashCode(this.groupSymbol.hashCode(), this.getShortCanonicalName().hashCode());
+    	}
+    	return super.hashCode();
+    }
+        
     public void setDisplayMode(DisplayMode displayMode) { 
         if (displayMode == null) {
             this.displayMode = DisplayMode.OUTPUT_NAME;
@@ -131,7 +179,22 @@
     public void setGroupSymbol(GroupSymbol symbol) {
         this.groupSymbol = symbol;
     }
-
+    
+    public void setName(String name) {
+    	int index = name.lastIndexOf('.');
+    	if (index > 0) {
+    		if (this.groupSymbol != null) {
+    			throw new AssertionError("Attempt to set an invalid name"); //$NON-NLS-1$
+    		}
+    		GroupSymbol gs = new GroupSymbol(name.substring(0, index));
+    		this.setGroupSymbol(gs);
+    		name = name.substring(index + 1);
+    	} else {
+    		this.groupSymbol = null;
+    	}
+    	super.setShortName(name);
+    }
+    
     /**
      * Get the group symbol referred to by this element symbol, may be null before resolution
      * @return Group symbol referred to by this element, may be null
@@ -190,14 +253,14 @@
 	 * @return Deep copy of this object
 	 */
 	public Object clone() {
-		ElementSymbol copy = new ElementSymbol(getName(), getCanonical());
+		ElementSymbol copy = new ElementSymbol(getShortName(), getCanonical());
 		if(getGroupSymbol() != null) { 
 			copy.setGroupSymbol(getGroupSymbol().clone());
 		}
 		copy.setMetadataID(getMetadataID());
 		copy.setType(getType());
 		copy.setIsExternalReference(isExternalReference());
-		copy.setOutputName(this.getOutputName());
+		copy.outputName = this.outputName;
 		copy.setDisplayMode(this.getDisplayMode());
 		return copy;
 	}

Modified: trunk/engine/src/main/java/org/teiid/query/sql/symbol/GroupSymbol.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/symbol/GroupSymbol.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/sql/symbol/GroupSymbol.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -22,6 +22,10 @@
 
 package org.teiid.query.sql.symbol;
 
+import org.teiid.core.types.DataTypeManager;
+import org.teiid.core.util.EquivalenceUtil;
+import org.teiid.core.util.HashCodeUtil;
+import org.teiid.core.util.StringUtil;
 import org.teiid.query.QueryPlugin;
 import org.teiid.query.sql.LanguageVisitor;
 
@@ -54,6 +58,8 @@
     private Object modelMetadataId;
     
     private String outputDefinition;
+    private String schema;
+    private String canonicalSchema;
     
     /**
      * Cloning constructor 
@@ -188,14 +194,16 @@
 	 * @return Deep copy of the object
 	 */
 	public GroupSymbol clone() {
-		GroupSymbol copy = new GroupSymbol(getName(), getCanonical(), getDefinition());
+		GroupSymbol copy = new GroupSymbol(getShortName(), getCanonical(), getDefinition());
+		copy.schema = this.schema;
+		copy.canonicalSchema = this.canonicalSchema;
 		if(getMetadataID() != null) {
 			copy.setMetadataID(getMetadataID());
 		}
         copy.setIsTempTable(isTempTable);
         copy.setProcedure(isProcedure);
         copy.setOutputDefinition(this.getOutputDefinition());
-        copy.setOutputName(this.getOutputName());
+        copy.outputName = this.outputName;
         copy.isGlobalTable = isGlobalTable;
         copy.modelMetadataId = modelMetadataId;
 		return copy;
@@ -216,16 +224,10 @@
 		}
 		GroupSymbol other = (GroupSymbol) obj;
 
-		// Two group symbols will be equal only if both use aliases or both
-		// don't use aliases.  In either case, comparing canonical names is
-		// enough.
-		if( (this.getDefinition() == null && other.getDefinition() == null) ||
-			(this.getDefinition() != null && other.getDefinition() != null) ) {
-
+		if (this.schema == null || other.schema == null) {
 			return this.getCanonicalName().equals(other.getCanonicalName());
-
 		}
-		return false;
+		return EquivalenceUtil.areEqual(this.getCanonicalSchema(), other.getCanonicalSchema()) && this.getShortCanonicalName().equals(other.getShortCanonicalName());
 	}
     
     public boolean hasAlias() {
@@ -274,4 +276,47 @@
     public void setGlobalTable(boolean isGlobalTable) {
 		this.isGlobalTable = isGlobalTable;
 	}
+    
+    @Override
+    public String getName() {
+    	if (this.schema != null) {
+    		return this.schema + SingleElementSymbol.SEPARATOR + this.getShortName();
+    	}
+    	return super.getName();
+    }
+    
+    @Override
+    public String getCanonicalName() {
+    	if (this.schema != null) {
+    		return this.getCanonicalSchema() + SingleElementSymbol.SEPARATOR + this.getShortCanonicalName();
+    	}
+    	return super.getCanonicalName();
+    }
+    
+    @Override
+    public int hashCode() {
+    	if (this.schema != null) {
+    		return HashCodeUtil.hashCode(this.getCanonicalSchema().hashCode(), this.getShortCanonicalName().hashCode());
+    	}
+    	return super.hashCode();
+    }
+    
+    public void setName(String name) {
+    	int index = name.indexOf('.');
+    	if (index > 0) {
+    		this.schema = name.substring(0, index);
+    		name = name.substring(index + 1);
+    	} else {
+    		this.schema = null;
+    	}
+    	this.canonicalSchema = null;
+    	super.setShortName(name);
+    }
+
+	private String getCanonicalSchema() {
+		if (this.canonicalSchema == null && this.schema != null) {
+			this.canonicalSchema = DataTypeManager.getCanonicalString(StringUtil.toUpperCase(this.schema));
+		}
+		return canonicalSchema;
+	}
 }

Modified: trunk/engine/src/main/java/org/teiid/query/sql/symbol/SingleElementSymbol.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/symbol/SingleElementSymbol.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/sql/symbol/SingleElementSymbol.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -53,15 +53,6 @@
         super(name);
     }
 
-    /**
-     * Get the short name of the element
-     * @return Short name of the symbol (un-dotted)
-     */
-    public String getShortName() { 
-        String name = getName();
-        return getShortName(name);
-    }
-
     public static String getShortName(String name) {
         int index = name.lastIndexOf(SEPARATOR);
         if(index >= 0) { 
@@ -69,13 +60,5 @@
         }
         return name;
     }
-    
-    /**
-     * Get the short name of the element
-     * @return Short name of the symbol (un-dotted)
-     */
-    public String getShortCanonicalName() { 
-        String name = getCanonicalName();
-        return getShortName(name);
-    }
+
 }

Modified: trunk/engine/src/main/java/org/teiid/query/sql/symbol/Symbol.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/symbol/Symbol.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/sql/symbol/Symbol.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -46,12 +46,12 @@
 	 * Prior to resolving it is the name as entered in the query,
 	 * after resolving it is the fully qualified name.
 	 */
-	private String name;
+	private String shortName;
 
 	/** 
 	 * upper case of name
 	 */
-	private String canonicalName;
+	private String canonicalShortName;
 	
 	/**
 	 * Prior to resolving null, after resolving it is the exact string
@@ -59,7 +59,7 @@
 	 * 
 	 * The AliasGenerator can also set this value as necessary for the data tier.
 	 */
-    private String outputName;
+    protected String outputName;
     
     /**
      * Constructor to be used for cloning instances. Calls to String.toUpperCase() to generate the canonical names
@@ -70,8 +70,8 @@
      * @since 4.3
      */
     protected Symbol(String name, String canonicalName) {
-        this.name = name;
-        this.canonicalName = canonicalName;
+        this.shortName = name;
+        this.canonicalShortName = canonicalName;
     }
 
 	/**
@@ -80,8 +80,12 @@
 	 * @throws IllegalArgumentException If name is null
 	 */
 	public Symbol(String name) {
-		setName(name);
+		this.setName(name);
 	}
+	
+	protected void setName(String name) {
+		setShortName(name);
+	}
 
 	/**
 	 * Change the symbol's name.  This will change the symbol's hash code
@@ -89,14 +93,14 @@
 	 * collection, it will be lost!
 	 * @param name New name
 	 */
-	public void setName(String name) {
+	public void setShortName(String name) {
 		if(name == null) {
             throw new IllegalArgumentException(QueryPlugin.Util.getString("ERR.015.010.0017")); //$NON-NLS-1$
 		}
-		this.name = DataTypeManager.getCanonicalString(name);
+		this.shortName = DataTypeManager.getCanonicalString(name);
 		this.outputName = null;
         // Canonical name is lazily created
-        this.canonicalName = null;
+        this.canonicalShortName = null;
 	}
 
 	/**
@@ -104,7 +108,7 @@
 	 * @return Name of the symbol, never null
 	 */
 	public String getName() {
-		return this.name;
+		return getShortName();
 	}
 
 	/**
@@ -112,14 +116,11 @@
 	 * @return Canonical name for comparisons
 	 */
 	public String getCanonicalName() {
-        // PERFORMANCE1: String.toUpperCase() is an expensive call, and calls from this class are the largest component
-        // of the total toUpperCase() calls, so we are lazily performing the toUpperCase and calculating the hash.
-        computeCanonicalNameAndHash();
-        return this.canonicalName;
+        return getShortCanonicalName();
 	}
 	
-	public void setCanonicalName(String canonicalName) {
-		this.canonicalName = canonicalName;
+	public void setShortCanonicalName(String shortCanonicalName) {
+		this.canonicalShortName = shortCanonicalName;
 	}
     
 	/**
@@ -146,9 +147,7 @@
 	 * @return Hash code
 	 */
 	public int hashCode() {
-        computeCanonicalNameAndHash();
-		// Return cached hash code
-		return this.canonicalName.hashCode();
+		return this.getCanonicalName().hashCode();
 	}
 
 	/**
@@ -167,7 +166,9 @@
 		if(!(obj instanceof Symbol)) {
 			return false;
 		}
-		return ((Symbol)obj).getCanonicalName().equals(getCanonicalName());
+		String otherFqn = ((Symbol)obj).getCanonicalName();
+		String thisFqn = getCanonicalName();
+		return thisFqn.equals(otherFqn);
 	}
 
 	/**
@@ -175,16 +176,10 @@
 	 */
 	public abstract Object clone();
     
-    protected String getCanonical() {
-        return canonicalName;
+    protected final String getCanonical() {
+        return canonicalShortName;
     }
     
-    private void computeCanonicalNameAndHash() {
-        if (canonicalName == null) {
-            canonicalName = DataTypeManager.getCanonicalString(StringUtil.toUpperCase(name));
-        }
-    }
-    
     public String getOutputName() {
         return this.outputName == null ? getName() : this.outputName;
     }
@@ -192,5 +187,25 @@
     public void setOutputName(String outputName) {
         this.outputName =outputName;
     }
+    
+    /**
+     * Get the short name of the element
+     * @return Short name of the symbol (un-dotted)
+     */
+    public final String getShortName() { 
+    	return shortName;
+    }
 
+    /**
+     * Get the short name of the element
+     * @return Short name of the symbol (un-dotted)
+     */
+    public final String getShortCanonicalName() { 
+		if (canonicalShortName == null) {
+        	canonicalShortName = DataTypeManager.getCanonicalString(StringUtil.toUpperCase(shortName));
+        }
+    	return this.canonicalShortName;
+    }
+
+
 }

Modified: trunk/engine/src/main/java/org/teiid/query/sql/visitor/AbstractSymbolMappingVisitor.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/visitor/AbstractSymbolMappingVisitor.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/sql/visitor/AbstractSymbolMappingVisitor.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -164,7 +164,7 @@
 		
 		// Finally, swap name of group, which should be the name of the group
 		// for all of the element symbols
-		obj.setName(newGroupName + ".*"); //$NON-NLS-1$
+		obj.setShortName(newGroupName + ".*"); //$NON-NLS-1$
 			
     }
 

Modified: trunk/engine/src/main/java/org/teiid/query/sql/visitor/ExpressionMappingVisitor.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/sql/visitor/ExpressionMappingVisitor.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/sql/visitor/ExpressionMappingVisitor.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -164,7 +164,7 @@
 		if (replacement instanceof SingleElementSymbol) {
 		    replacmentSymbol = (SingleElementSymbol)replacement;
 		} else {
-		    replacmentSymbol = new ExpressionSymbol(ses.getName(), replacement);
+		    replacmentSymbol = new ExpressionSymbol(ses.getShortName(), replacement);
 		}
 		
 		if (alias && createAliases() && !replacmentSymbol.getShortCanonicalName().equals(ses.getShortCanonicalName())) {

Modified: trunk/engine/src/main/java/org/teiid/query/tempdata/TempTableDataManager.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/tempdata/TempTableDataManager.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/tempdata/TempTableDataManager.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -427,7 +427,8 @@
 				public Expression replaceExpression(Expression element) {
 					if (element instanceof ElementSymbol) {
 						ElementSymbol es = (ElementSymbol)element;
-						((ElementSymbol) element).setName(tableName + ElementSymbol.SEPARATOR + es.getShortName());
+						es.getGroupSymbol().setName(tableName);
+						es.getGroupSymbol().setDefinition(null);
 					}
 					return element;
 				}

Modified: trunk/engine/src/main/java/org/teiid/query/validator/UpdateValidator.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/validator/UpdateValidator.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/main/java/org/teiid/query/validator/UpdateValidator.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -405,7 +405,7 @@
         		UpdateMapping info = updateInfo.updatableGroups.get(groupName);
         		if (es.getGroupSymbol().getDefinition() != null) {
             		ElementSymbol clone = (ElementSymbol)es.clone();
-            		clone.setName(es.getGroupSymbol().getDefinition() + ElementSymbol.SEPARATOR + es.getShortName());
+            		clone.setOutputName(null);
             		clone.getGroupSymbol().setName(clone.getGroupSymbol().getNonCorrelationName());
             		clone.getGroupSymbol().setDefinition(null);
             		es = clone;

Modified: trunk/engine/src/test/java/org/teiid/dqp/internal/datamgr/TestElementImpl.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/dqp/internal/datamgr/TestElementImpl.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/dqp/internal/datamgr/TestElementImpl.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -82,7 +82,7 @@
     
     public void testGetName() throws Exception {
         Object metadataID = TstLanguageBridgeFactory.metadata.getElementID("pm1.g1.e1"); //$NON-NLS-1$
-        assertEquals("e1", example("pm1.g1", "e1", metadataID).getName()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+        assertEquals("pm1.g1.e1", example("pm1.g1", "e1", metadataID).getName()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
     }
 
     public void testGetGroup() throws Exception {

Modified: trunk/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourceElementReplacementVisitor.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourceElementReplacementVisitor.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/dqp/internal/process/multisource/TestMultiSourceElementReplacementVisitor.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -25,6 +25,8 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import junit.framework.TestCase;
+
 import org.teiid.query.metadata.QueryMetadataInterface;
 import org.teiid.query.parser.QueryParser;
 import org.teiid.query.resolver.QueryResolver;
@@ -32,10 +34,8 @@
 import org.teiid.query.sql.navigator.DeepPostOrderNavigator;
 import org.teiid.query.unittest.FakeMetadataFactory;
 
-import junit.framework.TestCase;
 
 
-
 /** 
  * @since 4.2
  */

Modified: trunk/engine/src/test/java/org/teiid/query/optimizer/TestOptimizer.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/optimizer/TestOptimizer.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/optimizer/TestOptimizer.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -2784,7 +2784,7 @@
     @Test public void testCopyCriteriaWithOuterJoin2_defect10050(){
         
         ProcessorPlan plan = helpPlan("select pm2.g1.e1, pm2.g2.e1 from pm2.g1 left outer join pm2.g2 on pm2.g1.e1=pm2.g2.e1 and pm2.g1.e2=pm2.g2.e2 where pm2.g1.e1 = 'a' and pm2.g1.e2 = 1", example1(), //$NON-NLS-1$
-            new String[] { "SELECT g_0.e1, g_1.e1 FROM pm2.g1 AS g_0 LEFT OUTER JOIN pm2.g2 AS g_1 ON g_0.e1 = g_1.e1 AND g_0.e2 = g_1.e2 AND g_1.e2 = 1 AND g_1.e1 = 'a' WHERE (g_0.e1 = 'a') AND (g_0.e2 = 1)" }); //$NON-NLS-1$
+            new String[] { "SELECT g_0.e1, g_1.e1 FROM pm2.g1 AS g_0 LEFT OUTER JOIN pm2.g2 AS g_1 ON g_0.e1 = g_1.e1 AND g_0.e2 = g_1.e2 AND g_1.e1 = 'a' AND g_1.e2 = 1 WHERE (g_0.e1 = 'a') AND (g_0.e2 = 1)" }); //$NON-NLS-1$
         checkNodeTypes(plan, FULL_PUSHDOWN);         
     }
 

Modified: trunk/engine/src/test/java/org/teiid/query/optimizer/TestUnionPlanning.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/optimizer/TestUnionPlanning.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/optimizer/TestUnionPlanning.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -186,8 +186,8 @@
     
     @Test public void testUnionPushDownWithJoin1() throws Exception {
         ProcessorPlan plan = TestOptimizer.helpPlan("select * from (SELECT IntKey FROM BQT1.SmallA where intkey in (1, 2) UNION ALL SELECT intkey FROM BQT2.SmallA where intkey in (3, 4)) A inner join (SELECT intkey FROM BQT1.SmallB where intkey in (1, 2) UNION ALL SELECT intkey FROM BQT2.SmallB where intkey in (3, 4)) B on a.intkey = b.intkey where a.intkey in (1, 4)", FakeMetadataFactory.exampleBQTCached(), null, TestOptimizer.getGenericFinder(),//$NON-NLS-1$
-            new String[] { "SELECT g_1.intkey, g_0.intkey FROM BQT2.SmallA AS g_0, BQT2.SmallB AS g_1 WHERE (g_0.intkey = g_1.intkey) AND (g_0.intkey IN (4)) AND (g_0.intkey = 4) AND (g_1.intkey = 4)", 
-        	"SELECT g_1.intkey, g_0.IntKey FROM BQT1.SmallA AS g_0, BQT1.SmallB AS g_1 WHERE (g_0.IntKey = g_1.intkey) AND (g_0.intkey IN (1)) AND (g_0.IntKey = 1) AND (g_1.intkey IN (1)) AND (g_1.intkey = 1)" }, ComparisonMode.EXACT_COMMAND_STRING); 
+            new String[] { "SELECT g_1.intkey, g_0.intkey FROM BQT2.SmallA AS g_0, BQT2.SmallB AS g_1 WHERE (g_0.intkey = g_1.intkey) AND (g_0.intkey IN (4)) AND (g_0.intkey = 4) AND (g_1.intkey IN (4)) AND (g_1.intkey = 4)",
+        		"SELECT g_1.intkey, g_0.IntKey FROM BQT1.SmallA AS g_0, BQT1.SmallB AS g_1 WHERE (g_0.IntKey = g_1.intkey) AND (g_0.intkey IN (1)) AND (g_0.IntKey = 1) AND (g_1.intkey = 1)" }, ComparisonMode.EXACT_COMMAND_STRING); 
 
         TestOptimizer.checkNodeTypes(plan, new int[] {
             2,      // Access

Modified: trunk/engine/src/test/java/org/teiid/query/optimizer/relational/TestAliasGenerator.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/optimizer/relational/TestAliasGenerator.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/optimizer/relational/TestAliasGenerator.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -60,7 +60,7 @@
         Query command = (Query)QueryParser.getQueryParser().parseCommand(sql);
         ((ElementSymbol)command.getSelect().getSymbol(0)).setGroupSymbol(new GroupSymbol("y")); //$NON-NLS-1$
         command.acceptVisitor(new AliasGenerator(true));
-        assertEquals("SELECT v_0.c_0 FROM (SELECT pm1.g1.e1 AS c_0 FROM pm1.g1 AS g_0) AS v_0", command.toString()); //$NON-NLS-1$
+        assertEquals("SELECT v_0.c_0 FROM (SELECT g_0.e1 AS c_0 FROM pm1.g1 AS g_0) AS v_0", command.toString()); //$NON-NLS-1$
     }
     
     @Test public void testLongOrderByAlias() throws Exception {

Modified: trunk/engine/src/test/java/org/teiid/query/parser/TestOptionsAndHints.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/parser/TestOptionsAndHints.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/parser/TestOptionsAndHints.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -305,7 +305,7 @@
         
         Criteria criteria = new CompareCriteria(x, CompareCriteria.EQ, new Function("func", new Expression[] {y})); //$NON-NLS-1$
         JoinPredicate predicate = new JoinPredicate(new UnaryFromClause(a), new UnaryFromClause(b), JoinType.JOIN_INNER, Arrays.asList(new Object[] {criteria}));
-        From from = new From(Arrays.asList(new Object[] {predicate}));
+        From from = new From(Arrays.asList(predicate));
         predicate.getLeftClause().setMakeNotDep(true);
         predicate.getRightClause().setMakeDep(true);
         Select select = new Select(Arrays.asList(new Object[] {x, y}));
@@ -990,7 +990,7 @@
         ElementSymbol x = new ElementSymbol("a.x", true); //$NON-NLS-1$
         ElementSymbol y = new ElementSymbol("b.y", true); //$NON-NLS-1$
         
-        From from = new From(Arrays.asList(new Object[] {new UnaryFromClause(a), new UnaryFromClause(b)}));
+        From from = new From(Arrays.asList(new UnaryFromClause(a), new UnaryFromClause(b)));
         
         Option option = new Option();
         option.addDependentGroup("a"); //$NON-NLS-1$

Modified: trunk/engine/src/test/java/org/teiid/query/parser/TestParser.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/parser/TestParser.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/parser/TestParser.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -2966,7 +2966,6 @@
 
         Select select = new Select();
         ElementSymbol symbol = new ElementSymbol("c"); //$NON-NLS-1$
-        symbol.setGroupSymbol(g);
         select.addSymbol(symbol);
         
         Query query = new Query();
@@ -2998,7 +2997,6 @@
 
         Select select = new Select();
         ElementSymbol symbol = new ElementSymbol("c"); //$NON-NLS-1$
-        symbol.setGroupSymbol(g);
         select.addSymbol(symbol);
         
         Query query = new Query();
@@ -3030,7 +3028,6 @@
 
         Select select = new Select();
         ElementSymbol symbol = new ElementSymbol("c"); //$NON-NLS-1$
-        symbol.setGroupSymbol(g);
         select.addSymbol(symbol);
         
         Query query = new Query();
@@ -6440,7 +6437,7 @@
     @Test public void testLimit() {
         Query query = new Query();
         Select select = new Select(Arrays.asList(new Object[] {new AllSymbol()}));
-        From from = new From(Arrays.asList(new Object[] {new UnaryFromClause(new GroupSymbol("a"))})); //$NON-NLS-1$
+        From from = new From(Arrays.asList(new UnaryFromClause(new GroupSymbol("a")))); //$NON-NLS-1$
         query.setSelect(select);
         query.setFrom(from);
         query.setLimit(new Limit(null, new Constant(new Integer(100))));
@@ -6450,7 +6447,7 @@
     @Test public void testLimitWithOffset() {
         Query query = new Query();
         Select select = new Select(Arrays.asList(new Object[] {new AllSymbol()}));
-        From from = new From(Arrays.asList(new Object[] {new UnaryFromClause(new GroupSymbol("a"))})); //$NON-NLS-1$
+        From from = new From(Arrays.asList(new UnaryFromClause(new GroupSymbol("a")))); //$NON-NLS-1$
         query.setSelect(select);
         query.setFrom(from);
         query.setLimit(new Limit(new Constant(new Integer(50)), new Constant(new Integer(100))));
@@ -6460,7 +6457,7 @@
     @Test public void testLimitWithReferences1() {
         Query query = new Query();
         Select select = new Select(Arrays.asList(new Object[] {new AllSymbol()}));
-        From from = new From(Arrays.asList(new Object[] {new UnaryFromClause(new GroupSymbol("a"))})); //$NON-NLS-1$
+        From from = new From(Arrays.asList(new UnaryFromClause(new GroupSymbol("a")))); //$NON-NLS-1$
         query.setSelect(select);
         query.setFrom(from);
         query.setLimit(new Limit(new Reference(0), new Constant(new Integer(100))));
@@ -6470,7 +6467,7 @@
     @Test public void testLimitWithReferences2() {
         Query query = new Query();
         Select select = new Select(Arrays.asList(new Object[] {new AllSymbol()}));
-        From from = new From(Arrays.asList(new Object[] {new UnaryFromClause(new GroupSymbol("a"))})); //$NON-NLS-1$
+        From from = new From(Arrays.asList(new UnaryFromClause(new GroupSymbol("a")))); //$NON-NLS-1$
         query.setSelect(select);
         query.setFrom(from);
         query.setLimit(new Limit(new Constant(new Integer(50)), new Reference(0)));
@@ -6480,7 +6477,7 @@
     @Test public void testLimitWithReferences3() {
         Query query = new Query();
         Select select = new Select(Arrays.asList(new Object[] {new AllSymbol()}));
-        From from = new From(Arrays.asList(new Object[] {new UnaryFromClause(new GroupSymbol("a"))})); //$NON-NLS-1$
+        From from = new From(Arrays.asList(new UnaryFromClause(new GroupSymbol("a")))); //$NON-NLS-1$
         query.setSelect(select);
         query.setFrom(from);
         query.setLimit(new Limit(new Reference(0), new Reference(1)));

Modified: trunk/engine/src/test/java/org/teiid/query/processor/FakeDataManager.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/FakeDataManager.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/processor/FakeDataManager.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -282,11 +282,8 @@
         if (group.getDefinition() != null){
             String groupAlias = group.getCanonicalName();
             ElementSymbol elementSymbol = (ElementSymbol)SymbolMap.getExpression((SingleElementSymbol)element);
-            String newName = groupAlias + "." + elementSymbol.getShortName(); //$NON-NLS-1$
-            ElementSymbol aliasedElement = new ElementSymbol(newName, elementSymbol.getDisplayFullyQualified());
-            aliasedElement.setGroupSymbol(elementSymbol.getGroupSymbol());
-            aliasedElement.setMetadataID(elementSymbol.getMetadataID());
-            aliasedElement.setType(elementSymbol.getType());
+            ElementSymbol aliasedElement = (ElementSymbol)elementSymbol.clone();
+            aliasedElement.getGroupSymbol().setName(groupAlias);
             lookupMap.put(aliasedElement, index);
         } else {
             lookupMap.put(element, index);

Modified: trunk/engine/src/test/java/org/teiid/query/processor/TestProcedureRelational.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/TestProcedureRelational.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/processor/TestProcedureRelational.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -698,7 +698,7 @@
         FakeMetadataObject in1 = FakeMetadataFactory.createParameter("pm1.sp119.in1", 2, SPParameter.IN, DataTypeManager.DefaultDataTypes.INTEGER, null); //$NON-NLS-1$
 		FakeMetadataObject rs3 = FakeMetadataFactory.createResultSet("pm1.sp119.rs1", pm1, new String[] { "e1" }, new String[] { DataTypeManager.DefaultDataTypes.INTEGER }); //$NON-NLS-1$ //$NON-NLS-2$ 
         FakeMetadataObject rs3p1 = FakeMetadataFactory.createParameter("ret", 1, SPParameter.RESULT_SET, DataTypeManager.DefaultDataTypes.OBJECT, rs3);  //$NON-NLS-1$
-		FakeMetadataObject sp1 = FakeMetadataFactory.createStoredProcedure("pm1.sp119", pm1, Arrays.asList(new FakeMetadataObject[] { rs3p1, in1 }), "pm1.sp119");  //$NON-NLS-1$ //$NON-NLS-2$
+		FakeMetadataObject sp1 = FakeMetadataFactory.createStoredProcedure("pm1.sp119", pm1, Arrays.asList(new FakeMetadataObject[] { rs3p1, in1 }));  //$NON-NLS-1$ //$NON-NLS-2$
 
         FakeMetadataStore store = new FakeMetadataStore();
         store.addObject(pm1);

Modified: trunk/engine/src/test/java/org/teiid/query/resolver/TestResolver.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/resolver/TestResolver.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/resolver/TestResolver.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -948,11 +948,11 @@
         List elements = (List) ElementCollectorVisitor.getElements(resolvedQuery.getSelect(), false);
         
         ElementSymbol elem1 = (ElementSymbol)elements.get(0);
-        assertEquals("Did not get expected element", "X.e1", elem1.getName() ); //$NON-NLS-1$ //$NON-NLS-2$
+        assertEquals("Did not get expected element", "x.e1", elem1.getName() ); //$NON-NLS-1$ //$NON-NLS-2$
         assertEquals("Did not get expected type", DataTypeManager.DefaultDataClasses.STRING, elem1.getType()); //$NON-NLS-1$
 
         ElementSymbol elem2 = (ElementSymbol)elements.get(1);
-        assertEquals("Did not get expected element", "X.e2", elem2.getName() ); //$NON-NLS-1$ //$NON-NLS-2$
+        assertEquals("Did not get expected element", "x.e2", elem2.getName() ); //$NON-NLS-1$ //$NON-NLS-2$
         assertEquals("Did not get expected type", DataTypeManager.DefaultDataClasses.INTEGER, elem2.getType()); //$NON-NLS-1$
     }
 
@@ -2661,7 +2661,7 @@
         
         Command cmd = helpResolve(proc.toString()); 
 
-        String sExpected = "CREATE VIRTUAL PROCEDURE\nBEGIN\nCREATE LOCAL TEMPORARY TABLE #matt (x integer);\nINSERT INTO #matt (#MATT.x) VALUES (1);\nEND\n\tCREATE LOCAL TEMPORARY TABLE #matt (x integer)\n\tINSERT INTO #matt (#MATT.x) VALUES (1)\n";   //$NON-NLS-1$
+        String sExpected = "CREATE VIRTUAL PROCEDURE\nBEGIN\nCREATE LOCAL TEMPORARY TABLE #matt (x integer);\nINSERT INTO #matt (#matt.x) VALUES (1);\nEND\n\tCREATE LOCAL TEMPORARY TABLE #matt (x integer)\n\tINSERT INTO #matt (#matt.x) VALUES (1)\n";   //$NON-NLS-1$
         String sActual = cmd.printCommandTree(); 
         assertEquals( sExpected, sActual );
     }
@@ -2956,7 +2956,7 @@
     @Test public void testParamOrder() {
         Query resolvedQuery = (Query)helpResolve("SELECT * FROM (exec pm4.spRetOut()) as a", RealMetadataFactory.exampleBQTCached(), null); //$NON-NLS-1$
         
-        assertEquals("A.ret", resolvedQuery.getProjectedSymbols().get(0).getName());
+        assertEquals("a.ret", resolvedQuery.getProjectedSymbols().get(0).getName());
     }
     
     @Test public void testOrderByAggregatesError() throws Exception {

Modified: trunk/engine/src/test/java/org/teiid/query/resolver/TestXMLResolver.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/resolver/TestXMLResolver.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/resolver/TestXMLResolver.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -57,9 +57,8 @@
 
     public void testXMLCriteriaShortElement() {
         CompareCriteria expected = new CompareCriteria();
-        ElementSymbol es = new ElementSymbol("xmltest.doc1.root.node1"); //$NON-NLS-1$
-        GroupSymbol gs = new GroupSymbol("doc1"); //$NON-NLS-1$
-        es.setGroupSymbol(gs);
+        GroupSymbol gs = new GroupSymbol("xmltest.doc1"); //$NON-NLS-1$
+        ElementSymbol es = new ElementSymbol("root.node1", null, gs); //$NON-NLS-1$
         expected.setLeftExpression(es);
         expected.setOperator(CompareCriteria.EQ);
         expected.setRightExpression(new Constant("yyz")); //$NON-NLS-1$
@@ -71,8 +70,8 @@
 
     public void testXMLCriteriaLongElement1() {
         CompareCriteria expected = new CompareCriteria();
-        ElementSymbol es = new ElementSymbol("xmltest.doc1.root.node1"); //$NON-NLS-1$
-        GroupSymbol gs = new GroupSymbol("doc1"); //$NON-NLS-1$
+        GroupSymbol gs = new GroupSymbol("xmltest.doc1"); //$NON-NLS-1$
+        ElementSymbol es = new ElementSymbol("root.node1", null, gs); //$NON-NLS-1$
         es.setGroupSymbol(gs);
         expected.setLeftExpression(es);
         expected.setOperator(CompareCriteria.EQ);
@@ -85,9 +84,8 @@
     
     public void testXMLCriteriaLongElement2() {
         CompareCriteria expected1 = new CompareCriteria();
-        ElementSymbol es1 = new ElementSymbol("xmltest.doc4.root.node1"); //$NON-NLS-1$
-        GroupSymbol gs = new GroupSymbol("doc4"); //$NON-NLS-1$
-        es1.setGroupSymbol(gs);
+        GroupSymbol gs = new GroupSymbol("xmltest.doc4"); //$NON-NLS-1$
+        ElementSymbol es1 = new ElementSymbol("root.node1", null, gs); //$NON-NLS-1$
         expected1.setLeftExpression(es1);
         expected1.setOperator(CompareCriteria.EQ);
         expected1.setRightExpression(new Constant("xyz"));         //$NON-NLS-1$
@@ -98,9 +96,9 @@
     }
     
     public void testXMLCriteriaLongElement3() {
-        GroupSymbol gs = new GroupSymbol("doc4"); //$NON-NLS-1$
+        GroupSymbol gs = new GroupSymbol("xmltest.doc4"); //$NON-NLS-1$
         CompareCriteria expected2 = new CompareCriteria();
-        ElementSymbol es2 = new ElementSymbol("xmltest.doc4.root.node1. at node2"); //$NON-NLS-1$
+        ElementSymbol es2 = new ElementSymbol("root.node1. at node2", null, gs); //$NON-NLS-1$
         es2.setGroupSymbol(gs);
         expected2.setLeftExpression(es2);
         expected2.setOperator(CompareCriteria.EQ);
@@ -112,10 +110,9 @@
     }
         
     public void testXMLCriteriaLongElement4() {
-        GroupSymbol gs = new GroupSymbol("doc4"); //$NON-NLS-1$
+        GroupSymbol gs = new GroupSymbol("xmltest.doc4"); //$NON-NLS-1$
         CompareCriteria expected3 = new CompareCriteria();
-        ElementSymbol es3 = new ElementSymbol("xmltest.doc4.root.node3"); //$NON-NLS-1$
-        es3.setGroupSymbol(gs);
+        ElementSymbol es3 = new ElementSymbol("root.node3", null, gs); //$NON-NLS-1$
         expected3.setLeftExpression(es3);
         expected3.setOperator(CompareCriteria.EQ);
         expected3.setRightExpression(new Constant("xyz")); //$NON-NLS-1$
@@ -196,9 +193,8 @@
 
     public void testXMLCriteriaLongElementInAnonymous() {                  
         CompareCriteria expected = new CompareCriteria();
-        ElementSymbol es = new ElementSymbol("xmltest.doc2.root.node1.node3"); //$NON-NLS-1$
-        GroupSymbol gs = new GroupSymbol("doc2"); //$NON-NLS-1$
-        es.setGroupSymbol(gs);
+        GroupSymbol gs = new GroupSymbol("xmltest.doc2"); //$NON-NLS-1$
+        ElementSymbol es = new ElementSymbol("root.node1.node3", null, gs); //$NON-NLS-1$
         expected.setLeftExpression(es);
         expected.setOperator(CompareCriteria.EQ);
         expected.setRightExpression(new Constant("yyz")); //$NON-NLS-1$
@@ -312,12 +308,9 @@
     }
         
     public void testContext() {                  
-        ElementSymbol es1 = new ElementSymbol("xmltest.doc1.root.node1.node2.node3"); //$NON-NLS-1$
-        GroupSymbol gs1 = new GroupSymbol("doc1"); //$NON-NLS-1$
-        es1.setGroupSymbol(gs1);
-        ElementSymbol es2 = new ElementSymbol("xmltest.doc1.root.node1"); //$NON-NLS-1$
-        GroupSymbol gs2 = new GroupSymbol("doc1"); //$NON-NLS-1$
-        es2.setGroupSymbol(gs2);
+        GroupSymbol gs1 = new GroupSymbol("xmltest.doc1"); //$NON-NLS-1$
+        ElementSymbol es1 = new ElementSymbol("root.node1.node2.node3", null, gs1); //$NON-NLS-1$
+        ElementSymbol es2 = new ElementSymbol("root.node1", null, gs1); //$NON-NLS-1$
         Expression[] exprs = new Expression[]{es1, es2};
         
         Function context = new Function("context", exprs); //$NON-NLS-1$
@@ -333,8 +326,8 @@
     }    
 
     public void testRowLimit() {                  
-        ElementSymbol es1 = new ElementSymbol("xmltest.doc1.root.node1.node2.node3"); //$NON-NLS-1$
-        GroupSymbol gs1 = new GroupSymbol("doc1"); //$NON-NLS-1$
+    	GroupSymbol gs1 = new GroupSymbol("xmltest.doc1"); //$NON-NLS-1$
+        ElementSymbol es1 = new ElementSymbol("root.node1.node2.node3", null, gs1); //$NON-NLS-1$
         es1.setGroupSymbol(gs1);
         Expression[] exprs = new Expression[]{es1};
         
@@ -351,9 +344,8 @@
     }    
 
     public void testRowLimitException() {                  
-        ElementSymbol es1 = new ElementSymbol("xmltest.doc1.root.node1.node2.node3"); //$NON-NLS-1$
-        GroupSymbol gs1 = new GroupSymbol("doc1"); //$NON-NLS-1$
-        es1.setGroupSymbol(gs1);
+    	GroupSymbol gs1 = new GroupSymbol("xmltest.doc1"); //$NON-NLS-1$
+        ElementSymbol es1 = new ElementSymbol("root.node1.node2.node3", null, gs1); //$NON-NLS-1$
         Expression[] exprs = new Expression[]{es1};
         
         Function context = new Function("rowlimitexception", exprs); //$NON-NLS-1$
@@ -386,9 +378,8 @@
     
     public void testConversionInXML() {
         // Expected left expression
-        ElementSymbol es1 = new ElementSymbol("xmltest.doc1.root.node1"); //$NON-NLS-1$
-        GroupSymbol gs1 = new GroupSymbol("doc1"); //$NON-NLS-1$
-        es1.setGroupSymbol(gs1);
+    	GroupSymbol gs1 = new GroupSymbol("xmltest.doc1"); //$NON-NLS-1$
+        ElementSymbol es1 = new ElementSymbol("root.node1", null, gs1); //$NON-NLS-1$
 
         // Expected right expression
         Function convert = new Function("convert", new Expression[] { new Constant(new Integer(5)), new Constant("string") }); //$NON-NLS-1$ //$NON-NLS-2$
@@ -409,9 +400,8 @@
 
     public void testXMLWithSelect1() throws Exception {
         CompareCriteria expected = new CompareCriteria();
-        ElementSymbol es = new ElementSymbol("xmltest.doc1.root.node1"); //$NON-NLS-1$
-        GroupSymbol gs = new GroupSymbol("doc1"); //$NON-NLS-1$
-        es.setGroupSymbol(gs);
+        GroupSymbol gs = new GroupSymbol("xmltest.doc1"); //$NON-NLS-1$
+        ElementSymbol es = new ElementSymbol("root.node1", null, gs); //$NON-NLS-1$
         expected.setLeftExpression(es);
         expected.setOperator(CompareCriteria.EQ);
         expected.setRightExpression(new Constant("yyz")); //$NON-NLS-1$
@@ -427,9 +417,8 @@
 
     public void testXMLWithSelect2() {
         CompareCriteria expected = new CompareCriteria();
-        ElementSymbol es = new ElementSymbol("xmltest.doc1.root.node1"); //$NON-NLS-1$
-        GroupSymbol gs = new GroupSymbol("doc1"); //$NON-NLS-1$
-        es.setGroupSymbol(gs);
+        GroupSymbol gs = new GroupSymbol("xmltest.doc1"); //$NON-NLS-1$
+        ElementSymbol es = new ElementSymbol("root.node1", null, gs); //$NON-NLS-1$
         expected.setLeftExpression(es);
         expected.setOperator(CompareCriteria.EQ);
         expected.setRightExpression(new Constant("yyz")); //$NON-NLS-1$

Modified: trunk/engine/src/test/java/org/teiid/query/rewriter/TestQueryRewriter.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/rewriter/TestQueryRewriter.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/rewriter/TestQueryRewriter.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -1971,7 +1971,7 @@
     
     @Test public void testRewriteSelectInto() {
         String sql = "select distinct pm1.g1.e1 into #temp from pm1.g1"; //$NON-NLS-1$
-        String expected = "INSERT INTO #temp (#TEMP.e1) SELECT DISTINCT pm1.g1.e1 FROM pm1.g1"; //$NON-NLS-1$
+        String expected = "INSERT INTO #temp (#temp.e1) SELECT DISTINCT pm1.g1.e1 FROM pm1.g1"; //$NON-NLS-1$
                 
         helpTestRewriteCommand(sql, expected);        
     }
@@ -2038,7 +2038,7 @@
         procedure += "Select x from temp;\n"; //$NON-NLS-1$
         procedure += "END\n"; //$NON-NLS-1$
         
-        helpTestRewriteCommand(procedure, "CREATE VIRTUAL PROCEDURE\nBEGIN\nCREATE LOCAL TEMPORARY TABLE temp (x string, y integer, z integer);\nINSERT INTO temp (TEMP.x, TEMP.y, TEMP.z) SELECT X.e2 AS x, X.x AS y, X.X_0 AS z FROM (SELECT pm1.g1.e2, 1 AS x, 2 AS X_0 FROM pm1.g1 ORDER BY pm1.g1.e2 LIMIT 1) AS X;\nSELECT x FROM temp;\nEND"); //$NON-NLS-1$
+        helpTestRewriteCommand(procedure, "CREATE VIRTUAL PROCEDURE\nBEGIN\nCREATE LOCAL TEMPORARY TABLE temp (x string, y integer, z integer);\nINSERT INTO temp (temp.x, temp.y, temp.z) SELECT X.e2 AS x, X.x AS y, X.X_0 AS z FROM (SELECT pm1.g1.e2, 1 AS x, 2 AS X_0 FROM pm1.g1 ORDER BY pm1.g1.e2 LIMIT 1) AS X;\nSELECT x FROM temp;\nEND"); //$NON-NLS-1$
     }
     
     @Test public void testRewriteNot() {

Modified: trunk/engine/src/test/java/org/teiid/query/sql/symbol/TestElementSymbol.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/sql/symbol/TestElementSymbol.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/sql/symbol/TestElementSymbol.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -22,23 +22,14 @@
 
 package org.teiid.query.sql.symbol;
 
+import static org.junit.Assert.*;
+
+import org.junit.Test;
 import org.teiid.core.util.UnitTestUtil;
-import org.teiid.query.sql.symbol.ElementSymbol;
-import org.teiid.query.sql.symbol.GroupSymbol;
 
-import junit.framework.TestCase;
+ at SuppressWarnings("nls")
+public class TestElementSymbol {
 
-
-public class TestElementSymbol extends TestCase {
-
-	// ################################## FRAMEWORK ################################
-	
-	public TestElementSymbol(String name) { 
-		super(name);
-	}	
-	
-	// ################################## TEST HELPERS ################################
-	
 	/** Unaliased group "m.g" */
 	public static final GroupSymbol sampleGroup1() { 
 		return new GroupSymbol("m.g"); //$NON-NLS-1$
@@ -94,117 +85,117 @@
 		
 	// ################################## ACTUAL TESTS ################################
 	
-	public void testParser1() {
+	@Test public void testParser1() {
 		helpParser(sampleElement1(), "c"); //$NON-NLS-1$
 	}
 
-	public void testParser2() {
+	@Test public void testParser2() {
 		helpParser(sampleElement2(), "m.g.c"); //$NON-NLS-1$
 	}
 
-	public void testParser3() {
+	@Test public void testParser3() {
 		helpParser(sampleElement3(), "c"); //$NON-NLS-1$
 	}
 
-	public void testParser4() {
+	@Test public void testParser4() {
 		helpParser(sampleElement4(), "gg.c"); //$NON-NLS-1$
 	}
 
 	// Compare elements to themselves
 
-	public void testEquals1() { 
+	@Test public void testEquals1() { 
 		ElementSymbol es = sampleElement1();
 		helpEquals(es, es, true);
 	} 
 
-	public void testEquals2() { 
+	@Test public void testEquals2() { 
 		ElementSymbol es = sampleElement2();
 		helpEquals(es, es, true);
 	} 
 
-	public void testEquals3() { 
+	@Test public void testEquals3() { 
 		ElementSymbol es = sampleElement3();
 		helpEquals(es, es, true);
 	} 
 	
-	public void testEquals4() { 
+	@Test public void testEquals4() { 
 		ElementSymbol es = sampleElement4();
 		helpEquals(es, es, true);
 	} 
 		
 	// Compare elements to their clones
 
-	public void testEquals5() { 
+	@Test public void testEquals5() { 
 		ElementSymbol es = sampleElement1();
 		helpEquals(es, (ElementSymbol)es.clone(), true);
 	} 
 
-	public void testEquals6() { 
+	@Test public void testEquals6() { 
 		ElementSymbol es = sampleElement2();
 		helpEquals(es, (ElementSymbol)es.clone(), true);
 	} 
 
-	public void testEquals7() { 
+	@Test public void testEquals7() { 
 		ElementSymbol es = sampleElement3();
 		helpEquals(es, (ElementSymbol)es.clone(), true);
 	} 
 	
-	public void testEquals8() { 
+	@Test public void testEquals8() { 
 		ElementSymbol es = sampleElement4();
 		helpEquals(es, (ElementSymbol)es.clone(), true);
 	} 
 
 	// Compare fully-qualified to short versions
 
-	public void testEquals9() { 
+	@Test public void testEquals9() { 
 		helpEquals(sampleElement1(), sampleElement2(), true);
 	} 
 	
-	public void testEquals10() { 
+	@Test public void testEquals10() { 
 		helpEquals(sampleElement3(), sampleElement4(), true);
 	} 
 
 	// Compare same-named elements with same groups but different group contexts
 
-	public void testEquals11() { 
+	@Test public void testEquals11() { 
 		helpEquals(sampleElement1(), sampleElement3(), false);
 	} 
 	
-	public void testEquals12() { 
+	@Test public void testEquals12() { 
 		helpEquals(sampleElement2(), sampleElement4(), false);
 	} 
 
 	// Test case sensitivity
-	public void testEquals13() { 
+	@Test public void testEquals13() { 
 		ElementSymbol es1 = new ElementSymbol("abcd"); //$NON-NLS-1$
 		es1.setGroupSymbol(sampleGroup1());
 		ElementSymbol es2 = new ElementSymbol("AbCd"); //$NON-NLS-1$
-		es1.setGroupSymbol(sampleGroup1());
+		es2.setGroupSymbol(sampleGroup1());
 		
 		helpEquals(es1, es2, true);
 	} 
 
-	public void testSelfEquivalence(){
+	@Test public void testSelfEquivalence(){
 		Object s1 = sampleElement1();
 		int equals = 0;
 		UnitTestUtil.helpTestEquivalence(equals, s1, s1);
 	}
 
-	public void testEquivalence(){
+	@Test public void testEquivalence(){
 		Object s1 = sampleElement1();
 		Object s1a = sampleElement1();
 		int equals = 0;
 		UnitTestUtil.helpTestEquivalence(equals, s1, s1a);
 	}
 	
-	public void testCloneEquivalence(){
+	@Test public void testCloneEquivalence(){
 		ElementSymbol s1 = sampleElement1();
 		ElementSymbol s2 = (ElementSymbol)s1.clone();
 		int equals = 0;
 		UnitTestUtil.helpTestEquivalence(equals, s1, s2);
 	}
 
-	public void testNonEquivalence(){
+	@Test public void testNonEquivalence(){
 		Object s1 = sampleElement1();
 		Object s3 = sampleElement3();
 		int equals = -1;
@@ -212,51 +203,51 @@
 	}	
 	
 	/*	
-	public void testEqualsMethod(){
+	@Test public void testEqualsMethod(){
 		QueryUnitTestUtils.helpTestEquals(sampleElement1());
 	}
 
-	public void testEqualsMethodTransitivity(){
+	@Test public void testEqualsMethodTransitivity(){
 		//test transitivity with two equal Objects
 		QueryUnitTestUtils.helpTestEqualsTransitivity(sampleElement1(), sampleElement1());
 	}
 
-	public void testEqualsMethodTransitivity2(){
+	@Test public void testEqualsMethodTransitivity2(){
 		//test transitivity with two nonequal Objects
 		QueryUnitTestUtils.helpTestEqualsTransitivity(sampleElement1(), sampleElement2());
 	}
 
-	public void testHashCodeConsistentWithEquals(){
+	@Test public void testHashCodeConsistentWithEquals(){
 		//test hash code with two equal Objects
 		QueryUnitTestUtils.helpTestHashCodeConsistentWithEquals(sampleElement1(), sampleElement2());
 	}
 	*/
 	
-	public void testClone1() { 
+	@Test public void testClone1() { 
 		ElementSymbol e1 = sampleElement1();
 		ElementSymbol copy = (ElementSymbol) e1.clone();    		
 		helpEquals(e1, copy, true);
 	}
 
-	public void testClone2() { 
+	@Test public void testClone2() { 
 		ElementSymbol e1 = sampleElement2();
 		ElementSymbol copy = (ElementSymbol) e1.clone();    		
 		helpEquals(e1, copy, true);
 	}
 
-	public void testClone3() { 
+	@Test public void testClone3() { 
 		ElementSymbol e1 = sampleElement3();
 		ElementSymbol copy = (ElementSymbol) e1.clone();    		
 		helpEquals(e1, copy, true);
 	}
 
-	public void testClone4() { 
+	@Test public void testClone4() { 
 		ElementSymbol e1 = sampleElement4();
 		ElementSymbol copy = (ElementSymbol) e1.clone();    		
 		helpEquals(e1, copy, true);
 	}
 	
-	public void testClone5() {
+	@Test public void testClone5() {
 		ElementSymbol e1 = sampleElement1();
 		ElementSymbol copy = (ElementSymbol) e1.clone();    		
 		helpEquals(e1, copy, true);
@@ -275,4 +266,12 @@
 		assertTrue("Cloned value changed but should not have: ", copy.getDisplayFullyQualified() == fullyQualified);	     //$NON-NLS-1$
 	}
 	
+	@Test public void testEqualsWithAndWithoutGroupSymbol() {
+		ElementSymbol e1 = new ElementSymbol("x.y");
+		
+		ElementSymbol e2 = new ElementSymbol("y");
+		e2.setGroupSymbol(new GroupSymbol("x"));
+		helpEquals(e1, e2, true);
+	}
+	
 }

Modified: trunk/engine/src/test/java/org/teiid/query/sql/symbol/TestGroupSymbol.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/sql/symbol/TestGroupSymbol.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/sql/symbol/TestGroupSymbol.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -23,11 +23,11 @@
 package org.teiid.query.sql.symbol;
 
 
-import org.teiid.query.sql.symbol.GroupSymbol;
-
 import junit.framework.TestCase;
 
+import org.teiid.query.sql.lang.UnaryFromClause;
 
+
 /** 
  * @since 4.2
  */
@@ -55,16 +55,16 @@
         assertFalse(group.isTempGroupSymbol());
     }
     
-    public void defer_testInequality() {
+    public void testEquality() {
         GroupSymbol group = new GroupSymbol("g1", "a"); //$NON-NLS-1$ //$NON-NLS-2$
         GroupSymbol group1 = new GroupSymbol("g1", "b"); //$NON-NLS-1$ //$NON-NLS-2$
-        assertFalse(group.equals(group1));
+        assertEquals(group, group1);
     }
     
     public void testInequality1() {
         GroupSymbol group = new GroupSymbol("g1", "a"); //$NON-NLS-1$ //$NON-NLS-2$
         GroupSymbol group1 = new GroupSymbol("g1"); //$NON-NLS-1$ 
-        assertFalse(group.equals(group1));
+        assertFalse(new UnaryFromClause(group).equals(new UnaryFromClause(group1)));
     }
     
 }

Modified: trunk/engine/src/test/java/org/teiid/query/sql/util/TestElementSymbolOptimizer.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/sql/util/TestElementSymbolOptimizer.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/sql/util/TestElementSymbolOptimizer.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -23,8 +23,9 @@
 package org.teiid.query.sql.util;
 
 
-import junit.framework.TestCase;
+import static org.junit.Assert.*;
 
+import org.junit.Test;
 import org.teiid.api.exception.query.QueryMetadataException;
 import org.teiid.api.exception.query.QueryParserException;
 import org.teiid.api.exception.query.QueryResolverException;
@@ -37,19 +38,10 @@
 import org.teiid.query.sql.lang.Command;
 import org.teiid.query.unittest.FakeMetadataFactory;
 
-
 /**
  */
-public class TestElementSymbolOptimizer extends TestCase {
+public class TestElementSymbolOptimizer {
 
-    /**
-     * Constructor for TestElementSymbolOptimizer.
-     * @param name
-     */
-    public TestElementSymbolOptimizer(String name) {
-        super(name);
-    }
-    
     public Command helpResolve(String sql, QueryMetadataInterface metadata) throws QueryParserException, QueryResolverException, TeiidComponentException {
         Command command = QueryParser.getQueryParser().parseCommand(sql);
         QueryResolver.resolveCommand(command, metadata);
@@ -71,51 +63,51 @@
     }
 
     /** Can be optimized */
-    public void testOptimize1() throws Exception {
+    @Test public void testOptimize1() throws Exception {
         helpTestOptimize("SELECT pm1.g1.e1, pm1.g1.e2 FROM pm1.g1", //$NON-NLS-1$
                             FakeMetadataFactory.example1Cached(), 
                             "SELECT e1, e2 FROM pm1.g1"); //$NON-NLS-1$
     }
 
     /** Can't be optimized */
-    public void testOptimize2() throws Exception {
+    @Test public void testOptimize2() throws Exception {
         helpTestOptimize("SELECT pm1.g1.e1, pm1.g1.e2 FROM pm1.g1, pm1.g2", //$NON-NLS-1$
                             FakeMetadataFactory.example1Cached(), 
                             "SELECT pm1.g1.e1, pm1.g1.e2 FROM pm1.g1, pm1.g2"); //$NON-NLS-1$
     }
 
-    public void testOptimize3() throws Exception {
+    @Test public void testOptimize3() throws Exception {
         helpTestOptimize("UPDATE pm1.g1 SET pm1.g1.e1 = 'e' WHERE pm1.g1.e2 = 3", //$NON-NLS-1$
                             FakeMetadataFactory.example1Cached(), 
                             "UPDATE pm1.g1 SET e1 = 'e' WHERE e2 = 3"); //$NON-NLS-1$
     }
 
-    public void testOptimize4() throws Exception {
+    @Test public void testOptimize4() throws Exception {
         helpTestOptimize("INSERT INTO pm1.g1 (pm1.g1.e1, pm1.g1.e2) VALUES ('e', 3)", //$NON-NLS-1$
                             FakeMetadataFactory.example1Cached(), 
                             "INSERT INTO pm1.g1 (e1, e2) VALUES ('e', 3)"); //$NON-NLS-1$
     }
 
-    public void testOptimize5() throws Exception {
+    @Test public void testOptimize5() throws Exception {
         helpTestOptimize("DELETE FROM pm1.g1 WHERE pm1.g1.e2 = 3", //$NON-NLS-1$
                             FakeMetadataFactory.example1Cached(), 
                             "DELETE FROM pm1.g1 WHERE e2 = 3"); //$NON-NLS-1$
     }
     
-    public void testOptimize6() throws Exception {
+    @Test public void testOptimize6() throws Exception {
         helpTestOptimize("SELECT pm1.g1.e1, pm1.g1.e2 FROM pm1.g1 WHERE e2 > (SELECT AVG(pm1.g2.e2) FROM pm1.g2 WHERE pm1.g1.e1 = pm1.g2.e1)", //$NON-NLS-1$
                             FakeMetadataFactory.example1Cached(), 
                             "SELECT e1, e2 FROM pm1.g1 WHERE e2 > (SELECT AVG(e2) FROM pm1.g2 WHERE pm1.g1.e1 = e1)"); //$NON-NLS-1$
     }
 
     /** alias */
-    public void testOptimize7() throws Exception {
+    @Test public void testOptimize7() throws Exception {
         helpTestOptimize("SELECT 'text' AS zz, pm1.g1.e2 FROM pm1.g1", //$NON-NLS-1$
                             FakeMetadataFactory.example1Cached(), 
                             "SELECT 'text' AS zz, e2 FROM pm1.g1"); //$NON-NLS-1$
     }
 
-    public void testOptimize8() throws Exception {
+    @Test public void testOptimize8() throws Exception {
         helpTestOptimize("SELECT 1, 'xyz'", //$NON-NLS-1$
                             FakeMetadataFactory.example1Cached(), 
                             "SELECT 1, 'xyz'"); //$NON-NLS-1$
@@ -129,37 +121,37 @@
         assertEquals("Expected different fully qualified string", expected, actual); //$NON-NLS-1$
     }
     
-    public void testFullyQualify1() throws Exception {
+    @Test public void testFullyQualify1() throws Exception {
         helpTestFullyQualify("SELECT e1, e2 FROM pm1.g1",  //$NON-NLS-1$
                             FakeMetadataFactory.example1Cached(), 
                             "SELECT pm1.g1.e1, pm1.g1.e2 FROM pm1.g1"); //$NON-NLS-1$
     }
     
-    public void testXMLQuery() throws Exception {
+    @Test public void testXMLQuery() throws Exception {
         helpTestOptimize("SELECT root.node1.node2.node3 FROM xmltest.doc1",  //$NON-NLS-1$
                             FakeMetadataFactory.example1Cached(), 
                             "SELECT root.node1.node2.node3 FROM xmltest.doc1"); //$NON-NLS-1$
     }
     
-    public void testVirtualStoredProcedure() throws Exception {
+    @Test public void testVirtualStoredProcedure() throws Exception {
         helpTestOptimize("EXEC pm1.vsp7(5)",  //$NON-NLS-1$
                             FakeMetadataFactory.example1Cached(), 
                             "EXEC pm1.vsp7(5)"); //$NON-NLS-1$
     }
 
-    public void testStoredQuerySubquery() throws Exception {
+    @Test public void testStoredQuerySubquery() throws Exception {
         helpTestOptimize("select x.e1 from (EXEC pm1.sq1()) as x",  //$NON-NLS-1$
                             FakeMetadataFactory.example1Cached(), 
                             "SELECT e1 FROM (EXEC pm1.sq1()) AS x"); //$NON-NLS-1$
     }
 
-    public void testStoredQuerySubquery2() throws Exception {
+    @Test public void testStoredQuerySubquery2() throws Exception {
         helpTestOptimize("select x.e1 from (EXEC pm1.sq1()) as x WHERE x.e2 = 3",  //$NON-NLS-1$
                             FakeMetadataFactory.example1Cached(), 
                             "SELECT e1 FROM (EXEC pm1.sq1()) AS x WHERE e2 = 3"); //$NON-NLS-1$
     }
     
-    public void testOptimizeOrderBy() throws Exception {
+    @Test public void testOptimizeOrderBy() throws Exception {
         helpTestOptimize("SELECT pm1.g1.e1 FROM pm1.g1 order by pm1.g1.e1",  //$NON-NLS-1$
                             FakeMetadataFactory.example1Cached(), 
                             "SELECT e1 FROM pm1.g1 ORDER BY e1"); //$NON-NLS-1$
@@ -169,13 +161,13 @@
      * It is by design that order by optimization only works in one direction.  It is not desirable to
      * fully qualify order by elements 
      */
-    public void testOptimizeOrderBy1() throws Exception {
+    @Test public void testOptimizeOrderBy1() throws Exception {
         helpTestFullyQualify("SELECT e1 FROM pm1.g1 order by e1",  //$NON-NLS-1$
                             FakeMetadataFactory.example1Cached(), 
                             "SELECT pm1.g1.e1 FROM pm1.g1 ORDER BY e1"); //$NON-NLS-1$
     }
     
-    public void testOptimizeOrderByWithoutGroup() throws Exception {
+    @Test public void testOptimizeOrderByWithoutGroup() throws Exception {
         helpTestOptimize("SELECT pm1.g1.e1, count(*) as x FROM pm1.g1 order by x",  //$NON-NLS-1$
                             FakeMetadataFactory.example1Cached(), 
                             "SELECT e1, COUNT(*) AS x FROM pm1.g1 ORDER BY x"); //$NON-NLS-1$

Modified: trunk/engine/src/test/java/org/teiid/query/sql/visitor/TestSQLStringVisitor.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/sql/visitor/TestSQLStringVisitor.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/sql/visitor/TestSQLStringVisitor.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -1120,7 +1120,6 @@
 
     public void testElementSymbol4() {
         ElementSymbol es = new ElementSymbol("vdb.m.g.elem", true); //$NON-NLS-1$
-        es.setGroupSymbol(new GroupSymbol("m.g")); //$NON-NLS-1$
         helpTest(es, "vdb.m.g.elem"); //$NON-NLS-1$
     }
     
@@ -1853,7 +1852,7 @@
     public void testLimit() {
         Query query = new Query();
         Select select = new Select(Arrays.asList(new Object[] {new AllSymbol()}));
-        From from = new From(Arrays.asList(new Object[] {new UnaryFromClause(new GroupSymbol("a"))})); //$NON-NLS-1$
+        From from = new From(Arrays.asList(new UnaryFromClause(new GroupSymbol("a")))); //$NON-NLS-1$
         query.setSelect(select);
         query.setFrom(from);
         query.setLimit(new Limit(null, new Constant(new Integer(100))));
@@ -1863,7 +1862,7 @@
     public void testLimitWithOffset() {
         Query query = new Query();
         Select select = new Select(Arrays.asList(new Object[] {new AllSymbol()}));
-        From from = new From(Arrays.asList(new Object[] {new UnaryFromClause(new GroupSymbol("a"))})); //$NON-NLS-1$
+        From from = new From(Arrays.asList(new UnaryFromClause(new GroupSymbol("a")))); //$NON-NLS-1$
         query.setSelect(select);
         query.setFrom(from);
         query.setLimit(new Limit(new Constant(new Integer(50)), new Constant(new Integer(100))));

Modified: trunk/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFacade.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFacade.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFacade.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -343,7 +343,7 @@
         procInfo.setProcedureID(procedureID);
         procInfo.setModelID(procedureID.getProperty(FakeMetadataObject.Props.MODEL));
         procInfo.setQueryPlan((QueryNode)procedureID.getProperty(FakeMetadataObject.Props.PLAN));
-        procInfo.setProcedureCallableName((String)procedureID.getProperty(FakeMetadataObject.Props.CALLABLE_NAME));
+        procInfo.setProcedureCallableName(fullyQualifiedProcedureName);
         procInfo.setUpdateCount(((Integer)procedureID.getProperty(FakeMetadataObject.Props.UPDATE_COUNT, new Integer(-1))).intValue());
 
         // Read params

Modified: trunk/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFactory.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFactory.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFactory.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -731,7 +731,7 @@
         
 		FakeMetadataObject rs3 = createResultSet("pm1.rs3", pm1, new String[] { "e1", "e2" }, new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
         FakeMetadataObject rs3p1 = createParameter("ret", 1, ParameterInfo.RESULT_SET, DataTypeManager.DefaultDataTypes.OBJECT, rs3);  //$NON-NLS-1$
-        FakeMetadataObject sp1 = createStoredProcedure("pm1.sp1", pm1, Arrays.asList(new FakeMetadataObject[] { rs3p1 }), "pm1.sp1");  //$NON-NLS-1$ //$NON-NLS-2$
+        FakeMetadataObject sp1 = createStoredProcedure("pm1.sp1", pm1, Arrays.asList(new FakeMetadataObject[] { rs3p1 }));  //$NON-NLS-1$ //$NON-NLS-2$
 
 		FakeMetadataObject rs4 = createResultSet("pm1.rs4", pm1, new String[] { "e1"}, new String[] { DataTypeManager.DefaultDataTypes.STRING }); //$NON-NLS-1$ //$NON-NLS-2$
         FakeMetadataObject rs4p1 = createParameter("ret", 1, ParameterInfo.RESULT_SET, DataTypeManager.DefaultDataTypes.OBJECT, rs4);  //$NON-NLS-1$
@@ -781,7 +781,7 @@
 		FakeMetadataObject rs13 = createResultSet("pm1.rs13", pm1, new String[] { "e1", "e2" }, new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
         FakeMetadataObject rs13p1 = createParameter("ret", 1, ParameterInfo.RESULT_SET, DataTypeManager.DefaultDataTypes.OBJECT, rs13);  //$NON-NLS-1$
         FakeMetadataObject rs13p2 = createParameter("in", 2, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.INTEGER, null);  //$NON-NLS-1$
-        FakeMetadataObject sp2 = createStoredProcedure("pm1.sp2", pm1, Arrays.asList(new FakeMetadataObject[] { rs13p1, rs13p2 }), "pm1.sp2");  //$NON-NLS-1$ //$NON-NLS-2$
+        FakeMetadataObject sp2 = createStoredProcedure("pm1.sp2", pm1, Arrays.asList(new FakeMetadataObject[] { rs13p1, rs13p2 }));  //$NON-NLS-1$ //$NON-NLS-2$
 
 		FakeMetadataObject rs14 = createResultSet("pm1.rs14", pm1, new String[] { "e1"}, new String[] { DataTypeManager.DefaultDataTypes.STRING}); //$NON-NLS-1$ //$NON-NLS-2$
         FakeMetadataObject rs14p1 = createParameter("ret", 1, ParameterInfo.RESULT_SET, DataTypeManager.DefaultDataTypes.OBJECT, rs14);  //$NON-NLS-1$
@@ -825,7 +825,7 @@
         QueryNode sq17n1 = new QueryNode("pm1.sq17", "CREATE VIRTUAL PROCEDURE BEGIN SELECT * FROM xmltest.doc1; END"); //$NON-NLS-1$ //$NON-NLS-2$
         FakeMetadataObject sq17 = createVirtualProcedure("pm1.sq17", pm1, Arrays.asList(new FakeMetadataObject[] { sq17p1 }), sq17n1);  //$NON-NLS-1$
 
-		FakeMetadataObject sp3 = createStoredProcedure("pm1.sp3", pm1, new ArrayList(), "pm1.sp3");  //$NON-NLS-1$ //$NON-NLS-2$
+		FakeMetadataObject sp3 = createStoredProcedure("pm1.sp3", pm1, new ArrayList());  //$NON-NLS-1$ //$NON-NLS-2$
 
         FakeMetadataObject rs20 = createResultSet("pm1.rs20", pm1, new String[] { "xml" }, new String[] { DataTypeManager.DefaultDataTypes.STRING }); //$NON-NLS-1$ //$NON-NLS-2$
         FakeMetadataObject sq18p1 = createParameter("ret", 1, ParameterInfo.RESULT_SET, DataTypeManager.DefaultDataTypes.OBJECT, rs20); //$NON-NLS-1$
@@ -839,10 +839,10 @@
         FakeMetadataObject sq19 = createVirtualProcedure("pm1.sq19", pm1, Arrays.asList(new FakeMetadataObject[] { sq19p1, sq19p2 }), sq19n1); //$NON-NLS-1$
 
         FakeMetadataObject rs22p2 = createParameter("in", 2, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.BIG_INTEGER, null);  //$NON-NLS-1$
-        FakeMetadataObject sp4 = createStoredProcedure("pm1.sp4", pm1, Arrays.asList(new FakeMetadataObject[] { rs13p1, rs22p2 }), "pm1.sp4");  //$NON-NLS-1$ //$NON-NLS-2$
+        FakeMetadataObject sp4 = createStoredProcedure("pm1.sp4", pm1, Arrays.asList(new FakeMetadataObject[] { rs13p1, rs22p2 }));  //$NON-NLS-1$ //$NON-NLS-2$
 
         // no params or result set at all
-        FakeMetadataObject sp5 = createStoredProcedure("pm1.sp5", pm1, Arrays.asList(new FakeMetadataObject[] {}), "pm1.sp5");  //$NON-NLS-1$ //$NON-NLS-2$
+        FakeMetadataObject sp5 = createStoredProcedure("pm1.sp5", pm1, Arrays.asList(new FakeMetadataObject[] {}));  //$NON-NLS-1$ //$NON-NLS-2$
 
         //virtual stored procedures
         FakeMetadataObject vsprs1 = createResultSet("pm1.vsprs1", pm1, new String[] { "e1" }, new String[] { DataTypeManager.DefaultDataTypes.STRING }); //$NON-NLS-1$ //$NON-NLS-2$
@@ -2331,7 +2331,7 @@
         FakeMetadataObject rs3p2 = FakeMetadataFactory.createParameter("in", 2, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.STRING, null);  //$NON-NLS-1$
         FakeMetadataObject rs3p3 = FakeMetadataFactory.createParameter("source_name", 3, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.STRING, null);  //$NON-NLS-1$
         rs3p3.putProperty(FakeMetadataObject.Props.NULL, Boolean.TRUE);
-        FakeMetadataObject sq2 = FakeMetadataFactory.createStoredProcedure("MultiModel.proc", physModel, Arrays.asList(new FakeMetadataObject[] { rs3p1, rs3p2, rs3p3 }), "MultiModel.proc");
+        FakeMetadataObject sq2 = FakeMetadataFactory.createStoredProcedure("MultiModel.proc", physModel, Arrays.asList(new FakeMetadataObject[] { rs3p1, rs3p2, rs3p3 }));
         rs3p2.putProperty(FakeMetadataObject.Props.GROUP, sq2);
         rs3p3.putProperty(FakeMetadataObject.Props.GROUP, sq2);
         
@@ -2979,14 +2979,12 @@
      * @param name Name of procedure, must match model name
      * @param model Metadata object for the model
      * @param params List of FakeMetadataObject that are the parameters for the procedure
-     * @param callableName Callable name of procedure, usually same as procedure name
      * @return Metadata object for stored procedure
      */
-    public static FakeMetadataObject createStoredProcedure(String name, FakeMetadataObject model, List params, String callableName) {
+    public static FakeMetadataObject createStoredProcedure(String name, FakeMetadataObject model, List params) {
         FakeMetadataObject obj = new FakeMetadataObject(name, FakeMetadataObject.PROCEDURE);
         obj.putProperty(FakeMetadataObject.Props.MODEL, model);
         obj.putProperty(FakeMetadataObject.Props.PARAMS, params);
-        obj.putProperty(FakeMetadataObject.Props.CALLABLE_NAME, callableName);
         
         return obj;    
     }

Modified: trunk/engine/src/test/java/org/teiid/query/unittest/FakeMetadataObject.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/unittest/FakeMetadataObject.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/unittest/FakeMetadataObject.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -206,7 +206,6 @@
         public static final String INSERT_PROCEDURE = "insertProcedure"; // string giving the insert procedure //$NON-NLS-1$
         public static final String UPDATE_PROCEDURE = "updateProcedure"; // string giving the update procedure //$NON-NLS-1$
         public static final String DELETE_PROCEDURE = "deleteProcedure"; // string giving the delete procedure //$NON-NLS-1$
-        public static final String CALLABLE_NAME = "callableName";       // string giving the callable name of the procedure //$NON-NLS-1$
         public static final String UPDATE_COUNT = "updateCount";       // integer giving the update count //$NON-NLS-1$
         
         // Parameter properties

Modified: trunk/engine/src/test/java/org/teiid/query/validator/TestValidator.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/validator/TestValidator.java	2011-03-21 14:11:08 UTC (rev 3013)
+++ trunk/engine/src/test/java/org/teiid/query/validator/TestValidator.java	2011-03-22 13:00:05 UTC (rev 3014)
@@ -1639,7 +1639,7 @@
         FakeMetadataObject resultSet = FakeMetadataFactory.createResultSet("pm1.rs", physicalModel, new String[] { "e1", "e2" }, new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
         FakeMetadataObject returnParam = FakeMetadataFactory.createParameter("ret", 1, ParameterInfo.RESULT_SET, DataTypeManager.DefaultDataTypes.OBJECT, resultSet);  //$NON-NLS-1$
         FakeMetadataObject inParam = FakeMetadataFactory.createParameter("in", 2, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.STRING, null);  //$NON-NLS-1$
-        FakeMetadataObject storedProcedure = FakeMetadataFactory.createStoredProcedure("pm1.sp", physicalModel, Arrays.asList(new FakeMetadataObject[] { returnParam, inParam }), "pm1.sp2");  //$NON-NLS-1$ //$NON-NLS-2$
+        FakeMetadataObject storedProcedure = FakeMetadataFactory.createStoredProcedure("pm1.sp", physicalModel, Arrays.asList(new FakeMetadataObject[] { returnParam, inParam }));  //$NON-NLS-1$ //$NON-NLS-2$
         
         FakeMetadataObject virtualModel = FakeMetadataFactory.createVirtualModel("vm1"); //$NON-NLS-1$
         FakeMetadataObject virtualResultSet = FakeMetadataFactory.createResultSet("vm1.rs", physicalModel, new String[] { "e1", "e2" }, new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$



More information about the teiid-commits mailing list