[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