teiid SVN: r3214 - in branches/7.4.x: engine/src/main/java/org/teiid/query/metadata and 12 other directories.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2011-06-03 15:07:41 -0400 (Fri, 03 Jun 2011)
New Revision: 3214
Added:
branches/7.4.x/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestRelate.java
branches/7.4.x/test-integration/common/src/test/resources/relate/
branches/7.4.x/test-integration/common/src/test/resources/relate/VehicleRentalsVDB.vdb
branches/7.4.x/test-integration/common/src/test/resources/relate/rentals.sql
branches/7.4.x/test-integration/common/src/test/resources/relate/test.h2.db
branches/7.4.x/test-integration/common/src/test/resources/relate/test.trace.db
branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365.expected
branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_compoundCritNestedTgt.expected
branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_crit.expected
branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_critNestedSrc.expected
branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_critNestedSrcCombinationContext.expected
branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_critNestedSrcContext.expected
branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_critNestedTgt.expected
branches/7.4.x/test-integration/common/src/test/resources/relate/testSharesDoc.expected
branches/7.4.x/test-integration/common/src/test/resources/relate/testSharesDocEspaceQuestion3.expected
branches/7.4.x/test-integration/common/src/test/resources/relate/testSharesDocWithCritTgt.expected
branches/7.4.x/test-integration/common/src/test/resources/relate/testSharesDocWithCritTgtContext.expected
Modified:
branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingVisitor.java
branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/ResultSetInfo.java
branches/7.4.x/engine/src/main/java/org/teiid/query/metadata/TempMetadataAdapter.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/CriteriaPlanner.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLNodeMappingVisitor.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLPlanToProcessVisitor.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLProjectionMinimizer.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLQueryPlanner.java
branches/7.4.x/engine/src/main/java/org/teiid/query/processor/xml/XMLContext.java
branches/7.4.x/engine/src/main/java/org/teiid/query/resolver/command/XMLQueryResolver.java
branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
branches/7.4.x/engine/src/main/java/org/teiid/query/sql/visitor/PredicateCollectorVisitor.java
branches/7.4.x/engine/src/main/resources/org/teiid/query/i18n.properties
branches/7.4.x/engine/src/test/java/org/teiid/query/processor/xml/TestXMLProcessor.java
branches/7.4.x/test-integration/common/pom.xml
branches/7.4.x/test-integration/common/src/test/java/org/teiid/jdbc/FakeServer.java
Log:
TEIID-1615 Adding a rough relate implementation and refining the handling of xml subqueries
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingVisitor.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingVisitor.java 2011-06-02 18:23:22 UTC (rev 3213)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingVisitor.java 2011-06-03 19:07:41 UTC (rev 3214)
@@ -40,6 +40,9 @@
return abort;
}
+ /**
+ * @param node
+ */
public void visit(MappingNode node) {}
public void visit(MappingDocument doc) {
@@ -80,14 +83,14 @@
*/
protected void walkChildNodes(MappingNode element) {
- List children = element.getNodeChildren();
- for(Iterator i=children.iterator(); i.hasNext();) {
+ List<MappingNode> children = element.getNodeChildren();
+ for(Iterator<MappingNode> i=children.iterator(); i.hasNext();) {
if (shouldAbort()) {
break;
}
- MappingNode node = (MappingNode)i.next();
+ MappingNode node = i.next();
node.acceptVisitor(this);
}
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/ResultSetInfo.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/ResultSetInfo.java 2011-06-02 18:23:22 UTC (rev 3213)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/ResultSetInfo.java 2011-06-03 19:07:41 UTC (rev 3214)
@@ -57,7 +57,7 @@
private Criteria criteria;
- private Set criteriaResultSets = new HashSet();
+ private Set<MappingSourceNode> criteriaResultSets = new HashSet<MappingSourceNode>();
private boolean criteriaRaised = false;
@@ -125,11 +125,11 @@
this.orderBy = orderBy;
}
- public Set getCriteriaResultSets() {
+ public Set<MappingSourceNode> getCriteriaResultSets() {
return this.criteriaResultSets;
}
- public void addToCriteriaResultSets(Set criteriaResultSets) {
+ public void addToCriteriaResultSets(Set<MappingSourceNode> criteriaResultSets) {
this.criteriaResultSets.addAll(criteriaResultSets);
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/metadata/TempMetadataAdapter.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/metadata/TempMetadataAdapter.java 2011-06-02 18:23:22 UTC (rev 3213)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/metadata/TempMetadataAdapter.java 2011-06-03 19:07:41 UTC (rev 3214)
@@ -37,6 +37,7 @@
import org.teiid.query.QueryPlugin;
import org.teiid.query.mapping.relational.QueryNode;
import org.teiid.query.mapping.xml.MappingNode;
+import org.teiid.query.metadata.TempMetadataID.Type;
/**
@@ -497,7 +498,7 @@
throws TeiidComponentException, QueryMetadataException {
if(groupID instanceof TempMetadataID) {
- return false;
+ return ((TempMetadataID)groupID).getMetadataType() == Type.XML;
}
return this.actualMetadata.isXMLGroup(groupID);
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/CriteriaPlanner.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/CriteriaPlanner.java 2011-06-02 18:23:22 UTC (rev 3213)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/CriteriaPlanner.java 2011-06-03 19:07:41 UTC (rev 3214)
@@ -101,7 +101,7 @@
context = planEnv.mappingDoc;
}
- Set<MappingNode> sourceNodes = collectSourceNodesInConjunct(conjunct, context, planEnv.mappingDoc);
+ Set<MappingSourceNode> sourceNodes = collectSourceNodesInConjunct(conjunct, context, planEnv.mappingDoc);
//TODO: this can be replaced with method on the source node?
MappingSourceNode criteriaRs = findRootResultSetNode(context, sourceNodes, criteria);
@@ -117,11 +117,11 @@
/**
* This method collects all the MappingSourceNode(s) at or below the context given.
*/
- private static Set<MappingNode> collectSourceNodesInConjunct(Criteria conjunct, MappingNode context, MappingDocument mappingDoc)
+ private static Set<MappingSourceNode> collectSourceNodesInConjunct(Criteria conjunct, MappingNode context, MappingDocument mappingDoc)
throws QueryPlannerException {
Collection<ElementSymbol> elements = ElementCollectorVisitor.getElements(conjunct, true);
- Set<MappingNode> resultSets = new HashSet<MappingNode>();
+ Set<MappingSourceNode> resultSets = new HashSet<MappingSourceNode>();
String contextFullName = context.getFullyQualifiedName().toUpperCase();
@@ -131,7 +131,7 @@
MappingNode node = MappingNode.findNode(mappingDoc, elementFullName);
- MappingNode elementRsNode = node.getSourceNode();
+ MappingSourceNode elementRsNode = node.getSourceNode();
if (elementRsNode == null) {
throw new QueryPlannerException(QueryPlugin.Util.getString("CriteriaPlanner.invalid_element", elementSymbol)); //$NON-NLS-1$
}
@@ -155,7 +155,7 @@
return resultSets;
}
- private static MappingSourceNode findRootResultSetNode(MappingNode context, Set<MappingNode> resultSets, Criteria criteria)
+ private static MappingSourceNode findRootResultSetNode(MappingNode context, Set<MappingSourceNode> resultSets, Criteria criteria)
throws QueryPlannerException {
if (context instanceof MappingSourceNode) {
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLNodeMappingVisitor.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLNodeMappingVisitor.java 2011-06-02 18:23:22 UTC (rev 3213)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLNodeMappingVisitor.java 2011-06-03 19:07:41 UTC (rev 3214)
@@ -33,8 +33,6 @@
import org.teiid.query.mapping.xml.MappingNode;
import org.teiid.query.mapping.xml.MappingSourceNode;
import org.teiid.query.metadata.QueryMetadataInterface;
-import org.teiid.query.metadata.TempMetadataID;
-import org.teiid.query.resolver.util.ResolverVisitor;
import org.teiid.query.sql.LanguageObject;
import org.teiid.query.sql.lang.Criteria;
import org.teiid.query.sql.navigator.PreOrPostOrderNavigator;
@@ -63,6 +61,11 @@
this.metadata = metadata;
}
+ @Override
+ protected boolean createAliases() {
+ return false; //xml style selects do not have aliases
+ }
+
/**
* @see AbstractSymbolMappingVisitor#getMappedSymbol(Symbol)
*/
@@ -80,7 +83,7 @@
groupId = element.getGroupSymbol().getMetadataID();
}
boolean xml = metadata.isXMLGroup(groupId);
- if (!xml && !((groupId instanceof TempMetadataID) && ((TempMetadataID)groupId).getMetadataType() == TempMetadataID.Type.XML)) {
+ if (!xml) {
return symbol;
}
String path = metadata.getFullName(metadataId).toUpperCase();
@@ -96,9 +99,6 @@
}
if (symbol instanceof GroupSymbol) {
GroupSymbol gs = msn.getMappedSymbol(new GroupSymbol(msn.getResultName()));
- if (!xml && gs.getMetadataID() == null) {
- ResolverVisitor.resolveLanguageObject(gs, metadata);
- }
return gs;
}
// Construct a new element node based on mapping node reference
@@ -107,14 +107,6 @@
return null;
}
ElementSymbol es = msn.getMappedSymbol(new ElementSymbol(symbolName));
- if (!xml) {
- if (((ElementSymbol)symbol).isExternalReference()) {
- es.setIsExternalReference(true);
- }
- if (es.getMetadataID() == null) {
- ResolverVisitor.resolveLanguageObject(es, metadata);
- }
- }
return es;
} catch (TeiidException err) {
throw new TeiidRuntimeException(err);
@@ -140,7 +132,7 @@
//Don't want to do deep visiting
XMLNodeMappingVisitor mappingVisitor = new XMLNodeMappingVisitor(rootNode, metadata);
try {
- PreOrPostOrderNavigator.doVisit(object, mappingVisitor, PreOrPostOrderNavigator.PRE_ORDER, deep);
+ PreOrPostOrderNavigator.doVisit(object, mappingVisitor, PreOrPostOrderNavigator.POST_ORDER, deep);
} catch (TeiidRuntimeException e) {
Throwable child = e.getChild();
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLPlanToProcessVisitor.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLPlanToProcessVisitor.java 2011-06-02 18:23:22 UTC (rev 3213)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLPlanToProcessVisitor.java 2011-06-03 19:07:41 UTC (rev 3214)
@@ -67,7 +67,7 @@
*/
public class XMLPlanToProcessVisitor implements MappingInterceptor {
- Stack programStack = new Stack();
+ Stack<Program> programStack = new Stack<Program>();
XMLPlannerEnvironment planEnv;
Program originalProgram ;
Program cleanupProgram = new Program();
@@ -83,14 +83,14 @@
public void end(MappingDocument doc, Map context) {
// remove the current program from the stack; we no longer need this
- originalProgram=(Program)this.programStack.pop();
+ originalProgram=this.programStack.pop();
// cleanup program will have instructions to unload the staging table.
originalProgram.addInstructions(cleanupProgram);
}
public void start(MappingAttribute attribute, Map context){
- Program currentProgram = (Program)this.programStack.peek();
+ Program currentProgram = this.programStack.peek();
ProcessorInstruction tagInst = TagBuilderVisitor.buildTag(attribute);
if (tagInst != null) {
currentProgram.addInstruction(tagInst);
@@ -101,7 +101,7 @@
}
public void start(MappingCommentNode comment, Map context){
- Program currentProgram = (Program)this.programStack.peek();
+ Program currentProgram = this.programStack.peek();
ProcessorInstruction tagInst = TagBuilderVisitor.buildTag(comment);
if (tagInst != null) {
currentProgram.addInstruction(tagInst);
@@ -136,7 +136,7 @@
// process the node as others (if see we have not done anything for this node yet..)
commonStart(choice, context);
- Program currentProgram = (Program)this.programStack.peek();
+ Program currentProgram = this.programStack.peek();
currentProgram.addInstruction(ifInst);
}
@@ -195,10 +195,10 @@
private void endRootRecursive(MappingBaseNode node, Map context) {
// add the recursive program to the main program.
- Program recursiveProgram = (Program)programStack.pop();
+ Program recursiveProgram = programStack.pop();
// this is the main program
- Program currentProgram = (Program)this.programStack.peek();
+ Program currentProgram = this.programStack.peek();
currentProgram.addInstructions(recursiveProgram);
context.remove(node.getRecursionId());
@@ -213,7 +213,7 @@
public void start(MappingElement element, Map context){
//commonStart(element, context);
- Program currentProgram = (Program)programStack.peek();
+ Program currentProgram = programStack.peek();
// if we are dealing with multiple documents
startFragment(currentProgram, element);
@@ -226,13 +226,13 @@
// If there are more children under this node move the cursor down
if (!element.getChildren().isEmpty()) {
// update the program pointer
- currentProgram = (Program)programStack.peek();
+ currentProgram = programStack.peek();
currentProgram.addInstruction(new MoveDocInstruction(MoveDocInstruction.DOWN));
}
}
public void end(MappingElement element, Map context){
- Program currentProgram = (Program)this.programStack.peek();
+ Program currentProgram = this.programStack.peek();
// If there were more children under this node move the cursor up
if (!element.getChildren().isEmpty()) {
@@ -242,14 +242,14 @@
commonEnd(element, context);
// update the program pointer
- currentProgram = (Program)programStack.peek();
+ currentProgram = programStack.peek();
// if we are dealing with multiple documents
endFragment(currentProgram, element);
}
public void start(MappingSourceNode node, Map context) {
- Program currentProgram = (Program)programStack.peek();
+ Program currentProgram = programStack.peek();
commonStart(node, context);
@@ -286,7 +286,7 @@
}
public void end(MappingSourceNode node, Map context) {
- Program currentProgram = (Program)programStack.peek();
+ Program currentProgram = programStack.peek();
String source = node.getActualResultSetName();
ResultSetInfo info= node.getResultSetInfo();
@@ -328,7 +328,7 @@
List<String> stagingTables = node.getStagingTables();
for (String table : stagingTables) {
- Program currentProgram = (Program)programStack.peek();
+ Program currentProgram = programStack.peek();
// load staging
currentProgram.addInstruction(new ExecStagingTableInstruction(table, planEnv.getStagingTableResultsInfo(table)));
@@ -347,7 +347,7 @@
}
public void start(final MappingRecursiveElement element, Map context){
- Program currentProgram = (Program)programStack.peek();
+ Program currentProgram = programStack.peek();
// if we are dealing with multiple documents
startFragment(currentProgram, element);
@@ -367,7 +367,7 @@
}
public void end(final MappingRecursiveElement element, Map context){
- Program currentProgram = (Program)programStack.peek();
+ Program currentProgram = programStack.peek();
// if we are dealing with multiple documents
endFragment(currentProgram, element);
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLProjectionMinimizer.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLProjectionMinimizer.java 2011-06-02 18:23:22 UTC (rev 3213)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLProjectionMinimizer.java 2011-06-03 19:07:41 UTC (rev 3214)
@@ -101,13 +101,13 @@
Collection<ElementSymbol> bindings = QueryUtil.getBindingElements(node);
MappingSourceNode parent = element.getParentSourceNode();
- parent = collectElementSymbols(element, bindings, parent);
+ collectElementSymbols(element, bindings, parent);
} catch (TeiidException e) {
throw new TeiidRuntimeException(e);
}
}
- private MappingSourceNode collectElementSymbols(
+ private void collectElementSymbols(
MappingSourceNode element,
Collection<ElementSymbol> bindings, MappingSourceNode parent) {
for (ElementSymbol elementSymbol : bindings) {
@@ -122,7 +122,6 @@
parent = parent.getParentSourceNode();
}
}
- return parent;
}
@Override
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLQueryPlanner.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLQueryPlanner.java 2011-06-02 18:23:22 UTC (rev 3213)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLQueryPlanner.java 2011-06-03 19:07:41 UTC (rev 3214)
@@ -68,18 +68,39 @@
import org.teiid.query.sql.lang.Limit;
import org.teiid.query.sql.lang.Query;
import org.teiid.query.sql.lang.QueryCommand;
+import org.teiid.query.sql.lang.SubqueryContainer;
import org.teiid.query.sql.lang.SubqueryFromClause;
import org.teiid.query.sql.lang.UnaryFromClause;
import org.teiid.query.sql.symbol.Constant;
import org.teiid.query.sql.symbol.ElementSymbol;
import org.teiid.query.sql.symbol.GroupSymbol;
import org.teiid.query.sql.symbol.Reference;
+import org.teiid.query.sql.visitor.ElementCollectorVisitor;
+import org.teiid.query.sql.visitor.GroupsUsedByElementsVisitor;
+import org.teiid.query.sql.visitor.PredicateCollectorVisitor;
import org.teiid.query.sql.visitor.StaticSymbolMappingVisitor;
public class XMLQueryPlanner {
- static void prePlanQueries(MappingDocument doc, final XMLPlannerEnvironment planEnv)
+ private static final class MappingSourceNodeFinder extends MappingVisitor {
+ private final GroupSymbol gs;
+ MappingSourceNode msn;
+
+ private MappingSourceNodeFinder(GroupSymbol gs) {
+ this.gs = gs;
+ }
+
+ @Override
+ public void visit(MappingSourceNode element) {
+ if (element.getAliasResultName() == null && element.getResultSetInfo().getResultSetName().equalsIgnoreCase(gs.getNonCorrelationName())) {
+ msn = element;
+ setAbort(true);
+ }
+ }
+ }
+
+ static void prePlanQueries(MappingDocument doc, final XMLPlannerEnvironment planEnv)
throws QueryPlannerException, QueryMetadataException, TeiidComponentException {
MappingVisitor queryPlanVisitor = new MappingVisitor() {
@@ -221,12 +242,12 @@
/**
* The Criteria Source nodes are source nodes underneath the context Node.
*/
- private static boolean getResultSets(MappingSourceNode contextNode, Set criteriaSourceNodes, LinkedHashSet<MappingSourceNode> allResultSets) {
+ private static boolean getResultSets(MappingSourceNode contextNode, Set<MappingSourceNode> criteriaSourceNodes, LinkedHashSet<MappingSourceNode> allResultSets) {
boolean singleParentage = true;
- for (Iterator i = criteriaSourceNodes.iterator(); i.hasNext();) {
- MappingSourceNode node = (MappingSourceNode)i.next();
+ for (Iterator<MappingSourceNode> i = criteriaSourceNodes.iterator(); i.hasNext();) {
+ MappingSourceNode node = i.next();
List<MappingSourceNode> rsStack = getResultSetStack(contextNode, node);
@@ -364,8 +385,80 @@
GroupSymbol groupSymbol = QueryUtil.createResolvedGroup(rsInfo.getResultSetName(), planEnv.getGlobalMetadata());
planEnv.addQueryNodeToMetadata(groupSymbol.getMetadataID(), modifiedNode);
}
+
+ for (Criteria crit : PredicateCollectorVisitor.getPredicates(userCrit)) {
+ handleXmlSubqueries(planEnv, crit);
+ }
}
+ private static void handleXmlSubqueries(XMLPlannerEnvironment planEnv,
+ Criteria userCrit) throws QueryPlannerException {
+ if (!(userCrit instanceof SubqueryContainer<?>)) {
+ return;
+ }
+ SubqueryContainer<?> subquery = (SubqueryContainer<?>)userCrit;
+ if (!(subquery.getCommand() instanceof Query)) {
+ return;
+ }
+ Query q = (Query)subquery.getCommand();
+ if (q.getFrom() == null || q.getCriteria() == null) {
+ return;
+ }
+ List<GroupSymbol> groups = q.getFrom().getGroups();
+ if (groups.size() != 1) {
+ return;
+ }
+ final GroupSymbol gs = groups.get(0);
+ LinkedHashSet<GroupSymbol> allGroups = new LinkedHashSet<GroupSymbol>();
+ allGroups.add(gs);
+ //TODO: this group should have been marked as xml, or could attempt this step prior to place user criteria
+ if (planEnv.getGlobalMetadata().getMetadataStore().getTempGroupID(gs.getNonCorrelationName().toUpperCase()) == null) {
+ return;
+ }
+ MappingSourceNode parentMsn = findMappingSourceNode(planEnv, gs);
+ for (Criteria crit : PredicateCollectorVisitor.getPredicates(q.getCriteria())) {
+ Collection<ElementSymbol> elems = ElementCollectorVisitor.getElements(crit, false);
+ Collection<GroupSymbol> critGroups = new LinkedList<GroupSymbol>();
+ for (ElementSymbol elementSymbol : elems) {
+ if (!elementSymbol.isExternalReference()) {
+ critGroups.add(elementSymbol.getGroupSymbol());
+ }
+ }
+ for (GroupSymbol groupSymbol : critGroups) {
+ if (allGroups.contains(groupSymbol)) {
+ continue;
+ }
+ MappingSourceNode childMsn = findMappingSourceNode(planEnv, groupSymbol);
+ while (childMsn != parentMsn) {
+ if (childMsn == null) {
+ throw new QueryPlannerException(QueryPlugin.Util.getString("XMLQueryPlanner.invalid_relationship", crit, parentMsn)); //$NON-NLS-1$
+ }
+ if (!childMsn.getResultSetInfo().isCriteriaRaised()) {
+ throw new QueryPlannerException(QueryPlugin.Util.getString("XMLQueryPlanner.non_simple_relationship", crit, childMsn)); //$NON-NLS-1$
+ }
+ Query parentQuery = (Query)childMsn.getResultSetInfo().getCommand();
+ if (parentQuery.getCriteria() != null
+ && allGroups.addAll(GroupsUsedByElementsVisitor.getGroups(parentQuery.getCriteria()))) {
+ q.setCriteria(Criteria.combineCriteria(q.getCriteria(), (Criteria) parentQuery.getCriteria().clone()));
+ }
+ childMsn = childMsn.getParentSourceNode();
+ }
+ }
+ q.getFrom().getClauses().clear();
+ for (GroupSymbol groupSymbol : allGroups) {
+ q.getFrom().addClause(new UnaryFromClause(groupSymbol));
+ }
+ handleXmlSubqueries(planEnv, crit);
+ }
+ }
+
+ private static MappingSourceNode findMappingSourceNode(
+ XMLPlannerEnvironment planEnv, final GroupSymbol gs) {
+ MappingSourceNodeFinder finder = new MappingSourceNodeFinder(gs);
+ planEnv.mappingDoc.acceptVisitor(new Navigator(true, finder));
+ return finder.msn;
+ }
+
private static void updateSymbolMap(Map symbolMap, String oldGroup, final String newGroup, QueryMetadataInterface metadata)
throws QueryResolverException,QueryMetadataException,TeiidComponentException {
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/processor/xml/XMLContext.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/processor/xml/XMLContext.java 2011-06-02 18:23:22 UTC (rev 3213)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/processor/xml/XMLContext.java 2011-06-03 19:07:41 UTC (rev 3214)
@@ -43,12 +43,12 @@
class XMLContext {
// map between variables and their values
- Map resultsMap = new HashMap();
+ Map<String, PlanExecutor> resultsMap = new HashMap<String, PlanExecutor>();
// reference to the parent variable context
XMLContext parentContext;
- Map executorMap = new HashMap();
+ Map<String, PlanExecutor> executorMap = new HashMap<String, PlanExecutor>();
VariableContext variableContext = new VariableContext();
@@ -56,14 +56,12 @@
* Constructor for VariableContext.
*/
public XMLContext() {
- this.resultsMap = new HashMap();
}
/**
* Constructor for VariableContext.
*/
public XMLContext(XMLContext parent) {
- this.resultsMap = new HashMap();
this.parentContext = parent;
this.variableContext.setParentContext(parent.variableContext);
}
@@ -77,8 +75,8 @@
* @param aliasResultName
* @return
*/
- public List getCurrentRow(String aliasResultName) throws TeiidComponentException, TeiidProcessingException {
- PlanExecutor executor = (PlanExecutor)this.resultsMap.get(aliasResultName);
+ public List<?> getCurrentRow(String aliasResultName) throws TeiidComponentException, TeiidProcessingException {
+ PlanExecutor executor = this.resultsMap.get(aliasResultName);
if (executor == null) {
if (this.parentContext != null) {
return this.parentContext.getCurrentRow(aliasResultName);
@@ -94,8 +92,8 @@
* @return
* @throws TeiidComponentException
*/
- public List getNextRow(String aliasResultName) throws TeiidComponentException, TeiidProcessingException {
- PlanExecutor executor = (PlanExecutor)this.resultsMap.get(aliasResultName);
+ public List<?> getNextRow(String aliasResultName) throws TeiidComponentException, TeiidProcessingException {
+ PlanExecutor executor = this.resultsMap.get(aliasResultName);
if (executor == null) {
if (this.parentContext != null) {
return this.parentContext.getNextRow(aliasResultName);
@@ -119,7 +117,7 @@
* as there may be another resultset with same name. (recursive condition)
*/
public void removeResultSet(String resultName) throws TeiidComponentException {
- PlanExecutor executor = (PlanExecutor)this.resultsMap.remove(resultName);
+ PlanExecutor executor = this.resultsMap.remove(resultName);
if (executor != null) {
executor.close();
}
@@ -132,8 +130,8 @@
* @return
* @throws TeiidComponentException
*/
- public List getOutputElements(String resultName) throws TeiidComponentException {
- PlanExecutor executor = (PlanExecutor)this.resultsMap.get(resultName);
+ public List<?> getOutputElements(String resultName) throws TeiidComponentException {
+ PlanExecutor executor = this.resultsMap.get(resultName);
if (executor == null) {
if (this.parentContext != null) {
return this.parentContext.getOutputElements(resultName);
@@ -160,7 +158,7 @@
* @return
*/
public PlanExecutor getResultExecutor(String resultName) {
- return (PlanExecutor)this.executorMap.get(resultName);
+ return this.executorMap.get(resultName);
}
/**
@@ -186,7 +184,7 @@
void setVariableValues(String resultSetName,
- List row) throws TeiidComponentException {
+ List<?> row) throws TeiidComponentException {
List elements = getOutputElements(resultSetName);
for (int index = 0; index < elements.size(); index++) {
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/resolver/command/XMLQueryResolver.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/resolver/command/XMLQueryResolver.java 2011-06-02 18:23:22 UTC (rev 3213)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/resolver/command/XMLQueryResolver.java 2011-06-03 19:07:41 UTC (rev 3214)
@@ -25,23 +25,26 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
-import java.util.Map;
import java.util.TreeMap;
import org.teiid.api.exception.query.QueryMetadataException;
import org.teiid.api.exception.query.QueryResolverException;
import org.teiid.core.TeiidComponentException;
+import org.teiid.core.TeiidRuntimeException;
+import org.teiid.core.util.StringUtil;
import org.teiid.query.QueryPlugin;
+import org.teiid.query.mapping.xml.MappingAttribute;
+import org.teiid.query.mapping.xml.MappingBaseNode;
import org.teiid.query.mapping.xml.MappingDocument;
-import org.teiid.query.mapping.xml.MappingNode;
-import org.teiid.query.mapping.xml.MappingSourceNode;
+import org.teiid.query.mapping.xml.MappingElement;
+import org.teiid.query.mapping.xml.MappingVisitor;
+import org.teiid.query.mapping.xml.Navigator;
import org.teiid.query.metadata.QueryMetadataInterface;
import org.teiid.query.metadata.TempMetadataAdapter;
+import org.teiid.query.metadata.TempMetadataStore;
import org.teiid.query.metadata.TempMetadataID.Type;
-import org.teiid.query.optimizer.xml.SourceNodeGenaratorVisitor;
import org.teiid.query.resolver.CommandResolver;
import org.teiid.query.resolver.QueryResolver;
import org.teiid.query.resolver.util.ResolverUtil;
@@ -61,7 +64,6 @@
import org.teiid.query.sql.symbol.ExpressionSymbol;
import org.teiid.query.sql.symbol.GroupSymbol;
import org.teiid.query.sql.symbol.SelectSymbol;
-import org.teiid.query.sql.symbol.SingleElementSymbol;
import org.teiid.query.sql.visitor.ElementCollectorVisitor;
import org.teiid.query.sql.visitor.GroupCollectorVisitor;
import org.teiid.query.sql.visitor.ValueIteratorProviderCollectorVisitor;
@@ -71,6 +73,49 @@
*/
public class XMLQueryResolver implements CommandResolver {
+ private final class SubSelectVisitor extends MappingVisitor {
+ private final List<ElementSymbol> selectElems;
+ private final ResolvingNode root;
+ private final String mc;
+ private String source;
+
+ private SubSelectVisitor(List<ElementSymbol> selectElems,
+ ResolvingNode root, String mc) {
+ this.selectElems = selectElems;
+ this.root = root;
+ this.mc = mc;
+ }
+
+ @Override
+ public void visit(MappingBaseNode baseNode) {
+ if (baseNode.getSource() != null && baseNode.getFullyQualifiedName().equalsIgnoreCase(mc)) {
+ source = baseNode.getSource();
+ }
+ }
+
+ @Override
+ public void visit(MappingElement element) {
+ visit((MappingBaseNode)element);
+ String nis = element.getNameInSource();
+ getMappingClassColumn(nis, element.getFullyQualifiedName());
+ }
+
+ private void getMappingClassColumn(String nis, String fqn) {
+ if (nis == null || source == null) {
+ return;
+ }
+ String name = nis.substring(0, nis.lastIndexOf('.'));
+ if (source.equalsIgnoreCase(name)) {
+ selectElems.add(root.find(fqn));
+ }
+ }
+
+ @Override
+ public void visit(MappingAttribute attribute) {
+ getMappingClassColumn(attribute.getNameInSource(), attribute.getFullyQualifiedName());
+ }
+ }
+
private static final class ResolvingNode {
ElementSymbol elementSymbol;
TreeMap<String, ResolvingNode> children = new TreeMap<String, ResolvingNode>(String.CASE_INSENSITIVE_ORDER);
@@ -106,6 +151,31 @@
return values;
}
+ public ElementSymbol find(String name) {
+ int index = name.lastIndexOf('.');
+ String part = name;
+ if (index > 0) {
+ part = name.substring(index + 1, name.length());
+ name = name.substring(0, index);
+ } else {
+ name = null;
+ }
+ ResolvingNode r = children.get(part);
+ if (r == null) {
+ return null;
+ }
+ if (name == null) {
+ return r.elementSymbol;
+ }
+ return r.find(name);
+ }
+
+ public void addAll(Collection<ElementSymbol> elems) {
+ for (ElementSymbol es : elems) {
+ this.add(es.getName(), es);
+ }
+ }
+
public List<ElementSymbol> values() {
return values(new LinkedList<ElementSymbol>());
}
@@ -116,32 +186,53 @@
*/
public void resolveCommand(Command command, TempMetadataAdapter metadata, boolean resolveNullLiterals)
throws QueryMetadataException, QueryResolverException, TeiidComponentException {
+ resolveCommand((Query)command, null, metadata);
+ }
- Query query = (Query) command;
-
+ public void resolveCommand(Query query, GroupSymbol docGroup, TempMetadataAdapter metadata)
+ throws QueryMetadataException, QueryResolverException, TeiidComponentException {
// set isXML flag
- query.setIsXML(true);
+ query.setIsXML(docGroup == null);
// get the group on this query
Collection<GroupSymbol> groups = GroupCollectorVisitor.getGroups(query, true);
GroupSymbol group = groups.iterator().next();
+ boolean subQuery = true;
+ if (docGroup == null) {
+ docGroup = group;
+ subQuery = false;
+ }
+
+ if (subQuery && group.getDefinition() != null) {
+ throw new QueryResolverException(QueryPlugin.Util.getString("XMLQueryResolver.aliased_subquery", group)); //$NON-NLS-1$
+ }
+
//external groups
GroupContext externalGroups = query.getExternalGroupContexts();
// valid elements for select
- List<ElementSymbol> validSelectElems = ResolverUtil.resolveElementsInGroup(group, metadata);
- ResolvingNode root = new ResolvingNode();
- for (ElementSymbol elementSymbol : validSelectElems) {
- root.add(elementSymbol.getName(), elementSymbol);
- }
- resolveXMLSelect(query, group, root, metadata);
+ List<ElementSymbol> validElems = ResolverUtil.resolveElementsInGroup(docGroup, metadata);
+ final ResolvingNode root = new ResolvingNode();
+ ResolvingNode selectRoot = root;
+ if (subQuery) {
+ validElems = getElementsUnderNode(group.getMetadataID(), validElems, metadata);
+ }
+ root.addAll(validElems);
+ if (subQuery) {
+ //the select can only be to the mapping class itself
+ MappingDocument doc = (MappingDocument) metadata.getMappingNode(docGroup.getMetadataID());
+ final String mc = group.getNonCorrelationName();
+ List<ElementSymbol> selectElems = new LinkedList<ElementSymbol>();
+ doc.acceptVisitor(new Navigator(true, new SubSelectVisitor(selectElems, root, mc)));
+ selectRoot = new ResolvingNode();
+ selectRoot.addAll(selectElems);
+ }
+
+ resolveXMLSelect(subQuery, query, group, selectRoot, metadata);
// valid elements for criteria and order by
- Collection<ElementSymbol> validCriteriaElements = collectTempElements(group, metadata);
- for (ElementSymbol elementSymbol : validCriteriaElements) {
- root.add(elementSymbol.getName(), elementSymbol);
- }
+ root.addAll(collectTempElements(group, metadata));
Criteria crit = query.getCriteria();
OrderBy orderBy = query.getOrderBy();
@@ -149,11 +240,17 @@
if(crit != null) {
List<SubqueryContainer> commands = ValueIteratorProviderCollectorVisitor.getValueIteratorProviders(crit);
if (!commands.isEmpty()) {
- addPseudoSubqueryGroups(metadata, group, validSelectElems);
+ TempMetadataAdapter tma = new TempMetadataAdapter(metadata, new TempMetadataStore());
+ if (!subQuery) {
+ addPseudoSubqueryGroups(tma, group, docGroup);
+ }
for (SubqueryContainer subCommand : commands) {
- QueryResolver.setChildMetadata(subCommand.getCommand(), command);
-
- QueryResolver.resolveCommand(subCommand.getCommand(), metadata.getMetadata());
+ QueryResolver.setChildMetadata(subCommand.getCommand(), query);
+ if (subCommand.getCommand() instanceof Query && QueryResolver.isXMLQuery((Query)subCommand.getCommand(), tma)) {
+ resolveCommand((Query)subCommand.getCommand(), docGroup, tma);
+ } else {
+ QueryResolver.resolveCommand(subCommand.getCommand(), metadata.getMetadata());
+ }
}
}
@@ -177,60 +274,32 @@
}
}
- private void addPseudoSubqueryGroups(TempMetadataAdapter metadata,
- GroupSymbol group, List<ElementSymbol> validSelectElems)
- throws TeiidComponentException, QueryMetadataException,
- QueryResolverException {
+ private void addPseudoSubqueryGroups(final TempMetadataAdapter metadata,
+ GroupSymbol group, GroupSymbol docGroup)
+ throws TeiidComponentException, QueryMetadataException {
/*
* The next section of resolving logic adds in pseduo groups that can be used
* in subqueries
*/
- MappingDocument doc = (MappingDocument) metadata.getMappingNode(group.getMetadataID());
- doc = doc.clone();
- doc = SourceNodeGenaratorVisitor.extractSourceNodes(doc);
+ MappingDocument doc = (MappingDocument) metadata.getMappingNode(docGroup.getMetadataID());
- HashMap<String, List<ElementSymbol>> psuedoGroups = new HashMap<String, List<ElementSymbol>>();
- for (ElementSymbol elementSymbol : validSelectElems) {
- MappingNode node = MappingNode.findNode(doc, elementSymbol.getCanonicalName());
- if (node == null) {
- continue;
- }
- MappingSourceNode mappingSourceNode = node.getSourceNode();
- if (mappingSourceNode == null) {
- continue;
- }
- String mappingClass = mappingSourceNode.getSource();
- String tableName = SingleElementSymbol.getShortName(mappingClass);
-
- String name = elementSymbol.getName();
- int index = name.lastIndexOf('.');
- String xmlTableName = name.substring(0, index);
- if (!xmlTableName.endsWith(tableName)) {
- continue;
- }
- List<ElementSymbol> elements = psuedoGroups.get(xmlTableName);
- if (elements == null) {
- elements = new ArrayList<ElementSymbol>();
- psuedoGroups.put(xmlTableName, elements);
- }
- ElementSymbol es = new ElementSymbol(name.substring(index+1, name.length()));
- es.setType(elementSymbol.getType());
- es.setMetadataID(elementSymbol.getMetadataID());
- elements.add(es);
- }
-
- for (Map.Entry<String, List<ElementSymbol>> entry : psuedoGroups.entrySet()) {
- for (ElementSymbol elem : new ArrayList<ElementSymbol>(entry.getValue())) {
- if (elem.getName().charAt(0) == '@') {
- ElementSymbol alias = elem.clone();
- alias.setShortName(elem.getName().substring(1));
- if (!entry.getValue().contains(alias)) {
- entry.getValue().add(alias);
+ final String prefix = group.getNonCorrelationName() + ElementSymbol.SEPARATOR;
+
+ doc.acceptVisitor(new Navigator(true, new MappingVisitor() {
+ @Override
+ public void visit(MappingBaseNode baseNode) {
+ if (baseNode.getSource() == null) {
+ return;
+ }
+ if (StringUtil.startsWithIgnoreCase(baseNode.getFullyQualifiedName(), prefix)) {
+ try {
+ ResolverUtil.addTempGroup(metadata, new GroupSymbol(baseNode.getFullyQualifiedName()), Collections.EMPTY_LIST, false).setMetadataType(Type.XML);
+ } catch (QueryResolverException e) {
+ throw new TeiidRuntimeException(e);
}
- }
- }
- ResolverUtil.addTempGroup(metadata, new GroupSymbol(entry.getKey()), entry.getValue(), false).setMetadataType(Type.XML);
- }
+ }
+ }
+ }));
}
/**
@@ -244,7 +313,7 @@
* @throws QueryMetadataException if resolving fails
* @throws TeiidComponentException if resolving fails
*/
- void resolveXMLSelect(Query query, GroupSymbol group, ResolvingNode validElements, QueryMetadataInterface metadata)
+ void resolveXMLSelect(boolean subquery, Query query, GroupSymbol group, ResolvingNode validElements, QueryMetadataInterface metadata)
throws QueryMetadataException, TeiidComponentException, QueryResolverException {
GroupContext externalGroups = null;
@@ -269,7 +338,7 @@
// There are other cases of "xml", such as, element name = "xml",
// but those are ok because those will be resolved later as normal elements
String symbolName = ss.getName();
- if(symbolName.equalsIgnoreCase("xml") || symbolName.equalsIgnoreCase(group.getName() + ".xml")) { //$NON-NLS-1$ //$NON-NLS-2$
+ if(!subquery && (symbolName.equalsIgnoreCase("xml") || symbolName.equalsIgnoreCase(group.getName() + ".xml"))) { //$NON-NLS-1$ //$NON-NLS-2$
if(elements.size() != 1) {
throw new QueryResolverException(QueryPlugin.Util.getString("XMLQueryResolver.xml_only_valid_alone")); //$NON-NLS-1$
}
@@ -302,7 +371,7 @@
resolveElement(elementSymbol, validElements, externalGroups, metadata);
// now find all the elements under this node and set as elements.
- List<ElementSymbol> elementsInNode = getElementsUnderNode(elementSymbol, validElements.values(), metadata);
+ List<ElementSymbol> elementsInNode = getElementsUnderNode(elementSymbol.getMetadataID(), validElements.values(), metadata);
((AllInGroupSymbol)ss).setElementSymbols(elementsInNode);
}
} else if (ss instanceof AllSymbol) {
@@ -450,14 +519,14 @@
elem.setOutputName(name);
}
- static List<ElementSymbol> getElementsUnderNode(ElementSymbol node, Collection<ElementSymbol> validElements, QueryMetadataInterface metadata)
+ static List<ElementSymbol> getElementsUnderNode(Object mid, Collection<ElementSymbol> validElements, QueryMetadataInterface metadata)
throws TeiidComponentException, QueryMetadataException {
List<ElementSymbol> elements = new ArrayList<ElementSymbol>();
- String nodeName = metadata.getFullName(node.getMetadataID());
+ String nodeName = metadata.getFullName(mid);
for (ElementSymbol validElement : validElements) {
String qualifiedName = validElement.getName();
- if (qualifiedName.equals(nodeName) || qualifiedName.startsWith(nodeName+ElementSymbol.SEPARATOR)) {
+ if (StringUtil.startsWithIgnoreCase(qualifiedName, nodeName) && (qualifiedName.length() == nodeName.length() || qualifiedName.charAt(nodeName.length()) == '.')) {
elements.add(validElement);
}
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java 2011-06-02 18:23:22 UTC (rev 3213)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java 2011-06-03 19:07:41 UTC (rev 3214)
@@ -711,9 +711,9 @@
Query q = createInlineViewQuery(viewName, plannedResult.query, metadata, plannedResult.query.getSelect().getProjectedSymbols());
Iterator<SingleElementSymbol> iter = q.getSelect().getProjectedSymbols().iterator();
- HashMap<Expression, SingleElementSymbol> expressionMap = new HashMap<Expression, SingleElementSymbol>();
+ HashMap<Expression, Expression> expressionMap = new HashMap<Expression, Expression>();
for (SingleElementSymbol symbol : plannedResult.query.getSelect().getProjectedSymbols()) {
- expressionMap.put(SymbolMap.getExpression(symbol), iter.next());
+ expressionMap.put(SymbolMap.getExpression(symbol), SymbolMap.getExpression(iter.next()));
}
for (int i = 0; i < plannedResult.leftExpressions.size(); i++) {
plannedResult.nonEquiJoinCriteria.add(new CompareCriteria(SymbolMap.getExpression((Expression)plannedResult.leftExpressions.get(i)), CompareCriteria.EQ, (Expression)plannedResult.rightExpressions.get(i)));
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/sql/visitor/PredicateCollectorVisitor.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/sql/visitor/PredicateCollectorVisitor.java 2011-06-02 18:23:22 UTC (rev 3213)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/sql/visitor/PredicateCollectorVisitor.java 2011-06-03 19:07:41 UTC (rev 3214)
@@ -45,14 +45,14 @@
*/
public class PredicateCollectorVisitor extends LanguageVisitor {
- private Collection predicates;
+ private Collection<Criteria> predicates;
/**
* Construct a new visitor with the default collection type, which is a
* {@link java.util.ArrayList}.
*/
public PredicateCollectorVisitor() {
- this.predicates = new ArrayList();
+ this.predicates = new ArrayList<Criteria>();
}
/**
@@ -136,7 +136,7 @@
* Get a collection of predicates discovered while visiting.
* @return Collection of {@link org.teiid.query.sql.lang.PredicateCriteria} subclasses.
*/
- public Collection getPredicates() {
+ public Collection<Criteria> getPredicates() {
return this.predicates;
}
@@ -144,7 +144,7 @@
* Helper to quickly get the predicates from obj
* @param obj Language object
*/
- public static final Collection getPredicates(LanguageObject obj) {
+ public static final Collection<Criteria> getPredicates(LanguageObject obj) {
PredicateCollectorVisitor visitor = new PredicateCollectorVisitor();
if(obj != null) {
PreOrderNavigator.doVisit(obj, visitor);
Modified: branches/7.4.x/engine/src/main/resources/org/teiid/query/i18n.properties
===================================================================
--- branches/7.4.x/engine/src/main/resources/org/teiid/query/i18n.properties 2011-06-02 18:23:22 UTC (rev 3213)
+++ branches/7.4.x/engine/src/main/resources/org/teiid/query/i18n.properties 2011-06-03 19:07:41 UTC (rev 3214)
@@ -131,6 +131,7 @@
ERR.015.008.0068= Could not find a common type to which all {0} expressions can be implicitly converted: {1}
ERR.015.008.0070= Aliased Select Symbols are not valid in XML Queries.
XMLQueryResolver.no_expressions_in_select=Expressions cannot be selected by XML Queries
+XMLQueryResolver.aliased_subquery=Aliased subquery contexts are not allowed: {0}
# sql (010)
ERR.015.010.0001= Invalid compare operator: {0}
@@ -779,6 +780,9 @@
TempTableStore.table_doesnt_exist_error=Temporary table "{0}" does not exist.
XMLQueryPlanner.cannot_plan=Cannot create a query for MappingClass with user criteria {0}
+XMLQueryPlanner.invalid_relationship=Conjunct "{0}" has no relationship with target context {1}.
+XMLQueryPlanner.non_simple_relationship=Conjunct "{0}" has a non-simple relationship to its parent through context {1}.
+
CriteriaPlanner.staging_context=Staging table criteria cannot contian context functions
CriteriaPlanner.multiple_staging=Staging table criteria {0} was not specified against a single staging table
CriteriaPlanner.invalid_context=Element {0} is not in the scope of the context {1}
Modified: branches/7.4.x/engine/src/test/java/org/teiid/query/processor/xml/TestXMLProcessor.java
===================================================================
--- branches/7.4.x/engine/src/test/java/org/teiid/query/processor/xml/TestXMLProcessor.java 2011-06-02 18:23:22 UTC (rev 3213)
+++ branches/7.4.x/engine/src/test/java/org/teiid/query/processor/xml/TestXMLProcessor.java 2011-06-03 19:07:41 UTC (rev 3214)
@@ -11214,7 +11214,7 @@
QueryMetadataInterface metadata = RealMetadataFactory.exampleCase3225();
FakeDataManager dataMgr = exampleDataManagerCase3225(metadata);
- helpTestProcess("select * from xmltest.playersDoc where context(manager, manager.firstname) > ALL (select firstname from player)", CARDS_MANAGER, metadata, dataMgr); //$NON-NLS-1$
+ helpTestProcess("select * from xmltest.playersDoc where context(manager, manager.firstname) > ALL (select firstname from BaseballPlayers.player)", CARDS_MANAGER, metadata, dataMgr); //$NON-NLS-1$
}
/**
Modified: branches/7.4.x/test-integration/common/pom.xml
===================================================================
--- branches/7.4.x/test-integration/common/pom.xml 2011-06-02 18:23:22 UTC (rev 3213)
+++ branches/7.4.x/test-integration/common/pom.xml 2011-06-03 19:07:41 UTC (rev 3214)
@@ -15,6 +15,11 @@
<artifactId>postgresql</artifactId>
<version>8.3-606.jdbc3</version>
</dependency>
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <version>1.2.147</version>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
Added: branches/7.4.x/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestRelate.java
===================================================================
--- branches/7.4.x/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestRelate.java (rev 0)
+++ branches/7.4.x/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestRelate.java 2011-06-03 19:07:41 UTC (rev 3214)
@@ -0,0 +1,413 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+package org.teiid.dqp.internal.process;
+
+import static org.junit.Assert.*;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.SQLXML;
+import java.sql.Statement;
+import java.util.logging.ConsoleHandler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.sql.DataSource;
+
+import org.h2.jdbcx.JdbcConnectionPool;
+import org.h2.jdbcx.JdbcDataSource;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.teiid.core.util.UnitTestUtil;
+import org.teiid.dqp.internal.datamgr.ConnectorManager;
+import org.teiid.dqp.internal.datamgr.ConnectorManagerRepository;
+import org.teiid.jdbc.FakeServer;
+import org.teiid.translator.ExecutionFactory;
+import org.teiid.translator.TranslatorException;
+import org.teiid.translator.jdbc.h2.H2ExecutionFactory;
+@SuppressWarnings("nls")
+public class TestRelate {
+
+ private static boolean writeResults = false;
+ private static boolean DEBUG = false;
+ private static FakeServer server;
+
+ @BeforeClass public static void oneTimeSetUp() throws Exception {
+ //DQPConfiguration config = new DQPConfiguration();
+ //config.setUserRequestSourceConcurrency(1);
+ server = new FakeServer();
+ JdbcDataSource h2ds = new JdbcDataSource();
+ h2ds.setURL("jdbc:h2:src/test/resources/relate/test");
+ final DataSource ds = JdbcConnectionPool.create(h2ds);
+ ExecutionFactory h2 = new H2ExecutionFactory();
+ h2.start();
+ ConnectorManagerRepository cmr = new ConnectorManagerRepository();
+ ConnectorManager cm = new ConnectorManager("source", "bar") {
+ @Override
+ protected Object getConnectionFactory() throws TranslatorException {
+ return ds;
+ }
+ };
+ cm.setExecutionFactory(h2);
+ cmr.addConnectorManager("source", cm);
+ server.setConnectorManagerRepository(cmr);
+ server.deployVDB("VehicleRentalsVDB", UnitTestUtil.getTestDataPath()+"/relate/VehicleRentalsVDB.vdb");
+ if (DEBUG) {
+ Logger logger = Logger.getLogger("org.teiid");
+ logger.setLevel(Level.FINER);
+ ConsoleHandler handler = new ConsoleHandler();
+ handler.setLevel(Level.FINER);
+ logger.addHandler(handler);
+ }
+ }
+
+ private void compareResults(SQLXML[] docs)
+ throws SQLException, IOException {
+ StackTraceElement ste = new Exception().getStackTrace()[1];
+ String testName = ste.getMethodName();
+ testName = "relate/" + testName; //$NON-NLS-1$
+ File actual = new File(UnitTestUtil.getTestDataPath() + "/" +testName+".expected"); //$NON-NLS-1$ //$NON-NLS-2$
+ if (writeResults) {
+ PrintWriter writer = new PrintWriter(actual);
+ for (SQLXML xml : docs) {
+ writer.write(xml.getString());
+ writer.write('\n');
+ }
+ writer.close();
+ return;
+ }
+ BufferedReader br = new BufferedReader(new FileReader(actual));
+ for (int i = 0; i < docs.length; i++) {
+ assertEquals(br.readLine(), docs[i].getString());
+ }
+ }
+
+ @Test public void testCase3365() throws Exception{
+ SQLXML[] docs = relate(false, null, null, null,
+ "rentals.rentsVehicle", "rentals.company", "rentals.vehicle",
+ "rentals.company.companyId", "'*:rentals/*:company/@companyID'", "STRING", "rentals.rentsVehicle.companyId",
+ "rentals.rentsVehicle.vehicleId", "'*:rentals/*:rentsVehicle/@vehicleID'", "STRING", "rentals.vehicle.vehicleId",
+ "VehicleRentalsDoc.rentalsDocumentWithLocation",
+ null,
+ null,
+ null,
+ null,
+ null, null, null,
+ null, null, null);
+ compareResults(docs);
+ }
+
+ @Test public void testCase3365_crit() throws Exception{
+ SQLXML[] docs = relate(false, null, null, null,
+ "rentals.rentsVehicle", "rentals.company", "rentals.vehicle",
+ "rentals.company.companyId", "'*:rentals/*:company/@companyID'", "STRING", "rentals.rentsVehicle.companyId",
+ "rentals.rentsVehicle.vehicleId", "'*:rentals/*:rentsVehicle/@vehicleID'", "STRING", "rentals.vehicle.vehicleId",
+ "VehicleRentalsDoc.rentalsDocumentWithLocation",
+ null,
+ "company.companyid = 'CID1'",
+ null,
+ null,
+ null, null, null,
+ null, null, null);
+ compareResults(docs);
+ }
+
+ @Test public void testCase3365_critNestedSrc() throws Exception {
+ SQLXML[] docs = relate(false, null, null, null,
+ "rentals.rentsVehicle", "rentals.company", "rentals.vehicle",
+ "rentals.company.companyId", "'*:rentals/*:company/@companyID'", "STRING", "rentals.rentsVehicle.companyId",
+ "rentals.rentsVehicle.vehicleId", "'*:rentals/*:rentsVehicle/@vehicleID'", "STRING", "rentals.vehicle.vehicleId",
+ "VehicleRentalsDoc.rentalsDocumentWithLocation",
+ null,
+ "location = 'Pittsburgh'",
+ null,
+ null,
+ null, null, null,
+ null, null, null);
+ compareResults(docs);
+ }
+
+ @Test public void testCase3365_critNestedSrcContext() throws Exception {
+ SQLXML[] docs = relate(false, null, null, null,
+ "rentals.rentsVehicle", "rentals.company", "rentals.vehicle",
+ "rentals.company.companyId", "'*:rentals/*:company/@companyID'", "STRING", "rentals.rentsVehicle.companyId",
+ "rentals.rentsVehicle.vehicleId", "'*:rentals/*:rentsVehicle/@vehicleID'", "STRING", "rentals.vehicle.vehicleId",
+ "VehicleRentalsDoc.rentalsDocumentWithLocation",
+ null,
+ null,
+ null,
+ null,
+ null, "context(location, location) = 'Pittsburgh'", null,
+ null, null, null);
+ compareResults(docs);
+ }
+
+ @Test public void testCase3365_critNestedSrcCombinationContext() throws Exception {
+ SQLXML[] docs = relate(false, null, null, null,
+ "rentals.rentsVehicle", "rentals.company", "rentals.vehicle",
+ "rentals.company.companyId", "'*:rentals/*:company/@companyID'", "STRING", "rentals.rentsVehicle.companyId",
+ "rentals.rentsVehicle.vehicleId", "'*:rentals/*:rentsVehicle/@vehicleID'", "STRING", "rentals.vehicle.vehicleId",
+ "VehicleRentalsDoc.rentalsDocumentWithLocation",
+ null,
+ "location = 'Pittsburgh'",
+ null,
+ null,
+ null, "context(location, location) = 'Pittsburgh'", null,
+ null, null, null);
+ compareResults(docs);
+ }
+
+ @Test public void testCase3365_critNestedTgt() throws Exception {
+ SQLXML[] docs = relate(false, null, null, null,
+ "rentals.rentsVehicle", "rentals.company", "rentals.vehicle",
+ "rentals.company.companyId", "'*:rentals/*:company/@companyID'", "STRING", "rentals.rentsVehicle.companyId",
+ "rentals.rentsVehicle.vehicleId", "'*:rentals/*:rentsVehicle/@vehicleID'", "STRING", "rentals.vehicle.vehicleId",
+ "VehicleRentalsDoc.rentalsDocumentWithLocation",
+ null,
+ null,
+ "color = 'Black'",
+ null,
+ null, null, null,
+ null, null, null);
+ compareResults(docs);
+ }
+
+ @Test public void testCase3365_compoundCritNestedTgt() throws Exception {
+ SQLXML[] docs = relate(false, null, null, null,
+ "rentals.rentsVehicle", "rentals.company", "rentals.vehicle",
+ "rentals.company.companyId", "'*:rentals/*:company/@companyID'", "STRING", "rentals.rentsVehicle.companyId",
+ "rentals.rentsVehicle.vehicleId", "'*:rentals/*:rentsVehicle/@vehicleID'", "STRING", "rentals.vehicle.vehicleId",
+ "VehicleRentalsDoc.rentalsDocumentWithLocation",
+ null,
+ null,
+ "color='Black' or color='Puce'",
+ null,
+ null, null, null,
+ null, null, null);
+ compareResults(docs);
+ }
+
+ @Test public void testSharesDoc() throws Exception {
+ SQLXML[] docs = relate(true, null, null, null,
+ "rentals.hasSharingAgreement", "rentals.company", "rentals.company",
+ "rentals.company.companyId", "'*:rentals/*:company/@companyID'", "STRING", "rentals.hasSharingAgreement.primaryPartyID",
+ "rentals.hasSharingAgreement.secondaryPartyID", "'*:rentals/*:hasSharingAgreement/@secondaryPartyID'", "STRING", "rentals.company.companyId",
+ "VehicleRentalsDoc.companiesDocument",
+ null,
+ null,
+ null,
+ null,
+ null, null, null,
+ null, null, null);
+ compareResults(docs);
+ }
+
+ @Test public void testSharesDocWithCritTgt() throws Exception {
+ SQLXML[] docs = relate(true, null, null, null,
+ "rentals.hasSharingAgreement", "rentals.company", "rentals.company",
+ "rentals.company.companyId", "'*:rentals/*:company/@companyID'", "STRING", "rentals.hasSharingAgreement.primaryPartyID",
+ "rentals.hasSharingAgreement.secondaryPartyID", "'*:rentals/*:hasSharingAgreement/@secondaryPartyID'", "STRING", "rentals.company.companyId",
+ "VehicleRentalsDoc.companiesDocument",
+ null,
+ null,
+ "rentals.company.name like 'B%'",
+ null,
+ null, null, null,
+ null, null, null);
+ compareResults(docs);
+ }
+
+ @Test public void testSharesDocWithCritTgtContext() throws Exception {
+ SQLXML[] docs = relate(true, null, null, null,
+ "rentals.hasSharingAgreement", "rentals.company", "rentals.company",
+ "rentals.company.companyId", "'*:rentals/*:company/@companyID'", "STRING", "rentals.hasSharingAgreement.primaryPartyID",
+ "rentals.hasSharingAgreement.secondaryPartyID", "'*:rentals/*:hasSharingAgreement/@secondaryPartyID'", "STRING", "rentals.company.companyId",
+ "VehicleRentalsDoc.companiesDocument",
+ null,
+ null,
+ "rentals.company.name like 'B%'",
+ "rentals.company.name like 'B%'",
+ null, null, null,
+ null, null, null);
+ compareResults(docs);
+ }
+
+ @Test public void testSharesDocEspaceQuestion3() throws Exception {
+ SQLXML[] docs = relate(true, null, null, null,
+ "rentals.hasSharingAgreement", "rentals.company", "rentals.company",
+ "rentals.company.companyId", "'*:rentals/*:company/@companyID'", "STRING", "rentals.hasSharingAgreement.primaryPartyID",
+ "rentals.hasSharingAgreement.secondaryPartyID", "'*:rentals/*:hasSharingAgreement/@secondaryPartyID'", "STRING", "rentals.company.companyId",
+ "VehicleRentalsDoc.companiesDocument",
+ null,
+ "company.locations.location = 'Pittsburgh'",
+ null,
+ null,
+ null, null, null,
+ null, null, null);
+ compareResults(docs);
+ }
+
+ public SQLXML[] relate(
+ //distinct is only meaningful for self-relationships
+ boolean distinct,
+ //select args to limit the xml projection
+ //there is an assumption that the source/relationship select must project key values
+ String relationshipSelect, String sourceSelect, String targetSelect,
+ //relevant contexts, the same as expected by the legacy relate function
+ String relationshipContext, String sourceContext, String targetContext,
+ //break down of the relationship predicates
+ String sourceKey,
+ String sourceKeyPath,
+ String sourceKeyType,
+ String sourceFKey,
+ String targetFKey,
+ String targetFKeyPath,
+ String targetFKeyType,
+ String targetKey,
+ //target document
+ String xmlDocument,
+ //explicit/implicit relationship context criteria - should not use the context function
+ String relationshipCriteria,
+ //relateSource/implicit/explicit source context criteria - should not use the context function
+ String relateSourceCriteria,
+ //relateTarget criteria - should not use the context function
+ String relateTargetCriteria,
+ //relateTarget context criteria - should not use the context function
+ String relateTargetContextCriteria,
+ //subcontext criteria, logically applied after the relate operation - should use context function(s), and should not be specified against a root context
+ String relationshipContextCriteria,
+ String sourceContextCriteria,
+ String targetContextCriteria,
+ //order bys
+ String relationshipOrderBy,
+ String sourceOrderBy,
+ String targetOrderBy
+ ) throws Exception {
+ if (sourceSelect == null) {
+ sourceSelect = sourceContext + ".*";
+ }
+ if (relationshipSelect == null) {
+ relationshipSelect = relationshipContext + ".*";
+ }
+ if (targetSelect == null) {
+ targetSelect = targetContext + ".*";
+ }
+ Connection conn = server.createConnection("jdbc:teiid:VehicleRentalsVDB"); //$NON-NLS-1$
+ if (DEBUG) {
+ conn.createStatement().execute("SET SHOWPLAN DEBUG");
+ }
+ SQLXML[] result = new SQLXML[3];
+ //source query
+ String query = String.format("SELECT %s FROM %s WHERE CONTEXT(%s, %s) IN (SELECT %s FROM %s WHERE %s IN (SELECT %s FROM %s", sourceSelect, xmlDocument, sourceContext, sourceKey, sourceFKey, relationshipContext, targetFKey, targetKey, targetContext);
+ if (relateTargetCriteria != null) {
+ query += (" WHERE " + relateTargetCriteria);
+ }
+ query += "))";
+ if (relateSourceCriteria != null) {
+ query += String.format(" AND (CONTEXT(%s, %s) = null OR %s)", sourceContext, sourceKey, relateSourceCriteria);
+ }
+ if (relationshipCriteria != null) {
+ query += String.format(" AND CONTEXT(%s, %s) IN (SELECT %s FROM %s WHERE AND %s)", sourceContext, sourceKey, sourceFKey, relationshipContext, relationshipCriteria);
+ }
+ if (sourceContextCriteria != null) {
+ query += (" AND " + sourceContextCriteria);
+ }
+ if (sourceOrderBy != null) {
+ query += (" ORDER BY " + sourceOrderBy);
+ }
+ PreparedStatement sourcePs = conn.prepareStatement(query);
+ ResultSet sourceRs = sourcePs.executeQuery();
+ sourceRs.next();
+ SQLXML sourceXml = sourceRs.getSQLXML(1);
+ result[0] = sourceXml;
+
+ Statement ddlStmt = conn.createStatement();
+
+ ddlStmt.execute("CREATE LOCAL TEMPORARY TABLE #st_source (source_key STRING, PRIMARY KEY (source_key))");
+ //source key extraction
+ String sourceStagingQuery = String.format("INSERT INTO #st_source (source_key) SELECT DISTINCT source_key FROM XMLTABLE(%s PASSING cast(? AS xml) COLUMNS source_key %s PATH '.') x", sourceKeyPath, sourceKeyType);
+ PreparedStatement ps = conn.prepareStatement(sourceStagingQuery);
+ ps.setSQLXML(1, sourceXml);
+ ps.execute();
+ ps.close();
+
+ //relationship query
+ String relQuery = String.format("SELECT %s FROM %s WHERE CONTEXT(%s, %s) IN /*+ DJ */ (SELECT source_key from #st_source) AND CONTEXT(%s, %s) IN (SELECT %s FROM %s", relationshipSelect, xmlDocument, relationshipContext, sourceFKey, relationshipContext, targetFKey, targetKey, targetContext);
+ if (relateTargetContextCriteria != null) {
+ relQuery += (" WHERE " + relateTargetContextCriteria);
+ }
+ relQuery += ")";
+ if (relationshipCriteria != null) {
+ relQuery += String.format(" AND (CONTEXT(%s, %s) = null OR %s)", relationshipContext, sourceFKey, relationshipCriteria);
+ }
+ if (relationshipContextCriteria != null) {
+ relQuery += (" AND " + relationshipContextCriteria);
+ }
+ if (relationshipOrderBy != null) {
+ relQuery += (" ORDER BY " + relationshipOrderBy);
+ }
+ PreparedStatement relStmt = conn.prepareStatement(relQuery);
+ ResultSet relRs = relStmt.executeQuery();
+ relRs.next();
+ SQLXML relXml = relRs.getSQLXML(1);
+ result[1] = relXml;
+
+ ddlStmt.execute("CREATE LOCAL TEMPORARY TABLE #st_rel (target_key STRING, PRIMARY KEY (target_key))");
+ //target key extraction
+ String relStagingQuery = String.format("INSERT INTO #st_rel (target_key) SELECT DISTINCT target_key FROM XMLTABLE(%s PASSING cast(? AS xml) COLUMNS target_key %s PATH '.') x", targetFKeyPath, targetFKeyType);
+ PreparedStatement psRel = conn.prepareStatement(relStagingQuery);
+ psRel.setSQLXML(1, relXml);
+ psRel.execute();
+ psRel.close();
+
+ //target query
+ String targetQuery = String.format("SELECT %s FROM %s WHERE CONTEXT(%s, %s) IN /*+ DJ */ (SELECT target_key FROM #st_rel", targetSelect, xmlDocument, targetContext, targetKey);
+ if (distinct && targetContext.equalsIgnoreCase(sourceContext)) {
+ targetQuery += " EXCEPT SELECT source_key FROM #st_source";
+ }
+ targetQuery += ")";
+ if (targetContextCriteria != null) {
+ targetQuery += (" AND " + targetContextCriteria);
+ }
+ if (targetOrderBy != null) {
+ targetQuery += (" ORDER BY " + targetOrderBy);
+ }
+ PreparedStatement targetStmt = conn.prepareStatement(targetQuery);
+ ResultSet taretRs = targetStmt.executeQuery();
+ taretRs.next();
+ SQLXML targetXml = taretRs.getSQLXML(1);
+ result[2] = targetXml;
+
+ ddlStmt.execute("drop table #st_source");
+ ddlStmt.execute("drop table #st_rel");
+
+ return result;
+ }
+
+}
Property changes on: branches/7.4.x/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestRelate.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: branches/7.4.x/test-integration/common/src/test/java/org/teiid/jdbc/FakeServer.java
===================================================================
--- branches/7.4.x/test-integration/common/src/test/java/org/teiid/jdbc/FakeServer.java 2011-06-02 18:23:22 UTC (rev 3213)
+++ branches/7.4.x/test-integration/common/src/test/java/org/teiid/jdbc/FakeServer.java 2011-06-03 19:07:41 UTC (rev 3214)
@@ -72,6 +72,10 @@
private boolean useCallingThread = true;
public FakeServer() {
+ this(new DQPConfiguration());
+ }
+
+ public FakeServer(DQPConfiguration config) {
this.logon = new LogonImpl(sessionService, null);
this.repo.setSystemStore(VDBMetadataFactory.getSystem());
@@ -92,7 +96,6 @@
}
});
- DQPConfiguration config = new DQPConfiguration();
config.setResultsetCacheConfig(new CacheConfiguration(Policy.LRU, 60, 250, "resultsetcache")); //$NON-NLS-1$
this.dqp.setCacheFactory(new DefaultCacheFactory());
this.dqp.start(config);
@@ -102,6 +105,10 @@
registerClientService(DQP.class, dqp, null);
}
+ public void setConnectorManagerRepository(ConnectorManagerRepository cmr) {
+ this.cmr = cmr;
+ }
+
public void stop() {
this.dqp.stop();
}
Added: branches/7.4.x/test-integration/common/src/test/resources/relate/VehicleRentalsVDB.vdb
===================================================================
(Binary files differ)
Property changes on: branches/7.4.x/test-integration/common/src/test/resources/relate/VehicleRentalsVDB.vdb
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: branches/7.4.x/test-integration/common/src/test/resources/relate/rentals.sql
===================================================================
--- branches/7.4.x/test-integration/common/src/test/resources/relate/rentals.sql (rev 0)
+++ branches/7.4.x/test-integration/common/src/test/resources/relate/rentals.sql 2011-06-03 19:07:41 UTC (rev 3214)
@@ -0,0 +1,347 @@
+CREATE TABLE "ACCESSORIES"
+(
+ COMMONNAME varchar(40),
+ UUID varchar(36),
+ QUUID varchar(36),
+ ACCID varchar(10),
+ TYPE varchar(40),
+ MODEL varchar(15),
+ VERSION varchar(15)
+);
+CREATE TABLE "COLORS"
+(
+ COLORID varchar(10) primary key,
+ NAME varchar(42),
+ VEHICLEID varchar(10)
+);
+create index colors_vid_idx on colors (vehicleid);
+
+CREATE TABLE "COMPANIES"
+(
+ COMMONNAME varchar(40),
+ UUID varchar(36),
+ QUUID varchar(36),
+ COMPANYID varchar(10) primary key,
+ FULLNAME varchar(40),
+ CLASSIFICATION varchar(15)
+);
+CREATE TABLE "LOCATIONS"
+(
+ LOCATIONID varchar(10),
+ NAME varchar(42),
+ COMPANYID varchar(10)
+);
+CREATE TABLE "REL_COMP_ACC"
+(
+ COMMONNAME varchar(40),
+ UUID varchar(36),
+ QUUID varchar(36),
+ NATURE varchar(15),
+ SUBJECTTYPE varchar(40),
+ TARGETTYPE varchar(40),
+ COMPANYID varchar(10) NOT NULL,
+ ACCESSORYID varchar(10) NOT NULL,
+ QUANTITYAUTH int,
+ QUANTITYAVAIL int
+);
+CREATE TABLE "REL_COMP_SHARE"
+(
+ COMMONNAME varchar(40),
+ UUID varchar(36),
+ QUUID varchar(36),
+ NATURE varchar(15),
+ SUBJECTTYPE varchar(40),
+ TARGETTYPE varchar(40),
+ PRIMARYID varchar(10),
+ SECONDARYID varchar(10),
+ SINCE numeric(10,0)
+);
+CREATE TABLE "REL_COMP_SUBSID"
+(
+ COMMONNAME varchar(40),
+ UUID varchar(36),
+ QUUID varchar(36),
+ NATURE varchar(15),
+ SUBJECTTYPE varchar(40),
+ TARGETTYPE varchar(40),
+ COMPANYID varchar(10),
+ SUBSIDIARYID varchar(10),
+ PERCENTOWNS numeric(10,0)
+);
+CREATE TABLE "REL_COMP_VEH"
+(
+ COMMONNAME varchar(40),
+ UUID varchar(36),
+ QUUID varchar(36),
+ NATURE varchar(15),
+ SUBJECTTYPE varchar(40),
+ TARGETTYPE varchar(40),
+ COMPANYID varchar(10) NOT NULL,
+ VEHICLEID varchar(10) NOT NULL,
+ QUANTITYAUTH int,
+ QUANTITYAVAIL int
+);
+CREATE TABLE "REL_VEH_ACC"
+(
+ COMMONNAME varchar(40),
+ UUID varchar(36),
+ QUUID varchar(36),
+ NATURE varchar(15),
+ SUBJECTTYPE varchar(40),
+ TARGETTYPE varchar(40),
+ VEHICLEID varchar(10) NOT NULL,
+ ACCESSORYID varchar(10) NOT NULL,
+ QUANTITYAUTH int,
+ QUANTITYAVAIL int
+);
+CREATE TABLE "RENTAL_PRODUCTS"
+(
+ PRODUCTID varchar(10) NOT NULL,
+ DURATION varchar(42),
+ VEHICLEID varchar(10),
+ COMPANYID varchar(10)
+);
+CREATE TABLE "VEHICLES"
+(
+ COMMONNAME varchar(40),
+ UUID varchar(36),
+ QUUID varchar(36),
+ VEHICLEID varchar(10) primary key,
+ STYLE varchar(40),
+ MAKE varchar(15),
+ MODEL varchar(15),
+ MODELYEAR int
+);
+
+INSERT INTO "ACCESSORIES" (COMMONNAME,UUID,QUUID,ACCID,TYPE,MODEL,VERSION) VALUES ('Emerson NV-5000','AUUID2','AQUUID2','AID2','GPS','Emerson','NV-5000');
+
+INSERT INTO "ACCESSORIES" (COMMONNAME,UUID,QUUID,ACCID,TYPE,MODEL,VERSION) VALUES ('Garmin Street Pilot','AUUID1','AQUUID1','AID1','GPS','Garmin','Street Pilot');
+
+INSERT INTO "ACCESSORIES" (COMMONNAME,UUID,QUUID,ACCID,TYPE,MODEL,VERSION) VALUES ('Gvox A0102','AUUID5','AQUUID5','AID5','DVD','Gvox','A0102');
+
+INSERT INTO "ACCESSORIES" (COMMONNAME,UUID,QUUID,ACCID,TYPE,MODEL,VERSION) VALUES ('Gvox A0201','AUUID4','AQUUID4','AID4','DVD','Gvox','A0201');
+
+INSERT INTO "ACCESSORIES" (COMMONNAME,UUID,QUUID,ACCID,TYPE,MODEL,VERSION) VALUES ('Pioneer AVIC-N2','AUUID6','AQUUID6','AID6','Navigation','Pioneer','AVIC-N2');
+
+INSERT INTO "ACCESSORIES" (COMMONNAME,UUID,QUUID,ACCID,TYPE,MODEL,VERSION) VALUES ('Pioneer CD-VC60','AUUID8','AQUUID8','AID8','Voice Guidance','Pioneer','CD-VC60');
+
+INSERT INTO "ACCESSORIES" (COMMONNAME,UUID,QUUID,ACCID,TYPE,MODEL,VERSION) VALUES ('Pyle PLDVD65IN','AUUID3','AQUUID3','AID3','DVD','Pyle','PLDVD65IN');
+
+INSERT INTO "ACCESSORIES" (COMMONNAME,UUID,QUUID,ACCID,TYPE,MODEL,VERSION) VALUES ('Sanyo NV-E700','AUUID7','AQUUID7','AID7','Navigation','Sanyo','NV-E700');
+
+
+
+INSERT INTO "COLORS" (COLORID,NAME,VEHICLEID) VALUES ('C1','Red','VID1');
+
+INSERT INTO "COLORS" (COLORID,NAME,VEHICLEID) VALUES ('C2','Black','VID1');
+
+INSERT INTO "COLORS" (COLORID,NAME,VEHICLEID) VALUES ('C3','Puce','VID2');
+
+INSERT INTO "COLORS" (COLORID,NAME,VEHICLEID) VALUES ('C4','Red','VID3');
+
+INSERT INTO "COLORS" (COLORID,NAME,VEHICLEID) VALUES ('C5','Black','VID4');
+
+
+
+INSERT INTO "COMPANIES" (COMMONNAME,UUID,QUUID,COMPANYID,FULLNAME,CLASSIFICATION) VALUES ('Avian','CUUID1','CQUUID1','CID1','Avian Rentals, Inc.','Consumer');
+
+INSERT INTO "COMPANIES" (COMMONNAME,UUID,QUUID,COMPANYID,FULLNAME,CLASSIFICATION) VALUES ('Budge','CUUID3','CQUUID3','CID3','Budge, Inc.','Wholesale');
+
+INSERT INTO "COMPANIES" (COMMONNAME,UUID,QUUID,COMPANYID,FULLNAME,CLASSIFICATION) VALUES ('Entertwine','CUUID2','CQUUID2','CID2','Entertwine Rent A Car, Inc.','Consumer');
+
+INSERT INTO "COMPANIES" (COMMONNAME,UUID,QUUID,COMPANYID,FULLNAME,CLASSIFICATION) VALUES ('Gigahertz','CUUID4','CQUUID4','CID4','Gigahertz, Inc.','Consumer');
+
+INSERT INTO "COMPANIES" (COMMONNAME,UUID,QUUID,COMPANYID,FULLNAME,CLASSIFICATION) VALUES ('Peso','CUUID5','CQUUID5','CID5','Peso, Inc.','Consumer');
+
+INSERT INTO "COMPANIES" (COMMONNAME,UUID,QUUID,COMPANYID,FULLNAME,CLASSIFICATION) VALUES ('Wholefleet','CUUID6','CQUUID6','CID6','Wholefleet, Inc.','Wholesale');
+
+
+
+INSERT INTO "LOCATIONS" (LOCATIONID,NAME,COMPANYID) VALUES ('LOC1','Pittsburgh','CID1');
+
+INSERT INTO "LOCATIONS" (LOCATIONID,NAME,COMPANYID) VALUES ('LOC2','Moosejaw','CID2');
+
+INSERT INTO "LOCATIONS" (LOCATIONID,NAME,COMPANYID) VALUES ('LOC3','Keokuk','CID1');
+
+
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA11','CAUUID11','CAQUUID11','offers','Company','Accessory','CID1','AID1',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA12','CAUUID12','CAQUUID12','offers','Company','Accessory','CID1','AID2',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA13','CAUUID13','CAQUUID13','offers','Company','Accessory','CID1','AID3',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA14','CAUUID14','CAQUUID14','offers','Company','Accessory','CID1','AID4',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA15','CAUUID15','CAQUUID15','offers','Company','Accessory','CID1','AID5',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA16','CAUUID16','CAQUUID16','offers','Company','Accessory','CID1','AID6',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA21','CAUUID21','CAQUUID21','offers','Company','Accessory','CID2','AID1',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA22','CAUUID22','CAQUUID22','offers','Company','Accessory','CID2','AID2',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA23','CAUUID23','CAQUUID23','offers','Company','Accessory','CID2','AID3',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA33','CAUUID33','CAQUUID33','offers','Company','Accessory','CID3','AID3',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA61','CAUUID61','CAQUUID61','offers','Company','Accessory','CID6','AID1',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA62','CAUUID62','CAQUUID62','offers','Company','Accessory','CID6','AID2',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA63','CAUUID63','CAQUUID63','offers','Company','Accessory','CID6','AID3',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA64','CAUUID64','CAQUUID64','offers','Company','Accessory','CID6','AID4',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA65','CAUUID65','CAQUUID65','offers','Company','Accessory','CID6','AID5',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA66','CAUUID66','CAQUUID66','offers','Company','Accessory','CID6','AID6',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA67','CAUUID67','CAQUUID67','offers','Company','Accessory','CID6','AID7',1,1);
+
+INSERT INTO "REL_COMP_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCA68','CAUUID68','CAQUUID68','offers','Company','Accessory','CID6','AID8',1,1);
+
+
+
+INSERT INTO "REL_COMP_SHARE" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,PRIMARYID,SECONDARYID,SINCE) VALUES ('RCC12','CCUUID12','CCQUUID12','sharesWith','Company','Company','CID1','CID2',1985);
+
+INSERT INTO "REL_COMP_SHARE" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,PRIMARYID,SECONDARYID,SINCE) VALUES ('RCC13','CCUUID13','CCQUUID13','sharesWith','Company','Company','CID1','CID3',1995);
+
+INSERT INTO "REL_COMP_SHARE" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,PRIMARYID,SECONDARYID,SINCE) VALUES ('RCC14','CCUUID14','CCQUUID14','sharesWith','Company','Company','CID1','CID4',2005);
+
+INSERT INTO "REL_COMP_SHARE" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,PRIMARYID,SECONDARYID,SINCE) VALUES ('RCC34','CCUUID34','CCQUUID34','sharesWith','Company','Company','CID3','CID4',2001);
+
+INSERT INTO "REL_COMP_SHARE" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,PRIMARYID,SECONDARYID,SINCE) VALUES ('RCC54','CCUUID54','CCQUUID54','sharesWith','Company','Company','CID5','CID4',1999);
+
+INSERT INTO "REL_COMP_SHARE" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,PRIMARYID,SECONDARYID,SINCE) VALUES ('RCC64','CCUUID64','CCQUUID64','sharesWith','Company','Company','CID6','CID4',1995);
+
+
+
+INSERT INTO "REL_COMP_SUBSID" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,SUBSIDIARYID,PERCENTOWNS) VALUES ('RCS12','CSUUID12','CSQUUID12','owns','Company','Subsidiary','CID1','CID2',10);
+
+INSERT INTO "REL_COMP_SUBSID" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,SUBSIDIARYID,PERCENTOWNS) VALUES ('RCS13','CSUUID13','CSQUUID13','owns','Company','Subsidiary','CID1','CID3',50);
+
+INSERT INTO "REL_COMP_SUBSID" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,SUBSIDIARYID,PERCENTOWNS) VALUES ('RCS43','CSUUID43','CSQUUID43','owns','Company','Subsidiary','CID4','CID3',10);
+
+INSERT INTO "REL_COMP_SUBSID" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,SUBSIDIARYID,PERCENTOWNS) VALUES ('RCS56','CSUUID56','CSQUUID56','owns','Company','Subsidiary','CID5','CID6',100);
+
+
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV11','CVUUID11','CVQUUID11','rents','Company','Vehicle','CID1','VID1',10,2);
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV12','CVUUID12','CVQUUID12','rents','Company','Vehicle','CID1','VID2',2,2);
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV13','CVUUID13','CVQUUID13','rents','Company','Vehicle','CID1','VID3',2,0);
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV14','CVUUID14','CVQUUID14','rents','Company','Vehicle','CID1','VID4',2,1);
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV21','CVUUID21','CVQUUID21','rents','Company','Vehicle','CID2','VID1',5,3);
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV22','CVUUID22','CVQUUID22','rents','Company','Vehicle','CID2','VID2',2,1);
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV32','CVUUID32','CVQUUID32','rents','Company','Vehicle','CID3','VID2',1,1);
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV47','CVUUID47','CVQUUID47','rents','Company','Vehicle','CID4','VID7',1,1);
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV61','CVUUID61','CVQUUID61','rents','Company','Vehicle','CID6','VID1',1,1);
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV62','CVUUID62','CVQUUID62','rents','Company','Vehicle','CID6','VID2',2,2);
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV63','CVUUID63','CVQUUID63','rents','Company','Vehicle','CID6','VID3',3,3);
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV64','CVUUID64','CVQUUID64','rents','Company','Vehicle','CID6','VID4',4,4);
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV65','CVUUID65','CVQUUID65','rents','Company','Vehicle','CID6','VID5',5,5);
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV66','CVUUID66','CVQUUID66','rents','Company','Vehicle','CID6','VID6',6,6);
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV67','CVUUID67','CVQUUID67','rents','Company','Vehicle','CID6','VID7',7,7);
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV68','CVUUID68','CVQUUID68','rents','Company','Vehicle','CID6','VID8',8,8);
+
+INSERT INTO "REL_COMP_VEH" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,COMPANYID,VEHICLEID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RCV69','CVUUID69','CVQUUID69','rents','Company','Vehicle','CID6','VID9',9,9);
+
+
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA11','VAUUID11','VAQUUID11','has','Vehicle','Accessory','VID1','AID1',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA12','VAUUID12','VAQUUID12','has','Vehicle','Accessory','VID1','AID2',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA13','VAUUID13','VAQUUID13','has','Vehicle','Accessory','VID1','AID3',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA23','VAUUID23','VAQUUID23','has','Vehicle','Accessory','VID2','AID3',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA34','VAUUID34','VAQUUID34','has','Vehicle','Accessory','VID3','AID4',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA35','VAUUID35','VAQUUID35','has','Vehicle','Accessory','VID3','AID5',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA41','VAUUID41','VAQUUID41','has','Vehicle','Accessory','VID4','AID1',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA45','VAUUID45','VAQUUID45','has','Vehicle','Accessory','VID4','AID5',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA46','VAUUID46','VAQUUID46','has','Vehicle','Accessory','VID4','AID6',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA51','VAUUID51','VAQUUID51','has','Vehicle','Accessory','VID5','AID1',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA53','VAUUID53','VAQUUID53','has','Vehicle','Accessory','VID5','AID3',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA55','VAUUID55','VAQUUID55','has','Vehicle','Accessory','VID5','AID5',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA57','VAUUID57','VAQUUID57','has','Vehicle','Accessory','VID5','AID7',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA62','VAUUID62','VAQUUID62','has','Vehicle','Accessory','VID6','AID2',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA64','VAUUID64','VAQUUID64','has','Vehicle','Accessory','VID6','AID4',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA66','VAUUID66','VAQUUID66','has','Vehicle','Accessory','VID6','AID6',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA68','VAUUID68','VAQUUID68','has','Vehicle','Accessory','VID6','AID8',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA88','VAUUID88','VAQUUID88','has','Vehicle','Accessory','VID8','AID8',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA91','VAUUID91','VAQUUID91','has','Vehicle','Accessory','VID9','AID1',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA92','VAUUID92','VAQUUID92','has','Vehicle','Accessory','VID9','AID2',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA93','VAUUID93','VAQUUID93','has','Vehicle','Accessory','VID9','AID3',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA94','VAUUID94','VAQUUID94','has','Vehicle','Accessory','VID9','AID4',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA95','VAUUID95','VAQUUID95','has','Vehicle','Accessory','VID9','AID5',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA96','VAUUID96','VAQUUID96','has','Vehicle','Accessory','VID9','AID6',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA97','VAUUID97','VAQUUID97','has','Vehicle','Accessory','VID9','AID7',1,1);
+
+INSERT INTO "REL_VEH_ACC" (COMMONNAME,UUID,QUUID,NATURE,SUBJECTTYPE,TARGETTYPE,VEHICLEID,ACCESSORYID,QUANTITYAUTH,QUANTITYAVAIL) VALUES ('RVA98','VAUUID98','VAQUUID98','has','Vehicle','Accessory','VID9','AID8',1,1);
+
+
+
+INSERT INTO "RENTAL_PRODUCTS" (PRODUCTID,DURATION,VEHICLEID,COMPANYID) VALUES ('P1','Hourly','VID1','CID1');
+
+INSERT INTO "RENTAL_PRODUCTS" (PRODUCTID,DURATION,VEHICLEID,COMPANYID) VALUES ('P2','Daily','VID1','CID1');
+
+INSERT INTO "RENTAL_PRODUCTS" (PRODUCTID,DURATION,VEHICLEID,COMPANYID) VALUES ('P3','Weekly','VID1','CID1');
+
+INSERT INTO "RENTAL_PRODUCTS" (PRODUCTID,DURATION,VEHICLEID,COMPANYID) VALUES ('P4','Weekly','VID2','CID1');
+
+
+
+INSERT INTO "VEHICLES" (COMMONNAME,UUID,QUUID,VEHICLEID,STYLE,MAKE,MODEL,MODELYEAR) VALUES ('Chevy Tahoe 2005','VUUID3','VQUUID3','VID3','Utility','Chevrolet','Tahoe',2005);
+
+INSERT INTO "VEHICLES" (COMMONNAME,UUID,QUUID,VEHICLEID,STYLE,MAKE,MODEL,MODELYEAR) VALUES ('Ford F150 2004','VUUID2','VQUUID2','VID2','Utility','Ford','F150',2004);
+
+INSERT INTO "VEHICLES" (COMMONNAME,UUID,QUUID,VEHICLEID,STYLE,MAKE,MODEL,MODELYEAR) VALUES ('Ford F150 2005','VUUID1','VQUUID1','VID1','Utility','Ford','F150',2005);
+
+INSERT INTO "VEHICLES" (COMMONNAME,UUID,QUUID,VEHICLEID,STYLE,MAKE,MODEL,MODELYEAR) VALUES ('Ford Windstar 2004','VUUID5','VQUUID5','VID5','Minivan','Ford','Windstar',2004);
+
+INSERT INTO "VEHICLES" (COMMONNAME,UUID,QUUID,VEHICLEID,STYLE,MAKE,MODEL,MODELYEAR) VALUES ('Ford Windstar 2005','VUUID4','VQUUID4','VID4','Minivan','Ford','Windstar',2005);
+
+INSERT INTO "VEHICLES" (COMMONNAME,UUID,QUUID,VEHICLEID,STYLE,MAKE,MODEL,MODELYEAR) VALUES ('Honda Pilot 2005','VUUID9','VQUUID9','VID9','SUV','Honda','Pilot',2005);
+
+INSERT INTO "VEHICLES" (COMMONNAME,UUID,QUUID,VEHICLEID,STYLE,MAKE,MODEL,MODELYEAR) VALUES ('Nissan Quest 2004','VUUID7','VQUUID7','VID7','Minivan','Nissan','Quest',2004);
+
+INSERT INTO "VEHICLES" (COMMONNAME,UUID,QUUID,VEHICLEID,STYLE,MAKE,MODEL,MODELYEAR) VALUES ('Nissan Quest 2005','VUUID6','VQUUID6','VID6','Minivan','Nissan','Quest',2005);
+
+INSERT INTO "VEHICLES" (COMMONNAME,UUID,QUUID,VEHICLEID,STYLE,MAKE,MODEL,MODELYEAR) VALUES ('Toyota Sienna 2004','VUUID8','VQUUID8','VID8','Minivan','Toyota','Sienna',2004);
+
Added: branches/7.4.x/test-integration/common/src/test/resources/relate/test.h2.db
===================================================================
(Binary files differ)
Property changes on: branches/7.4.x/test-integration/common/src/test/resources/relate/test.h2.db
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: branches/7.4.x/test-integration/common/src/test/resources/relate/test.trace.db
===================================================================
--- branches/7.4.x/test-integration/common/src/test/resources/relate/test.trace.db (rev 0)
+++ branches/7.4.x/test-integration/common/src/test/resources/relate/test.trace.db 2011-06-03 19:07:41 UTC (rev 3214)
@@ -0,0 +1,1501 @@
+05-28 19:49:16 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:39 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.GeneratedMethodAccessor132.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.GeneratedMethodAccessor132.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.GeneratedMethodAccessor132.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.GeneratedMethodAccessor132.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.GeneratedMethodAccessor132.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.GeneratedMethodAccessor132.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.GeneratedMethodAccessor132.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-28 19:49:40 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Feature not supported: "clientInfoProperties" [50100-147]
+ at org.h2.message.DbException.getJdbcSQLException(DbException.java:327)
+ at org.h2.message.DbException.get(DbException.java:167)
+ at org.h2.message.DbException.get(DbException.java:144)
+ at org.h2.message.DbException.getUnsupportedException(DbException.java:202)
+ at org.h2.message.TraceObject.unsupported(TraceObject.java:423)
+ at org.h2.jdbc.JdbcDatabaseMetaData.getClientInfoProperties(JdbcDatabaseMetaData.java:2804)
+ at sun.reflect.GeneratedMethodAccessor132.invoke(Unknown Source)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.executeGetter(MetaDataDataSet.java:255)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.generateLine(MetaDataDataSet.java:222)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.load(MetaDataDataSet.java:149)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDataSet.<init>(MetaDataDataSet.java:96)
+ at net.sourceforge.squirrel_sql.fw.sql.MetaDataDecoratorDataSet.<init>(MetaDataDecoratorDataSet.java:73)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.database.MetaDataTab.createDataSet(MetaDataTab.java:74)
+ at net.sourceforge.squirrel_sql.client.session.mainpanel.objecttree.tabs.BaseDataSetTab$1.run(BaseDataSetTab.java:123)
+ at net.sourceforge.squirrel_sql.fw.util.TaskExecuter.run(TaskExecuter.java:82)
+ at java.lang.Thread.run(Thread.java:662)
+05-29 13:09:52 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-29 13:09:52 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-29 19:38:55 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-29 19:38:55 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-29 23:12:28 jdbc[4]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-29 23:12:28 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-29 23:12:28 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-29 23:15:35 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-29 23:15:35 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 13:15:59 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 13:15:59 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 13:42:22 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 13:42:22 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 13:42:27 jdbc[4]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 14:10:53 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 14:10:53 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 14:18:48 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 14:18:48 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 20:01:44 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 20:01:48 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 21:08:13 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 21:08:13 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 21:38:44 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 21:38:44 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 21:46:03 jdbc[4]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 21:46:03 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+05-31 21:46:03 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+06-01 10:49:49 jdbc[4]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+06-01 10:49:49 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+06-01 10:49:49 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+06-01 11:39:24 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+06-01 11:39:24 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+06-01 13:23:21 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+06-01 13:23:21 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+06-02 13:04:48 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+06-02 13:04:48 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+06-02 13:07:12 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+06-02 13:07:12 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+06-02 13:27:33 jdbc[3]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.translator.ExecutionFactory.getConnection(ExecutionFactory.java:174)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+06-02 13:27:33 jdbc[2]: connection not closed
+java.lang.Exception: Stack Trace
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:121)
+ at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:94)
+ at org.h2.Driver.connect(Driver.java:72)
+ at org.h2.jdbcx.JdbcXAConnection.<init>(JdbcXAConnection.java:77)
+ at org.h2.jdbcx.JdbcDataSource.getXAConnection(JdbcDataSource.java:311)
+ at org.h2.jdbcx.JdbcDataSource.getPooledConnection(JdbcDataSource.java:341)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnectionNow(JdbcConnectionPool.java:222)
+ at org.h2.jdbcx.JdbcConnectionPool.getConnection(JdbcConnectionPool.java:202)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:254)
+ at org.teiid.translator.jdbc.JDBCExecutionFactory.getConnection(JDBCExecutionFactory.java:1)
+ at org.teiid.translator.ExecutionFactory.getConnection(ExecutionFactory.java:174)
+ at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:199)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:338)
+ at org.teiid.dqp.internal.process.DataTierTupleSource.access$0(DataTierTupleSource.java:329)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
+ at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:1)
+ at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
+ at java.util.concurrent.FutureTask.run(FutureTask.java:138)
+ at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:197)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
+ at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
+ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
+ at java.lang.Thread.run(Thread.java:662)
+06-03 11:03:23 jdbc[2]: exception
+org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "SELECT G_0.COMMONNAME, G_0.UUID, G_0.QUUID, G_0.COMPANYID, G_0.FULLNAME, G_0.CLASSIFICATION FROM COMPANIES AS G_0 WHERE G_0.COMPANYID IN (SELECT G_1.COMPANYID FROM REL_COMP_VEH AS G_1, (SELECT DISTINCT G_2.VEHICLEID AS C_0 FROM VEHICLES AS G_2) AS V_0 WHERE G_1.VEHICLEID = V_0.@[*]VEHICLEID) "; expected "identifier"; SQL statement:
+SELECT g_0.COMMONNAME, g_0.UUID, g_0.QUUID, g_0.COMPANYID, g_0.FULLNAME, g_0.CLASSIFICATION FROM COMPANIES AS g_0 WHERE g_0.COMPANYID IN (SELECT g_1.COMPANYID FROM REL_COMP_VEH AS g_1, (SELECT DISTINCT g_2.VEHICLEID AS c_0 FROM VEHICLES AS g_2) AS v_0 WHERE g_1.VEHICLEID = v_0.@vehicleID) [42001-147]
Added: branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365.expected
===================================================================
--- branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365.expected (rev 0)
+++ branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365.expected 2011-06-03 19:07:41 UTC (rev 3214)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:company commonName="Avian" uuid="CUUID1" queryUUID="CQUUID1" companyID="CID1"><rental:name>Avian Rentals, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Pittsburgh</rental:location><rental:location>Keokuk</rental:location></rental:locations></rental:company><rental:company commonName="Entertwine" uuid="CUUID2" queryUUID="CQUUID2" companyID="CID2"><rental:name>Entertwine Rent A Car, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Moosejaw</rental:location></rental:locations></rental:company><rental:company commonName="Budge" uuid="CUUID3" queryUUID="CQUUID3" companyID="CID3"><rental:name>Budge, Inc.</rental:name><rental:type>Wholesale</rental:type></rental:company><rental:company commonName="Gigahertz" uuid="CUUID4" queryUUID="CQUUID4" companyID="C!
ID4"><rental:name>Gigahertz, Inc.</rental:name><rental:type>Consumer</rental:type></rental:company><rental:company commonName="Wholefleet" uuid="CUUID6" queryUUID="CQUUID6" companyID="CID6"><rental:name>Wholefleet, Inc.</rental:name><rental:type>Wholesale</rental:type></rental:company></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:rentsVehicle commonName="RCV11" uuid="CVUUID11" queryUUID="CVQUUID11" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID1"><rental:quantityAuthorized>10</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable><rental:rentalProducts><rental:duration>Hourly</rental:duration><rental:duration>Daily</rental:duration><rental:duration>Weekly</rental:duration></rental:rentalProducts></rental:rentsVehicle><rental:rentsVehicle commonName="RCV12" uuid="CVUUID12" queryUUID="CVQUUID12" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID2"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable><rental:rentalProducts><rental:duration>Weekly</rental:duration></rental:rentalProducts></rent!
al:rentsVehicle><rental:rentsVehicle commonName="RCV13" uuid="CVUUID13" queryUUID="CVQUUID13" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID3"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>0</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV14" uuid="CVUUID14" queryUUID="CVQUUID14" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID4"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV21" uuid="CVUUID21" queryUUID="CVQUUID21" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID2" vehicleID="VID1"><rental:quantityAuthorized>5</rental:quantityAuthorized><rental:quantityAvailable>3</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV22" uuid="CVUUID22" queryUUID=!
"CVQUUID22" nature="rents" subjectType="Company" targetType="V!
ehicle"
companyID="CID2" vehicleID="VID2"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV32" uuid="CVUUID32" queryUUID="CVQUUID32" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID3" vehicleID="VID2"><rental:quantityAuthorized>1</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV47" uuid="CVUUID47" queryUUID="CVQUUID47" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID4" vehicleID="VID7"><rental:quantityAuthorized>1</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV61" uuid="CVUUID61" queryUUID="CVQUUID61" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID1"><rental:quantityAuthorized>1</rental:quantityAuth!
orized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV62" uuid="CVUUID62" queryUUID="CVQUUID62" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID2"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV63" uuid="CVUUID63" queryUUID="CVQUUID63" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID3"><rental:quantityAuthorized>3</rental:quantityAuthorized><rental:quantityAvailable>3</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV64" uuid="CVUUID64" queryUUID="CVQUUID64" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID4"><rental:quantityAuthorized>4</rental:quantityAuthorized><rental:quantityAvailable>4</rental:quantityAvailable></rental:rentsVehicle!
><rental:rentsVehicle commonName="RCV65" uuid="CVUUID65" query!
UUID="CV
QUUID65" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID5"><rental:quantityAuthorized>5</rental:quantityAuthorized><rental:quantityAvailable>5</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV66" uuid="CVUUID66" queryUUID="CVQUUID66" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID6"><rental:quantityAuthorized>6</rental:quantityAuthorized><rental:quantityAvailable>6</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV67" uuid="CVUUID67" queryUUID="CVQUUID67" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID7"><rental:quantityAuthorized>7</rental:quantityAuthorized><rental:quantityAvailable>7</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV68" uuid="CVUUID68" queryUUID="CVQUUID68" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6"!
vehicleID="VID8"><rental:quantityAuthorized>8</rental:quantityAuthorized><rental:quantityAvailable>8</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV69" uuid="CVUUID69" queryUUID="CVQUUID69" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID9"><rental:quantityAuthorized>9</rental:quantityAuthorized><rental:quantityAvailable>9</rental:quantityAvailable></rental:rentsVehicle></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:vehicle commonName="Ford F150 2005" uuid="VUUID1" queryUUID="VQUUID1" vehicleID="VID1"><rental:style>Utility</rental:style><rental:make>Ford</rental:make><rental:model>F150</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Red</rental:color><rental:color>Black</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford F150 2004" uuid="VUUID2" queryUUID="VQUUID2" vehicleID="VID2"><rental:style>Utility</rental:style><rental:make>Ford</rental:make><rental:model>F150</rental:model><rental:year>2004</rental:year><rental:availablecolors><rental:color>Puce</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Chevy Tahoe 2005" uuid="VUUID3" queryUUID="VQUUID3" vehicleID="VID3"><rental:style>Utility</rental:style><rental:make>Chevrolet</rental!
:make><rental:model>Tahoe</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Red</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford Windstar 2005" uuid="VUUID4" queryUUID="VQUUID4" vehicleID="VID4"><rental:style>Minivan</rental:style><rental:make>Ford</rental:make><rental:model>Windstar</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Black</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford Windstar 2004" uuid="VUUID5" queryUUID="VQUUID5" vehicleID="VID5"><rental:style>Minivan</rental:style><rental:make>Ford</rental:make><rental:model>Windstar</rental:model><rental:year>2004</rental:year></rental:vehicle><rental:vehicle commonName="Nissan Quest 2005" uuid="VUUID6" queryUUID="VQUUID6" vehicleID="VID6"><rental:style>Minivan</rental:style><rental:make>Nissan</rental:make><rental:model>Quest</rental:model><rental:year>2005</rental:year></!
rental:vehicle><rental:vehicle commonName="Nissan Quest 2004" !
uuid="VU
UID7" queryUUID="VQUUID7" vehicleID="VID7"><rental:style>Minivan</rental:style><rental:make>Nissan</rental:make><rental:model>Quest</rental:model><rental:year>2004</rental:year></rental:vehicle><rental:vehicle commonName="Toyota Sienna 2004" uuid="VUUID8" queryUUID="VQUUID8" vehicleID="VID8"><rental:style>Minivan</rental:style><rental:make>Toyota</rental:make><rental:model>Sienna</rental:model><rental:year>2004</rental:year></rental:vehicle><rental:vehicle commonName="Honda Pilot 2005" uuid="VUUID9" queryUUID="VQUUID9" vehicleID="VID9"><rental:style>SUV</rental:style><rental:make>Honda</rental:make><rental:model>Pilot</rental:model><rental:year>2005</rental:year></rental:vehicle></rental:rentals>
Added: branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_compoundCritNestedTgt.expected
===================================================================
--- branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_compoundCritNestedTgt.expected (rev 0)
+++ branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_compoundCritNestedTgt.expected 2011-06-03 19:07:41 UTC (rev 3214)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:company commonName="Avian" uuid="CUUID1" queryUUID="CQUUID1" companyID="CID1"><rental:name>Avian Rentals, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Pittsburgh</rental:location><rental:location>Keokuk</rental:location></rental:locations></rental:company><rental:company commonName="Entertwine" uuid="CUUID2" queryUUID="CQUUID2" companyID="CID2"><rental:name>Entertwine Rent A Car, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Moosejaw</rental:location></rental:locations></rental:company><rental:company commonName="Budge" uuid="CUUID3" queryUUID="CQUUID3" companyID="CID3"><rental:name>Budge, Inc.</rental:name><rental:type>Wholesale</rental:type></rental:company><rental:company commonName="Wholefleet" uuid="CUUID6" queryUUID="CQUUID6" companyID="!
CID6"><rental:name>Wholefleet, Inc.</rental:name><rental:type>Wholesale</rental:type></rental:company></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:rentsVehicle commonName="RCV11" uuid="CVUUID11" queryUUID="CVQUUID11" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID1"><rental:quantityAuthorized>10</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable><rental:rentalProducts><rental:duration>Hourly</rental:duration><rental:duration>Daily</rental:duration><rental:duration>Weekly</rental:duration></rental:rentalProducts></rental:rentsVehicle><rental:rentsVehicle commonName="RCV12" uuid="CVUUID12" queryUUID="CVQUUID12" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID2"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable><rental:rentalProducts><rental:duration>Weekly</rental:duration></rental:rentalProducts></rent!
al:rentsVehicle><rental:rentsVehicle commonName="RCV13" uuid="CVUUID13" queryUUID="CVQUUID13" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID3"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>0</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV14" uuid="CVUUID14" queryUUID="CVQUUID14" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID4"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV21" uuid="CVUUID21" queryUUID="CVQUUID21" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID2" vehicleID="VID1"><rental:quantityAuthorized>5</rental:quantityAuthorized><rental:quantityAvailable>3</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV22" uuid="CVUUID22" queryUUID=!
"CVQUUID22" nature="rents" subjectType="Company" targetType="V!
ehicle"
companyID="CID2" vehicleID="VID2"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV32" uuid="CVUUID32" queryUUID="CVQUUID32" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID3" vehicleID="VID2"><rental:quantityAuthorized>1</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV61" uuid="CVUUID61" queryUUID="CVQUUID61" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID1"><rental:quantityAuthorized>1</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV62" uuid="CVUUID62" queryUUID="CVQUUID62" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID2"><rental:quantityAuthorized>2</rental:quantityAuth!
orized><rental:quantityAvailable>2</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV63" uuid="CVUUID63" queryUUID="CVQUUID63" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID3"><rental:quantityAuthorized>3</rental:quantityAuthorized><rental:quantityAvailable>3</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV64" uuid="CVUUID64" queryUUID="CVQUUID64" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID4"><rental:quantityAuthorized>4</rental:quantityAuthorized><rental:quantityAvailable>4</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV65" uuid="CVUUID65" queryUUID="CVQUUID65" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID5"><rental:quantityAuthorized>5</rental:quantityAuthorized><rental:quantityAvailable>5</rental:quantityAvailable></rental:rentsVehicle!
><rental:rentsVehicle commonName="RCV66" uuid="CVUUID66" query!
UUID="CV
QUUID66" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID6"><rental:quantityAuthorized>6</rental:quantityAuthorized><rental:quantityAvailable>6</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV67" uuid="CVUUID67" queryUUID="CVQUUID67" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID7"><rental:quantityAuthorized>7</rental:quantityAuthorized><rental:quantityAvailable>7</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV68" uuid="CVUUID68" queryUUID="CVQUUID68" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID8"><rental:quantityAuthorized>8</rental:quantityAuthorized><rental:quantityAvailable>8</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV69" uuid="CVUUID69" queryUUID="CVQUUID69" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6"!
vehicleID="VID9"><rental:quantityAuthorized>9</rental:quantityAuthorized><rental:quantityAvailable>9</rental:quantityAvailable></rental:rentsVehicle></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:vehicle commonName="Ford F150 2005" uuid="VUUID1" queryUUID="VQUUID1" vehicleID="VID1"><rental:style>Utility</rental:style><rental:make>Ford</rental:make><rental:model>F150</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Red</rental:color><rental:color>Black</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford F150 2004" uuid="VUUID2" queryUUID="VQUUID2" vehicleID="VID2"><rental:style>Utility</rental:style><rental:make>Ford</rental:make><rental:model>F150</rental:model><rental:year>2004</rental:year><rental:availablecolors><rental:color>Puce</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Chevy Tahoe 2005" uuid="VUUID3" queryUUID="VQUUID3" vehicleID="VID3"><rental:style>Utility</rental:style><rental:make>Chevrolet</rental!
:make><rental:model>Tahoe</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Red</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford Windstar 2005" uuid="VUUID4" queryUUID="VQUUID4" vehicleID="VID4"><rental:style>Minivan</rental:style><rental:make>Ford</rental:make><rental:model>Windstar</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Black</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford Windstar 2004" uuid="VUUID5" queryUUID="VQUUID5" vehicleID="VID5"><rental:style>Minivan</rental:style><rental:make>Ford</rental:make><rental:model>Windstar</rental:model><rental:year>2004</rental:year></rental:vehicle><rental:vehicle commonName="Nissan Quest 2005" uuid="VUUID6" queryUUID="VQUUID6" vehicleID="VID6"><rental:style>Minivan</rental:style><rental:make>Nissan</rental:make><rental:model>Quest</rental:model><rental:year>2005</rental:year></!
rental:vehicle><rental:vehicle commonName="Nissan Quest 2004" !
uuid="VU
UID7" queryUUID="VQUUID7" vehicleID="VID7"><rental:style>Minivan</rental:style><rental:make>Nissan</rental:make><rental:model>Quest</rental:model><rental:year>2004</rental:year></rental:vehicle><rental:vehicle commonName="Toyota Sienna 2004" uuid="VUUID8" queryUUID="VQUUID8" vehicleID="VID8"><rental:style>Minivan</rental:style><rental:make>Toyota</rental:make><rental:model>Sienna</rental:model><rental:year>2004</rental:year></rental:vehicle><rental:vehicle commonName="Honda Pilot 2005" uuid="VUUID9" queryUUID="VQUUID9" vehicleID="VID9"><rental:style>SUV</rental:style><rental:make>Honda</rental:make><rental:model>Pilot</rental:model><rental:year>2005</rental:year></rental:vehicle></rental:rentals>
Added: branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_crit.expected
===================================================================
--- branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_crit.expected (rev 0)
+++ branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_crit.expected 2011-06-03 19:07:41 UTC (rev 3214)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:company commonName="Avian" uuid="CUUID1" queryUUID="CQUUID1" companyID="CID1"><rental:name>Avian Rentals, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Pittsburgh</rental:location><rental:location>Keokuk</rental:location></rental:locations></rental:company></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:rentsVehicle commonName="RCV11" uuid="CVUUID11" queryUUID="CVQUUID11" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID1"><rental:quantityAuthorized>10</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable><rental:rentalProducts><rental:duration>Hourly</rental:duration><rental:duration>Daily</rental:duration><rental:duration>Weekly</rental:duration></rental:rentalProducts></rental:rentsVehicle><rental:rentsVehicle commonName="RCV12" uuid="CVUUID12" queryUUID="CVQUUID12" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID2"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable><rental:rentalProducts><rental:duration>Weekly</rental:duration></rental:rentalProducts></rent!
al:rentsVehicle><rental:rentsVehicle commonName="RCV13" uuid="CVUUID13" queryUUID="CVQUUID13" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID3"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>0</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV14" uuid="CVUUID14" queryUUID="CVQUUID14" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID4"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:vehicle commonName="Ford F150 2005" uuid="VUUID1" queryUUID="VQUUID1" vehicleID="VID1"><rental:style>Utility</rental:style><rental:make>Ford</rental:make><rental:model>F150</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Red</rental:color><rental:color>Black</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford F150 2004" uuid="VUUID2" queryUUID="VQUUID2" vehicleID="VID2"><rental:style>Utility</rental:style><rental:make>Ford</rental:make><rental:model>F150</rental:model><rental:year>2004</rental:year><rental:availablecolors><rental:color>Puce</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Chevy Tahoe 2005" uuid="VUUID3" queryUUID="VQUUID3" vehicleID="VID3"><rental:style>Utility</rental:style><rental:make>Chevrolet</rental!
:make><rental:model>Tahoe</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Red</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford Windstar 2005" uuid="VUUID4" queryUUID="VQUUID4" vehicleID="VID4"><rental:style>Minivan</rental:style><rental:make>Ford</rental:make><rental:model>Windstar</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Black</rental:color></rental:availablecolors></rental:vehicle></rental:rentals>
Added: branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_critNestedSrc.expected
===================================================================
--- branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_critNestedSrc.expected (rev 0)
+++ branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_critNestedSrc.expected 2011-06-03 19:07:41 UTC (rev 3214)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:company commonName="Avian" uuid="CUUID1" queryUUID="CQUUID1" companyID="CID1"><rental:name>Avian Rentals, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Pittsburgh</rental:location><rental:location>Keokuk</rental:location></rental:locations></rental:company></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:rentsVehicle commonName="RCV11" uuid="CVUUID11" queryUUID="CVQUUID11" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID1"><rental:quantityAuthorized>10</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable><rental:rentalProducts><rental:duration>Hourly</rental:duration><rental:duration>Daily</rental:duration><rental:duration>Weekly</rental:duration></rental:rentalProducts></rental:rentsVehicle><rental:rentsVehicle commonName="RCV12" uuid="CVUUID12" queryUUID="CVQUUID12" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID2"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable><rental:rentalProducts><rental:duration>Weekly</rental:duration></rental:rentalProducts></rent!
al:rentsVehicle><rental:rentsVehicle commonName="RCV13" uuid="CVUUID13" queryUUID="CVQUUID13" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID3"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>0</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV14" uuid="CVUUID14" queryUUID="CVQUUID14" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID4"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:vehicle commonName="Ford F150 2005" uuid="VUUID1" queryUUID="VQUUID1" vehicleID="VID1"><rental:style>Utility</rental:style><rental:make>Ford</rental:make><rental:model>F150</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Red</rental:color><rental:color>Black</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford F150 2004" uuid="VUUID2" queryUUID="VQUUID2" vehicleID="VID2"><rental:style>Utility</rental:style><rental:make>Ford</rental:make><rental:model>F150</rental:model><rental:year>2004</rental:year><rental:availablecolors><rental:color>Puce</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Chevy Tahoe 2005" uuid="VUUID3" queryUUID="VQUUID3" vehicleID="VID3"><rental:style>Utility</rental:style><rental:make>Chevrolet</rental!
:make><rental:model>Tahoe</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Red</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford Windstar 2005" uuid="VUUID4" queryUUID="VQUUID4" vehicleID="VID4"><rental:style>Minivan</rental:style><rental:make>Ford</rental:make><rental:model>Windstar</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Black</rental:color></rental:availablecolors></rental:vehicle></rental:rentals>
Added: branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_critNestedSrcCombinationContext.expected
===================================================================
--- branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_critNestedSrcCombinationContext.expected (rev 0)
+++ branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_critNestedSrcCombinationContext.expected 2011-06-03 19:07:41 UTC (rev 3214)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:company commonName="Avian" uuid="CUUID1" queryUUID="CQUUID1" companyID="CID1"><rental:name>Avian Rentals, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Pittsburgh</rental:location></rental:locations></rental:company></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:rentsVehicle commonName="RCV11" uuid="CVUUID11" queryUUID="CVQUUID11" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID1"><rental:quantityAuthorized>10</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable><rental:rentalProducts><rental:duration>Hourly</rental:duration><rental:duration>Daily</rental:duration><rental:duration>Weekly</rental:duration></rental:rentalProducts></rental:rentsVehicle><rental:rentsVehicle commonName="RCV12" uuid="CVUUID12" queryUUID="CVQUUID12" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID2"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable><rental:rentalProducts><rental:duration>Weekly</rental:duration></rental:rentalProducts></rent!
al:rentsVehicle><rental:rentsVehicle commonName="RCV13" uuid="CVUUID13" queryUUID="CVQUUID13" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID3"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>0</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV14" uuid="CVUUID14" queryUUID="CVQUUID14" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID4"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:vehicle commonName="Ford F150 2005" uuid="VUUID1" queryUUID="VQUUID1" vehicleID="VID1"><rental:style>Utility</rental:style><rental:make>Ford</rental:make><rental:model>F150</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Red</rental:color><rental:color>Black</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford F150 2004" uuid="VUUID2" queryUUID="VQUUID2" vehicleID="VID2"><rental:style>Utility</rental:style><rental:make>Ford</rental:make><rental:model>F150</rental:model><rental:year>2004</rental:year><rental:availablecolors><rental:color>Puce</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Chevy Tahoe 2005" uuid="VUUID3" queryUUID="VQUUID3" vehicleID="VID3"><rental:style>Utility</rental:style><rental:make>Chevrolet</rental!
:make><rental:model>Tahoe</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Red</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford Windstar 2005" uuid="VUUID4" queryUUID="VQUUID4" vehicleID="VID4"><rental:style>Minivan</rental:style><rental:make>Ford</rental:make><rental:model>Windstar</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Black</rental:color></rental:availablecolors></rental:vehicle></rental:rentals>
Added: branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_critNestedSrcContext.expected
===================================================================
--- branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_critNestedSrcContext.expected (rev 0)
+++ branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_critNestedSrcContext.expected 2011-06-03 19:07:41 UTC (rev 3214)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:company commonName="Avian" uuid="CUUID1" queryUUID="CQUUID1" companyID="CID1"><rental:name>Avian Rentals, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Pittsburgh</rental:location></rental:locations></rental:company><rental:company commonName="Entertwine" uuid="CUUID2" queryUUID="CQUUID2" companyID="CID2"><rental:name>Entertwine Rent A Car, Inc.</rental:name><rental:type>Consumer</rental:type></rental:company><rental:company commonName="Budge" uuid="CUUID3" queryUUID="CQUUID3" companyID="CID3"><rental:name>Budge, Inc.</rental:name><rental:type>Wholesale</rental:type></rental:company><rental:company commonName="Gigahertz" uuid="CUUID4" queryUUID="CQUUID4" companyID="CID4"><rental:name>Gigahertz, Inc.</rental:name><rental:type>Consumer</rental:type></rental:company><rental:company common!
Name="Wholefleet" uuid="CUUID6" queryUUID="CQUUID6" companyID="CID6"><rental:name>Wholefleet, Inc.</rental:name><rental:type>Wholesale</rental:type></rental:company></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:rentsVehicle commonName="RCV11" uuid="CVUUID11" queryUUID="CVQUUID11" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID1"><rental:quantityAuthorized>10</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable><rental:rentalProducts><rental:duration>Hourly</rental:duration><rental:duration>Daily</rental:duration><rental:duration>Weekly</rental:duration></rental:rentalProducts></rental:rentsVehicle><rental:rentsVehicle commonName="RCV12" uuid="CVUUID12" queryUUID="CVQUUID12" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID2"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable><rental:rentalProducts><rental:duration>Weekly</rental:duration></rental:rentalProducts></rent!
al:rentsVehicle><rental:rentsVehicle commonName="RCV13" uuid="CVUUID13" queryUUID="CVQUUID13" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID3"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>0</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV14" uuid="CVUUID14" queryUUID="CVQUUID14" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID4"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV21" uuid="CVUUID21" queryUUID="CVQUUID21" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID2" vehicleID="VID1"><rental:quantityAuthorized>5</rental:quantityAuthorized><rental:quantityAvailable>3</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV22" uuid="CVUUID22" queryUUID=!
"CVQUUID22" nature="rents" subjectType="Company" targetType="V!
ehicle"
companyID="CID2" vehicleID="VID2"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV32" uuid="CVUUID32" queryUUID="CVQUUID32" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID3" vehicleID="VID2"><rental:quantityAuthorized>1</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV47" uuid="CVUUID47" queryUUID="CVQUUID47" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID4" vehicleID="VID7"><rental:quantityAuthorized>1</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV61" uuid="CVUUID61" queryUUID="CVQUUID61" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID1"><rental:quantityAuthorized>1</rental:quantityAuth!
orized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV62" uuid="CVUUID62" queryUUID="CVQUUID62" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID2"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV63" uuid="CVUUID63" queryUUID="CVQUUID63" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID3"><rental:quantityAuthorized>3</rental:quantityAuthorized><rental:quantityAvailable>3</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV64" uuid="CVUUID64" queryUUID="CVQUUID64" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID4"><rental:quantityAuthorized>4</rental:quantityAuthorized><rental:quantityAvailable>4</rental:quantityAvailable></rental:rentsVehicle!
><rental:rentsVehicle commonName="RCV65" uuid="CVUUID65" query!
UUID="CV
QUUID65" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID5"><rental:quantityAuthorized>5</rental:quantityAuthorized><rental:quantityAvailable>5</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV66" uuid="CVUUID66" queryUUID="CVQUUID66" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID6"><rental:quantityAuthorized>6</rental:quantityAuthorized><rental:quantityAvailable>6</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV67" uuid="CVUUID67" queryUUID="CVQUUID67" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID7"><rental:quantityAuthorized>7</rental:quantityAuthorized><rental:quantityAvailable>7</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV68" uuid="CVUUID68" queryUUID="CVQUUID68" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6"!
vehicleID="VID8"><rental:quantityAuthorized>8</rental:quantityAuthorized><rental:quantityAvailable>8</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV69" uuid="CVUUID69" queryUUID="CVQUUID69" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID9"><rental:quantityAuthorized>9</rental:quantityAuthorized><rental:quantityAvailable>9</rental:quantityAvailable></rental:rentsVehicle></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:vehicle commonName="Ford F150 2005" uuid="VUUID1" queryUUID="VQUUID1" vehicleID="VID1"><rental:style>Utility</rental:style><rental:make>Ford</rental:make><rental:model>F150</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Red</rental:color><rental:color>Black</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford F150 2004" uuid="VUUID2" queryUUID="VQUUID2" vehicleID="VID2"><rental:style>Utility</rental:style><rental:make>Ford</rental:make><rental:model>F150</rental:model><rental:year>2004</rental:year><rental:availablecolors><rental:color>Puce</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Chevy Tahoe 2005" uuid="VUUID3" queryUUID="VQUUID3" vehicleID="VID3"><rental:style>Utility</rental:style><rental:make>Chevrolet</rental!
:make><rental:model>Tahoe</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Red</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford Windstar 2005" uuid="VUUID4" queryUUID="VQUUID4" vehicleID="VID4"><rental:style>Minivan</rental:style><rental:make>Ford</rental:make><rental:model>Windstar</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Black</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford Windstar 2004" uuid="VUUID5" queryUUID="VQUUID5" vehicleID="VID5"><rental:style>Minivan</rental:style><rental:make>Ford</rental:make><rental:model>Windstar</rental:model><rental:year>2004</rental:year></rental:vehicle><rental:vehicle commonName="Nissan Quest 2005" uuid="VUUID6" queryUUID="VQUUID6" vehicleID="VID6"><rental:style>Minivan</rental:style><rental:make>Nissan</rental:make><rental:model>Quest</rental:model><rental:year>2005</rental:year></!
rental:vehicle><rental:vehicle commonName="Nissan Quest 2004" !
uuid="VU
UID7" queryUUID="VQUUID7" vehicleID="VID7"><rental:style>Minivan</rental:style><rental:make>Nissan</rental:make><rental:model>Quest</rental:model><rental:year>2004</rental:year></rental:vehicle><rental:vehicle commonName="Toyota Sienna 2004" uuid="VUUID8" queryUUID="VQUUID8" vehicleID="VID8"><rental:style>Minivan</rental:style><rental:make>Toyota</rental:make><rental:model>Sienna</rental:model><rental:year>2004</rental:year></rental:vehicle><rental:vehicle commonName="Honda Pilot 2005" uuid="VUUID9" queryUUID="VQUUID9" vehicleID="VID9"><rental:style>SUV</rental:style><rental:make>Honda</rental:make><rental:model>Pilot</rental:model><rental:year>2005</rental:year></rental:vehicle></rental:rentals>
Added: branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_critNestedTgt.expected
===================================================================
--- branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_critNestedTgt.expected (rev 0)
+++ branches/7.4.x/test-integration/common/src/test/resources/relate/testCase3365_critNestedTgt.expected 2011-06-03 19:07:41 UTC (rev 3214)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:company commonName="Avian" uuid="CUUID1" queryUUID="CQUUID1" companyID="CID1"><rental:name>Avian Rentals, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Pittsburgh</rental:location><rental:location>Keokuk</rental:location></rental:locations></rental:company><rental:company commonName="Entertwine" uuid="CUUID2" queryUUID="CQUUID2" companyID="CID2"><rental:name>Entertwine Rent A Car, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Moosejaw</rental:location></rental:locations></rental:company><rental:company commonName="Wholefleet" uuid="CUUID6" queryUUID="CQUUID6" companyID="CID6"><rental:name>Wholefleet, Inc.</rental:name><rental:type>Wholesale</rental:type></rental:company></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:rentsVehicle commonName="RCV11" uuid="CVUUID11" queryUUID="CVQUUID11" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID1"><rental:quantityAuthorized>10</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable><rental:rentalProducts><rental:duration>Hourly</rental:duration><rental:duration>Daily</rental:duration><rental:duration>Weekly</rental:duration></rental:rentalProducts></rental:rentsVehicle><rental:rentsVehicle commonName="RCV12" uuid="CVUUID12" queryUUID="CVQUUID12" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID2"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable><rental:rentalProducts><rental:duration>Weekly</rental:duration></rental:rentalProducts></rent!
al:rentsVehicle><rental:rentsVehicle commonName="RCV13" uuid="CVUUID13" queryUUID="CVQUUID13" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID3"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>0</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV14" uuid="CVUUID14" queryUUID="CVQUUID14" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID1" vehicleID="VID4"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV21" uuid="CVUUID21" queryUUID="CVQUUID21" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID2" vehicleID="VID1"><rental:quantityAuthorized>5</rental:quantityAuthorized><rental:quantityAvailable>3</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV22" uuid="CVUUID22" queryUUID=!
"CVQUUID22" nature="rents" subjectType="Company" targetType="V!
ehicle"
companyID="CID2" vehicleID="VID2"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV61" uuid="CVUUID61" queryUUID="CVQUUID61" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID1"><rental:quantityAuthorized>1</rental:quantityAuthorized><rental:quantityAvailable>1</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV62" uuid="CVUUID62" queryUUID="CVQUUID62" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID2"><rental:quantityAuthorized>2</rental:quantityAuthorized><rental:quantityAvailable>2</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV63" uuid="CVUUID63" queryUUID="CVQUUID63" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID3"><rental:quantityAuthorized>3</rental:quantityAuth!
orized><rental:quantityAvailable>3</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV64" uuid="CVUUID64" queryUUID="CVQUUID64" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID4"><rental:quantityAuthorized>4</rental:quantityAuthorized><rental:quantityAvailable>4</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV65" uuid="CVUUID65" queryUUID="CVQUUID65" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID5"><rental:quantityAuthorized>5</rental:quantityAuthorized><rental:quantityAvailable>5</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV66" uuid="CVUUID66" queryUUID="CVQUUID66" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID6"><rental:quantityAuthorized>6</rental:quantityAuthorized><rental:quantityAvailable>6</rental:quantityAvailable></rental:rentsVehicle!
><rental:rentsVehicle commonName="RCV67" uuid="CVUUID67" query!
UUID="CV
QUUID67" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID7"><rental:quantityAuthorized>7</rental:quantityAuthorized><rental:quantityAvailable>7</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV68" uuid="CVUUID68" queryUUID="CVQUUID68" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID8"><rental:quantityAuthorized>8</rental:quantityAuthorized><rental:quantityAvailable>8</rental:quantityAvailable></rental:rentsVehicle><rental:rentsVehicle commonName="RCV69" uuid="CVUUID69" queryUUID="CVQUUID69" nature="rents" subjectType="Company" targetType="Vehicle" companyID="CID6" vehicleID="VID9"><rental:quantityAuthorized>9</rental:quantityAuthorized><rental:quantityAvailable>9</rental:quantityAvailable></rental:rentsVehicle></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:vehicle commonName="Ford F150 2005" uuid="VUUID1" queryUUID="VQUUID1" vehicleID="VID1"><rental:style>Utility</rental:style><rental:make>Ford</rental:make><rental:model>F150</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Red</rental:color><rental:color>Black</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford F150 2004" uuid="VUUID2" queryUUID="VQUUID2" vehicleID="VID2"><rental:style>Utility</rental:style><rental:make>Ford</rental:make><rental:model>F150</rental:model><rental:year>2004</rental:year><rental:availablecolors><rental:color>Puce</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Chevy Tahoe 2005" uuid="VUUID3" queryUUID="VQUUID3" vehicleID="VID3"><rental:style>Utility</rental:style><rental:make>Chevrolet</rental!
:make><rental:model>Tahoe</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Red</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford Windstar 2005" uuid="VUUID4" queryUUID="VQUUID4" vehicleID="VID4"><rental:style>Minivan</rental:style><rental:make>Ford</rental:make><rental:model>Windstar</rental:model><rental:year>2005</rental:year><rental:availablecolors><rental:color>Black</rental:color></rental:availablecolors></rental:vehicle><rental:vehicle commonName="Ford Windstar 2004" uuid="VUUID5" queryUUID="VQUUID5" vehicleID="VID5"><rental:style>Minivan</rental:style><rental:make>Ford</rental:make><rental:model>Windstar</rental:model><rental:year>2004</rental:year></rental:vehicle><rental:vehicle commonName="Nissan Quest 2005" uuid="VUUID6" queryUUID="VQUUID6" vehicleID="VID6"><rental:style>Minivan</rental:style><rental:make>Nissan</rental:make><rental:model>Quest</rental:model><rental:year>2005</rental:year></!
rental:vehicle><rental:vehicle commonName="Nissan Quest 2004" !
uuid="VU
UID7" queryUUID="VQUUID7" vehicleID="VID7"><rental:style>Minivan</rental:style><rental:make>Nissan</rental:make><rental:model>Quest</rental:model><rental:year>2004</rental:year></rental:vehicle><rental:vehicle commonName="Toyota Sienna 2004" uuid="VUUID8" queryUUID="VQUUID8" vehicleID="VID8"><rental:style>Minivan</rental:style><rental:make>Toyota</rental:make><rental:model>Sienna</rental:model><rental:year>2004</rental:year></rental:vehicle><rental:vehicle commonName="Honda Pilot 2005" uuid="VUUID9" queryUUID="VQUUID9" vehicleID="VID9"><rental:style>SUV</rental:style><rental:make>Honda</rental:make><rental:model>Pilot</rental:model><rental:year>2005</rental:year></rental:vehicle></rental:rentals>
Added: branches/7.4.x/test-integration/common/src/test/resources/relate/testSharesDoc.expected
===================================================================
--- branches/7.4.x/test-integration/common/src/test/resources/relate/testSharesDoc.expected (rev 0)
+++ branches/7.4.x/test-integration/common/src/test/resources/relate/testSharesDoc.expected 2011-06-03 19:07:41 UTC (rev 3214)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:company commonName="Avian" uuid="CUUID1" queryUUID="CQUUID1" companyID="CID1"><rental:name>Avian Rentals, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Pittsburgh</rental:location><rental:location>Keokuk</rental:location></rental:locations></rental:company><rental:company commonName="Budge" uuid="CUUID3" queryUUID="CQUUID3" companyID="CID3"><rental:name>Budge, Inc.</rental:name><rental:type>Wholesale</rental:type></rental:company><rental:company commonName="Peso" uuid="CUUID5" queryUUID="CQUUID5" companyID="CID5"><rental:name>Peso, Inc.</rental:name><rental:type>Consumer</rental:type></rental:company><rental:company commonName="Wholefleet" uuid="CUUID6" queryUUID="CQUUID6" companyID="CID6"><rental:name>Wholefleet, Inc.</rental:name><rental:type>Wholesale</rental:type></rental:company><!
/rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:hasSharingAgreement commonName="RCC12" uuid="CCUUID12" queryUUID="CCQUUID12" nature="sharesWith" subjectType="Company" targetType="Company" primaryPartyID="CID1" secondaryPartyID="CID2" since="1985"/><rental:hasSharingAgreement commonName="RCC13" uuid="CCUUID13" queryUUID="CCQUUID13" nature="sharesWith" subjectType="Company" targetType="Company" primaryPartyID="CID1" secondaryPartyID="CID3" since="1995"/><rental:hasSharingAgreement commonName="RCC14" uuid="CCUUID14" queryUUID="CCQUUID14" nature="sharesWith" subjectType="Company" targetType="Company" primaryPartyID="CID1" secondaryPartyID="CID4" since="2005"/><rental:hasSharingAgreement commonName="RCC34" uuid="CCUUID34" queryUUID="CCQUUID34" nature="sharesWith" subjectType="Company" targetType="Company" primaryPartyID="CID3" secondaryPartyID="CID4" since="2001"/><rental:hasSha!
ringAgreement commonName="RCC54" uuid="CCUUID54" queryUUID="CCQUUID54" nature="sharesWith" subjectType="Company" targetType="Company" primaryPartyID="CID5" secondaryPartyID="CID4" since="1999"/><rental:hasSharingAgreement commonName="RCC64" uuid="CCUUID64" queryUUID="CCQUUID64" nature="sharesWith" subjectType="Company" targetType="Company" primaryPartyID="CID6" secondaryPartyID="CID4" since="1995"/></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:company commonName="Entertwine" uuid="CUUID2" queryUUID="CQUUID2" companyID="CID2"><rental:name>Entertwine Rent A Car, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Moosejaw</rental:location></rental:locations></rental:company><rental:company commonName="Gigahertz" uuid="CUUID4" queryUUID="CQUUID4" companyID="CID4"><rental:name>Gigahertz, Inc.</rental:name><rental:type>Consumer</rental:type></rental:company></rental:rentals>
Added: branches/7.4.x/test-integration/common/src/test/resources/relate/testSharesDocEspaceQuestion3.expected
===================================================================
--- branches/7.4.x/test-integration/common/src/test/resources/relate/testSharesDocEspaceQuestion3.expected (rev 0)
+++ branches/7.4.x/test-integration/common/src/test/resources/relate/testSharesDocEspaceQuestion3.expected 2011-06-03 19:07:41 UTC (rev 3214)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:company commonName="Avian" uuid="CUUID1" queryUUID="CQUUID1" companyID="CID1"><rental:name>Avian Rentals, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Pittsburgh</rental:location><rental:location>Keokuk</rental:location></rental:locations></rental:company></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:hasSharingAgreement commonName="RCC12" uuid="CCUUID12" queryUUID="CCQUUID12" nature="sharesWith" subjectType="Company" targetType="Company" primaryPartyID="CID1" secondaryPartyID="CID2" since="1985"/><rental:hasSharingAgreement commonName="RCC13" uuid="CCUUID13" queryUUID="CCQUUID13" nature="sharesWith" subjectType="Company" targetType="Company" primaryPartyID="CID1" secondaryPartyID="CID3" since="1995"/><rental:hasSharingAgreement commonName="RCC14" uuid="CCUUID14" queryUUID="CCQUUID14" nature="sharesWith" subjectType="Company" targetType="Company" primaryPartyID="CID1" secondaryPartyID="CID4" since="2005"/></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:company commonName="Budge" uuid="CUUID3" queryUUID="CQUUID3" companyID="CID3"><rental:name>Budge, Inc.</rental:name><rental:type>Wholesale</rental:type></rental:company><rental:company commonName="Entertwine" uuid="CUUID2" queryUUID="CQUUID2" companyID="CID2"><rental:name>Entertwine Rent A Car, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Moosejaw</rental:location></rental:locations></rental:company><rental:company commonName="Gigahertz" uuid="CUUID4" queryUUID="CQUUID4" companyID="CID4"><rental:name>Gigahertz, Inc.</rental:name><rental:type>Consumer</rental:type></rental:company></rental:rentals>
Added: branches/7.4.x/test-integration/common/src/test/resources/relate/testSharesDocWithCritTgt.expected
===================================================================
--- branches/7.4.x/test-integration/common/src/test/resources/relate/testSharesDocWithCritTgt.expected (rev 0)
+++ branches/7.4.x/test-integration/common/src/test/resources/relate/testSharesDocWithCritTgt.expected 2011-06-03 19:07:41 UTC (rev 3214)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:company commonName="Avian" uuid="CUUID1" queryUUID="CQUUID1" companyID="CID1"><rental:name>Avian Rentals, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Pittsburgh</rental:location><rental:location>Keokuk</rental:location></rental:locations></rental:company></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:hasSharingAgreement commonName="RCC12" uuid="CCUUID12" queryUUID="CCQUUID12" nature="sharesWith" subjectType="Company" targetType="Company" primaryPartyID="CID1" secondaryPartyID="CID2" since="1985"/><rental:hasSharingAgreement commonName="RCC13" uuid="CCUUID13" queryUUID="CCQUUID13" nature="sharesWith" subjectType="Company" targetType="Company" primaryPartyID="CID1" secondaryPartyID="CID3" since="1995"/><rental:hasSharingAgreement commonName="RCC14" uuid="CCUUID14" queryUUID="CCQUUID14" nature="sharesWith" subjectType="Company" targetType="Company" primaryPartyID="CID1" secondaryPartyID="CID4" since="2005"/></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:company commonName="Budge" uuid="CUUID3" queryUUID="CQUUID3" companyID="CID3"><rental:name>Budge, Inc.</rental:name><rental:type>Wholesale</rental:type></rental:company><rental:company commonName="Entertwine" uuid="CUUID2" queryUUID="CQUUID2" companyID="CID2"><rental:name>Entertwine Rent A Car, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Moosejaw</rental:location></rental:locations></rental:company><rental:company commonName="Gigahertz" uuid="CUUID4" queryUUID="CQUUID4" companyID="CID4"><rental:name>Gigahertz, Inc.</rental:name><rental:type>Consumer</rental:type></rental:company></rental:rentals>
Added: branches/7.4.x/test-integration/common/src/test/resources/relate/testSharesDocWithCritTgtContext.expected
===================================================================
--- branches/7.4.x/test-integration/common/src/test/resources/relate/testSharesDocWithCritTgtContext.expected (rev 0)
+++ branches/7.4.x/test-integration/common/src/test/resources/relate/testSharesDocWithCritTgtContext.expected 2011-06-03 19:07:41 UTC (rev 3214)
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:company commonName="Avian" uuid="CUUID1" queryUUID="CQUUID1" companyID="CID1"><rental:name>Avian Rentals, Inc.</rental:name><rental:type>Consumer</rental:type><rental:locations><rental:location>Pittsburgh</rental:location><rental:location>Keokuk</rental:location></rental:locations></rental:company></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:hasSharingAgreement commonName="RCC13" uuid="CCUUID13" queryUUID="CCQUUID13" nature="sharesWith" subjectType="Company" targetType="Company" primaryPartyID="CID1" secondaryPartyID="CID3" since="1995"/></rental:rentals>
+<?xml version="1.0" encoding="UTF-8"?><rental:rentals xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:rental="urn:metamatrix:source:rental"><rental:company commonName="Budge" uuid="CUUID3" queryUUID="CQUUID3" companyID="CID3"><rental:name>Budge, Inc.</rental:name><rental:type>Wholesale</rental:type></rental:company></rental:rentals>
13 years, 6 months
teiid SVN: r3213 - in branches/7.4.x: engine/src/main/java/org/teiid/dqp/internal/datamgr and 1 other directory.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2011-06-02 14:23:22 -0400 (Thu, 02 Jun 2011)
New Revision: 3213
Modified:
branches/7.4.x/api/src/main/java/org/teiid/translator/BaseDelegatingExecutionFactory.java
branches/7.4.x/api/src/main/java/org/teiid/translator/ExecutionFactory.java
branches/7.4.x/engine/src/main/java/org/teiid/dqp/internal/datamgr/ConnectorManager.java
branches/7.4.x/engine/src/main/java/org/teiid/dqp/internal/datamgr/ConnectorWorkItem.java
Log:
TEIID-1585 adding the executioncontext to getconnection
Modified: branches/7.4.x/api/src/main/java/org/teiid/translator/BaseDelegatingExecutionFactory.java
===================================================================
--- branches/7.4.x/api/src/main/java/org/teiid/translator/BaseDelegatingExecutionFactory.java 2011-06-02 18:05:39 UTC (rev 3212)
+++ branches/7.4.x/api/src/main/java/org/teiid/translator/BaseDelegatingExecutionFactory.java 2011-06-02 18:23:22 UTC (rev 3213)
@@ -111,9 +111,8 @@
return delegate.createUpdateExecution(command, executionContext,
metadata, connection);
}
- @Override
- public C getConnection(F factory) throws TranslatorException {
- return delegate.getConnection(factory);
+ public C getConnection(F factory, ExecutionContext executionContext) throws TranslatorException {
+ return delegate.getConnection(factory, executionContext);
}
@Override
public NullOrder getDefaultNullOrder() {
Modified: branches/7.4.x/api/src/main/java/org/teiid/translator/ExecutionFactory.java
===================================================================
--- branches/7.4.x/api/src/main/java/org/teiid/translator/ExecutionFactory.java 2011-06-02 18:05:39 UTC (rev 3212)
+++ branches/7.4.x/api/src/main/java/org/teiid/translator/ExecutionFactory.java 2011-06-02 18:23:22 UTC (rev 3213)
@@ -137,8 +137,10 @@
* The default implementation assumes a JCA {@link ConnectionFactory}. Subclasses should override, if they use
* another type of connection factory.
*
+ * @deprecated
+ * @see #getConnection(Object, ExecutionContext)
* @param factory
- * @return
+ * @return a connection
* @throws TranslatorException
*/
@SuppressWarnings("unchecked")
@@ -157,6 +159,22 @@
}
/**
+ * Return a connection object from the given connection factory.
+ *
+ * The default implementation assumes a JCA {@link ConnectionFactory}. Subclasses should override, if they use
+ * another type of connection factory or wish to use the {@link ExecutionContext}. By default calls {@link #getConnection(Object)}
+ *
+ * @param factory
+ * @param executionContext null if this is a system request for a connection
+ * @return a connection
+ * @throws TranslatorException
+ */
+ public C getConnection(F factory,
+ ExecutionContext executionContext) throws TranslatorException {
+ return getConnection(factory);
+ }
+
+ /**
* Closes a connection object from the given connection factory.
*
* The default implementation assumes a JCA {@link Connection}. Subclasses should override, if they use
@@ -842,4 +860,5 @@
public boolean supportsCommonTableExpressions() {
return false;
}
+
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/dqp/internal/datamgr/ConnectorManager.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/dqp/internal/datamgr/ConnectorManager.java 2011-06-02 18:05:39 UTC (rev 3212)
+++ branches/7.4.x/engine/src/main/java/org/teiid/dqp/internal/datamgr/ConnectorManager.java 2011-06-02 18:23:22 UTC (rev 3213)
@@ -113,7 +113,7 @@
public MetadataStore getMetadata(String modelName, Map<String, Datatype> datatypes, Properties importProperties) throws TranslatorException {
MetadataFactory factory = new MetadataFactory(modelName, datatypes, importProperties);
Object connectionFactory = getConnectionFactory();
- Object connection = executionFactory.getConnection(connectionFactory);
+ Object connection = executionFactory.getConnection(connectionFactory, null);
Object unwrapped = null;
if (connection instanceof WrappedConnection) {
Modified: branches/7.4.x/engine/src/main/java/org/teiid/dqp/internal/datamgr/ConnectorWorkItem.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/dqp/internal/datamgr/ConnectorWorkItem.java 2011-06-02 18:05:39 UTC (rev 3212)
+++ branches/7.4.x/engine/src/main/java/org/teiid/dqp/internal/datamgr/ConnectorWorkItem.java 2011-06-02 18:23:22 UTC (rev 3213)
@@ -196,7 +196,7 @@
LogManager.logDetail(LogConstants.CTX_CONNECTOR, new Object[] {this.requestMsg.getAtomicRequestID(), "Processing NEW request:", this.requestMsg.getCommand()}); //$NON-NLS-1$
try {
this.connectionFactory = this.manager.getConnectionFactory();
- this.connection = this.connector.getConnection(this.connectionFactory);
+ this.connection = this.connector.getConnection(this.connectionFactory, securityContext);
Object unwrapped = null;
if (connection instanceof WrappedConnection) {
13 years, 6 months
teiid SVN: r3212 - in branches/7.4.x/engine/src: main/java/org/teiid/query/optimizer/xml and 4 other directories.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2011-06-02 14:05:39 -0400 (Thu, 02 Jun 2011)
New Revision: 3212
Added:
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLProjectionMinimizer.java
Removed:
branches/7.4.x/engine/src/main/java/org/teiid/query/processor/xml/JoinedWhileInstruction.java
Modified:
branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingAttribute.java
branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingBaseNode.java
branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingCriteriaNode.java
branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingElement.java
branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingNode.java
branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingNodeConstants.java
branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingOutputter.java
branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingRecursiveElement.java
branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/ResultSetInfo.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/MarkExcludeVisitor.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/NameInSourceResolverVisitor.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/SourceNodePlannerVisitor.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/ValidateMappedCriteriaVisitor.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLPlanToProcessVisitor.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLPlanner.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLQueryPlanner.java
branches/7.4.x/engine/src/main/java/org/teiid/query/processor/xml/XMLContext.java
branches/7.4.x/engine/src/main/java/org/teiid/query/sql/LanguageObject.java
branches/7.4.x/engine/src/test/java/org/teiid/query/mapping/xml/TestMappingElement.java
branches/7.4.x/engine/src/test/java/org/teiid/query/processor/xml/TestSourceNodeGenaratorVisitor.java
Log:
TEIID-1615 Adding back the project minimization feature that was left out of 5.5 and misc xml cleanups.
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingAttribute.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingAttribute.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingAttribute.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -26,15 +26,12 @@
/**
- * A Mapping node which denotes a attribuite node.
+ * A Mapping node which denotes a attribute node.
*/
public class MappingAttribute extends MappingNode {
// Element symbol in the resultset source
ElementSymbol symbol;
- // Position of the element in the resultset source
- int position = -1;
-
// namespace of the attribute
Namespace namespace;
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingBaseNode.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingBaseNode.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingBaseNode.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -23,7 +23,6 @@
package org.teiid.query.mapping.xml;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import org.teiid.core.TeiidRuntimeException;
@@ -205,11 +204,11 @@
return false;
}
- public List getStagingTables() {
- return (List)getProperty(MappingNodeConstants.Properties.TEMP_GROUP_NAMES);
+ public List<String> getStagingTables() {
+ return (List<String>)getProperty(MappingNodeConstants.Properties.TEMP_GROUP_NAMES);
}
- public void setStagingTables(List tables) {
+ public void setStagingTables(List<String> tables) {
if (tables != null) {
setProperty(MappingNodeConstants.Properties.TEMP_GROUP_NAMES, tables);
}
@@ -222,9 +221,9 @@
if (tablename == null) {
return;
}
- List tables = getStagingTables();
- if (tables == null || tables == Collections.EMPTY_LIST) {
- tables = new ArrayList();
+ List<String> tables = getStagingTables();
+ if (tables == null || tables.isEmpty()) {
+ tables = new ArrayList<String>();
}
tables.add(tablename);
setProperty(MappingNodeConstants.Properties.TEMP_GROUP_NAMES, tables);
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingCriteriaNode.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingCriteriaNode.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingCriteriaNode.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -22,8 +22,6 @@
package org.teiid.query.mapping.xml;
-import java.util.List;
-
import org.teiid.query.sql.lang.Criteria;
@@ -34,7 +32,6 @@
*/
public class MappingCriteriaNode extends MappingBaseNode{
boolean defalt;
- List criteriaGroups;
Criteria criteriaNode;
public MappingCriteriaNode(String criteria, boolean defalt) {
@@ -87,23 +84,6 @@
return this.criteriaNode;
}
- /**
- * Groups that are referenced inthe criteria string. This is set by ValidateMappedCriteriaVisitor
- * class during the preplan.
- * @param criteriaGroups
- */
- public void setGroupsInCriteria(List criteriaGroups) {
- this.criteriaGroups = criteriaGroups;
- }
-
- /**
- * @deprecated - may not be needed
- * @return
- */
- public List getGroupsInCriteria() {
- return this.criteriaGroups;
- }
-
/**
* @see org.teiid.query.mapping.xml.MappingNode#isExcluded()
*/
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingElement.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingElement.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingElement.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -39,9 +39,6 @@
// Element symbol in the resultset source
ElementSymbol symbol;
- // Position of the element in the resultset source
- int position = -1;
-
Namespace namespace;
public MappingElement(String name) {
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingNode.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingNode.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingNode.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -52,7 +52,7 @@
private List<MappingNode> children = new LinkedList<MappingNode>();
/** node properties, as defined in NodeConstants.Properties. */
- private Map<Integer, Object> nodeProperties;
+ private Map<MappingNodeConstants.Properties, Object> nodeProperties;
/** default constructor */
public MappingNode(){
@@ -165,7 +165,7 @@
* @param propertyID Integer property key
* @return Object value
*/
- public Object getProperty(Integer propertyID) {
+ public Object getProperty(MappingNodeConstants.Properties propertyID) {
Object value = null;
if(nodeProperties != null) {
value = nodeProperties.get(propertyID);
@@ -183,11 +183,11 @@
* @param propertyID Integer property key
* @param value Object property value
*/
- void setProperty(Integer propertyID, Object value) {
+ void setProperty(MappingNodeConstants.Properties propertyID, Object value) {
if (value != null){
// Get the default for the property ...
final Object defaultValue = MappingNodeConstants.Defaults.DEFAULT_VALUES.get(propertyID);
- final Map<Integer, Object> props = getNodeProperties(); // props is never null
+ final Map<MappingNodeConstants.Properties, Object> props = getNodeProperties(); // props is never null
if ( !value.equals(defaultValue) ) { // we know value is not null
// Set the value only if different than the default; note that the 'getProperty'
// method is returning the default if there isn't a value
@@ -200,7 +200,7 @@
}
}
- void removeProperty(Integer propertyID) {
+ void removeProperty(MappingNodeConstants.Properties propertyID) {
getNodeProperties().remove(propertyID);
}
@@ -212,9 +212,9 @@
* object.
* @see #getProperties
*/
- public Map<Integer, Object> getNodeProperties(){
+ public Map<MappingNodeConstants.Properties, Object> getNodeProperties(){
if(nodeProperties == null) {
- nodeProperties = new HashMap<Integer, Object>();
+ nodeProperties = new HashMap<MappingNodeConstants.Properties, Object>();
}
return nodeProperties;
}
@@ -348,7 +348,7 @@
* {@link MappingNodeConstants#SEARCH_DOWN} or {@link MappingNodeConstants#SEARCH_DOWN_BREADTH_FIRST}
* @return MappingNode first node found that has the indicated property and value, or null if none found
*/
- static MappingNode findFirstNodeWithProperty(Integer propertyKey, Object value, MappingNode node, int searchDirection) {
+ static MappingNode findFirstNodeWithProperty(MappingNodeConstants.Properties propertyKey, Object value, MappingNode node, int searchDirection) {
return findFirstNodeWithPropertyValue(propertyKey, value, false, node, searchDirection);
}
@@ -368,11 +368,11 @@
* {@link MappingNodeConstants#SEARCH_DOWN} or {@link MappingNodeConstants#SEARCH_DOWN_BREADTH_FIRST}
* @return MappingNode first node found that has the indicated property and value, or null if none found
*/
- static MappingNode findFirstNodeWithPropertyString(Integer propertyKey, String value, MappingNode node, int searchDirection) {
+ static MappingNode findFirstNodeWithPropertyString(MappingNodeConstants.Properties propertyKey, String value, MappingNode node, int searchDirection) {
return findFirstNodeWithPropertyValue(propertyKey, value, true, node, searchDirection);
}
- private static MappingNode findFirstNodeWithPropertyValue(Integer propertyKey, Object value, boolean isStringValue, MappingNode node, int searchDirection) {
+ private static MappingNode findFirstNodeWithPropertyValue(MappingNodeConstants.Properties propertyKey, Object value, boolean isStringValue, MappingNode node, int searchDirection) {
if (node == null || propertyKey == null){
return null;
@@ -392,7 +392,7 @@
}
}
- private static MappingNode traverseDownForFirstNodeWithPropertyString(Integer propertyKey, Object value, boolean isStringValue, MappingNode node, boolean breadthFirst) {
+ private static MappingNode traverseDownForFirstNodeWithPropertyString(MappingNodeConstants.Properties propertyKey, Object value, boolean isStringValue, MappingNode node, boolean breadthFirst) {
if (breadthFirst) {
Iterator<MappingNode> children = node.getChildren().iterator();
while (children.hasNext()){
@@ -421,7 +421,7 @@
return null;
}
- private static boolean checkThisNodeForPropertyValue(Integer propertyKey, Object value, boolean isStringValue, MappingNode node) {
+ private static boolean checkThisNodeForPropertyValue(MappingNodeConstants.Properties propertyKey, Object value, boolean isStringValue, MappingNode node) {
Object thisValue = node.getProperty(propertyKey);
if (thisValue != null){
if (value == null){
@@ -437,7 +437,7 @@
return false;
}
- private static MappingNode traverseUpForFirstNodeWithPropertyString(Integer propertyKey, Object value, boolean isStringValue, MappingNode node) {
+ private static MappingNode traverseUpForFirstNodeWithPropertyString(MappingNodeConstants.Properties propertyKey, Object value, boolean isStringValue, MappingNode node) {
while (node != null){
if (checkThisNodeForPropertyValue(propertyKey, value, isStringValue, node)){
return node;
@@ -494,4 +494,8 @@
throw new TeiidRuntimeException(e);
}
}
+
+ public ElementSymbol getElementSymbol() {
+ return null;
+ }
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingNodeConstants.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingNodeConstants.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingNodeConstants.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -151,18 +151,17 @@
* Property names for type-specific node properties. Values will be of
* type String unless otherwise specified.
*/
- public static final class Properties {
- private Properties() { }
+ public enum Properties {
/** The basic name of this node. Will be the element or attribute tag name. */
- public static final Integer NAME = new Integer(0);
+ NAME,
/**
* The namespace prefix, which indicates the namespace for this node.
* The namespace must be declared either at this node or an ancestor
* node; use the {@link #NAMESPACE_DECLARATIONS} property.
*/
- public static final Integer NAMESPACE_PREFIX = new Integer(1);
+ NAMESPACE_PREFIX,
/**
* <p>This property allows for one or more namespace declarations
@@ -182,42 +181,42 @@
* <pre><shipDate xsi:nil="true"/></pre>
* </p>
*/
- public static final Integer NAMESPACE_DECLARATIONS = new Integer(2);
+ NAMESPACE_DECLARATIONS,
/**
* The target node type. Can take on one of the values {@link #ATTRIBUTE}
* or {@link #ELEMENT}.
*/
- public static final Integer NODE_TYPE = new Integer(4); // Values: ATTRIBUTE|ELEMENT
+ NODE_TYPE, // Values: ATTRIBUTE|ELEMENT
/**
* <p>The minimum number of times this node must occur in a document.</p>
* <p>Type: <code>java.lang.Integer</code></p>
*/
- public static final Integer CARDINALITY_MIN_BOUND = new Integer(5);
+ CARDINALITY_MIN_BOUND,
/**
* <p>The maximum number of times this node may occur in a document.</p>
* <p>Type: <code>java.lang.Integer</code></p>
*/
- public static final Integer CARDINALITY_MAX_BOUND = new Integer(6);
+ CARDINALITY_MAX_BOUND,
/**
* An optional constraint that applies for the node. If a constraint is
* defined, the input tuple to the node will be compared to the constraint.
* The node will be processed only if the constraint is satisfied.
*/
- public static final Integer CRITERIA = new Integer(7);
+ CRITERIA,
/**
* This property represents a default value for an XML node
*/
- public static final Integer DEFAULT_VALUE = new Integer(8);
+ DEFAULT_VALUE,
/**
* This property represents a fixed value for an XML node
*/
- public static final Integer FIXED_VALUE = new Integer(11);
+ FIXED_VALUE,
/**
* <p>Value will be of type Boolean. Indicates that the node is nillable,
@@ -226,11 +225,11 @@
* indicates when the element has null content.</p>
*
* <p><b>Note:</b> This property may only be set to true if this node
- * is an element (i.e. the {@link #NODE_TYPE} property must have
+ * is an element (i.e. the {@link #NODETYPE} property must have
* a value of {@link #ELEMENT}), although this constraint is not
* enforced anywhere in the MappingNode framework.</p>
*/
- public static final Integer IS_NILLABLE = new Integer(9);
+ IS_NILLABLE,
/**
* <p>This node will be completely ignored, not output, not
@@ -238,11 +237,11 @@
* <p>Type: <code>java.lang.Boolean</code></p>
* <p>Default: {@link MappingNodeConstants.Defaults#DEFAULT_IS_EXCLUDED}</p>
*/
- public static final Integer IS_EXCLUDED = new Integer(10);
+ IS_EXCLUDED,
/** The name of the result being returned by this node */
- public static final Integer RESULT_SET_NAME = new Integer(20);
+ RESULT_SET_NAME,
/**
* The name(s) of the temporary group(s) to be materialized at this
@@ -250,18 +249,18 @@
* <p>Type: <code>java.util.List</code> of </code>java.lang.String</code>
* <p>Default: {@link MappingNodeConstants.Defaults#DEFAULT_TEMP_GROUP_NAMES}</p>
*/
- public static final Integer TEMP_GROUP_NAMES = new Integer(23);
+ TEMP_GROUP_NAMES,
/** The symbol from a result set that maps to this node. */
- public static final Integer ELEMENT_NAME = new Integer(30);
+ ELEMENT_NAME,
/** The temporary property to mark whether this node should be included. */
- public static final Integer IS_INCLUDED = new Integer(15);
+ IS_INCLUDED,
/**
* The text for a comment.
*/
- public static final Integer COMMENT_TEXT = new Integer(16);
+ COMMENT_TEXT,
/**
* Indicates that the element or attribute is to be considered optional,
@@ -271,7 +270,7 @@
* <p>Type: <code>java.lang.Boolean</code>
* <p>Default: {@link MappingNodeConstants.Defaults#DEFAULT_IS_OPTIONAL}</p>
*/
- public static final Integer IS_OPTIONAL = new Integer(22);
+ IS_OPTIONAL,
/**
* <p>Indicates the level of text normalization that will be applied
@@ -279,7 +278,7 @@
* <p>Type: <code>java.lang.String</code></p>
* <p>Default: {@link MappingNodeConstants.Defaults#DEFAULT_NORMALIZE_TEXT}</p>
*/
- public static final Integer NORMALIZE_TEXT = new Integer(24);
+ NORMALIZE_TEXT,
/**
* Specifies the design-time base built-in type for the virtual document node.
@@ -288,7 +287,7 @@
* is used to determine special translations from the runtime value to the expected
* XML schema output value string.
*/
- public static final Integer BUILT_IN_TYPE = new Integer(25);
+ BUILT_IN_TYPE,
// ========================================================================
// CHOICE NODE RELATED PROPERTIES
@@ -300,7 +299,7 @@
* <p>Type: <code>java.lang.Boolean</code></p>
* <p>Default: {@link MappingNodeConstants.Defaults#DEFAULT_IS_DEFAULT_CHOICE}</p>
*/
- public static final Integer IS_DEFAULT_CHOICE = new Integer(40);
+ IS_DEFAULT_CHOICE,
/**
* <p>This property of a choice node indicates that, by
@@ -313,7 +312,7 @@
* <p>Type: <code>java.lang.Boolean</code></p>
* <p>Default: {@link MappingNodeConstants.Defaults#DEFAULT_EXCEPTION_ON_DEFAULT}</p>
*/
- public static final Integer EXCEPTION_ON_DEFAULT = new Integer(42);
+ EXCEPTION_ON_DEFAULT,
// ========================================================================
// RECURSI0N RELATED PROPERTIES
@@ -324,7 +323,7 @@
* <p>Type: <code>java.lang.Boolean</code></p>
* <p>Default: {@link MappingNodeConstants.Defaults#DEFAULT_IS_RECURSIVE}</p>
*/
- public static final Integer IS_RECURSIVE = new Integer(59);
+ IS_RECURSIVE,
/**
* The criteria of a node representing the root of a recursive
@@ -332,7 +331,7 @@
* recursion should terminate. i.e. "resultSetName.employeeName = 'Jones'"
* @see #RECURSION_LIMIT
*/
- public static final Integer RECURSION_CRITERIA = new Integer(50);
+ RECURSION_CRITERIA,
/**
* The recursion limit of a recursive XML fragment - if the
@@ -343,7 +342,7 @@
* <p>Default: {@link MappingNodeConstants.Defaults#DEFAULT_RECURSION_LIMIT}</p>
* @see #EXCEPTION_ON_RECURSION_LIMIT
*/
- public static final Integer RECURSION_LIMIT = new Integer(51);
+ RECURSION_LIMIT,
/**
* If recursion is terminated due to the safeguard {@link #RECURSION_LIMIT} being
@@ -353,7 +352,7 @@
* @see #RECURSION_CRITERIA
* @see #RECURSION_LIMIT
*/
- public static final Integer EXCEPTION_ON_RECURSION_LIMIT = new Integer(52);
+ EXCEPTION_ON_RECURSION_LIMIT,
/**
* This property should be set on each document node at which a recursive
@@ -363,14 +362,14 @@
* document).
* <p>Type: <code>java.lang.String</code></p>
*/
- public static final Integer RECURSION_ROOT_MAPPING_CLASS = new Integer(53);
+ RECURSION_ROOT_MAPPING_CLASS,
/**
* Indicates if the node is the root of a recursive XML fragment or not.
* <p>Type: <code>java.lang.Boolean</code></p>
* <p>Default: {@link MappingNodeConstants.Defaults#DEFAULT_IS_RECURSIVE_ROOT}</p>
*/
- public static final Integer IS_RECURSIVE_ROOT = new Integer(54);
+ IS_RECURSIVE_ROOT,
// ==================================================================================
// DOCUMENT PROPERTIES (read from root node only, applicable to document as a whole)
@@ -381,7 +380,7 @@
* set at the root MappingNode of the document.</p>
* <p>Default: {@link MappingNodeConstants.Defaults#DEFAULT_DOCUMENT_ENCODING}</p>
*/
- public static final Integer DOCUMENT_ENCODING = new Integer(80);
+ DOCUMENT_ENCODING,
/**
* <p>Indicates whether the document will be outputted as a compressed
@@ -391,14 +390,14 @@
* <p>Type: <code>java.lang.Boolean</code></p>
* <p>Default: {@link MappingNodeConstants.Defaults#DEFAULT_FORMATTED_DOCUMENT}</p>
*/
- public static final Integer FORMATTED_DOCUMENT = new Integer(81);
+ FORMATTED_DOCUMENT,
/**
* A property to mark to implicity include a node which needs to be
* added to result document. The implicit nodes are such nodes which
* define the encoding information and type defination information.
*/
- public static final Integer ALWAYS_INCLUDE = new Integer(82);
+ ALWAYS_INCLUDE,
/**
* In the case of the recursive mapping element nodes, the source nodes
@@ -406,13 +405,13 @@
* (i.e. mapping class in recurive node) is alias to the source node which is
* above the recursive node.
*/
- public static final Integer ALIAS_RESULT_SET_NAME = new Integer(83);
+ ALIAS_RESULT_SET_NAME,
/**
* Result Set Info object which contains the query and the plan for
* the source node.
*/
- public static final Integer RESULT_SET_INFO = new Integer(84);
+ RESULT_SET_INFO,
}
// =========================================================================
@@ -487,11 +486,11 @@
* manner. Some tags are left out that the MappingOutputter
* handles separately.
*/
- static final List OUTPUTTER_PROPERTY_TAGS;
+ static final List<String> OUTPUTTER_PROPERTY_TAGS;
// Initialize static variables...
static {
- List temp = Arrays.asList( new String[]{
+ List<String> temp = Arrays.asList( new String[]{
MappingNodeConstants.Tags.NAME,
MappingNodeConstants.Tags.NODE_TYPE,
MappingNodeConstants.Tags.NAMESPACE_PREFIX,
@@ -535,7 +534,7 @@
* defined in {@link Properties}
* @see getPropertyString
*/
- public static final Integer getPropertyInteger(String property) {
+ public static final MappingNodeConstants.Properties getProperty(String property) {
if(property.equals(Tags.NAME)) return Properties.NAME;
else if (property.equals(Tags.NAMESPACE_PREFIX)) return Properties.NAMESPACE_PREFIX;
else if (property.equals(Tags.NODE_TYPE)) return Properties.NODE_TYPE;
@@ -626,7 +625,7 @@
* {@link MappingNodeConstants.Properties}. The {@link MappingNode} class will return
* these values if none are defined, for each property.
*/
- public static final Map DEFAULT_VALUES;
+ public static final Map<Properties, Object> DEFAULT_VALUES;
/** The default minimum bound of the cardinality of a node. */
public static final Integer DEFAULT_CARDINALITY_MINIMUM_BOUND = new Integer(1);
@@ -695,7 +694,7 @@
public static final Boolean DEFAULT_FORMATTED_DOCUMENT = Boolean.FALSE;
static{
- HashMap temp = new HashMap();
+ HashMap<Properties, Object> temp = new HashMap<Properties, Object>();
temp.put(Properties.CARDINALITY_MIN_BOUND, DEFAULT_CARDINALITY_MINIMUM_BOUND);
temp.put(Properties.CARDINALITY_MAX_BOUND, DEFAULT_CARDINALITY_MAXIMUM_BOUND);
temp.put(Properties.NODE_TYPE, DEFAULT_NODE_TYPE);
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingOutputter.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingOutputter.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingOutputter.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -129,10 +129,10 @@
* @throws XMLStreamException
*/
void addElementProperties(Map properties ) throws XMLStreamException {
- Iterator propNames = MappingNodeConstants.Tags.OUTPUTTER_PROPERTY_TAGS.iterator();
+ Iterator<String> propNames = MappingNodeConstants.Tags.OUTPUTTER_PROPERTY_TAGS.iterator();
while ( propNames.hasNext() ) {
- String propName = (String)propNames.next();
- Integer propKey = MappingNodeConstants.getPropertyInteger(propName);
+ String propName = propNames.next();
+ MappingNodeConstants.Properties propKey = MappingNodeConstants.getProperty(propName);
if ( properties.containsKey(propKey) ) {
Object value = properties.get(propKey);
addElementProperty( propName, value );
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingRecursiveElement.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingRecursiveElement.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/MappingRecursiveElement.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -22,8 +22,6 @@
package org.teiid.query.mapping.xml;
-import java.util.List;
-
import org.teiid.query.sql.lang.Criteria;
@@ -34,7 +32,6 @@
* upto given depth limit.
*/
public class MappingRecursiveElement extends MappingElement {
- List criteriaGroups;
Criteria criteriaNode;
public MappingRecursiveElement(String name, String mappingClass) {
@@ -114,19 +111,6 @@
}
/**
- * Groups that are referenced inthe criteria string. This is set by ValidateMappedCriteriaVisitor
- * class during the preplan.
- * @param criteriaGroups
- */
- public void setGroupsInCriteria(List criteriaGroups) {
- this.criteriaGroups = criteriaGroups;
- }
-
- public List getGroupsInCriteria() {
- return this.criteriaGroups;
- }
-
- /**
* This is parsed and resolved criteria node based on the criteria string. This is set by
* ValidateMappedCriteriaVisitor class during pre planning.
* @param node
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/ResultSetInfo.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/ResultSetInfo.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/mapping/xml/ResultSetInfo.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -23,7 +23,6 @@
package org.teiid.query.mapping.xml;
import java.util.HashSet;
-import java.util.List;
import java.util.Set;
import org.teiid.query.processor.ProcessorPlan;
@@ -45,9 +44,6 @@
// The result set command
private Command rsCommand;
- // The bound references for this result set: List<Reference>
- private List boundReferences;
-
// The processor plan output for the result set
private ProcessorPlan rsPlan;
@@ -68,8 +64,6 @@
private boolean stagedResult = false;
//joined source node state
- private boolean joinedWithParent = false;
- private boolean joinRoot = false;
private int mappingClassNumber = 0;
private ElementSymbol mappingClassSymbol;
@@ -150,13 +144,10 @@
public Object clone() {
ResultSetInfo clone = new ResultSetInfo(this.resultSetName, this.stagedResult);
clone.rsPlan = this.rsPlan;
- clone.boundReferences = this.boundReferences;
clone.userRowLimit = this.userRowLimit;
clone.exceptionOnRowLimit = this.exceptionOnRowLimit;
clone.rsCommand = (Command)this.rsCommand.clone();
clone.criteriaRaised = this.criteriaRaised;
- clone.joinedWithParent = this.joinedWithParent;
- clone.joinRoot = this.joinRoot;
clone.mappingClassNumber = this.mappingClassNumber;
clone.mappingClassSymbol = this.mappingClassSymbol;
return clone;
@@ -166,22 +157,6 @@
return resultSetName + ", resultSetObject " + rsCommand; //$NON-NLS-1$
}
- public boolean isJoinedWithParent() {
- return this.joinedWithParent;
- }
-
- public void setJoinedWithParent(boolean joinedWithParent) {
- this.joinedWithParent = joinedWithParent;
- }
-
- public boolean isJoinRoot() {
- return this.joinRoot;
- }
-
- public void setJoinRoot(boolean joinRoot) {
- this.joinRoot = joinRoot;
- }
-
public int getMappingClassNumber() {
return this.mappingClassNumber;
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/MarkExcludeVisitor.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/MarkExcludeVisitor.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/MarkExcludeVisitor.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -40,13 +40,13 @@
/**
- * This vistor marks all the nodes in the Mapping Document to
+ * This visitor marks all the nodes in the Mapping Document to
* "exclude".
*/
public class MarkExcludeVisitor extends MappingVisitor{
- HashSet keepNodes;
+ HashSet<String> keepNodes;
- public MarkExcludeVisitor(HashSet keppNodes) {
+ public MarkExcludeVisitor(HashSet<String> keppNodes) {
this.keepNodes = keppNodes;
}
@@ -132,7 +132,7 @@
}
}
- public static MappingDocument markExcludedNodes(MappingDocument doc, HashSet keepNodes) {
+ public static MappingDocument markExcludedNodes(MappingDocument doc, HashSet<String> keepNodes) {
MarkExcludeVisitor visitor = new MarkExcludeVisitor(keepNodes);
doc.acceptVisitor(new Navigator(true, visitor));
return doc;
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/NameInSourceResolverVisitor.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/NameInSourceResolverVisitor.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/NameInSourceResolverVisitor.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -61,12 +61,12 @@
Map symbols = element.getSymbolMap();
- List elements = new LinkedList();
+ List<ElementSymbol> elements = new LinkedList<ElementSymbol>();
for (Iterator i = symbols.values().iterator(); i.hasNext();) {
Object symbol = i.next();
if (symbol instanceof ElementSymbol) {
- elements.add(symbol);
+ elements.add((ElementSymbol)symbol);
}
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/SourceNodePlannerVisitor.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/SourceNodePlannerVisitor.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/SourceNodePlannerVisitor.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -125,7 +125,7 @@
// root source nodes do not have any inputset criteria on them; so there is no use in
// going through the raising the criteria.
// if the original query is not a select.. we are out of luck. we can expand on this later
- // versions. make ure bindings are only to parent.
+ // versions. make sure bindings are only to parent.
if (parent == null || !canRaiseInputset(command, bindings) || !areBindingsOnlyToNode(modifiedNode, parent)) {
return;
}
@@ -418,14 +418,14 @@
*/
@Override
protected void walkChildNodes(MappingNode element) {
- List children = new ArrayList(element.getNodeChildren());
- for(Iterator i=children.iterator(); i.hasNext();) {
+ List<MappingNode> children = new ArrayList<MappingNode>(element.getNodeChildren());
+ for(Iterator<MappingNode> i=children.iterator(); i.hasNext();) {
if (shouldAbort()) {
break;
}
- MappingNode node = (MappingNode)i.next();
+ MappingNode node = i.next();
node.acceptVisitor(this);
}
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/ValidateMappedCriteriaVisitor.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/ValidateMappedCriteriaVisitor.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/ValidateMappedCriteriaVisitor.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -22,10 +22,6 @@
package org.teiid.query.optimizer.xml;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
import java.util.Map;
import org.teiid.api.exception.query.QueryMetadataException;
@@ -40,8 +36,6 @@
import org.teiid.query.parser.QueryParser;
import org.teiid.query.resolver.util.ResolverVisitor;
import org.teiid.query.sql.lang.Criteria;
-import org.teiid.query.sql.symbol.GroupSymbol;
-import org.teiid.query.sql.visitor.GroupsUsedByElementsVisitor;
import org.teiid.query.sql.visitor.StaticSymbolMappingVisitor;
@@ -60,9 +54,7 @@
Map symbolMap = element.getSourceNode().buildFullSymbolMap();
Criteria criteria = resolveCriteria(criteriaStr, symbolMap);
if (criteria != null) {
- List groupNames = getCriteriaGroups(criteria);
element.setCriteriaNode(criteria);
- element.setGroupsInCriteria(groupNames);
}
}
@@ -71,9 +63,7 @@
Map symbolMap = element.getSourceNode().buildFullSymbolMap();
Criteria criteria = resolveCriteria(criteriaStr, symbolMap);
if (criteria != null) {
- List groupNames = getCriteriaGroups(criteria);
element.setCriteriaNode(criteria);
- element.setGroupsInCriteria(groupNames);
}
}
@@ -91,17 +81,6 @@
return null;
}
- private static List getCriteriaGroups(Criteria criteria) {
- Collection criteriaGroups = GroupsUsedByElementsVisitor.getGroups(criteria);
- List names = new ArrayList(criteriaGroups.size());
- Iterator iter = criteriaGroups.iterator();
- while(iter.hasNext()) {
- names.add( ((GroupSymbol)iter.next()).getName().toUpperCase() );
- }
- return names;
- }
-
-
public static void validateAndCollectCriteriaElements(MappingDocument doc, XMLPlannerEnvironment planEnv)
throws QueryPlannerException, QueryMetadataException, TeiidComponentException {
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLPlanToProcessVisitor.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLPlanToProcessVisitor.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLPlanToProcessVisitor.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -22,7 +22,6 @@
package org.teiid.query.optimizer.xml;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Stack;
@@ -53,7 +52,6 @@
import org.teiid.query.processor.xml.ExecStagingTableInstruction;
import org.teiid.query.processor.xml.IfInstruction;
import org.teiid.query.processor.xml.InitializeDocumentInstruction;
-import org.teiid.query.processor.xml.JoinedWhileInstruction;
import org.teiid.query.processor.xml.MoveCursorInstruction;
import org.teiid.query.processor.xml.MoveDocInstruction;
import org.teiid.query.processor.xml.ProcessorInstruction;
@@ -258,19 +256,6 @@
String source = node.getActualResultSetName();
ResultSetInfo info= node.getResultSetInfo();
- if (info.isJoinedWithParent()) {
- //create a dependent while loop
- JoinedWhileInstruction whileInst = new JoinedWhileInstruction(source, new Integer(info.getMappingClassNumber()),
- info.getMappingClassSymbol(), node.getResultName());
- currentProgram.addInstruction(whileInst);
-
- Program childProgram = new Program();
- whileInst.setBlockProgram(childProgram);
-
- programStack.push(childProgram);
- return;
- }
-
// Add instruction to execute relational query
ExecSqlInstruction sqlInst = new ExecSqlInstruction(source, info);
currentProgram.addInstruction(sqlInst);
@@ -306,10 +291,8 @@
String source = node.getActualResultSetName();
ResultSetInfo info= node.getResultSetInfo();
- if (!info.isJoinRoot()) {
- // move to next row.
- currentProgram.addInstruction(new MoveCursorInstruction(source));
- }
+ // move to next row.
+ currentProgram.addInstruction(new MoveCursorInstruction(source));
// Since each element with a source started a new program;
// since now we are done with children, we need to pop to current program
@@ -343,15 +326,14 @@
startRootRecursive(node, context);
}
- List stagingTables = node.getStagingTables();
- for (final Iterator i = stagingTables.iterator(); i.hasNext();) {
- final String table = (String)i.next();
+ List<String> stagingTables = node.getStagingTables();
+ for (String table : stagingTables) {
Program currentProgram = (Program)programStack.peek();
// load staging
currentProgram.addInstruction(new ExecStagingTableInstruction(table, planEnv.getStagingTableResultsInfo(table)));
- // unload sttaging
+ // unload staging
String unloadName = planEnv.unLoadResultName(table);
cleanupProgram.addInstruction(new ExecStagingTableInstruction(unloadName, planEnv.getStagingTableResultsInfo(unloadName)));
} // for
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLPlanner.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLPlanner.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLPlanner.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -201,24 +201,28 @@
if (debug) {
debugDocumentInfo("After Exclude", planEnv); //$NON-NLS-1$
}
+
+ //Resolve all the "elements" against the result sets
+ NameInSourceResolverVisitor.resolveElements(planEnv.mappingDoc, planEnv);
+ //Validate and resolve the criteria specified on the mapping nodes.
+ ValidateMappedCriteriaVisitor.validateAndCollectCriteriaElements(planEnv.mappingDoc, planEnv);
+
+ XMLProjectionMinimizer.minimizeProjection(planEnv);
+
+ if (debug) {
+ debugDocumentInfo("After Projection Minimization", planEnv); //$NON-NLS-1$
+ }
+
// Autostage queries. try to auto-stage the planned queries
// removal of this step should not affect overall processing
XMLStagaingQueryPlanner.stageQueries(planEnv.mappingDoc, planEnv);
- //JoinSourceNodes.joinSourceNodes(planEnv.mappingDoc, planEnv);
-
//Plan the various relational result sets
XMLQueryPlanner.optimizeQueries(planEnv.mappingDoc, planEnv);
//Handle nillable nodes
planEnv.mappingDoc = HandleNillableVisitor.execute(planEnv.mappingDoc);
-
- //Resolve all the "elements" aginst the result sets
- NameInSourceResolverVisitor.resolveElements(planEnv.mappingDoc, planEnv);
-
- //Validate and resolve the criteria specified on the mapping nodes.
- ValidateMappedCriteriaVisitor.validateAndCollectCriteriaElements(planEnv.mappingDoc, planEnv);
}
static void removeExcluded(MappingNode node) {
Added: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLProjectionMinimizer.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLProjectionMinimizer.java (rev 0)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLProjectionMinimizer.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -0,0 +1,202 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership. Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301 USA.
+ */
+
+package org.teiid.query.optimizer.xml;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+
+import org.teiid.core.TeiidException;
+import org.teiid.core.TeiidRuntimeException;
+import org.teiid.query.mapping.relational.QueryNode;
+import org.teiid.query.mapping.xml.MappingAttribute;
+import org.teiid.query.mapping.xml.MappingCriteriaNode;
+import org.teiid.query.mapping.xml.MappingElement;
+import org.teiid.query.mapping.xml.MappingNode;
+import org.teiid.query.mapping.xml.MappingRecursiveElement;
+import org.teiid.query.mapping.xml.MappingSourceNode;
+import org.teiid.query.mapping.xml.MappingVisitor;
+import org.teiid.query.mapping.xml.Navigator;
+import org.teiid.query.mapping.xml.ResultSetInfo;
+import org.teiid.query.resolver.util.ResolverUtil;
+import org.teiid.query.sql.LanguageObject;
+import org.teiid.query.sql.lang.Criteria;
+import org.teiid.query.sql.lang.Query;
+import org.teiid.query.sql.lang.Select;
+import org.teiid.query.sql.symbol.Constant;
+import org.teiid.query.sql.symbol.ElementSymbol;
+import org.teiid.query.sql.symbol.ExpressionSymbol;
+import org.teiid.query.sql.symbol.GroupSymbol;
+import org.teiid.query.sql.symbol.SelectSymbol;
+import org.teiid.query.sql.visitor.ElementCollectorVisitor;
+import org.teiid.query.sql.visitor.ExpressionMappingVisitor;
+
+public class XMLProjectionMinimizer {
+
+ /**
+ * Implements projection minimization through two passes over the document
+ */
+ static void minimizeProjection(final XMLPlannerEnvironment planEnv) {
+ final HashMap<MappingSourceNode, LinkedHashSet<ElementSymbol>> neededElements = new HashMap<MappingSourceNode, LinkedHashSet<ElementSymbol>>();
+
+ //collect included elements
+ MappingVisitor visitor = new Navigator(true, new MappingVisitor() {
+ @Override
+ public void visit(MappingAttribute attribute) {
+ collectElementSymbol(attribute);
+ }
+
+ private void collectElementSymbol(MappingNode node) {
+ if (node.isExcluded() || node.getElementSymbol() == null) {
+ return;
+ }
+ MappingSourceNode msn = node.getSourceNode();
+ ElementSymbol es = node.getElementSymbol();
+ collectElementSymbol(msn, es);
+ }
+
+ private void collectElementSymbol(
+ MappingSourceNode msn, ElementSymbol es) {
+ msn = getActualSourceNode(msn);
+ LinkedHashSet<ElementSymbol> elems = neededElements.get(msn);
+ if (elems == null) {
+ elems = new LinkedHashSet<ElementSymbol>();
+ neededElements.put(msn, elems);
+ }
+ elems.add(es);
+ }
+
+ @Override
+ public void visit(MappingElement element) {
+ collectElementSymbol(element);
+ }
+
+ @Override
+ public void visit(MappingSourceNode element) {
+ try {
+ QueryNode node = QueryUtil.getQueryNode(element.getResultName(), planEnv.getGlobalMetadata());
+
+ Collection<ElementSymbol> bindings = QueryUtil.getBindingElements(node);
+ MappingSourceNode parent = element.getParentSourceNode();
+ parent = collectElementSymbols(element, bindings, parent);
+ } catch (TeiidException e) {
+ throw new TeiidRuntimeException(e);
+ }
+ }
+
+ private MappingSourceNode collectElementSymbols(
+ MappingSourceNode element,
+ Collection<ElementSymbol> bindings, MappingSourceNode parent) {
+ for (ElementSymbol elementSymbol : bindings) {
+ if (element != null) {
+ elementSymbol = element.getMappedSymbol(elementSymbol);
+ }
+ while (parent != null) {
+ if (parent.getActualResultSetName().equalsIgnoreCase(elementSymbol.getGroupSymbol().getNonCorrelationName())) {
+ collectElementSymbol(parent, elementSymbol);
+ break;
+ }
+ parent = parent.getParentSourceNode();
+ }
+ }
+ return parent;
+ }
+
+ @Override
+ public void visit(MappingCriteriaNode element) {
+ Criteria crit = element.getCriteriaNode();
+ if (crit == null) {
+ return;
+ }
+ collectElementSymbols(null, ElementCollectorVisitor.getElements(crit, true), element.getSourceNode());
+ }
+
+ @Override
+ public void visit(MappingRecursiveElement element) {
+ Criteria crit = element.getCriteriaNode();
+ if (crit == null) {
+ return;
+ }
+ collectElementSymbols(null, ElementCollectorVisitor.getElements(crit, true), element.getSourceNode());
+ }
+
+ });
+ planEnv.mappingDoc.acceptVisitor(visitor);
+
+ visitor = new Navigator(true, new MappingVisitor() {
+ @Override
+ public void visit(MappingSourceNode element) {
+ try {
+ ResultSetInfo rsInfo = element.getResultSetInfo();
+ Query rsQuery = (Query)rsInfo.getCommand();
+ if (rsQuery.getSelect().isDistinct()) {
+ return;
+ }
+ LinkedHashSet<ElementSymbol> elements = neededElements.get(element);
+ if (elements != null) {
+ rsQuery.setSelect(new Select(LanguageObject.Util.deepClone(elements, ElementSymbol.class)));
+ } else {
+ String alias = element.getAliasResultName();
+ if (alias == null) {
+ rsQuery.setSelect(new Select(Arrays.asList(new ExpressionSymbol("foo", new Constant(1))))); //$NON-NLS-1$
+ } else {
+ MappingSourceNode actual = getActualSourceNode(element);
+ elements = neededElements.get(actual);
+ if (elements != null) {
+ Map reverseMap = QueryUtil.createSymbolMap(new GroupSymbol(element.getAliasResultName()),
+ rsInfo.getResultSetName(),
+ ResolverUtil.resolveElementsInGroup(QueryUtil.createResolvedGroup(element.getAliasResultName(), planEnv.getGlobalMetadata()), planEnv.getGlobalMetadata()));
+ Select select = new Select(new ArrayList<SelectSymbol>(elements));
+ ExpressionMappingVisitor.mapExpressions(select, reverseMap);
+ rsQuery.setSelect(select);
+ }
+ }
+ }
+ } catch (TeiidException e) {
+ throw new TeiidRuntimeException(e);
+ }
+ }
+
+ });
+ planEnv.mappingDoc.acceptVisitor(visitor);
+ }
+
+ private static MappingSourceNode getActualSourceNode(MappingSourceNode element) {
+ if (element.getAliasResultName() == null) {
+ return element;
+ }
+ String actual = element.getActualResultSetName();
+ MappingSourceNode parent = element.getParentSourceNode();
+ while (parent != null) {
+ if (parent.getActualResultSetName().equalsIgnoreCase(actual) ) {
+ return parent;
+ }
+ parent = parent.getParentSourceNode();
+ }
+ return null;
+ }
+
+}
Property changes on: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLProjectionMinimizer.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLQueryPlanner.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLQueryPlanner.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/xml/XMLQueryPlanner.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -71,6 +71,7 @@
import org.teiid.query.sql.lang.SubqueryFromClause;
import org.teiid.query.sql.lang.UnaryFromClause;
import org.teiid.query.sql.symbol.Constant;
+import org.teiid.query.sql.symbol.ElementSymbol;
import org.teiid.query.sql.symbol.GroupSymbol;
import org.teiid.query.sql.symbol.Reference;
import org.teiid.query.sql.visitor.StaticSymbolMappingVisitor;
@@ -114,10 +115,6 @@
try {
ResultSetInfo rsInfo = sourceNode.getResultSetInfo();
- if (rsInfo.isJoinedWithParent()) {
- return;
- }
-
Query command = (Query)rsInfo.getCommand();
prepareQuery(sourceNode, planEnv, command);
@@ -157,7 +154,7 @@
}
}
- static void planQueries(MappingSourceNode sourceNode, XMLPlannerEnvironment planEnv)
+ static void planQueries(final MappingSourceNode sourceNode, XMLPlannerEnvironment planEnv)
throws QueryPlannerException, QueryMetadataException, TeiidComponentException {
ResultSetInfo rsInfo = sourceNode.getResultSetInfo();
@@ -186,8 +183,6 @@
rsQuery.setLimit(new Limit(null, new Constant(new Integer(limit))));
}
- //prepareQuery(sourceNode, planEnv, rsQuery);
-
// this query is not eligible for staging; proceed normally.
rsInfo.setCommand(rsQuery);
}
@@ -226,14 +221,14 @@
/**
* The Criteria Source nodes are source nodes underneath the context Node.
*/
- private static boolean getResultSets(MappingSourceNode contextNode, Set criteriaSourceNodes, LinkedHashSet allResultSets) {
+ private static boolean getResultSets(MappingSourceNode contextNode, Set criteriaSourceNodes, LinkedHashSet<MappingSourceNode> allResultSets) {
boolean singleParentage = true;
for (Iterator i = criteriaSourceNodes.iterator(); i.hasNext();) {
MappingSourceNode node = (MappingSourceNode)i.next();
- List rsStack = getResultSetStack(contextNode, node);
+ List<MappingSourceNode> rsStack = getResultSetStack(contextNode, node);
if (allResultSets.containsAll(rsStack)) {
continue;
@@ -268,7 +263,7 @@
// this list of all the source nodes below the context, which are directly ro indirectly
// involved in the criteria
- LinkedHashSet resultSets = new LinkedHashSet();
+ LinkedHashSet<MappingSourceNode> resultSets = new LinkedHashSet<MappingSourceNode>();
boolean singleParentage = getResultSets(contextNode, rsInfo.getCriteriaResultSets(), resultSets);
@@ -377,7 +372,7 @@
GroupSymbol oldGroupSymbol = new GroupSymbol(oldGroup);
ResolverUtil.resolveGroup(oldGroupSymbol, metadata);
- HashSet projectedElements = new HashSet(ResolverUtil.resolveElementsInGroup(oldGroupSymbol, metadata));
+ HashSet<ElementSymbol> projectedElements = new HashSet<ElementSymbol>(ResolverUtil.resolveElementsInGroup(oldGroupSymbol, metadata));
symbolMap.putAll(QueryUtil.createSymbolMap(oldGroupSymbol, newGroup, projectedElements));
}
@@ -480,11 +475,11 @@
rsInfo.setCommand(cmd);
rsInfo.setPlan(plan);
- //set the carinality on the temp group.
+ //set the cardinality on the temp group.
TempMetadataID intoGroupID = (TempMetadataID)intoGroupSymbol.getMetadataID();
intoGroupID.setCardinality(cardinality);
- // add the meterialization hook for the staged table to original one.
+ // add the materialization hook for the staged table to original one.
//GroupSymbol groupSymbol = (GroupSymbol)query.getFrom().getGroups().get(0);
planEnv.addStagingTable(srcGroup.getMetadataID(), intoGroupID);
Deleted: branches/7.4.x/engine/src/main/java/org/teiid/query/processor/xml/JoinedWhileInstruction.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/processor/xml/JoinedWhileInstruction.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/processor/xml/JoinedWhileInstruction.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -1,145 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * See the COPYRIGHT.txt file distributed with this work for information
- * regarding copyright ownership. Some portions may be licensed
- * to Red Hat, Inc. under one or more contributor license agreements.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301 USA.
- */
-
-package org.teiid.query.processor.xml;
-
-import java.util.List;
-import java.util.Map;
-
-import org.teiid.client.plan.PlanNode;
-import org.teiid.common.buffer.BlockedException;
-import org.teiid.core.TeiidComponentException;
-import org.teiid.core.TeiidProcessingException;
-import org.teiid.query.sql.symbol.ElementSymbol;
-import org.teiid.query.sql.util.VariableContext;
-
-
-/**
- * Loop instruction on the result set execute before this instruction.
- */
-public class JoinedWhileInstruction extends WhileInstruction {
-
- private Integer mappingClassNumber;
- private ElementSymbol mappingClassSymbol;
- private String originalResultSet;
-
- /**
- * Constructor for WhileInstruction.
- */
- public JoinedWhileInstruction(String rsName,
- Integer mappingClassNumber,
- ElementSymbol mappingClassSymbol, String originalResultSet) {
- super(rsName);
- this.mappingClassNumber = mappingClassNumber;
- this.mappingClassSymbol = mappingClassSymbol;
- this.originalResultSet = originalResultSet;
- }
-
- /**
- * @see ProcessorInstruction#process(ProcessorEnvironment)
- */
- public XMLContext process(XMLProcessorEnvironment env,
- XMLContext context) throws BlockedException,
- TeiidComponentException,
- TeiidProcessingException {
-
- List values = context.getCurrentRow(getResultSetName());
-
- if (values == null) {
- env.incrementCurrentProgramCounter();
- return context;
- }
-
- List outputElements = context.getOutputElements(getResultSetName());
-
- int index = outputElements.indexOf(mappingClassSymbol);
-
- Object value = values.get(index);
-
- VariableContext varContext = context.getVariableContext();
-
- // move on to the next row and don't push the program
- if (value == null) {
- if (Boolean.TRUE.equals(getFirst(varContext))) {
- context.getNextRow(getResultSetName());
- }
- setFirst(varContext, Boolean.TRUE);
- env.incrementCurrentProgramCounter();
- return context;
- }
-
- boolean canConsume = true;
-
- // TODO: this is very inefficient. each root should check only its values and pass that value through the context
- // TODO: likewise the context update below should also only involve the columns from this context
- if (!Boolean.TRUE.equals(getFirst(varContext))) {
- Map previousValues = getPreviousValues(varContext);
-
- if (previousValues != null) {
- for (int i = 0; i < index - 1 && canConsume; i++) {
- Object previousValue = previousValues.get(outputElements.get(i));
- Object currentValue = values.get(i);
- if (previousValue != null) {
- if (!previousValue.equals(currentValue)) {
- canConsume = false;
- }
- } else if (currentValue != null) {
- canConsume = false;
- }
- }
- }
- }
-
- // consume this row only if the parent values are the same
- if (value.equals(mappingClassNumber) && canConsume) {
- //it is not necessary to push the values back into the context here
- setPreviousValues(varContext, context.getReferenceValues());
-
- pushProgram(env, context, values);
-
- setFirst(varContext, Boolean.FALSE);
- } else {
- setFirst(varContext, Boolean.TRUE);
-
- env.incrementCurrentProgramCounter();
- return context;
- }
-
- return context;
- }
-
- Boolean getFirst(VariableContext varContext) {
- return (Boolean)varContext.getValue(new ElementSymbol("$" + getResultSetName() + "$" + originalResultSet + "$first")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- void setFirst(VariableContext varContext, Boolean value) {
- varContext.setValue(new ElementSymbol("$" + getResultSetName() + "$" + originalResultSet + "$first"), value); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
-
- public String toString() {
- return "JOINED " + originalResultSet + " " + super.toString(); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public PlanNode getDescriptionProperties() {
- return new PlanNode("JOINED LOOP"); //$NON-NLS-1$
- }
-}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/processor/xml/XMLContext.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/processor/xml/XMLContext.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/processor/xml/XMLContext.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -190,6 +190,9 @@
List elements = getOutputElements(resultSetName);
for (int index = 0; index < elements.size(); index++) {
+ if (!(elements.get(index) instanceof ElementSymbol)) {
+ continue;
+ }
ElementSymbol symbol = (ElementSymbol)elements.get(index);
variableContext.setValue(new ElementSymbol(resultSetName + ElementSymbol.SEPARATOR + symbol.getShortName()), row.get(index));
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/sql/LanguageObject.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/sql/LanguageObject.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/sql/LanguageObject.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -23,7 +23,7 @@
package org.teiid.query.sql;
import java.util.ArrayList;
-import java.util.List;
+import java.util.Collection;
/**
* This is the primary interface for all language objects. It extends a few
@@ -47,7 +47,7 @@
public static class Util {
- public static <S extends LanguageObject, T extends S> ArrayList<S> deepClone(List<T> collection, Class<S> type) {
+ public static <S extends LanguageObject, T extends S> ArrayList<S> deepClone(Collection<T> collection, Class<S> type) {
if (collection == null) {
return null;
}
Modified: branches/7.4.x/engine/src/test/java/org/teiid/query/mapping/xml/TestMappingElement.java
===================================================================
--- branches/7.4.x/engine/src/test/java/org/teiid/query/mapping/xml/TestMappingElement.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/test/java/org/teiid/query/mapping/xml/TestMappingElement.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -232,7 +232,7 @@
public void testAddNullStagingTable() {
MappingElement element = new MappingElement("Test"); //$NON-NLS-1$
element.addStagingTable(null);
- List stagingTables = element.getStagingTables();
+ List<String> stagingTables = element.getStagingTables();
assertTrue(stagingTables.isEmpty());
}
}
Modified: branches/7.4.x/engine/src/test/java/org/teiid/query/processor/xml/TestSourceNodeGenaratorVisitor.java
===================================================================
--- branches/7.4.x/engine/src/test/java/org/teiid/query/processor/xml/TestSourceNodeGenaratorVisitor.java 2011-06-01 18:19:08 UTC (rev 3211)
+++ branches/7.4.x/engine/src/test/java/org/teiid/query/processor/xml/TestSourceNodeGenaratorVisitor.java 2011-06-02 18:05:39 UTC (rev 3212)
@@ -82,7 +82,7 @@
MappingSourceNode source = (MappingSourceNode)root;
assertEquals("licenseSource", source.getResultName()); //$NON-NLS-1$
- List list = source.getStagingTables();
+ List<String> list = source.getStagingTables();
assertEquals(2, list.size());
assertEquals("testTempGroup1", list.get(0)); //$NON-NLS-1$
@@ -128,7 +128,7 @@
assertTrue(node instanceof MappingElement);
MappingElement element = (MappingElement)node;
- List list = element.getStagingTables();
+ List<String> list = element.getStagingTables();
assertEquals(1, list.size());
assertEquals("testTempGroup1", list.get(0)); //$NON-NLS-1$
@@ -137,7 +137,7 @@
assertEquals(1, element.getMinOccurence());
assertEquals(1, element.getMaxOccurence());
- MappingNode node1 = (MappingNode)element.getNodeChildren().get(0);
+ MappingNode node1 = element.getNodeChildren().get(0);
assertTrue(node1 instanceof MappingSourceNode);
MappingSourceNode source = (MappingSourceNode)node1;
@@ -149,7 +149,7 @@
// make sure source's child is mapping element and mapping element's source
// is above source
- node1 = (MappingNode)source.getNodeChildren().get(0);
+ node1 = source.getNodeChildren().get(0);
assertTrue(node instanceof MappingElement);
element = (MappingElement)node1;
assertEquals("childNode", element.getName()); //$NON-NLS-1$
@@ -194,14 +194,14 @@
MappingSourceNode source = (MappingSourceNode)node;
assertEquals("parentNodeSource", source.getSource()); //$NON-NLS-1$
- node = (MappingNode)source.getNodeChildren().get(0);
+ node = source.getNodeChildren().get(0);
assertTrue(node instanceof MappingElement);
MappingElement element = (MappingElement)node;
assertEquals("parentNode", element.getName()); //$NON-NLS-1$
assertTrue(element.isRootRecursiveNode());
assertFalse(element.isRecursive());
- node = (MappingNode)element.getNodeChildren().get(0);
+ node = element.getNodeChildren().get(0);
assertTrue(node instanceof MappingElement);
element = (MappingElement)node;
assertEquals("childNode", element.getName()); //$NON-NLS-1$
@@ -213,7 +213,7 @@
assertEquals("ddd", attribute.getDefaultValue()); //$NON-NLS-1$
assertEquals("fff", attribute.getValue()); //$NON-NLS-1$
- node = (MappingNode)element.getNodeChildren().get(0);
+ node = element.getNodeChildren().get(0);
assertTrue(node instanceof MappingRecursiveElement);
MappingRecursiveElement recursive = (MappingRecursiveElement)node;
assertEquals("recursivenodename", recursive.getName()); //$NON-NLS-1$
@@ -254,7 +254,7 @@
assertEquals("parentSource", source.getSource()); //$NON-NLS-1$
// parent element
- node = (MappingNode)source.getNodeChildren().get(0);
+ node = source.getNodeChildren().get(0);
assertTrue(node instanceof MappingElement);
MappingElement element = (MappingElement)node;
assertEquals("parentNode", element.getName()); //$NON-NLS-1$
@@ -262,12 +262,12 @@
assertFalse(element.isRecursive());
// recursive source
- node = (MappingNode)element.getNodeChildren().get(0);
+ node = element.getNodeChildren().get(0);
source = (MappingSourceNode)node;
assertEquals("childSource", source.getSource()); //$NON-NLS-1$
assertEquals("parentSource", source.getAliasResultName()); //$NON-NLS-1$
- node = (MappingNode)source.getNodeChildren().get(0);
+ node = source.getNodeChildren().get(0);
assertTrue(node instanceof MappingRecursiveElement);
MappingRecursiveElement relement = (MappingRecursiveElement)node;
13 years, 6 months
teiid SVN: r3211 - in branches/7.4.x: client/src/main/java/org/teiid/jdbc and 2 other directories.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2011-06-01 14:19:08 -0400 (Wed, 01 Jun 2011)
New Revision: 3211
Modified:
branches/7.4.x/build/kits/jboss-container/teiid-releasenotes.html
branches/7.4.x/client/src/main/java/org/teiid/jdbc/ConnectionImpl.java
branches/7.4.x/client/src/main/java/org/teiid/jdbc/StatementImpl.java
branches/7.4.x/client/src/test/java/org/teiid/jdbc/TestStatement.java
branches/7.4.x/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-connection.xml
branches/7.4.x/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-extensions.xml
Log:
TEIID-1611 adding a reauthentication statement and cleaning up set value syntax
Modified: branches/7.4.x/build/kits/jboss-container/teiid-releasenotes.html
===================================================================
--- branches/7.4.x/build/kits/jboss-container/teiid-releasenotes.html 2011-06-01 16:37:30 UTC (rev 3210)
+++ branches/7.4.x/build/kits/jboss-container/teiid-releasenotes.html 2011-06-01 18:19:08 UTC (rev 3211)
@@ -58,6 +58,7 @@
<LI><B>Runtime Updates of Metadata</B> - ALTER statements have been added to change view/procedure/INSTEAD OF trigger (update procedure) definitions. A CREATE TRIGGER statement is also available to add an INSTEAD OF trigger (update procedures) to views.
System procedures were added to set extension metadata and stat values. By default all effects of metadata updates happen only on running vdbs across the cluster. To make the changes persistent see the Developers Guide Runtime Updates section.
<LI><B>ODBC SSL</B> - added support for SSL encrypted ODBC connections.
+ <LI><B>Reauthentication Statement</B> - SET SESSION AUTHORIZATION can now be used to perform a reauthentication via JDBC or ODBC.
</UL>
<h2><a name="Compatibility">Compatibility Issues</a></h2>
Modified: branches/7.4.x/client/src/main/java/org/teiid/jdbc/ConnectionImpl.java
===================================================================
--- branches/7.4.x/client/src/main/java/org/teiid/jdbc/ConnectionImpl.java 2011-06-01 16:37:30 UTC (rev 3210)
+++ branches/7.4.x/client/src/main/java/org/teiid/jdbc/ConnectionImpl.java 2011-06-01 18:19:08 UTC (rev 3211)
@@ -972,6 +972,21 @@
throw SqlUtil.createFeatureNotSupportedException();
}
+ Object setPassword(Object newPassword) {
+ if (newPassword != null) {
+ return this.connectionProps.put(TeiidURL.CONNECTION.PASSWORD, newPassword);
+ }
+ return this.connectionProps.remove(TeiidURL.CONNECTION.PASSWORD);
+ }
+
+ String getPassword() {
+ Object result = this.connectionProps.get(TeiidURL.CONNECTION.PASSWORD);
+ if (result == null) {
+ return null;
+ }
+ return result.toString();
+ }
+
@Override
public void changeUser(String userName, String newPassword)
throws SQLException {
@@ -983,11 +998,7 @@
} else {
oldName = this.connectionProps.remove(TeiidURL.CONNECTION.USER_NAME);
}
- if (newPassword != null) {
- oldPassword = this.connectionProps.put(TeiidURL.CONNECTION.PASSWORD, newPassword);
- } else {
- oldPassword = this.connectionProps.remove(TeiidURL.CONNECTION.PASSWORD);
- }
+ oldPassword = setPassword(newPassword);
boolean success = false;
try {
this.serverConn.authenticate();
@@ -1003,11 +1014,7 @@
} else {
this.connectionProps.remove(TeiidURL.CONNECTION.USER_NAME);
}
- if (oldPassword != null) {
- this.connectionProps.put(TeiidURL.CONNECTION.PASSWORD, oldPassword);
- } else {
- this.connectionProps.remove(TeiidURL.CONNECTION.PASSWORD);
- }
+ setPassword(oldPassword);
}
}
}
Modified: branches/7.4.x/client/src/main/java/org/teiid/jdbc/StatementImpl.java
===================================================================
--- branches/7.4.x/client/src/main/java/org/teiid/jdbc/StatementImpl.java 2011-06-01 16:37:30 UTC (rev 3210)
+++ branches/7.4.x/client/src/main/java/org/teiid/jdbc/StatementImpl.java 2011-06-01 18:19:08 UTC (rev 3211)
@@ -66,6 +66,7 @@
import org.teiid.core.util.SqlUtil;
import org.teiid.core.util.StringUtil;
import org.teiid.jdbc.CancellationTimer.CancelTask;
+import org.teiid.net.TeiidURL;
public class StatementImpl extends WrapperImpl implements TeiidStatement {
@@ -163,7 +164,7 @@
protected Map outParamIndexMap = new HashMap();
private static Pattern TRANSACTION_STATEMENT = Pattern.compile("\\s*(commit|rollback|(start\\s+transaction))\\s*;?", Pattern.CASE_INSENSITIVE); //$NON-NLS-1$
- private static Pattern SET_STATEMENT = Pattern.compile("\\s*set\\s+(\\w+)\\s*([^;]*);?", Pattern.CASE_INSENSITIVE); //$NON-NLS-1$
+ private static Pattern SET_STATEMENT = Pattern.compile("\\s*set\\s+((?:session authorization)|(?:\\w+))\\s+(?:([a-zA-Z](?:\\w|_)*)|((?:'[^']*')+));?", Pattern.CASE_INSENSITIVE); //$NON-NLS-1$
private static Pattern SHOW_STATEMENT = Pattern.compile("\\s*show\\s+(\\w*);?", Pattern.CASE_INSENSITIVE); //$NON-NLS-1$
/**
* Factory Constructor
@@ -429,8 +430,19 @@
}
String key = match.group(1);
String value = match.group(2);
- if (ExecutionProperties.NEWINSTANCE.equalsIgnoreCase(key) && Boolean.valueOf(value)) {
- this.getMMConnection().getServerConnection().cleanUp();
+ if (value == null) {
+ value = match.group(3);
+ value = StringUtil.replaceAll(value, "''", "'"); //$NON-NLS-1$ //$NON-NLS-2$
+ value = value.substring(1, value.length() - 1);
+ }
+ if ("SESSION AUTHORIZATION".equalsIgnoreCase(key)) { //$NON-NLS-1$
+ this.getMMConnection().changeUser(value, this.getMMConnection().getPassword());
+ } else if (key.equalsIgnoreCase(TeiidURL.CONNECTION.PASSWORD)) {
+ this.getMMConnection().setPassword(value);
+ } else if (ExecutionProperties.NEWINSTANCE.equalsIgnoreCase(key)) {
+ if (Boolean.valueOf(value)) {
+ this.getMMConnection().getServerConnection().cleanUp();
+ }
} else {
JDBCURL.addNormalizedProperty(key, value, this.driverConnection.getExecutionProperties());
}
Modified: branches/7.4.x/client/src/test/java/org/teiid/jdbc/TestStatement.java
===================================================================
--- branches/7.4.x/client/src/test/java/org/teiid/jdbc/TestStatement.java 2011-06-01 16:37:30 UTC (rev 3210)
+++ branches/7.4.x/client/src/test/java/org/teiid/jdbc/TestStatement.java 2011-06-01 18:19:08 UTC (rev 3211)
@@ -62,8 +62,20 @@
StatementImpl statement = new StatementImpl(conn, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
assertFalse(statement.execute("set foo bar")); //$NON-NLS-1$
assertEquals("bar", p.get("foo")); //$NON-NLS-1$ //$NON-NLS-2$
+
+ assertFalse(statement.execute("set foo 'b''ar'")); //$NON-NLS-1$
+ assertEquals("b'ar", p.get("foo")); //$NON-NLS-1$ //$NON-NLS-2$
}
+ @Test public void testSetAuthorizationStatement() throws Exception {
+ ConnectionImpl conn = Mockito.mock(ConnectionImpl.class);
+ Properties p = new Properties();
+ Mockito.stub(conn.getExecutionProperties()).toReturn(p);
+ StatementImpl statement = new StatementImpl(conn, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
+ assertFalse(statement.execute("set session authorization bar")); //$NON-NLS-1$
+ Mockito.verify(conn).changeUser("bar", null);
+ }
+
@Test public void testPropertiesOverride() throws Exception {
ConnectionImpl conn = Mockito.mock(ConnectionImpl.class);
Properties p = new Properties();
Modified: branches/7.4.x/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-connection.xml
===================================================================
--- branches/7.4.x/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-connection.xml 2011-06-01 16:37:30 UTC (rev 3210)
+++ branches/7.4.x/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-connection.xml 2011-06-01 18:19:08 UTC (rev 3211)
@@ -551,7 +551,7 @@
The Teiid driver/DataSource should then typically be configured to just use the single host/port of your load balancer.</para>
</section>
</section>
- <section>
+ <section id="reauthentication">
<title>Reauthentication</title>
<para>Teiid connections (defined by the <code>org.teiid.jdbc.TeiidConnection</code> interface) support the changeUser method to reauthenticate a given connection.
If the reauthentication is successful the current connection my be used with the given identity.
Modified: branches/7.4.x/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-extensions.xml
===================================================================
--- branches/7.4.x/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-extensions.xml 2011-06-01 16:37:30 UTC (rev 3210)
+++ branches/7.4.x/documentation/client-developers-guide/src/main/docbook/en-US/content/jdbc-extensions.xml 2011-06-01 18:19:08 UTC (rev 3211)
@@ -185,7 +185,7 @@
<para>SET Syntax:
</para>
<listitem>
- <para>SET parameter value
+ <para>SET (parameter|SESSION AUTHORIZATION) value
</para>
</listitem>
</itemizedlist>
@@ -193,10 +193,10 @@
<para>Syntax Rules:
</para>
<listitem>
- <para>Both parameter and value must be simple literals - they cannot contain spaces.</para>
+ <para>The parameter must be a non-quoted identifier - it cannot contain spaces.</para>
</listitem>
<listitem>
- <para>The value is also not treated as an expression and will not be evaluated prior to being set as the parameter value.</para>
+ <para>The value may be either a non-quoted identifier or a quoted string literal value.</para>
</listitem>
</itemizedlist>
<para>The SET statement is most commonly used to control planning and execution.</para>
@@ -208,7 +208,6 @@
<para>SET NOEXEC (ON|OFF)</para>
</listitem>
</itemizedlist>
-
<example id="plan_debug">
<title>Enabling Plan Debug</title>
<programlisting>Statement s = connection.createStatement();
@@ -222,6 +221,16 @@
String debugLog = planRs.getString("DEBUG_LOG");
</programlisting>
</example>
+ <para>The SET statement may also be used to control authorization.
+ A SET SESSION AUTHORIZATION statement will perform a <xref linkend="reauthentication"/> given the credentials currently set on the connection.
+ The connection credentials may be changed by issuing a SET PASSWORD statement. A SET PASSWORD statement does not perform a reauthentication.</para>
+ <example>
+ <title>Changing Session Authorization</title>
+ <programlisting>Statement s = connection.createStatement();
+s.execute("SET PASSWORD 'someval'");
+s.execute("SET SESSION AUTHORIZATION 'newuser'");
+ </programlisting>
+ </example>
</section>
<section id="show_statement">
13 years, 6 months
teiid SVN: r3210 - in branches/7.4.x: documentation/reference/src/main/docbook/en-US/content and 10 other directories.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2011-06-01 12:37:30 -0400 (Wed, 01 Jun 2011)
New Revision: 3210
Modified:
branches/7.4.x/build/kits/jboss-container/teiid-releasenotes.html
branches/7.4.x/documentation/reference/src/main/docbook/en-US/content/federated_planning.xml
branches/7.4.x/documentation/reference/src/main/docbook/en-US/content/sql_support.xml
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/RelationalPlanner.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/plantree/NodeConstants.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleChooseDependent.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleMergeCriteria.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePlaceAccess.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePlanJoins.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleRaiseAccess.java
branches/7.4.x/engine/src/main/java/org/teiid/query/parser/SQLParserUtil.java
branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/EnhancedSortMergeJoinStrategy.java
branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/ArrayTable.java
branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/ExistsCriteria.java
branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/FromClause.java
branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/JoinPredicate.java
branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/SubqueryFromClause.java
branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/TextTable.java
branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/UnaryFromClause.java
branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/XMLTable.java
branches/7.4.x/engine/src/main/java/org/teiid/query/sql/visitor/SQLStringVisitor.java
branches/7.4.x/engine/src/test/java/org/teiid/query/parser/TestOptionsAndHints.java
branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestDependentJoins.java
Log:
TEIID-1615 adding subquery dj hint, and the makeind hint. also changing makedep/makenotdep to be proper hints by default.
Modified: branches/7.4.x/build/kits/jboss-container/teiid-releasenotes.html
===================================================================
--- branches/7.4.x/build/kits/jboss-container/teiid-releasenotes.html 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/build/kits/jboss-container/teiid-releasenotes.html 2011-06-01 16:37:30 UTC (rev 3210)
@@ -41,14 +41,15 @@
<LI><B>InterSystems Cache</B> - InterSystems Cache database translator is now available to use as supported source under Teiid.
<LI><B>userRequestSourceConcurrency</B> - was added to control the number of concurrent source queries allowed for each user request.
<LI><B>Memory Management Improvements</B> - maxReserveBatchColumns and maxProcessingBatchesColumns will be default be determined automatically and will more reliably prevent memory issues. See the admin guide for more.
- <LI><B>Subquery optimization control</B> - added the MJ and NO_UNNEST hints and the org.teiid.subqueryUnnestDefault system property to control the optimization of subqueries to traditional joins or to a merge join implementation of a semijoin or antijoin.
+ <LI><B>Subquery optimization control</B> - added the MJ, DJ, and NO_UNNEST hints and the org.teiid.subqueryUnnestDefault system property to control the optimization of subqueries to traditional joins or to a merge join implementation of a semijoin or antijoin.
<LI><B>Local connection threads</B> - local connection calling threads will be used to process work rather than using an engine thread. This helps decouple the configuration of maxThreads.
<LI><B>Dependent Join Improvements</B> - several major improvements were made to increase performance and develop better plans.
<UL>
<LI><B>Improved Planning</B> - the decision to create a dependent join is now considered earlier in planning and is much more effective for dependent joins involving multiple unrelated independent tables.
<LI><B>IN predicate splitting</B> - the planner can now split large dependent IN predicates into multiple IN predicates, which is controlled by the translator property MaxDepdendentInPredicates. This allows for much larger dependent joins to be performed as a single query.
<LI><B>Dependent query parallelization</B> - when multiple dependent queries are still required, then they will be run in parallel (up to MaxUserSourceRequestConcurrency), rather than sequentially.
- <LI><B>Cost based back-off</B> - for cost based dependent joins if the number of independent values is too large, then the join will be performed as normal.
+ <LI><B>Cost based back-off</B> - for cost based dependent joins if the number of independent values is too large, then the join will be performed as normal.
+ <LI><B>MAKEIND Hint</B> - The MAKEIND hint can be used to indicate that the other side of the join should be made dependent.
</UL>
<LI><B>Enhanced Sort Join</B> - the partitioned merge join was replaced with an enhanced sort join. The enhanced sort join will use the actual row counts from each side of the relation to perform a index based join if one side is small enough, a partial sort of the larger side and a repeated merge join if the tuples are unbalanced but one side is not small enough to form an index, or a standard sort merge join if the tuples are balanced.
<LI><B>JDK1.5 JDBC Client JAR</B> - A retro-translated Teiid client JDBC jar now available to use with JDK 1.5 VM. Note only the JDBC API is supported, not the Admin API, or retrieving query plans as XML.
@@ -63,6 +64,7 @@
<ul>
<li>TRANSLATE/HAS CRITERIA has been deprecated. An alternative approach to update procedures will be introduced in a subsequent version.
<li>Support for named parameter syntax using param=value has been deprecated, since it is ambiguous with a comparison predicate boolean value expression. param<b>=></b>value should be used instead.
+ <li>Support for using the FROM clause post item hints MAKEDEP/MAKENOTDEP has been deprecated. Use the pre item comment hint syntax instead, e.g. /*+ MAKEDEP */ tbl
</ul>
<h4>from 7.3</h4>
Modified: branches/7.4.x/documentation/reference/src/main/docbook/en-US/content/federated_planning.xml
===================================================================
--- branches/7.4.x/documentation/reference/src/main/docbook/en-US/content/federated_planning.xml 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/documentation/reference/src/main/docbook/en-US/content/federated_planning.xml 2011-06-01 16:37:30 UTC (rev 3210)
@@ -172,19 +172,30 @@
by the query planner based on <xref linkend='access_patterns'/>, hints, and
costing information.</para>
<para>
- Teiid supports the MAKEDEP and MAKENOTDEP hints. Theses are
- can be placed in either the
+ Teiid supports hints to control dependent join behavior:
+ <itemizedlist>
+ <listitem>
+ <para>MAKEIND - indicates that the clause should be the independent side of a depedent join.</para>
+ </listitem>
+ <listitem>
+ <para>MAKEDEP - indicates that the clause should be the dependent side of a join.</para>
+ </listitem>
+ <listitem>
+ <para>MAKENOTDEP - prevents the clause from being the dependent side of a join.</para>
+ </listitem>
+ </itemizedlist>
+ Theses can be placed in either the
<link linkend="option_clause">OPTION clause</link>
or directly in the
<link linkend="from_clause">FROM clause</link>
- . As long as all <xref linkend='access_patterns'/> can be met, the MAKEDEP and
- MAKENOTDEP hints override any use of costing information.
+ . As long as all <xref linkend='access_patterns'/> can be met, the MAKEIND, MAKEDEP, and
+ MAKENOTDEP hints override any use of costing information. MAKENOTDEP supersedes the other hints.
</para>
<tip>
- <para> The MAKEDEP hint should only be used if the proper query
+ <para> The MAKEDEP/MAKEIND hint should only be used if the proper query
plan is not chosen by default. You should ensure that your
costing information is representative of the actual source
- cardinality. An inappropriate MAKEDEP hint can force an
+ cardinality. An inappropriate MAKEDEP/MAKEIND hint can force an
inefficient join structure and may result in many source
queries.</para>
</tip>
@@ -332,14 +343,19 @@
This will only happen if the affected table has a primary key. If it does not, then an exception will be thrown.</para>
</listitem>
<listitem>
- <para>WHERE or HAVING clause IN and EXISTs predicates can take the MJ (merge join) or NO_UNNEST (no unnest) hints appearing just before the subquery.
- The MJ hint directs the optimizer to use a traditional, semijoin, or antisemijoin merge join if possible.
- The NO_UNNEST hint, which supercedes the MJ hint, will direct the optimizer to leave the subquery in place.
+ <para>WHERE or HAVING clause IN and EXISTs predicates can take the MJ (merge join), DJ (dependent join), or NO_UNNEST (no unnest) hints appearing just before the subquery.
+ The MJ hint directs the optimizer to use a traditional, semijoin, or antisemijoin merge join if possible.
+ The DJ is the same as the MJ hint, but additional directs the optimizer to use the subquery as the independent side of a dependent join if possible.
+ The NO_UNNEST hint, which supercedes the other hints, will direct the optimizer to leave the subquery in place.
<example>
<title>Merge Join Hint Usage</title>
<programlisting language="SQL">SELECT col1 from tbl where col2 IN /*+ MJ */ (SELECT col1 FROM tbl2)</programlisting>
</example>
<example>
+ <title>Dependent Join Hint Usage</title>
+ <programlisting language="SQL">SELECT col1 from tbl where col2 IN /*+ DJ */ (SELECT col1 FROM tbl2)</programlisting>
+ </example>
+ <example>
<title>No Unnest Hint Usage</title>
<programlisting language="SQL">SELECT col1 from tbl where col2 IN /*+ NO_UNNEST */ (SELECT col1 FROM tbl2)</programlisting>
</example>
Modified: branches/7.4.x/documentation/reference/src/main/docbook/en-US/content/sql_support.xml
===================================================================
--- branches/7.4.x/documentation/reference/src/main/docbook/en-US/content/sql_support.xml 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/documentation/reference/src/main/docbook/en-US/content/sql_support.xml 2011-06-01 16:37:30 UTC (rev 3210)
@@ -697,8 +697,9 @@
<listitem><para>FROM table1 CROSS JOIN table2</para></listitem>
<listitem><para>FROM (subquery) [AS] alias</para></listitem>
<listitem><para>FROM <link linkend="nested_table">TABLE(subquery)</link> [AS] alias</para></listitem>
- <listitem><para>FROM table1 JOIN table2 MAKEDEP ON join-criteria</para></listitem>
- <listitem><para>FROM table1 JOIN table2 MAKENOTDEP ON join-criteria</para></listitem>
+ <listitem><para>FROM table1 JOIN /*+ MAKEDEP */ table2 ON join-criteria</para></listitem>
+ <listitem><para>FROM table1 JOIN /*+ MAKENOTDEP */ table2 ON join-criteria</para></listitem>
+ <listitem><para>FROM /*+ MAKEIND */ table1 JOIN table2 ON join-criteria</para></listitem>
<listitem><para>FROM table1 left outer join <link linkend="optional_join">/*+ optional */</link> table2 ON join-criteria</para></listitem>
<listitem><para>FROM <link linkend="texttable">TEXTTABLE...</link></para></listitem>
<listitem><para>FROM <link linkend="xmltable">XMLTABLE...</link></para></listitem>
@@ -708,11 +709,12 @@
<note>
<title>DEP Hints</title>
<para>
- MAKEDEP and MAKENOTDEP are hints used to control
+ MAKEIND, MAKEDEP, and MAKENOTDEP are hints used to control
<link linkend="dependent_joins">dependent join</link>
behavior. They should only be used in situations where the optimizer
does not choose the most optimal plan based upon query structure,
- metadata, and costing information.
+ metadata, and costing information. The hints may appear in a comment that proceeds the from clause.
+ The hints can be specified against any from clause, not just a named table.
</para>
</note>
<section id="nested_table">
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/RelationalPlanner.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/RelationalPlanner.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/RelationalPlanner.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -756,16 +756,16 @@
* Merges the from clause into a single join predicate if there are more than 1 from clauses
*/
private static FromClause mergeClauseTrees(From from) {
- List clauses = from.getClauses();
+ List<FromClause> clauses = from.getClauses();
while (clauses.size() > 1) {
- FromClause first = (FromClause)from.getClauses().remove(0);
- FromClause second = (FromClause)from.getClauses().remove(0);
+ FromClause first = from.getClauses().remove(0);
+ FromClause second = from.getClauses().remove(0);
JoinPredicate jp = new JoinPredicate(first, second, JoinType.JOIN_CROSS);
clauses.add(0, jp);
}
- return (FromClause)clauses.get(0);
+ return clauses.get(0);
}
/**
@@ -867,6 +867,8 @@
tt.setCorrelatedReferences(getCorrelatedReferences(parent, node, tt));
node.addGroup(group);
parent.addLastChild(node);
+ } else {
+ throw new AssertionError("Unknown Type"); //$NON-NLS-1$
}
if (clause.isOptional()) {
@@ -879,6 +881,9 @@
} else if (clause.isMakeNotDep()) {
node.setProperty(NodeConstants.Info.MAKE_NOT_DEP, Boolean.TRUE);
}
+ if (clause.isMakeInd()) {
+ node.setProperty(NodeConstants.Info.MAKE_IND, Boolean.TRUE);
+ }
}
public static Object getTrackableGroup(GroupSymbol group, QueryMetadataInterface metadata)
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/plantree/NodeConstants.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/plantree/NodeConstants.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/plantree/NodeConstants.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -120,13 +120,14 @@
SYMBOL_MAP, // SymbolMap
PARTITION_INFO, // Map<ElementSymbol, List<Set<Constant>>> - it will only be consistent in the initial stages of planning
VIRTUAL_COMMAND, // Command
- MAKE_DEP, // ??? List of Groups ???
+ MAKE_DEP, // Boolean
PROCESSOR_PLAN, // ProcessorPlan for non-relational sub plan
NESTED_COMMAND, // Command for nested processor plan
TABLE_FUNCTION, // Table Function
CORRELATED_REFERENCES, // SymbolMap
- MAKE_NOT_DEP, // Source should not be dependent
+ MAKE_NOT_DEP, // Boolean
INLINE_VIEW, // If the source node represents an inline view
+ MAKE_IND,
// Group node properties
GROUP_COLS, // List <SingleElementSymbol>
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleChooseDependent.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleChooseDependent.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleChooseDependent.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -253,6 +253,16 @@
analysisRecord.println("Making access node dependent due to hint: "+ sourceNode2.nodeToString()); //$NON-NLS-1$
}
return rootNode2;
+ } else if (sourceNode1.hasBooleanProperty(NodeConstants.Info.MAKE_IND) && sourceNode2 != null) {
+ if (analysisRecord.recordDebug()) {
+ analysisRecord.println("Making access node dependent due to hint: "+ sourceNode2.nodeToString()); //$NON-NLS-1$
+ }
+ return rootNode2;
+ } else if (sourceNode2 != null && sourceNode2.hasBooleanProperty(NodeConstants.Info.MAKE_IND)) {
+ if (analysisRecord.recordDebug()) {
+ analysisRecord.println("Making access node dependent due to hint: "+ sourceNode1.nodeToString()); //$NON-NLS-1$
+ }
+ return rootNode1;
}
return null;
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleMergeCriteria.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleMergeCriteria.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleMergeCriteria.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -131,6 +131,7 @@
public Class<?> type;
public boolean mergeJoin;
public boolean madeDistinct;
+ public boolean makeInd;
}
private IDGenerator idGenerator;
@@ -363,6 +364,7 @@
result.not ^= ssc.isNegated();
result.type = crit.getClass();
result.mergeJoin = ssc.getSubqueryHint().isMergeJoin();
+ result.makeInd = ssc.getSubqueryHint().isDepJoin();
if (!UNNEST && !result.mergeJoin) {
return result;
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePlaceAccess.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePlaceAccess.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePlaceAccess.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -286,6 +286,10 @@
if (hint != null) {
copyTo.setProperty(NodeConstants.Info.MAKE_NOT_DEP, hint);
}
+ hint = node.getProperty(NodeConstants.Info.MAKE_IND);
+ if (hint != null) {
+ copyTo.setProperty(NodeConstants.Info.MAKE_IND, hint);
+ }
}
/**
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePlanJoins.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePlanJoins.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RulePlanJoins.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -466,7 +466,7 @@
}
JoinType jt = (JoinType)root.getProperty(NodeConstants.Info.JOIN_TYPE);
- boolean treatJoinAsSource = jt.isOuter() || root.getProperty(NodeConstants.Info.ACCESS_PATTERNS) != null || root.hasProperty(NodeConstants.Info.MAKE_DEP);
+ boolean treatJoinAsSource = jt.isOuter() || root.getProperty(NodeConstants.Info.ACCESS_PATTERNS) != null || root.hasProperty(NodeConstants.Info.MAKE_DEP) || root.hasProperty(NodeConstants.Info.MAKE_IND);
if (treatJoinAsSource) {
currentRegion.addJoinSourceNode(root);
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleRaiseAccess.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleRaiseAccess.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleRaiseAccess.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -764,15 +764,8 @@
newAccess.addGroups(leftAccess.getGroups());
// Combine hints if necessary
- Object leftHint = leftAccess.getProperty(NodeConstants.Info.MAKE_DEP);
- if(leftHint != null) {
- newAccess.setProperty(NodeConstants.Info.MAKE_DEP, leftHint);
- } else {
- Object rightHint = rightAccess.getProperty(NodeConstants.Info.MAKE_DEP);
- if(rightHint != null) {
- newAccess.setProperty(NodeConstants.Info.MAKE_DEP, rightHint);
- }
- }
+ combineHint(leftAccess, rightAccess, newAccess, NodeConstants.Info.MAKE_DEP);
+ combineHint(leftAccess, rightAccess, newAccess, NodeConstants.Info.MAKE_IND);
RulePlaceAccess.copyDependentHints(leftAccess, newAccess);
RulePlaceAccess.copyDependentHints(rightAccess, newAccess);
RulePlaceAccess.copyDependentHints(joinNode, newAccess);
@@ -786,6 +779,19 @@
return newAccess;
}
+ private static void combineHint(PlanNode leftAccess, PlanNode rightAccess,
+ PlanNode newAccess, NodeConstants.Info info) {
+ Object leftHint = leftAccess.getProperty(info);
+ if(leftHint != null) {
+ newAccess.setProperty(info, leftHint);
+ } else {
+ Object rightHint = rightAccess.getProperty(info);
+ if(rightHint != null) {
+ newAccess.setProperty(info, rightHint);
+ }
+ }
+ }
+
/**
* Get modelID for Access node and cache the result in the Access node.
* @param accessNode Access node
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/parser/SQLParserUtil.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/parser/SQLParserUtil.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/parser/SQLParserUtil.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -172,7 +172,13 @@
for (int i = 0; i < parts.length; i++) {
if (parts[i].equalsIgnoreCase(Option.OPTIONAL)) {
fromClause.setOptional(true);
- }
+ } else if (parts[i].equalsIgnoreCase(Option.MAKEDEP)) {
+ fromClause.setMakeDep(true);
+ } else if (parts[i].equalsIgnoreCase(Option.MAKENOTDEP)) {
+ fromClause.setMakeNotDep(true);
+ } else if (parts[i].equalsIgnoreCase(FromClause.MAKEIND)) {
+ fromClause.setMakeInd(true);
+ }
}
}
@@ -184,6 +190,8 @@
hint.setMergeJoin(true);
} else if (parts[i].equalsIgnoreCase(SubqueryHint.NOUNNEST)) {
hint.setNoUnnest(true);
+ } else if (parts[i].equalsIgnoreCase(SubqueryHint.DJ)) {
+ hint.setDepJoin(true);
}
}
return hint;
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/EnhancedSortMergeJoinStrategy.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/EnhancedSortMergeJoinStrategy.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/EnhancedSortMergeJoinStrategy.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -346,7 +346,7 @@
@Override
public String getName() {
- return "ENHANCED SORT JOIN"; //$NON-NLS-1$
+ return "ENHANCED SORT JOIN" + (semiDep?" [SEMI]":""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
public void setSemiDep(boolean semiDep) {
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -721,7 +721,11 @@
Criteria mappedCriteria = Criteria.combineCriteria(plannedResult.nonEquiJoinCriteria);
ExpressionMappingVisitor.mapExpressions(mappedCriteria, expressionMap);
query.setCriteria(Criteria.combineCriteria(query.getCriteria(), mappedCriteria));
- query.getFrom().addClause(q.getFrom().getClauses().get(0));
+ FromClause clause = q.getFrom().getClauses().get(0);
+ if (plannedResult.makeInd) {
+ clause.setMakeInd(true);
+ }
+ query.getFrom().addClause(clause);
query.getTemporaryMetadata().putAll(q.getTemporaryMetadata());
//transform the query into an inner join
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/ArrayTable.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/ArrayTable.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/ArrayTable.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -59,7 +59,7 @@
}
@Override
- public ArrayTable clone() {
+ protected ArrayTable cloneDirect() {
ArrayTable clone = new ArrayTable();
this.copy(clone);
clone.setArrayValue((Expression)this.arrayValue.clone());
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/ExistsCriteria.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/ExistsCriteria.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/ExistsCriteria.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -43,9 +43,11 @@
public static class SubqueryHint {
public static String MJ = "MJ"; //$NON-NLS-1$
public static String NOUNNEST = "NO_UNNEST"; //$NON-NLS-1$
+ public static String DJ = "DJ"; //$NON-NLS-1$
private boolean mergeJoin;
private boolean noUnnest;
+ private boolean depJoin;
public void setMergeJoin(boolean semiJoin) {
this.mergeJoin = semiJoin;
@@ -63,6 +65,15 @@
return noUnnest;
}
+ public void setDepJoin(boolean depJoin) {
+ this.depJoin = depJoin;
+ this.mergeJoin = true;
+ }
+
+ public boolean isDepJoin() {
+ return depJoin;
+ }
+
@Override
public boolean equals(Object obj) {
if (this == obj) {
@@ -72,13 +83,16 @@
return false;
}
SubqueryHint other = (SubqueryHint) obj;
- return mergeJoin == other.mergeJoin && noUnnest == other.noUnnest;
+ return mergeJoin == other.mergeJoin
+ && noUnnest == other.noUnnest
+ && depJoin == other.depJoin;
}
public SubqueryHint clone() {
SubqueryHint clone = new SubqueryHint();
clone.mergeJoin = this.mergeJoin;
clone.noUnnest = this.noUnnest;
+ clone.depJoin = this.depJoin;
return clone;
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/FromClause.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/FromClause.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/FromClause.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -38,9 +38,13 @@
* and may contain criteria.
*/
public abstract class FromClause implements LanguageObject {
+
+ public static String MAKEIND = "MAKEIND"; //$NON-NLS-1$
+
private boolean optional;
private boolean makeDep;
private boolean makeNotDep;
+ private boolean makeInd;
public boolean isOptional() {
return optional;
@@ -50,9 +54,26 @@
this.optional = optional;
}
+ public boolean isMakeInd() {
+ return makeInd;
+ }
+
+ public void setMakeInd(boolean makeInd) {
+ this.makeInd = makeInd;
+ }
+
public abstract void acceptVisitor(LanguageVisitor visitor);
public abstract void collectGroups(Collection<GroupSymbol> groups);
- public abstract Object clone();
+ protected abstract FromClause cloneDirect();
+
+ public FromClause clone() {
+ FromClause clone = cloneDirect();
+ clone.makeDep = makeDep;
+ clone.makeInd = makeInd;
+ clone.makeNotDep = makeNotDep;
+ clone.optional = optional;
+ return clone;
+ }
public boolean isMakeDep() {
return this.makeDep;
@@ -71,7 +92,7 @@
}
public boolean hasHint() {
- return optional || makeDep || makeNotDep;
+ return optional || makeDep || makeNotDep || makeInd;
}
public boolean equals(Object obj) {
@@ -87,7 +108,8 @@
return other.isOptional() == this.isOptional()
&& other.isMakeDep() == this.isMakeDep()
- && other.isMakeNotDep() == this.isMakeNotDep();
+ && other.isMakeNotDep() == this.isMakeNotDep()
+ && other.isMakeInd() == this.isMakeInd();
}
@Override
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/JoinPredicate.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/JoinPredicate.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/JoinPredicate.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -224,15 +224,15 @@
* Return deep clone for object
* @return Deep clone
*/
- public Object clone() {
+ protected FromClause cloneDirect() {
FromClause copyLeft = null;
if(this.leftClause != null) {
- copyLeft = (FromClause) this.leftClause.clone();
+ copyLeft = this.leftClause.clone();
}
FromClause copyRight = null;
if(this.rightClause != null) {
- copyRight = (FromClause) this.rightClause.clone();
+ copyRight = this.rightClause.clone();
}
List copyCrits = null;
@@ -246,9 +246,6 @@
}
JoinPredicate clonedJoinPredicate = new JoinPredicate(copyLeft, copyRight, this.joinType, copyCrits);
- clonedJoinPredicate.setOptional(this.isOptional());
- clonedJoinPredicate.setMakeDep(this.isMakeDep());
- clonedJoinPredicate.setMakeNotDep(this.isMakeNotDep());
return clonedJoinPredicate;
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/SubqueryFromClause.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/SubqueryFromClause.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/SubqueryFromClause.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -159,16 +159,13 @@
* Get deep clone of object
* @return Deep copy of the object
*/
- public Object clone() {
+ public FromClause cloneDirect() {
Command commandCopy = null;
if(this.command != null) {
commandCopy = (Command) this.command.clone();
}
- SubqueryFromClause clause = new SubqueryFromClause((GroupSymbol)this.symbol.clone(), commandCopy);
- clause.setOptional(this.isOptional());
- clause.setMakeDep(this.isMakeDep());
- clause.setMakeNotDep(this.isMakeNotDep());
+ SubqueryFromClause clause = new SubqueryFromClause(this.symbol.clone(), commandCopy);
clause.setTable(this.isTable());
return clause;
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/TextTable.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/TextTable.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/TextTable.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -155,7 +155,7 @@
}
@Override
- public TextTable clone() {
+ protected TextTable cloneDirect() {
TextTable clone = new TextTable();
this.copy(clone);
clone.setDelimiter(this.delimiter);
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/UnaryFromClause.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/UnaryFromClause.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/UnaryFromClause.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -74,7 +74,7 @@
* Collect all GroupSymbols for this from clause.
* @param groups Groups to add to
*/
- public void collectGroups(Collection groups) {
+ public void collectGroups(Collection<GroupSymbol> groups) {
groups.add(this.group);
}
@@ -121,15 +121,12 @@
* Get deep clone of object
* @return Deep copy of the object
*/
- public Object clone() {
+ public FromClause cloneDirect() {
GroupSymbol copyGroup = null;
if(this.group != null) {
- copyGroup = (GroupSymbol) this.group.clone();
+ copyGroup = this.group.clone();
}
UnaryFromClause clonedUnaryFromClause = new UnaryFromClause(copyGroup);
- clonedUnaryFromClause.setOptional(this.isOptional());
- clonedUnaryFromClause.setMakeDep(this.isMakeDep());
- clonedUnaryFromClause.setMakeNotDep(this.isMakeNotDep());
if (this.expandedCommand != null) {
clonedUnaryFromClause.setExpandedCommand((Command)this.expandedCommand.clone());
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/XMLTable.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/XMLTable.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/sql/lang/XMLTable.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -169,7 +169,7 @@
}
@Override
- public XMLTable clone() {
+ protected XMLTable cloneDirect() {
XMLTable clone = new XMLTable();
this.copy(clone);
for (XMLColumn column : columns) {
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/sql/visitor/SQLStringVisitor.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/sql/visitor/SQLStringVisitor.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/sql/visitor/SQLStringVisitor.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -447,7 +447,7 @@
}
public void visit( JoinPredicate obj ) {
- addOptionComment(obj);
+ addHintComment(obj);
if (obj.hasHint()) {
append("(");//$NON-NLS-1$
@@ -506,29 +506,31 @@
if (obj.hasHint()) {
append(")"); //$NON-NLS-1$
}
- addFromClasueDepOptions(obj);
}
- private void addFromClasueDepOptions( FromClause obj ) {
- if (obj.isMakeDep()) {
+ private void addHintComment( FromClause obj ) {
+ if (obj.hasHint()) {
+ append(BEGIN_HINT);
append(SPACE);
- append(Option.MAKEDEP);
- }
- if (obj.isMakeNotDep()) {
- append(SPACE);
- append(Option.MAKENOTDEP);
- }
- }
-
- private void addOptionComment( FromClause obj ) {
- if (obj.isOptional()) {
- append(BEGIN_HINT);
- append(SPACE);
- append(Option.OPTIONAL);
- append(SPACE);
+ if (obj.isOptional()) {
+ append(Option.OPTIONAL);
+ append(SPACE);
+ }
+ if (obj.isMakeDep()) {
+ append(Option.MAKEDEP);
+ append(SPACE);
+ }
+ if (obj.isMakeNotDep()) {
+ append(Option.MAKENOTDEP);
+ append(SPACE);
+ }
+ if (obj.isMakeInd()) {
+ append(FromClause.MAKEIND);
+ append(SPACE);
+ }
append(END_HINT);
append(SPACE);
- }
+ }
}
public void visit( JoinType obj ) {
@@ -1046,7 +1048,7 @@
}
public void visit( SubqueryFromClause obj ) {
- addOptionComment(obj);
+ addHintComment(obj);
if (obj.isTable()) {
append(TABLE);
}
@@ -1055,7 +1057,6 @@
append(")");//$NON-NLS-1$
append(" AS ");//$NON-NLS-1$
append(obj.getOutputName());
- addFromClasueDepOptions(obj);
}
public void visit( SubquerySetCriteria obj ) {
@@ -1076,9 +1077,8 @@
}
public void visit( UnaryFromClause obj ) {
- addOptionComment(obj);
+ addHintComment(obj);
visitNode(obj.getGroup());
- addFromClasueDepOptions(obj);
}
public void visit( Update obj ) {
@@ -1569,6 +1569,13 @@
append(SubqueryHint.NOUNNEST);
append(SPACE);
append(END_HINT);
+ } else if (hint.isDepJoin()) {
+ append(SPACE);
+ append(BEGIN_HINT);
+ append(SPACE);
+ append(SubqueryHint.DJ);
+ append(SPACE);
+ append(END_HINT);
} else if (hint.isMergeJoin()) {
append(SPACE);
append(BEGIN_HINT);
@@ -1711,6 +1718,7 @@
@Override
public void visit( TextTable obj ) {
+ addHintComment(obj);
append("TEXTTABLE("); //$NON-NLS-1$
visitNode(obj.getFile());
append(SPACE);
@@ -1771,6 +1779,7 @@
@Override
public void visit( XMLTable obj ) {
+ addHintComment(obj);
append("XMLTABLE("); //$NON-NLS-1$
if (obj.getNamespaces() != null) {
visitNode(obj.getNamespaces());
@@ -1936,6 +1945,7 @@
@Override
public void visit(ArrayTable obj) {
+ addHintComment(obj);
append("ARRAYTABLE("); //$NON-NLS-1$
visitNode(obj.getArrayValue());
append(SPACE);
Modified: branches/7.4.x/engine/src/test/java/org/teiid/query/parser/TestOptionsAndHints.java
===================================================================
--- branches/7.4.x/engine/src/test/java/org/teiid/query/parser/TestOptionsAndHints.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/test/java/org/teiid/query/parser/TestOptionsAndHints.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -93,7 +93,7 @@
query.setFrom(from);
query.setCriteria(crit);
TestParser.helpTest("Select a From db.g1 MAKENOTDEP, db.g2 AS c MAKENOTDEP WHERE a = b", //$NON-NLS-1$
- "SELECT a FROM db.g1 MAKENOTDEP, db.g2 AS c MAKENOTDEP WHERE a = b", //$NON-NLS-1$
+ "SELECT a FROM /*+ MAKENOTDEP */ db.g1, /*+ MAKENOTDEP */ db.g2 AS c WHERE a = b", //$NON-NLS-1$
query);
}
@@ -118,7 +118,7 @@
query.setSelect(select);
query.setFrom(from);
TestParser.helpTest("Select a From db.g1 JOIN db.g2 MAKEDEP ON a = b", //$NON-NLS-1$
- "SELECT a FROM db.g1 INNER JOIN db.g2 MAKEDEP ON a = b", //$NON-NLS-1$
+ "SELECT a FROM db.g1 INNER JOIN /*+ MAKEDEP */ db.g2 ON a = b", //$NON-NLS-1$
query);
}
@@ -143,7 +143,7 @@
query.setSelect(select);
query.setFrom(from);
TestParser.helpTest("Select a From db.g1 MAKEDEP JOIN db.g2 ON a = b", //$NON-NLS-1$
- "SELECT a FROM db.g1 MAKEDEP INNER JOIN db.g2 ON a = b", //$NON-NLS-1$
+ "SELECT a FROM /*+ MAKEDEP */ db.g1 INNER JOIN db.g2 ON a = b", //$NON-NLS-1$
query);
}
@@ -174,7 +174,7 @@
query.setSelect(select);
query.setFrom(from);
TestParser.helpTest("Select a From (db.g1 MAKEDEP JOIN db.g2 ON a = b) LEFT OUTER JOIN db.g3 MAKEDEP ON a = c", //$NON-NLS-1$
- "SELECT a FROM (db.g1 MAKEDEP INNER JOIN db.g2 ON a = b) LEFT OUTER JOIN db.g3 MAKEDEP ON a = c", //$NON-NLS-1$
+ "SELECT a FROM (/*+ MAKEDEP */ db.g1 INNER JOIN db.g2 ON a = b) LEFT OUTER JOIN /*+ MAKEDEP */ db.g3 ON a = c", //$NON-NLS-1$
query);
}
@@ -203,7 +203,7 @@
query.setFrom(from);
query.setCriteria(crit);
TestParser.helpTest("Select a From db.g1 MAKEDEP, db.g2 AS c MAKEDEP WHERE a = b", //$NON-NLS-1$
- "SELECT a FROM db.g1 MAKEDEP, db.g2 AS c MAKEDEP WHERE a = b", //$NON-NLS-1$
+ "SELECT a FROM /*+ MAKEDEP */ db.g1, /*+ MAKEDEP */ db.g2 AS c WHERE a = b", //$NON-NLS-1$
query);
}
@@ -237,7 +237,7 @@
query.setSelect(select);
query.setFrom(from);
TestParser.helpTest("Select a From db.g1 JOIN db.g2 MAKENOTDEP ON a = b", //$NON-NLS-1$
- "SELECT a FROM db.g1 INNER JOIN db.g2 MAKENOTDEP ON a = b", //$NON-NLS-1$
+ "SELECT a FROM db.g1 INNER JOIN /*+ MAKENOTDEP */ db.g2 ON a = b", //$NON-NLS-1$
query);
}
@@ -262,7 +262,7 @@
query.setSelect(select);
query.setFrom(from);
TestParser.helpTest("Select a From db.g1 MAKENOTDEP JOIN db.g2 ON a = b", //$NON-NLS-1$
- "SELECT a FROM db.g1 MAKENOTDEP INNER JOIN db.g2 ON a = b", //$NON-NLS-1$
+ "SELECT a FROM /*+ MAKENOTDEP */ db.g1 INNER JOIN db.g2 ON a = b", //$NON-NLS-1$
query);
}
@@ -293,7 +293,7 @@
query.setSelect(select);
query.setFrom(from);
TestParser.helpTest("Select a From (db.g1 MAKENOTDEP JOIN db.g2 ON a = b) LEFT OUTER JOIN db.g3 MAKENOTDEP ON a = c", //$NON-NLS-1$
- "SELECT a FROM (db.g1 MAKENOTDEP INNER JOIN db.g2 ON a = b) LEFT OUTER JOIN db.g3 MAKENOTDEP ON a = c", //$NON-NLS-1$
+ "SELECT a FROM (/*+ MAKENOTDEP */ db.g1 INNER JOIN db.g2 ON a = b) LEFT OUTER JOIN /*+ MAKENOTDEP */ db.g3 ON a = c", //$NON-NLS-1$
query);
}
@@ -312,7 +312,7 @@
Query query = new Query(select, from, null, null, null, null, null);
TestParser.helpTest("Select a.x, b.y From a MAKENOTDEP INNER JOIN b MAKEDEP ON a.x = func(b.y)", //$NON-NLS-1$
- "SELECT a.x, b.y FROM a MAKENOTDEP INNER JOIN b MAKEDEP ON a.x = func(b.y)", //$NON-NLS-1$
+ "SELECT a.x, b.y FROM /*+ MAKENOTDEP */ a INNER JOIN /*+ MAKEDEP */ b ON a.x = func(b.y)", //$NON-NLS-1$
query);
}
@@ -1030,7 +1030,7 @@
query.setSelect(select);
query.setFrom(from);
TestParser.helpTest("Select a From (db.g1 JOIN db.g2 ON a = b) makedep LEFT OUTER JOIN db.g3 ON a = c", //$NON-NLS-1$
- "SELECT a FROM (db.g1 INNER JOIN db.g2 ON a = b) MAKEDEP LEFT OUTER JOIN db.g3 ON a = c", //$NON-NLS-1$
+ "SELECT a FROM /*+ MAKEDEP */ (db.g1 INNER JOIN db.g2 ON a = b) LEFT OUTER JOIN db.g3 ON a = c", //$NON-NLS-1$
query);
//ensure that the new string form is parsable
Modified: branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestDependentJoins.java
===================================================================
--- branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestDependentJoins.java 2011-06-01 02:43:24 UTC (rev 3209)
+++ branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestDependentJoins.java 2011-06-01 16:37:30 UTC (rev 3210)
@@ -839,4 +839,56 @@
new HashSet<String>(dataManager.getQueries()));
}
+ @Test public void testDjHint() {
+ // Create query
+ String sql = "SELECT pm1.g1.e1 FROM pm1.g1 WHERE e1 IN /*+ DJ */ (select e1 from pm2.g1) order by pm1.g1.e1"; //$NON-NLS-1$
+
+ // Create expected results
+ List[] expected = new List[] {
+ Arrays.asList(new Object[] { "a" }), //$NON-NLS-1$
+ Arrays.asList(new Object[] { "a" }), //$NON-NLS-1$
+ Arrays.asList(new Object[] { "a" }), //$NON-NLS-1$
+ Arrays.asList(new Object[] { "b" }), //$NON-NLS-1$
+ Arrays.asList(new Object[] { "c" }) //$NON-NLS-1$
+ };
+
+ // Construct data manager with data
+ FakeDataManager dataManager = new FakeDataManager();
+ TestProcessor.sampleData1(dataManager);
+
+ // Plan query
+ ProcessorPlan plan = TestProcessor.helpGetPlan(sql, RealMetadataFactory.example1Cached());
+ TestOptimizer.checkDependentJoinCount(plan, 1);
+
+ // Run query
+ TestProcessor.helpProcess(plan, dataManager, expected);
+ }
+
+ @Test public void testMakeIndHint() {
+ // Create query
+ String sql = "SELECT pm1.g1.e1 FROM /*+ MAKEIND */ pm1.g1, pm2.g1 WHERE pm1.g1.e1 = pm2.g1.e1 AND pm1.g1.e2=pm2.g1.e2 order by pm1.g1.e1"; //$NON-NLS-1$
+
+ // Create expected results
+ List[] expected = new List[] {
+ Arrays.asList(new Object[] { "a" }), //$NON-NLS-1$
+ Arrays.asList(new Object[] { "a" }), //$NON-NLS-1$
+ Arrays.asList(new Object[] { "a" }), //$NON-NLS-1$
+ Arrays.asList(new Object[] { "a" }), //$NON-NLS-1$
+ Arrays.asList(new Object[] { "a" }), //$NON-NLS-1$
+ Arrays.asList(new Object[] { "b" }), //$NON-NLS-1$
+ Arrays.asList(new Object[] { "c" }) //$NON-NLS-1$
+ };
+
+ // Construct data manager with data
+ FakeDataManager dataManager = new FakeDataManager();
+ TestProcessor.sampleData1(dataManager);
+
+ // Plan query
+ ProcessorPlan plan = TestProcessor.helpGetPlan(sql, RealMetadataFactory.example1Cached());
+ TestOptimizer.checkDependentJoinCount(plan, 1);
+
+ // Run query
+ TestProcessor.helpProcess(plan, dataManager, expected);
+ }
+
}
13 years, 6 months
teiid SVN: r3209 - in branches/7.4.x: engine/src/main/java/org/teiid/query/optimizer/relational and 8 other directories.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2011-05-31 22:43:24 -0400 (Tue, 31 May 2011)
New Revision: 3209
Modified:
branches/7.4.x/engine/src/main/java/org/teiid/query/eval/Evaluator.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/PlanToProcessConverter.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/plantree/NodeConstants.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleCollapseSource.java
branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleImplementJoinStrategy.java
branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/DependentCriteriaProcessor.java
branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/DependentValueSource.java
branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/EnhancedSortMergeJoinStrategy.java
branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/JoinNode.java
branches/7.4.x/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java
branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
branches/7.4.x/engine/src/main/java/org/teiid/query/sql/util/ValueIteratorSource.java
branches/7.4.x/engine/src/test/java/org/teiid/query/optimizer/TestAggregatePushdown.java
branches/7.4.x/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestCrossSourceStarJoin.java
Log:
TEIID-1615 removing unnecessary sorting from inner joins that implement semi-joins
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/eval/Evaluator.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/eval/Evaluator.java 2011-06-01 01:01:56 UTC (rev 3208)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/eval/Evaluator.java 2011-06-01 02:43:24 UTC (rev 3209)
@@ -109,6 +109,7 @@
import org.teiid.query.sql.symbol.XMLNamespaces.NamespaceItem;
import org.teiid.query.sql.util.ValueIterator;
import org.teiid.query.sql.util.ValueIteratorSource;
+import org.teiid.query.sql.util.VariableContext;
import org.teiid.query.util.CommandContext;
import org.teiid.query.xquery.saxon.SaxonXQueryExpression;
import org.teiid.query.xquery.saxon.SaxonXQueryExpression.Result;
@@ -427,7 +428,8 @@
valueIter = new CollectionValueIterator(((SetCriteria)criteria).getValues());
} else if (criteria instanceof DependentSetCriteria){
ContextReference ref = (ContextReference)criteria;
- ValueIteratorSource vis = (ValueIteratorSource)getContext(criteria).getVariableContext().getGlobalValue(ref.getContextSymbol());
+ VariableContext vc = getContext(criteria).getVariableContext();
+ ValueIteratorSource vis = (ValueIteratorSource)vc.getGlobalValue(ref.getContextSymbol());
Set<Object> values;
try {
values = vis.getCachedSet(ref.getValueExpression());
@@ -437,6 +439,7 @@
if (values != null) {
return values.contains(leftValue);
}
+ vis.setUnused(true);
//there are too many values to justify a linear search or holding
//them in memory
return true;
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/PlanToProcessConverter.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/PlanToProcessConverter.java 2011-06-01 01:01:56 UTC (rev 3208)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/PlanToProcessConverter.java 2011-06-01 02:43:24 UTC (rev 3209)
@@ -238,7 +238,9 @@
if(stype == JoinStrategyType.MERGE || stype == JoinStrategyType.ENHANCED_SORT) {
MergeJoinStrategy mjStrategy = null;
if (stype.equals(JoinStrategyType.ENHANCED_SORT)) {
- mjStrategy = new EnhancedSortMergeJoinStrategy(leftSort, (SortOption)node.getProperty(NodeConstants.Info.SORT_RIGHT));
+ EnhancedSortMergeJoinStrategy esmjStrategy = new EnhancedSortMergeJoinStrategy(leftSort, (SortOption)node.getProperty(NodeConstants.Info.SORT_RIGHT));
+ esmjStrategy.setSemiDep(node.hasBooleanProperty(Info.IS_SEMI_DEP));
+ mjStrategy = esmjStrategy;
} else {
mjStrategy = new MergeJoinStrategy(leftSort, (SortOption)node.getProperty(NodeConstants.Info.SORT_RIGHT), false);
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/plantree/NodeConstants.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/plantree/NodeConstants.java 2011-06-01 01:01:56 UTC (rev 3208)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/plantree/NodeConstants.java 2011-06-01 02:43:24 UTC (rev 3209)
@@ -95,6 +95,7 @@
IS_OPTIONAL, // Boolean
IS_LEFT_DISTINCT, // Boolean
IS_RIGHT_DISTINCT, // Boolean
+ IS_SEMI_DEP, // Boolean
// Project node properties
PROJECT_COLS, // List <SingleElementSymbol>
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleCollapseSource.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleCollapseSource.java 2011-06-01 01:01:56 UTC (rev 3208)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleCollapseSource.java 2011-06-01 02:43:24 UTC (rev 3209)
@@ -24,6 +24,7 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
@@ -172,9 +173,11 @@
*/
if (queryCommand instanceof SetQuery) {
((SetQuery)queryCommand).setAll(false);
- } else if (!NewCalculateCostUtil.usesKey(accessNode, queryCommand.getProjectedSymbols(), metadata) && CapabilitiesUtil.supports(Capability.QUERY_SELECT_DISTINCT, RuleRaiseAccess.getModelIDFromAccess(accessNode, metadata), metadata, capFinder)) {
+ } else if (CapabilitiesUtil.supports(Capability.QUERY_SELECT_DISTINCT, RuleRaiseAccess.getModelIDFromAccess(accessNode, metadata), metadata, capFinder)) {
Query query = (Query)queryCommand;
- if (!QueryRewriter.isDistinctWithGroupBy(query)) {
+ HashSet<GroupSymbol> keyPreservingGroups = new HashSet<GroupSymbol>();
+ ResolverUtil.findKeyPreserved(query, keyPreservingGroups, metadata);
+ if (!QueryRewriter.isDistinctWithGroupBy(query) && !NewCalculateCostUtil.usesKey(query.getSelect().getProjectedSymbols(), keyPreservingGroups, metadata, true)) {
((Query)queryCommand).getSelect().setDistinct(true);
}
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleImplementJoinStrategy.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleImplementJoinStrategy.java 2011-06-01 01:01:56 UTC (rev 3208)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/optimizer/relational/rules/RuleImplementJoinStrategy.java 2011-06-01 02:43:24 UTC (rev 3209)
@@ -24,6 +24,7 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
@@ -116,6 +117,7 @@
List<SingleElementSymbol> leftExpressions = (List<SingleElementSymbol>) joinNode.getProperty(NodeConstants.Info.LEFT_EXPRESSIONS);
List<SingleElementSymbol> rightExpressions = (List<SingleElementSymbol>) joinNode.getProperty(NodeConstants.Info.RIGHT_EXPRESSIONS);
+ int origExpressionCount = leftExpressions.size();
//check index information on each side
//TODO: don't do null order compensation - in fact we should check what the order actually is, but we don't have that metadata
@@ -169,11 +171,26 @@
joinNode.setProperty(NodeConstants.Info.LEFT_EXPRESSIONS, leftExpressions);
joinNode.setProperty(NodeConstants.Info.RIGHT_EXPRESSIONS, rightExpressions);
}
-
+
+ Set<SingleElementSymbol> outputSymbols = new LinkedHashSet<SingleElementSymbol>((List<SingleElementSymbol>)joinNode.getProperty(NodeConstants.Info.OUTPUT_COLS));
+
boolean pushedLeft = insertSort(joinNode.getFirstChild(), leftExpressions, joinNode, metadata, capabilitiesFinder, pushLeft);
- insertSort(joinNode.getLastChild(), rightExpressions, joinNode, metadata, capabilitiesFinder, pushRight);
-
- if (joinNode.getProperty(NodeConstants.Info.JOIN_TYPE) == JoinType.JOIN_INNER && (!pushRight || !pushedLeft)) {
+
+ if (origExpressionCount == 1
+ && joinNode.getProperty(NodeConstants.Info.JOIN_TYPE) == JoinType.JOIN_INNER
+ && joinNode.getProperty(NodeConstants.Info.DEPENDENT_VALUE_SOURCE) != null
+ && !joinNode.hasCollectionProperty(Info.NON_EQUI_JOIN_CRITERIA)) {
+ Collection<SingleElementSymbol> output = (Collection<SingleElementSymbol>) joinNode.getProperty(NodeConstants.Info.OUTPUT_COLS);
+ Collection<GroupSymbol> groups = GroupsUsedByElementsVisitor.getGroups(output);
+ if (Collections.disjoint(groups, FrameUtil.findJoinSourceNode(joinNode.getFirstChild()).getGroups())) {
+ pushRight = false;
+ joinNode.setProperty(Info.IS_SEMI_DEP, Boolean.TRUE);
+ }
+ }
+
+ boolean pushedRight = insertSort(joinNode.getLastChild(), rightExpressions, joinNode, metadata, capabilitiesFinder, pushRight);
+
+ if (joinNode.getProperty(NodeConstants.Info.JOIN_TYPE) == JoinType.JOIN_INNER && (!pushedRight || !pushedLeft)) {
joinNode.setProperty(NodeConstants.Info.JOIN_STRATEGY, JoinStrategyType.ENHANCED_SORT);
}
}
@@ -207,8 +224,20 @@
PlanNode sortNode = createSortNode(new ArrayList<SingleElementSymbol>(orderSymbols), outputSymbols);
+ boolean distinct = false;
+ if (sourceNode.getType() == NodeConstants.Types.SOURCE && outputSymbols.size() == expressions.size() && outputSymbols.containsAll(expressions)) {
+ PlanNode setOp = NodeEditor.findNodePreOrder(sourceNode.getFirstChild(), NodeConstants.Types.SET_OP, NodeConstants.Types.SOURCE);
+ if (setOp != null) {
+ if (setOp.hasBooleanProperty(NodeConstants.Info.USE_ALL)) {
+ distinct = true;
+ }
+ } else if (NodeEditor.findNodePreOrder(sourceNode.getFirstChild(), NodeConstants.Types.DUP_REMOVE, NodeConstants.Types.PROJECT) != null) {
+ distinct = true;
+ }
+ }
+
if (sourceNode.getType() == NodeConstants.Types.ACCESS) {
- if (NewCalculateCostUtil.usesKey(sourceNode, expressions, metadata)) {
+ if (distinct || NewCalculateCostUtil.usesKey(sourceNode, expressions, metadata)) {
joinNode.setProperty(joinNode.getFirstChild() == childNode ? NodeConstants.Info.IS_LEFT_DISTINCT : NodeConstants.Info.IS_RIGHT_DISTINCT, true);
}
if (attemptPush && RuleRaiseAccess.canRaiseOverSort(sourceNode, metadata, capFinder, sortNode, null, false)) {
@@ -221,6 +250,10 @@
}
}
+ if (distinct) {
+ joinNode.setProperty(joinNode.getFirstChild() == childNode ? NodeConstants.Info.IS_LEFT_DISTINCT : NodeConstants.Info.IS_RIGHT_DISTINCT, true);
+ }
+
joinNode.setProperty(joinNode.getFirstChild() == childNode ? NodeConstants.Info.SORT_LEFT : NodeConstants.Info.SORT_RIGHT, SortOption.SORT);
if (needsCorrection) {
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/DependentCriteriaProcessor.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/DependentCriteriaProcessor.java 2011-06-01 01:01:56 UTC (rev 3208)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/DependentCriteriaProcessor.java 2011-06-01 02:43:24 UTC (rev 3209)
@@ -87,18 +87,21 @@
public void sort() throws BlockedException,
TeiidComponentException, TeiidProcessingException {
if (dvs == null) {
- //TODO: detect if we're already distinct
- if (sortUtility == null) {
- List<Expression> sortSymbols = new ArrayList<Expression>(dependentSetStates.size());
- List<Boolean> sortDirection = new ArrayList<Boolean>(sortSymbols.size());
- for (int i = 0; i < dependentSetStates.size(); i++) {
- sortDirection.add(Boolean.valueOf(OrderBy.ASC));
- sortSymbols.add(dependentSetStates.get(i).valueExpression);
- }
- DependentValueSource originalVs = (DependentValueSource)dependentNode.getContext().getVariableContext().getGlobalValue(valueSource);
- this.sortUtility = new SortUtility(originalVs.getTupleBuffer().createIndexedTupleSource(), sortSymbols, sortDirection, Mode.DUP_REMOVE, dependentNode.getBufferManager(), dependentNode.getConnectionID(), originalVs.getTupleBuffer().getSchema());
- }
- dvs = new DependentValueSource(sortUtility.sort());
+ DependentValueSource originalVs = (DependentValueSource)dependentNode.getContext().getVariableContext().getGlobalValue(valueSource);
+ if (!originalVs.isDistinct()) {
+ if (sortUtility == null) {
+ List<Expression> sortSymbols = new ArrayList<Expression>(dependentSetStates.size());
+ List<Boolean> sortDirection = new ArrayList<Boolean>(sortSymbols.size());
+ for (int i = 0; i < dependentSetStates.size(); i++) {
+ sortDirection.add(Boolean.valueOf(OrderBy.ASC));
+ sortSymbols.add(dependentSetStates.get(i).valueExpression);
+ }
+ this.sortUtility = new SortUtility(originalVs.getTupleBuffer().createIndexedTupleSource(), sortSymbols, sortDirection, Mode.DUP_REMOVE, dependentNode.getBufferManager(), dependentNode.getConnectionID(), originalVs.getTupleBuffer().getSchema());
+ }
+ dvs = new DependentValueSource(sortUtility.sort());
+ } else {
+ dvs = originalVs;
+ }
for (SetState setState : dependentSetStates) {
setState.valueIterator = dvs.getValueIterator(setState.valueExpression);
if (setState.maxNdv > 0 && setState.maxNdv < dvs.getTupleBuffer().getRowCount()) {
@@ -363,8 +366,10 @@
return hasNextCommand;
}
- public Criteria replaceDependentCriteria(AbstractSetCriteria crit, SetState state) {
+ public Criteria replaceDependentCriteria(AbstractSetCriteria crit, SetState state) throws TeiidComponentException {
if (state.overMax) {
+ DependentValueSource originalVs = (DependentValueSource)dependentNode.getContext().getVariableContext().getGlobalValue(((DependentSetCriteria)crit).getContextSymbol());
+ originalVs.setUnused(true);
return QueryRewriter.TRUE_CRITERIA;
}
if (state.replacement.isEmpty()) {
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/DependentValueSource.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/DependentValueSource.java 2011-06-01 01:01:56 UTC (rev 3208)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/DependentValueSource.java 2011-06-01 02:43:24 UTC (rev 3209)
@@ -48,6 +48,8 @@
private TupleBuffer buffer;
private Map<Expression, Set<Object>> cachedSets;
+ private boolean unused; //TODO: use this value instead of the context
+ private boolean distinct;
public DependentValueSource(TupleBuffer tupleSourceID) {
this.buffer = tupleSourceID;
@@ -105,5 +107,23 @@
}
return result;
}
+
+ @Override
+ public boolean isUnused() {
+ return unused;
+ }
+
+ @Override
+ public void setUnused(boolean unused) {
+ this.unused = unused;
+ }
+
+ public boolean isDistinct() {
+ return distinct;
+ }
+
+ public void setDistinct(boolean distinct) {
+ this.distinct = distinct;
+ }
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/EnhancedSortMergeJoinStrategy.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/EnhancedSortMergeJoinStrategy.java 2011-06-01 01:01:56 UTC (rev 3208)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/EnhancedSortMergeJoinStrategy.java 2011-06-01 02:43:24 UTC (rev 3209)
@@ -55,6 +55,8 @@
*/
public class EnhancedSortMergeJoinStrategy extends MergeJoinStrategy {
+ private boolean semiDep;
+
private TupleSource currentSource;
private SourceState sortedSource;
private SourceState notSortedSource;
@@ -65,6 +67,7 @@
private int[] reverseIndexes;
private List<?> sortedTuple;
private boolean repeatedMerge;
+ private boolean validSemiDep;
/**
* Number of index batches we'll allow to marked as prefers memory regardless of buffer space
@@ -224,6 +227,17 @@
this.sortedSource = this.leftSource;
this.notSortedSource = this.rightSource;
+ if (semiDep && this.leftSource.isDistinct()) {
+ this.rightSource.getTupleBuffer();
+ if (!this.joinNode.getDependentValueSource().isUnused()) {
+ //sort is not needed
+ this.processingSortRight = SortOption.NOT_SORTED;
+ this.validSemiDep = true;
+ //TODO: this requires full buffering and performs an unnecessary projection
+ return;
+ }
+ }
+
if (!repeatedMerge) {
createIndex(this.leftSource, this.processingSortLeft == SortOption.ALREADY_SORTED);
} else {
@@ -295,6 +309,12 @@
if (currentTuple == null) {
return;
}
+ if (validSemiDep) {
+ List<?> tuple = this.currentTuple;
+ this.currentTuple = null;
+ this.joinNode.addBatchRow(outputTuple(this.leftSource.getOuterVals(), tuple));
+ continue;
+ }
List<?> key = RelationalNode.projectTuple(this.notSortedSource.getExpressionIndexes(), this.currentTuple);
tb = new TupleBrowser(this.index, new CollectionTupleSource(Arrays.asList(key).iterator()), OrderBy.ASC);
}
@@ -319,12 +339,18 @@
@Override
public EnhancedSortMergeJoinStrategy clone() {
- return new EnhancedSortMergeJoinStrategy(this.sortLeft, this.sortRight);
+ EnhancedSortMergeJoinStrategy clone = new EnhancedSortMergeJoinStrategy(this.sortLeft, this.sortRight);
+ clone.semiDep = this.semiDep;
+ return clone;
}
@Override
public String getName() {
- return "ENHANCED SORT JOIN"; //$NON-NLS-1$
+ return "ENHANCED SORT JOIN"; //$NON-NLS-1$
}
+
+ public void setSemiDep(boolean semiDep) {
+ this.semiDep = semiDep;
+ }
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/JoinNode.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/JoinNode.java 2011-06-01 01:01:56 UTC (rev 3208)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/processor/relational/JoinNode.java 2011-06-01 02:43:24 UTC (rev 3209)
@@ -75,6 +75,8 @@
private Map combinedElementMap;
private int[] projectionIndexes;
+ private DependentValueSource dvs;
+
public JoinNode(int nodeID) {
super(nodeID);
}
@@ -182,7 +184,9 @@
this.joinStrategy.loadLeft();
if (isDependent()) {
TupleBuffer buffer = this.joinStrategy.leftSource.getTupleBuffer();
- this.getContext().getVariableContext().setGlobalValue(this.dependentValueSource, new DependentValueSource(buffer));
+ dvs = new DependentValueSource(buffer);
+ dvs.setDistinct(this.joinStrategy.leftSource.isDistinct());
+ this.getContext().getVariableContext().setGlobalValue(this.dependentValueSource, dvs);
}
state = State.LOAD_RIGHT;
}
@@ -270,13 +274,24 @@
this.dependentValueSource = dependentValueSource;
}
+ public String getDependentValueSourceName() {
+ return dependentValueSource;
+ }
+
public void closeDirect() {
super.closeDirect();
joinStrategy.close();
if (this.getContext() != null && this.dependentValueSource != null) {
this.getContext().getVariableContext().setGlobalValue(this.dependentValueSource, null);
}
+ this.dvs = null;
}
+
+ @Override
+ public void reset() {
+ super.reset();
+ this.dvs = null;
+ }
public JoinType getJoinType() {
return this.joinType;
@@ -310,5 +325,9 @@
throw BATCH_AVILABLE;
}
}
+
+ public DependentValueSource getDependentValueSource() {
+ return dvs;
+ }
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java 2011-06-01 01:01:56 UTC (rev 3208)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/resolver/util/ResolverUtil.java 2011-06-01 02:43:24 UTC (rev 3209)
@@ -938,7 +938,7 @@
return;
}
if (query.getFrom().getClauses().size() == 1) {
- findKeyPreserved((FromClause)query.getFrom().getClauses().get(0), keyPreservingGroups, metadata);
+ findKeyPreserved(query.getFrom().getClauses().get(0), keyPreservingGroups, metadata);
return;
}
//non-ansi join
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java 2011-06-01 01:01:56 UTC (rev 3208)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java 2011-06-01 02:43:24 UTC (rev 3209)
@@ -64,7 +64,6 @@
import org.teiid.query.metadata.TempMetadataAdapter;
import org.teiid.query.metadata.TempMetadataID;
import org.teiid.query.metadata.TempMetadataStore;
-import org.teiid.query.optimizer.relational.rules.NewCalculateCostUtil;
import org.teiid.query.optimizer.relational.rules.RuleMergeCriteria;
import org.teiid.query.optimizer.relational.rules.RulePlaceAccess;
import org.teiid.query.optimizer.relational.rules.RuleMergeCriteria.PlannedResult;
@@ -634,7 +633,7 @@
}
if (from != null && !query.getIsXML()) {
- writeSubqueriesAsJoins(query);
+ rewriteSubqueriesAsJoins(query);
}
query = rewriteGroupBy(query);
@@ -667,7 +666,7 @@
return query;
}
- private void writeSubqueriesAsJoins(Query query)
+ private void rewriteSubqueriesAsJoins(Query query)
throws TeiidComponentException, QueryMetadataException,
QueryResolverException {
if (query.getCriteria() == null) {
@@ -722,7 +721,7 @@
Criteria mappedCriteria = Criteria.combineCriteria(plannedResult.nonEquiJoinCriteria);
ExpressionMappingVisitor.mapExpressions(mappedCriteria, expressionMap);
query.setCriteria(Criteria.combineCriteria(query.getCriteria(), mappedCriteria));
- query.getFrom().addClause((FromClause) q.getFrom().getClauses().get(0));
+ query.getFrom().addClause(q.getFrom().getClauses().get(0));
query.getTemporaryMetadata().putAll(q.getTemporaryMetadata());
//transform the query into an inner join
}
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/sql/util/ValueIteratorSource.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/sql/util/ValueIteratorSource.java 2011-06-01 01:01:56 UTC (rev 3208)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/sql/util/ValueIteratorSource.java 2011-06-01 02:43:24 UTC (rev 3209)
@@ -50,5 +50,9 @@
ValueIterator getValueIterator(Expression valueExpression) throws TeiidComponentException;
Set<Object> getCachedSet(Expression valueExpression) throws TeiidComponentException, TeiidProcessingException;
-
+
+ void setUnused(boolean unused);
+
+ boolean isUnused();
+
}
Modified: branches/7.4.x/engine/src/test/java/org/teiid/query/optimizer/TestAggregatePushdown.java
===================================================================
--- branches/7.4.x/engine/src/test/java/org/teiid/query/optimizer/TestAggregatePushdown.java 2011-06-01 01:01:56 UTC (rev 3208)
+++ branches/7.4.x/engine/src/test/java/org/teiid/query/optimizer/TestAggregatePushdown.java 2011-06-01 02:43:24 UTC (rev 3209)
@@ -235,7 +235,7 @@
ProcessorPlan plan = TestOptimizer.helpPlan(sql,
metadata,
null, getAggregatesFinder(),
- new String[] {"SELECT g_0.p_productid AS c_0 FROM m2.product AS g_0 WHERE g_0.p_divid = 100 ORDER BY c_0", "SELECT g_0.o_productid AS c_0, g_0.o_dealerid AS c_1, SUM(g_0.o_amount) AS c_2 FROM m1.\"order\" AS g_0, m1.dealer AS g_1 WHERE (g_0.o_dealerid = g_1.d_dealerid) AND (g_1.d_state = 'CA') AND (g_0.o_productid IN (<dependent values>)) GROUP BY g_0.o_productid, g_0.o_dealerid ORDER BY c_0"}, //$NON-NLS-1$ //$NON-NLS-2$
+ new String[] {"SELECT g_0.p_productid AS c_0 FROM m2.product AS g_0 WHERE g_0.p_divid = 100 ORDER BY c_0", "SELECT g_0.o_productid, g_0.o_dealerid, SUM(g_0.o_amount) FROM m1.\"order\" AS g_0, m1.dealer AS g_1 WHERE (g_0.o_dealerid = g_1.d_dealerid) AND (g_1.d_state = 'CA') AND (g_0.o_productid IN (<dependent values>)) GROUP BY g_0.o_productid, g_0.o_dealerid"}, //$NON-NLS-1$ //$NON-NLS-2$
TestOptimizer.ComparisonMode.EXACT_COMMAND_STRING );
TestOptimizer.checkNodeTypes(plan, new int[] {
@@ -265,7 +265,7 @@
ProcessorPlan plan = TestOptimizer.helpPlan(sql,
metadata,
null, getAggregatesFinder(),
- new String[] {"SELECT g_0.p_productid AS c_0 FROM m2.product AS g_0 WHERE g_0.p_divid = 100 ORDER BY c_0", "SELECT g_0.o_productid AS c_0, g_0.o_dealerid AS c_1, MAX(g_0.o_amount) AS c_2, SUM(g_0.o_amount) AS c_3 FROM m1.\"order\" AS g_0, m1.dealer AS g_1 WHERE (g_0.o_dealerid = g_1.d_dealerid) AND (g_1.d_state = 'CA') AND (g_0.o_productid IN (<dependent values>)) GROUP BY g_0.o_productid, g_0.o_dealerid ORDER BY c_0"}, //$NON-NLS-1$ //$NON-NLS-2$
+ new String[] {"SELECT g_0.p_productid AS c_0 FROM m2.product AS g_0 WHERE g_0.p_divid = 100 ORDER BY c_0", "SELECT g_0.o_productid, g_0.o_dealerid, MAX(g_0.o_amount), SUM(g_0.o_amount) FROM m1.\"order\" AS g_0, m1.dealer AS g_1 WHERE (g_0.o_dealerid = g_1.d_dealerid) AND (g_1.d_state = 'CA') AND (g_0.o_productid IN (<dependent values>)) GROUP BY g_0.o_productid, g_0.o_dealerid"}, //$NON-NLS-1$ //$NON-NLS-2$
TestOptimizer.ComparisonMode.EXACT_COMMAND_STRING );
TestOptimizer.checkNodeTypes(plan, new int[] {
Modified: branches/7.4.x/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestCrossSourceStarJoin.java
===================================================================
--- branches/7.4.x/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestCrossSourceStarJoin.java 2011-06-01 01:01:56 UTC (rev 3208)
+++ branches/7.4.x/test-integration/common/src/test/java/org/teiid/dqp/internal/process/TestCrossSourceStarJoin.java 2011-06-01 02:43:24 UTC (rev 3209)
@@ -44,7 +44,7 @@
@SuppressWarnings("nls")
public class TestCrossSourceStarJoin {
- @Test public void testCrossSourceStartJoin() throws Exception {
+ @Test public void testCrossSourceStarJoin() throws Exception {
String sql = "select p.Description, sum(AMOUNT) from s3 p, s2 c, s1 b, o1 f " +
"where p.PRODUCTID = f.PRODUCT and c.CurrencyCode = f.CURRENCY and b.BOOKID = f.BOOK and b.Name = 'xyz' and c.Name = 'abc' Group by p.Description";
@@ -106,7 +106,7 @@
"SELECT g_0.CurrencyCode AS c_0 FROM sybase.s2 AS g_0 WHERE g_0.Name = 'abc' ORDER BY c_0",
"SELECT g_0.BOOKID AS c_0 FROM sybase.s1 AS g_0 WHERE g_0.Name = 'xyz' ORDER BY c_0",
"SELECT g_0.PRODUCTID AS c_0, g_0.Description AS c_1 FROM sybase.s3 AS g_0 ORDER BY c_0",
- "SELECT g_0.BOOK AS c_0, g_0.CURRENCY AS c_1, g_0.PRODUCT AS c_2, SUM(g_0.AMOUNT) AS c_3 FROM oracle.o1 AS g_0 WHERE (g_0.BOOK IN (<dependent values>)) AND (g_0.CURRENCY IN (<dependent values>)) AND (g_0.PRODUCT IN (<dependent values>)) GROUP BY g_0.BOOK, g_0.CURRENCY, g_0.PRODUCT ORDER BY c_0 NULLS FIRST"
+ "SELECT g_0.BOOK, g_0.CURRENCY, g_0.PRODUCT, SUM(g_0.AMOUNT) FROM oracle.o1 AS g_0 WHERE (g_0.BOOK IN (<dependent values>)) AND (g_0.CURRENCY IN (<dependent values>)) AND (g_0.PRODUCT IN (<dependent values>)) GROUP BY g_0.BOOK, g_0.CURRENCY, g_0.PRODUCT"
}, finder, ComparisonMode.EXACT_COMMAND_STRING);
//test that aggregate will not be staged
@@ -115,7 +115,7 @@
"SELECT g_0.CurrencyCode AS c_0 FROM sybase.s2 AS g_0 WHERE g_0.Name = 'abc' ORDER BY c_0",
"SELECT g_0.BOOKID AS c_0 FROM sybase.s1 AS g_0 WHERE g_0.Name = 'xyz' ORDER BY c_0",
"SELECT g_0.PRODUCTID AS c_0, g_0.Description AS c_1 FROM sybase.s3 AS g_0 ORDER BY c_0",
- "SELECT g_0.BOOK AS c_0, g_0.CURRENCY AS c_1, g_0.PRODUCT AS c_2, g_0.AMOUNT AS c_3 FROM oracle.o1 AS g_0 WHERE (g_0.BOOK IN (<dependent values>)) AND (g_0.CURRENCY IN (<dependent values>)) AND (g_0.PRODUCT IN (<dependent values>)) ORDER BY c_0 NULLS FIRST"
+ "SELECT g_0.BOOK, g_0.CURRENCY, g_0.PRODUCT, g_0.AMOUNT FROM oracle.o1 AS g_0 WHERE (g_0.BOOK IN (<dependent values>)) AND (g_0.CURRENCY IN (<dependent values>)) AND (g_0.PRODUCT IN (<dependent values>))"
}, finder, ComparisonMode.EXACT_COMMAND_STRING);
}
13 years, 6 months
teiid SVN: r3208 - in branches/7.4.x/engine/src: test/java/org/teiid/query/optimizer and 1 other directory.
by teiid-commits@lists.jboss.org
Author: shawkins
Date: 2011-05-31 21:01:56 -0400 (Tue, 31 May 2011)
New Revision: 3208
Modified:
branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
branches/7.4.x/engine/src/test/java/org/teiid/query/optimizer/TestSubqueryPushdown.java
Log:
TEIID-1617 fix for inappropriate subquery rewrite
Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java 2011-05-31 18:52:23 UTC (rev 3207)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/rewriter/QueryRewriter.java 2011-06-01 01:01:56 UTC (rev 3208)
@@ -704,16 +704,6 @@
if (!rmc.planQuery(groups, requiresDistinct, plannedResult)) {
continue;
}
- if (requiresDistinct) {
- //check for key preservation
- HashSet<GroupSymbol> keyPreservingGroups = new HashSet<GroupSymbol>();
- ResolverUtil.findKeyPreserved(query, keyPreservingGroups, metadata);
- if (NewCalculateCostUtil.usesKey(plannedResult.leftExpressions, keyPreservingGroups, metadata, true) && plannedResult.madeDistinct) {
- //if key perserved then the semi-join will remain in-tact without make the other query distinct
- plannedResult.madeDistinct = false;
- plannedResult.query.getSelect().setDistinct(false);
- }
- }
crits.remove();
GroupSymbol viewName = RulePlaceAccess.recontextSymbol(new GroupSymbol("X"), names); //$NON-NLS-1$
Modified: branches/7.4.x/engine/src/test/java/org/teiid/query/optimizer/TestSubqueryPushdown.java
===================================================================
--- branches/7.4.x/engine/src/test/java/org/teiid/query/optimizer/TestSubqueryPushdown.java 2011-05-31 18:52:23 UTC (rev 3207)
+++ branches/7.4.x/engine/src/test/java/org/teiid/query/optimizer/TestSubqueryPushdown.java 2011-06-01 01:01:56 UTC (rev 3208)
@@ -783,9 +783,13 @@
}
@Test public void testSubqueryRewriteToJoin2() throws Exception {
- TestQueryRewriter.helpTestRewriteCommand("Select e1 from pm3.g1 where pm3.g1.e1 in /*+ mj */ (select pm1.g1.e1 || 1 FROM pm1.g1)", "SELECT e1 FROM pm3.g1, (SELECT concat(pm1.g1.e1, '1') AS EXPR FROM pm1.g1) AS X__1 WHERE pm3.g1.e1 = X__1.EXPR", RealMetadataFactory.example4());
+ TestQueryRewriter.helpTestRewriteCommand("Select e1 from pm3.g1 where pm3.g1.e1 in /*+ mj */ (select distinct pm1.g1.e1 || 1 FROM pm1.g1)", "SELECT e1 FROM pm3.g1, (SELECT DISTINCT concat(pm1.g1.e1, '1') AS EXPR FROM pm1.g1) AS X__1 WHERE pm3.g1.e1 = X__1.EXPR", RealMetadataFactory.example4());
}
-
+
+ @Test public void testSubqueryRewriteToJoin2a() throws Exception {
+ TestQueryRewriter.helpTestRewriteCommand("Select e1 from pm3.g1 where pm3.g1.e1 in /*+ mj */ (select pm1.g1.e1 || 1 FROM pm1.g1)", "SELECT e1 FROM pm3.g1, (SELECT DISTINCT concat(pm1.g1.e1, '1') AS EXPR FROM pm1.g1) AS X__1 WHERE pm3.g1.e1 = X__1.EXPR", RealMetadataFactory.example4());
+ }
+
/**
* Even though this situation is essentially the same as above, we don't yet handle it
*/
13 years, 6 months