[teiid-commits] teiid SVN: r1881 - in branches/JCA: client-jdbc/src/main/java/com/metamatrix/jdbc and 19 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Sat Feb 27 21:38:10 EST 2010


Author: shawkins
Date: 2010-02-27 21:38:06 -0500 (Sat, 27 Feb 2010)
New Revision: 1881

Removed:
   branches/JCA/connector-api/src/main/java/org/teiid/connector/language/SetClauseList.java
   branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleSQLConversionVisitor.java
Modified:
   branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMStatement.java
   branches/JCA/client-jdbc/src/test/java/com/metamatrix/jdbc/TestMMConnection.java
   branches/JCA/client/src/main/java/com/metamatrix/dqp/client/ResultsFuture.java
   branches/JCA/connector-api/src/main/java/org/teiid/connector/language/LanguageFactory.java
   branches/JCA/connector-api/src/main/java/org/teiid/connector/language/SearchedCase.java
   branches/JCA/connector-api/src/main/java/org/teiid/connector/language/Update.java
   branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/framework/AbstractLanguageVisitor.java
   branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/framework/DelegatingHierarchyVisitor.java
   branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/framework/HierarchyVisitor.java
   branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/framework/LanguageObjectVisitor.java
   branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/util/CollectorVisitor.java
   branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/util/SQLStringVisitor.java
   branches/JCA/connector-sdk/src/test/java/com/metamatrix/cdk/unittest/FakeTranslationFactory.java
   branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleTranslator.java
   branches/JCA/connectors/connector-ldap/src/main/java/com/metamatrix/connector/ldap/IQueryToLdapSearchParser.java
   branches/JCA/connectors/connector-ldap/src/main/java/com/metamatrix/connector/ldap/LDAPUpdateExecution.java
   branches/JCA/connectors/connector-ldap/src/test/java/com/metamatrix/connector/ldap/TestIQueryToLdapSearchParser.java
   branches/JCA/connectors/connector-salesforce/src/main/java/com/metamatrix/connector/salesforce/execution/UpdateExecutionImpl.java
   branches/JCA/connectors/connector-salesforce/src/main/java/com/metamatrix/connector/salesforce/execution/visitors/CriteriaVisitor.java
   branches/JCA/connectors/connector-salesforce/src/main/java/com/metamatrix/connector/salesforce/execution/visitors/SelectVisitor.java
   branches/JCA/connectors/connector-salesforce/src/test/java/com/metamatrix/connector/salesforce/execution/visitors/TestVisitors.java
   branches/JCA/connectors/connector-text/src/test/java/com/metamatrix/connector/text/Util.java
   branches/JCA/engine/src/main/java/org/teiid/dqp/internal/datamgr/language/LanguageBridgeFactory.java
   branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java
   branches/JCA/engine/src/test/java/com/metamatrix/query/resolver/TestResolver.java
   branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java
   branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/RealMetadataFactory.java
   branches/JCA/engine/src/test/java/org/teiid/dqp/internal/datamgr/language/TestUpdateImpl.java
   branches/JCA/runtime/src/main/java/org/teiid/transport/LogonImpl.java
   branches/JCA/test-integration/pom.xml
Log:
TEIID-903 TEIID-851 TEIID-1003 fixing unit tests also removing setclauselist

Modified: branches/JCA/client/src/main/java/com/metamatrix/dqp/client/ResultsFuture.java
===================================================================
--- branches/JCA/client/src/main/java/com/metamatrix/dqp/client/ResultsFuture.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/client/src/main/java/com/metamatrix/dqp/client/ResultsFuture.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -36,6 +36,12 @@
  */
 public class ResultsFuture<T> implements Future<T> {
 	
+	public static ResultsFuture<Void> NULL_FUTURE = new ResultsFuture<Void>();
+	
+	static {
+		NULL_FUTURE.getResultsReceiver().receiveResults(null);
+	}
+	
 	public interface CompletionListener<T> {
 		void onCompletion(ResultsFuture<T> future);
 	}

Modified: branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMStatement.java
===================================================================
--- branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMStatement.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/client-jdbc/src/main/java/com/metamatrix/jdbc/MMStatement.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -22,7 +22,6 @@
 
 package com.metamatrix.jdbc;
 
-import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.Reader;
 import java.io.Serializable;
@@ -52,7 +51,6 @@
 import com.metamatrix.api.exception.MetaMatrixComponentException;
 import com.metamatrix.api.exception.MetaMatrixException;
 import com.metamatrix.api.exception.MetaMatrixProcessingException;
-import com.metamatrix.common.comm.exception.CommunicationException;
 import com.metamatrix.common.util.SqlUtil;
 import com.metamatrix.core.util.ObjectConverterUtil;
 import com.metamatrix.dqp.client.ClientSideDQP;

Modified: branches/JCA/client-jdbc/src/test/java/com/metamatrix/jdbc/TestMMConnection.java
===================================================================
--- branches/JCA/client-jdbc/src/test/java/com/metamatrix/jdbc/TestMMConnection.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/client-jdbc/src/test/java/com/metamatrix/jdbc/TestMMConnection.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -22,23 +22,29 @@
 
 package com.metamatrix.jdbc;
 
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.stub;
+import static org.mockito.Mockito.*;
 
 import java.sql.SQLException;
 import java.util.Properties;
 
 import junit.framework.TestCase;
 
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
 import com.metamatrix.common.comm.api.ServerConnection;
+import com.metamatrix.common.xa.MMXid;
+import com.metamatrix.common.xa.XATransactionException;
 import com.metamatrix.dqp.client.ClientSideDQP;
+import com.metamatrix.dqp.client.ResultsFuture;
 import com.metamatrix.platform.security.api.LogonResult;
 import com.metamatrix.platform.security.api.SessionToken;
 
 public class TestMMConnection extends TestCase {
 
 	protected static final String STD_DATABASE_NAME         = "QT_Ora9DS"; //$NON-NLS-1$
-    protected static final int STD_DATABASE_VERSION      = 1; //$NON-NLS-1$
+    protected static final int STD_DATABASE_VERSION      = 1; 
     
     static String serverUrl = "jdbc:metamatrix:QT_Ora9DS at mm://localhost:7001;version=1;user=metamatrixadmin;password=mm"; //$NON-NLS-1$
 
@@ -48,7 +54,30 @@
     
     public static MMConnection getMMConnection() {
     	ServerConnection mock = mock(ServerConnection.class);
-    	stub(mock.getService(ClientSideDQP.class)).toReturn(mock(ClientSideDQP.class));
+    	ClientSideDQP dqp = mock(ClientSideDQP.class);
+    	try {
+			stub(dqp.start((MMXid)Mockito.anyObject(), Mockito.anyInt(), Mockito.anyInt())).toAnswer(new Answer() {
+				@Override
+				public Object answer(InvocationOnMock invocation) throws Throwable {
+					return ResultsFuture.NULL_FUTURE;
+				}
+			});
+			stub(dqp.rollback((MMXid)Mockito.anyObject())).toAnswer(new Answer() {
+				@Override
+				public Object answer(InvocationOnMock invocation) throws Throwable {
+					return ResultsFuture.NULL_FUTURE;
+				}
+			});
+			stub(dqp.rollback()).toAnswer(new Answer() {
+				@Override
+				public Object answer(InvocationOnMock invocation) throws Throwable {
+					return ResultsFuture.NULL_FUTURE;
+				}
+			});
+		} catch (XATransactionException e) {
+			throw new RuntimeException(e);
+		}
+    	stub(mock.getService(ClientSideDQP.class)).toReturn(dqp);
     	Properties props = new Properties();
     	props.setProperty(BaseDataSource.VDB_NAME, STD_DATABASE_NAME);
     	props.setProperty(BaseDataSource.VDB_VERSION, String.valueOf(STD_DATABASE_VERSION));

Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/language/LanguageFactory.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/language/LanguageFactory.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/language/LanguageFactory.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -178,7 +178,7 @@
         return new SubqueryIn(expression, isNegated, subquery);
     }
 
-    public Update createUpdate(NamedTable group, SetClauseList updates, Condition criteria) {
+    public Update createUpdate(NamedTable group, List<SetClause> updates, Condition criteria) {
         return new Update(group, updates, criteria);
     }
 
@@ -201,7 +201,4 @@
 		return new SetClause(symbol, value);
 	}
 
-	public SetClauseList createSetClauseList(List<SetClause> clauses) {
-		return new SetClauseList(clauses);
-	}
 }

Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/language/SearchedCase.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/language/SearchedCase.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/language/SearchedCase.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -31,7 +31,7 @@
  * <br/> CASE WHEN criteria THEN expression ... END
  */
 public class SearchedCase extends BaseLanguageObject implements Expression {
-
+	
     private List<Condition> whenConditions;
     private List<Expression> thenExpressions;
     private Expression elseExpression;

Deleted: branches/JCA/connector-api/src/main/java/org/teiid/connector/language/SetClauseList.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/language/SetClauseList.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/language/SetClauseList.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -1,51 +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.connector.language;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.teiid.connector.visitor.framework.LanguageObjectVisitor;
-
-
-public class SetClauseList extends BaseLanguageObject {
-
-	private List<SetClause> clauses;
-	
-	public SetClauseList(List<SetClause> clauses) {
-		if (clauses == null) {
-			clauses = new ArrayList<SetClause>();
-		}
-		this.clauses = clauses;
-	}
-
-	public List<SetClause> getClauses() {
-		return clauses;
-	}
-
-	@Override
-	public void acceptVisitor(LanguageObjectVisitor visitor) {
-		visitor.visit(this);
-	}
-
-}

Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/language/Update.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/language/Update.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/language/Update.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -22,6 +22,8 @@
 
 package org.teiid.connector.language;
 
+import java.util.List;
+
 import org.teiid.connector.visitor.framework.LanguageObjectVisitor;
 
 /**
@@ -30,10 +32,10 @@
 public class Update extends BaseLanguageObject implements Command {
     
     private NamedTable table;
-    private SetClauseList changes;
+	private List<SetClause> changes;
     private Condition where;
     
-    public Update(NamedTable group, SetClauseList changes, Condition criteria) {
+    public Update(NamedTable group, List<SetClause> changes, Condition criteria) {
         this.table = group;
         this.changes = changes;
         this.where = criteria;
@@ -43,7 +45,7 @@
         return table;
     }
 
-    public SetClauseList getChanges() {
+    public List<SetClause> getChanges() {
         return changes;
     }
 
@@ -59,7 +61,7 @@
         this.table = group;
     }
 
-    public void setChanges(SetClauseList changes) {
+    public void setChanges(List<SetClause> changes) {
         this.changes = changes;
     }
 

Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/framework/AbstractLanguageVisitor.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/framework/AbstractLanguageVisitor.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/framework/AbstractLanguageVisitor.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -49,11 +49,10 @@
 import org.teiid.connector.language.NamedTable;
 import org.teiid.connector.language.Not;
 import org.teiid.connector.language.OrderBy;
-import org.teiid.connector.language.Select;
 import org.teiid.connector.language.ScalarSubquery;
 import org.teiid.connector.language.SearchedCase;
+import org.teiid.connector.language.Select;
 import org.teiid.connector.language.SetClause;
-import org.teiid.connector.language.SetClauseList;
 import org.teiid.connector.language.SetQuery;
 import org.teiid.connector.language.SortSpecification;
 import org.teiid.connector.language.SubqueryComparison;
@@ -144,6 +143,5 @@
     public void visit(SubqueryIn obj) {}
     public void visit(Update obj) {}
     public void visit(SetQuery obj) {}
-    public void visit(SetClauseList obj) {}
     public void visit(SetClause obj) {}
 }

Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/framework/DelegatingHierarchyVisitor.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/framework/DelegatingHierarchyVisitor.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/framework/DelegatingHierarchyVisitor.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -47,11 +47,10 @@
 import org.teiid.connector.language.NamedTable;
 import org.teiid.connector.language.Not;
 import org.teiid.connector.language.OrderBy;
-import org.teiid.connector.language.Select;
 import org.teiid.connector.language.ScalarSubquery;
 import org.teiid.connector.language.SearchedCase;
+import org.teiid.connector.language.Select;
 import org.teiid.connector.language.SetClause;
-import org.teiid.connector.language.SetClauseList;
 import org.teiid.connector.language.SetQuery;
 import org.teiid.connector.language.SortSpecification;
 import org.teiid.connector.language.SubqueryComparison;
@@ -375,18 +374,6 @@
     }
     
     @Override
-    public void visit(SetClauseList obj) {
-        if (preVisitor != null) {
-            preVisitor.visit(obj);
-        }
-        super.visit(obj);
-        if (postVisitor != null) {
-            postVisitor.visit(obj);
-        }
-
-    }
-    
-    @Override
     public void visit(SetClause obj) {
         if (preVisitor != null) {
             preVisitor.visit(obj);

Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/framework/HierarchyVisitor.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/framework/HierarchyVisitor.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/framework/HierarchyVisitor.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -42,11 +42,10 @@
 import org.teiid.connector.language.Not;
 import org.teiid.connector.language.OrderBy;
 import org.teiid.connector.language.QueryExpression;
-import org.teiid.connector.language.Select;
 import org.teiid.connector.language.ScalarSubquery;
 import org.teiid.connector.language.SearchedCase;
+import org.teiid.connector.language.Select;
 import org.teiid.connector.language.SetClause;
-import org.teiid.connector.language.SetClauseList;
 import org.teiid.connector.language.SetQuery;
 import org.teiid.connector.language.SubqueryComparison;
 import org.teiid.connector.language.SubqueryIn;
@@ -210,7 +209,7 @@
     
     public void visit(Update obj) {
         visitNode(obj.getTable());
-        visitNode(obj.getChanges());
+        visitNodes(obj.getChanges());
         visitNode(obj.getWhere());
     }
     
@@ -222,11 +221,6 @@
     }
     
     @Override
-    public void visit(SetClauseList obj) {
-    	visitNodes(obj.getClauses());
-    }
-    
-    @Override
     public void visit(SetClause obj) {
     	visitNode(obj.getSymbol());
     	visitNode(obj.getValue());

Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/framework/LanguageObjectVisitor.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/framework/LanguageObjectVisitor.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/framework/LanguageObjectVisitor.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -59,6 +59,5 @@
     public void visit(SubqueryIn obj);
     public void visit(Update obj);
     public void visit(SetQuery obj);
-    public void visit(SetClauseList obj);
     public void visit(SetClause obj);
 }

Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/util/CollectorVisitor.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/util/CollectorVisitor.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/util/CollectorVisitor.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -52,11 +52,10 @@
 import org.teiid.connector.language.NamedTable;
 import org.teiid.connector.language.Not;
 import org.teiid.connector.language.OrderBy;
-import org.teiid.connector.language.Select;
 import org.teiid.connector.language.ScalarSubquery;
 import org.teiid.connector.language.SearchedCase;
+import org.teiid.connector.language.Select;
 import org.teiid.connector.language.SetClause;
-import org.teiid.connector.language.SetClauseList;
 import org.teiid.connector.language.SetQuery;
 import org.teiid.connector.language.SortSpecification;
 import org.teiid.connector.language.SubqueryComparison;
@@ -220,11 +219,6 @@
     }
     
     @Override
-    public void visit(SetClauseList obj) {
-        checkInstance(obj);
-    }
-    
-    @Override
     public void visit(SetClause obj) {
         checkInstance(obj);
     }

Modified: branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/util/SQLStringVisitor.java
===================================================================
--- branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/util/SQLStringVisitor.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connector-api/src/main/java/org/teiid/connector/visitor/util/SQLStringVisitor.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -55,11 +55,10 @@
 import org.teiid.connector.language.Not;
 import org.teiid.connector.language.OrderBy;
 import org.teiid.connector.language.QueryExpression;
-import org.teiid.connector.language.Select;
 import org.teiid.connector.language.ScalarSubquery;
 import org.teiid.connector.language.SearchedCase;
+import org.teiid.connector.language.Select;
 import org.teiid.connector.language.SetClause;
-import org.teiid.connector.language.SetClauseList;
 import org.teiid.connector.language.SetQuery;
 import org.teiid.connector.language.SortSpecification;
 import org.teiid.connector.language.SubqueryComparison;
@@ -819,10 +818,6 @@
         }
     }
     
-    public void visit(SetClauseList obj) {
-    	append(obj.getClauses());
-    }
-    
     public void visit(SetClause clause) {
         buffer.append(getElementName(clause.getSymbol(), false));
         buffer.append(SQLReservedWords.SPACE).append(SQLReservedWords.EQ).append(SQLReservedWords.SPACE);

Modified: branches/JCA/connector-sdk/src/test/java/com/metamatrix/cdk/unittest/FakeTranslationFactory.java
===================================================================
--- branches/JCA/connector-sdk/src/test/java/com/metamatrix/cdk/unittest/FakeTranslationFactory.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connector-sdk/src/test/java/com/metamatrix/cdk/unittest/FakeTranslationFactory.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -24,7 +24,6 @@
 
 import com.metamatrix.cdk.api.TranslationUtility;
 import com.metamatrix.query.unittest.FakeMetadataFactory;
-import com.metamatrix.query.validator.TestValidator;
 
 public class FakeTranslationFactory {
 	
@@ -42,14 +41,6 @@
 		return new TranslationUtility(FakeMetadataFactory.exampleYahoo());
 	}
 	
-	public TranslationUtility getTextTranslationUtility() {
-		return new TranslationUtility(FakeMetadataFactory.exampleText());
-	}
-	
-	public TranslationUtility getAutoIncrementTranslationUtility() {
-		return new TranslationUtility(TestValidator.exampleMetadata3());
-	}
-	
 	public TranslationUtility getExampleTranslationUtility() {
 		return new TranslationUtility(FakeMetadataFactory.example1Cached());
 	}

Deleted: branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleSQLConversionVisitor.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleSQLConversionVisitor.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleSQLConversionVisitor.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -1,355 +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.connector.jdbc.oracle;
-
-import static org.junit.Assert.*;
-
-import java.util.Properties;
-
-import org.junit.Test;
-import org.teiid.connector.api.ConnectorException;
-import org.teiid.connector.api.ExecutionContext;
-import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
-import org.teiid.connector.jdbc.JDBCPropertyNames;
-import org.teiid.connector.jdbc.translator.TranslatedCommand;
-import org.teiid.connector.language.Command;
-import org.teiid.connector.metadata.runtime.MetadataStore;
-import org.teiid.connector.metadata.runtime.Schema;
-import org.teiid.connector.metadata.runtime.Table;
-import org.teiid.dqp.internal.datamgr.impl.ExecutionContextImpl;
-import org.teiid.dqp.internal.datamgr.impl.FakeExecutionContextImpl;
-import org.teiid.metadata.CompositeMetadataStore;
-import org.teiid.metadata.TransformationMetadata;
-
-import com.metamatrix.cdk.CommandBuilder;
-import com.metamatrix.cdk.api.TranslationUtility;
-import com.metamatrix.common.types.DataTypeManager;
-import com.metamatrix.core.util.UnitTestUtil;
-import com.metamatrix.query.metadata.QueryMetadataInterface;
-import com.metamatrix.query.unittest.FakeMetadataFactory;
-import com.metamatrix.query.unittest.RealMetadataFactory;
-
-public class TestOracleSQLConversionVisitor {
-    private static ExecutionContext EMPTY_CONTEXT = new FakeExecutionContextImpl();
-    
-    private String getTestVDB() {
-        return UnitTestUtil.getTestDataPath() + "/PartsSupplierOracle.vdb"; //$NON-NLS-1$
-    }
-    
-    private void helpTestVisitor(String vdb, String input, String dbmsTimeZone, String expectedOutput) throws ConnectorException {
-        helpTestVisitor(vdb, input, EMPTY_CONTEXT, dbmsTimeZone, expectedOutput, false);
-    }
-
-    private void helpTestVisitor(String vdb, String input, String dbmsTimeZone, String expectedOutput, boolean correctNaming) throws ConnectorException {
-        helpTestVisitor(vdb, input, EMPTY_CONTEXT, dbmsTimeZone, expectedOutput, correctNaming);
-    }
-
-    private void helpTestVisitor(String vdb, String input, ExecutionContext context, String dbmsTimeZone, String expectedOutput, boolean correctNaming) throws ConnectorException {
-        // Convert from sql to objects
-        TranslationUtility util = new TranslationUtility(vdb);
-        Command obj =  util.parseCommand(input, correctNaming, true);        
-		this.helpTestVisitor(obj, context, dbmsTimeZone, expectedOutput);
-    }
-
-    /** Helper method takes a QueryMetadataInterface impl instead of a VDB filename 
-     * @throws ConnectorException 
-     */
-    private void helpTestVisitor(QueryMetadataInterface metadata, String input, ExecutionContext context, String dbmsTimeZone, String expectedOutput) throws ConnectorException {
-        // Convert from sql to objects
-        CommandBuilder commandBuilder = new CommandBuilder(metadata);
-        Command obj = commandBuilder.getCommand(input);
-		this.helpTestVisitor(obj, context, dbmsTimeZone, expectedOutput);
-    }
-    
-    private void helpTestVisitor(Command obj, ExecutionContext context, String dbmsTimeZone, String expectedOutput) throws ConnectorException {
-
-        
-        // Apply function replacement
-        OracleSQLTranslator translator = new OracleSQLTranslator();
-        Properties p = new Properties();
-        if (dbmsTimeZone != null) {
-        	p.setProperty(JDBCPropertyNames.DATABASE_TIME_ZONE, dbmsTimeZone);
-        }
-        translator.initialize(new JDBCManagedConnectionFactory());
-        // Convert back to SQL
-        TranslatedCommand tc = new TranslatedCommand(context, translator);
-        tc.translateCommand(obj);
-        
-        // Check stuff
-        assertEquals("Did not get correct sql", expectedOutput, tc.getSql());             //$NON-NLS-1$
-    }
-    
-    /** defect 21775 */
-    @Test public void testDateStuff() throws Exception {
-        String input = "SELECT ((CASE WHEN month(datevalue) < 10 THEN ('0' || convert(month(datevalue), string)) ELSE convert(month(datevalue), string) END || CASE WHEN dayofmonth(datevalue) < 10 THEN ('0' || convert(dayofmonth(datevalue), string)) ELSE convert(dayofmonth(datevalue), string) END) || convert(year(datevalue), string)), SUM(intkey) FROM bqt1.SMALLA GROUP BY datevalue"; //$NON-NLS-1$
-        String output = "SELECT CASE WHEN CASE WHEN CASE WHEN EXTRACT(MONTH FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(MONTH FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(MONTH FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(MONTH FROM SmallA.DateValue)) END IS NULL OR CASE WHEN EXTRACT(DAY FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(DAY FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(DAY FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(DAY FROM SmallA.DateValue)) END IS NULL THEN NULL ELSE concat(CASE WHEN EXTRACT(MONTH FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(MONTH FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(MONTH FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(MONTH FROM SmallA.DateValue)) END, CASE WHEN EXTRACT(DAY FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(DAY FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('!
 0', to_char(EXTRACT(DAY FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(DAY FROM SmallA.DateValue)) END) END IS NULL OR to_char(EXTRACT(YEAR FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat(CASE WHEN CASE WHEN EXTRACT(MONTH FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(MONTH FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(MONTH FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(MONTH FROM SmallA.DateValue)) END IS NULL OR CASE WHEN EXTRACT(DAY FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(DAY FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(DAY FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(DAY FROM SmallA.DateValue)) END IS NULL THEN NULL ELSE concat(CASE WHEN EXTRACT(MONTH FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(MONTH FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(MONTH FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(MONTH FROM SmallA.Da!
 teValue)) END, CASE WHEN EXTRACT(DAY FROM SmallA.DateValue) < !
 10 THEN 
CASE WHEN to_char(EXTRACT(DAY FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(DAY FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(DAY FROM SmallA.DateValue)) END) END, to_char(EXTRACT(YEAR FROM SmallA.DateValue))) END, SUM(SmallA.IntKey) FROM SmallA GROUP BY SmallA.DateValue"; //$NON-NLS-1$
-        
-        helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
-                        input, 
-                        EMPTY_CONTEXT, null, output);
-    }
-    
-    @Test public void testAliasedGroup() throws Exception {
-        helpTestVisitor(getTestVDB(),
-            "select y.part_name from parts as y", //$NON-NLS-1$
-            null,
-            "SELECT y.PART_NAME FROM PARTS y"); //$NON-NLS-1$
-    }
-    
-    @Test public void testDateLiteral() throws Exception {
-        helpTestVisitor(getTestVDB(),
-            "select {d '2002-12-31'} FROM parts", //$NON-NLS-1$
-            null,
-            "SELECT {d '2002-12-31'} FROM PARTS"); //$NON-NLS-1$
-    }
-
-    @Test public void testTimeLiteral() throws Exception {
-        helpTestVisitor(getTestVDB(),
-            "select {t '13:59:59'} FROM parts", //$NON-NLS-1$
-            null,
-            "SELECT {ts '1970-01-01 13:59:59'} FROM PARTS"); //$NON-NLS-1$
-    }
-
-    @Test public void testTimestampLiteral() throws Exception {
-        helpTestVisitor(getTestVDB(),
-            "select {ts '2002-12-31 13:59:59'} FROM parts", //$NON-NLS-1$
-            null,
-            "SELECT {ts '2002-12-31 13:59:59.0'} FROM PARTS"); //$NON-NLS-1$
-    }
-
-    @Test public void testUnionOrderByWithThreeBranches() throws Exception {
-        helpTestVisitor(getTestVDB(),
-                        "select part_id id FROM parts UNION ALL select part_name FROM parts UNION ALL select part_id FROM parts ORDER BY id", //$NON-NLS-1$
-                        null,
-                        "SELECT g_2.PART_ID AS c_0 FROM PARTS g_2 UNION ALL SELECT g_1.PART_NAME AS c_0 FROM PARTS g_1 UNION ALL SELECT g_0.PART_ID AS c_0 FROM PARTS g_0 ORDER BY c_0 NULLS FIRST", //$NON-NLS-1$
-                        true); 
-    }
-    
-    @Test public void testUnionOrderBy() throws Exception {
-        helpTestVisitor(getTestVDB(),
-                        "select part_id FROM parts UNION ALL select part_name FROM parts ORDER BY part_id", //$NON-NLS-1$
-                        null,
-                        "SELECT g_1.PART_ID AS c_0 FROM PARTS g_1 UNION ALL SELECT g_0.PART_NAME AS c_0 FROM PARTS g_0 ORDER BY c_0 NULLS FIRST", //$NON-NLS-1$
-                        true); 
-    }
-
-    @Test public void testUnionOrderBy2() throws Exception {
-        helpTestVisitor(getTestVDB(),
-                        "select part_id as p FROM parts UNION ALL select part_name FROM parts ORDER BY p", //$NON-NLS-1$
-                        null,
-                        "SELECT PARTS.PART_ID AS p FROM PARTS UNION ALL SELECT PARTS.PART_NAME FROM PARTS ORDER BY p NULLS FIRST"); //$NON-NLS-1$
-    }
-
-    @Test public void testUpdateWithFunction() throws Exception {
-        String input = "UPDATE bqt1.smalla SET intkey = intkey + 1"; //$NON-NLS-1$
-        String output = "UPDATE SmallA SET IntKey = (SmallA.IntKey + 1)"; //$NON-NLS-1$
-        
-        helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
-                input, 
-                EMPTY_CONTEXT, null, output);
-    }
-    
-
-    /**
-     * Oracle's DUAL table is a pseudo-table; element names cannot be 
-     * fully qualified since the table doesn't really exist nor contain
-     * any columns.  But this requires modeling the DUAL table in 
-     * MM as if it were a real physical table, and also modeling any
-     * columns in the table.  Case 3742
-     * 
-     * @since 4.3
-     */
-    @Test public void testDUAL() throws Exception {
-        String input = "SELECT something FROM DUAL"; //$NON-NLS-1$
-        String output = "SELECT something FROM DUAL"; //$NON-NLS-1$
-               
-        helpTestVisitor(getOracleSpecificMetadata(),
-            input, 
-            EMPTY_CONTEXT,
-            null,
-            output);
-    }
-
-    /**
-     * Test Oracle's rownum pseudo-column.  Not a real column, so it can't
-     * be fully-qualified with a table name.  MM requires this column to be
-     * modeled in any table which the user wants to use rownum with.
-     * Case 3739
-     * 
-     * @since 4.3
-     */
-    @Test public void testROWNUM() throws Exception {
-        String input = "SELECT part_name, rownum FROM parts"; //$NON-NLS-1$
-        String output = "SELECT PARTS.PART_NAME, ROWNUM FROM PARTS"; //$NON-NLS-1$
-               
-        helpTestVisitor(getTestVDB(),
-            input, 
-            null,
-            output);        
-    }
-    
-    /**
-     * Test Oracle's rownum pseudo-column.  Not a real column, so it can't
-     * be fully-qualified with a table name.  MM requires this column to be
-     * modeled in any table which the user wants to use rownum with.  Case 3739
-     * 
-     * @since 4.3
-     */
-    @Test public void testROWNUM2() throws Exception {
-        String input = "SELECT part_name FROM parts where rownum < 100"; //$NON-NLS-1$
-        String output = "SELECT PARTS.PART_NAME FROM PARTS WHERE ROWNUM < 100"; //$NON-NLS-1$
-               
-        helpTestVisitor(getTestVDB(),
-            input, 
-            null,
-            output);            }    
-    
-    /**
-     * Case 3744.  Test that an Oracle-specific db hint, delivered as a String via command
-     * payload, is added to the translated SQL.
-     * 
-     * @since 4.3
-     */
-    @Test public void testOracleCommentPayload() throws Exception {
-        String input = "SELECT part_name, rownum FROM parts"; //$NON-NLS-1$
-        String output = "SELECT /*+ ALL_ROWS */ PARTS.PART_NAME, ROWNUM FROM PARTS"; //$NON-NLS-1$
-               
-        String hint = "/*+ ALL_ROWS */"; //$NON-NLS-1$
-        ExecutionContext context = new ExecutionContextImpl(null, 1, hint, null, "", null, null, null); //$NON-NLS-1$
-        
-        helpTestVisitor(getTestVDB(),
-            input, 
-            context,
-            null,
-            output,
-            false);        
-    }
-    
-    /**
-     * reproducing this case relies on the name in source for the table being different from
-     * the name
-     */
-    @Test public void testCase3845() throws Exception {
-        
-        String input = "SELECT (DoubleNum * 1.0) FROM BQT1.Smalla"; //$NON-NLS-1$
-        String output = "SELECT (SmallishA.DoubleNum * 1.0) FROM SmallishA"; //$NON-NLS-1$
-
-        QueryMetadataInterface metadata = getOracleSpecificMetadata();
-
-        helpTestVisitor(metadata, input, EMPTY_CONTEXT, null, output);
-    }
-    
-    /** create fake BQT metadata to test this case, name in source is important */
-    private QueryMetadataInterface getOracleSpecificMetadata() { 
-    	MetadataStore metadataStore = new MetadataStore();
-    	Schema foo = RealMetadataFactory.createPhysicalModel("BQT1", metadataStore); //$NON-NLS-1$
-        Table table = RealMetadataFactory.createPhysicalGroup("SmallA", foo); //$NON-NLS-1$
-        Table dual = RealMetadataFactory.createPhysicalGroup("DUAL", foo); //$NON-NLS-1$
-        table.setNameInSource("SmallishA");//$NON-NLS-1$
-        String[] elemNames = new String[] {
-            "DoubleNum",  //$NON-NLS-1$ 
-        };
-        String[] elemTypes = new String[] {  
-            DataTypeManager.DefaultDataTypes.DOUBLE,
-        };
-        RealMetadataFactory.createElements(table, elemNames, elemTypes);
-        RealMetadataFactory.createElements(dual, new String[] {"something"}, new String[] {DataTypeManager.DefaultDataTypes.STRING}); //$NON-NLS-1$
-        
-        CompositeMetadataStore store = new CompositeMetadataStore(metadataStore);
-        return new TransformationMetadata(null, store, null, null);
-    }
-
-	public void helpTestVisitor(String vdb, String input, String expectedOutput) throws ConnectorException {
-		helpTestVisitor(vdb, input, null, expectedOutput);
-	}
-
-    @Test public void testRowLimit2() throws Exception {
-        String input = "select intkey from bqt1.smalla limit 100"; //$NON-NLS-1$
-        String output = "SELECT * FROM (SELECT SmallA.IntKey FROM SmallA) WHERE ROWNUM <= 100"; //$NON-NLS-1$
-               
-        helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
-                input, 
-                EMPTY_CONTEXT, null, output);        
-    }
-    
-    @Test public void testRowLimit3() throws Exception {
-        String input = "select intkey from bqt1.smalla limit 50, 100"; //$NON-NLS-1$
-        String output = "SELECT * FROM (SELECT VIEW_FOR_LIMIT.*, ROWNUM ROWNUM_ FROM (SELECT SmallA.IntKey FROM SmallA) VIEW_FOR_LIMIT WHERE ROWNUM <= 150) WHERE ROWNUM_ > 50"; //$NON-NLS-1$
-               
-        helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
-                input, 
-                EMPTY_CONTEXT, null, output);        
-    }
-            
-    @Test public void testLimitWithNestedInlineView() throws Exception {
-        String input = "select max(intkey), stringkey from (select intkey, stringkey from bqt1.smalla order by intkey limit 100) x group by stringkey"; //$NON-NLS-1$
-        String output = "SELECT MAX(x.intkey), x.stringkey FROM (SELECT * FROM (SELECT SmallA.IntKey, SmallA.StringKey FROM SmallA ORDER BY intkey NULLS FIRST) WHERE ROWNUM <= 100) x GROUP BY x.stringkey"; //$NON-NLS-1$
-               
-        helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
-                input, 
-                EMPTY_CONTEXT, null, output);        
-    }
-    
-    @Test public void testExceptAsMinus() throws Exception {
-        String input = "select intkey, intnum from bqt1.smalla except select intnum, intkey from bqt1.smallb"; //$NON-NLS-1$
-        String output = "SELECT SmallA.IntKey, SmallA.IntNum FROM SmallA MINUS SELECT SmallB.IntNum, SmallB.IntKey FROM SmallB"; //$NON-NLS-1$
-               
-        helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
-                input, 
-                EMPTY_CONTEXT, null, output);        
-    }
-    
-    @Test public void testConcat2_useLiteral() throws Exception {
-        String sql = "select concat2(stringnum,'_xx') from BQT1.Smalla"; //$NON-NLS-1$       
-        String expected = "SELECT concat(nvl(SmallA.StringNum, ''), '_xx') FROM SmallA"; //$NON-NLS-1$
-        helpTestVisitor(FakeMetadataFactory.exampleBQTCached(), sql, EMPTY_CONTEXT, null, expected);
-    }
-
-    @Test public void testConcat2() throws Exception {
-        String sql = "select concat2(stringnum, stringnum) from BQT1.Smalla"; //$NON-NLS-1$       
-        String expected = "SELECT CASE WHEN SmallA.StringNum IS NULL THEN NULL ELSE concat(nvl(SmallA.StringNum, ''), nvl(SmallA.StringNum, '')) END FROM SmallA"; //$NON-NLS-1$
-        helpTestVisitor(FakeMetadataFactory.exampleBQTCached(), sql, EMPTY_CONTEXT, null, expected);
-    }
-    
-    @Test public void testConcat() throws Exception {
-        String sql = "select concat(stringnum, stringkey) from BQT1.Smalla"; //$NON-NLS-1$       
-        String expected = "SELECT CASE WHEN SmallA.StringNum IS NULL OR SmallA.StringKey IS NULL THEN NULL ELSE concat(SmallA.StringNum, SmallA.StringKey) END FROM SmallA"; //$NON-NLS-1$
-        helpTestVisitor(FakeMetadataFactory.exampleBQTCached(), sql, EMPTY_CONTEXT, null, expected);
-    }
-    
-    @Test public void testConcat_withLiteral() throws Exception {
-        String sql = "select stringnum || '1' from BQT1.Smalla"; //$NON-NLS-1$       
-        String expected = "SELECT CASE WHEN SmallA.StringNum IS NULL THEN NULL ELSE concat(SmallA.StringNum, '1') END FROM SmallA"; //$NON-NLS-1$
-        helpTestVisitor(FakeMetadataFactory.exampleBQTCached(), sql, EMPTY_CONTEXT, null, expected);
-    }
-    
-    @Test public void testRowLimitWithUnionOrderBy() throws Exception {
-        String input = "(select intkey from bqt1.smalla limit 50, 100) union select intnum from bqt1.smalla order by intkey"; //$NON-NLS-1$
-        String output = "SELECT c_0 FROM (SELECT VIEW_FOR_LIMIT.*, ROWNUM ROWNUM_ FROM (SELECT g_1.IntKey AS c_0 FROM SmallA g_1) VIEW_FOR_LIMIT WHERE ROWNUM <= 150) WHERE ROWNUM_ > 50 UNION SELECT g_0.IntNum AS c_0 FROM SmallA g_0 ORDER BY c_0 NULLS FIRST"; //$NON-NLS-1$
-               
-        CommandBuilder commandBuilder = new CommandBuilder(FakeMetadataFactory.exampleBQTCached());
-        Command obj = commandBuilder.getCommand(input, true, true);
-		this.helpTestVisitor(obj, EMPTY_CONTEXT, null, output);
-    }
-
-}

Modified: branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleTranslator.java
===================================================================
--- branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleTranslator.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connectors/connector-jdbc/src/test/java/org/teiid/connector/jdbc/oracle/TestOracleTranslator.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -22,18 +22,37 @@
 
 package org.teiid.connector.jdbc.oracle;
 
+import static org.junit.Assert.*;
+
+import java.util.List;
+import java.util.Properties;
+
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.Mockito;
 import org.teiid.connector.api.ConnectorException;
 import org.teiid.connector.api.ExecutionContext;
 import org.teiid.connector.jdbc.JDBCManagedConnectionFactory;
+import org.teiid.connector.jdbc.JDBCPropertyNames;
 import org.teiid.connector.jdbc.TranslationHelper;
 import org.teiid.connector.jdbc.translator.TranslatedCommand;
 import org.teiid.connector.jdbc.translator.Translator;
 import org.teiid.connector.language.Command;
+import org.teiid.connector.metadata.runtime.Column;
+import org.teiid.connector.metadata.runtime.MetadataStore;
+import org.teiid.connector.metadata.runtime.Schema;
+import org.teiid.connector.metadata.runtime.Table;
+import org.teiid.dqp.internal.datamgr.impl.ExecutionContextImpl;
+import org.teiid.dqp.internal.datamgr.impl.FakeExecutionContextImpl;
+import org.teiid.metadata.CompositeMetadataStore;
+import org.teiid.metadata.TransformationMetadata;
 
-import com.metamatrix.cdk.unittest.FakeTranslationFactory;
+import com.metamatrix.cdk.CommandBuilder;
+import com.metamatrix.cdk.api.TranslationUtility;
+import com.metamatrix.common.types.DataTypeManager;
+import com.metamatrix.core.util.UnitTestUtil;
+import com.metamatrix.query.metadata.QueryMetadataInterface;
+import com.metamatrix.query.unittest.FakeMetadataFactory;
+import com.metamatrix.query.unittest.RealMetadataFactory;
 
 public class TestOracleTranslator {
 	
@@ -42,6 +61,7 @@
      */
     private Translator TRANSLATOR;
     private String UDF = "/OracleSpatialFunctions.xmi"; //$NON-NLS-1$;
+    private static ExecutionContext EMPTY_CONTEXT = new FakeExecutionContextImpl();
 
     @Before 
     public void setup() throws Exception {
@@ -50,22 +70,15 @@
     }
 
 	private void helpTestVisitor(String input, String expectedOutput) throws ConnectorException {
-        // Convert from sql to objects
-        Command obj = FakeTranslationFactory.getInstance().getAutoIncrementTranslationUtility().parseCommand(input);
-        
-        TranslatedCommand tc = new TranslatedCommand(Mockito.mock(ExecutionContext.class), TRANSLATOR);
-        tc.translateCommand(obj);
-        
-        // Check stuff
-        org.junit.Assert.assertEquals("Did not get correct sql", expectedOutput, tc.getSql()); //$NON-NLS-1$
+		helpTestVisitor(getOracleSpecificMetadata(), input, EMPTY_CONTEXT, null, expectedOutput);
     }
 	
 	@Test public void testInsertWithSequnce() throws Exception {
-		helpTestVisitor("insert into test.group (e0) values (1)", "INSERT INTO group (e0, e1) VALUES (1, MYSEQUENCE.nextVal)"); //$NON-NLS-1$ //$NON-NLS-2$
+		helpTestVisitor("insert into smalla (doublenum) values (1)", "INSERT INTO SmallishA (DoubleNum, ID) VALUES (1.0, MYSEQUENCE.nextVal)"); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 	
 	@Test public void testInsertWithSequnce1() throws Exception {
-		helpTestVisitor("insert into test.group (e0, e1) values (1, 'x')", "INSERT INTO group (e0, e1) VALUES (1, 'x')"); //$NON-NLS-1$ //$NON-NLS-2$
+		helpTestVisitor("insert into smalla (doublenum, id) values (1, 1)", "INSERT INTO SmallishA (DoubleNum, ID) VALUES (1.0, 1)"); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 	
 	@Test public void testJoins() throws Exception {
@@ -478,5 +491,276 @@
                 input, output, 
                 TRANSLATOR);
     }    
+    
+    private String getTestVDB() {
+        return UnitTestUtil.getTestDataPath() + "/PartsSupplierOracle.vdb"; //$NON-NLS-1$
+    }
+    
+    private void helpTestVisitor(String vdb, String input, String dbmsTimeZone, String expectedOutput) throws ConnectorException {
+        helpTestVisitor(vdb, input, EMPTY_CONTEXT, dbmsTimeZone, expectedOutput, false);
+    }
 
+    private void helpTestVisitor(String vdb, String input, String dbmsTimeZone, String expectedOutput, boolean correctNaming) throws ConnectorException {
+        helpTestVisitor(vdb, input, EMPTY_CONTEXT, dbmsTimeZone, expectedOutput, correctNaming);
+    }
+
+    private void helpTestVisitor(String vdb, String input, ExecutionContext context, String dbmsTimeZone, String expectedOutput, boolean correctNaming) throws ConnectorException {
+        // Convert from sql to objects
+        TranslationUtility util = new TranslationUtility(vdb);
+        Command obj =  util.parseCommand(input, correctNaming, true);        
+		this.helpTestVisitor(obj, context, dbmsTimeZone, expectedOutput);
+    }
+
+    /** Helper method takes a QueryMetadataInterface impl instead of a VDB filename 
+     * @throws ConnectorException 
+     */
+    private void helpTestVisitor(QueryMetadataInterface metadata, String input, ExecutionContext context, String dbmsTimeZone, String expectedOutput) throws ConnectorException {
+        // Convert from sql to objects
+        CommandBuilder commandBuilder = new CommandBuilder(metadata);
+        Command obj = commandBuilder.getCommand(input);
+		this.helpTestVisitor(obj, context, dbmsTimeZone, expectedOutput);
+    }
+    
+    private void helpTestVisitor(Command obj, ExecutionContext context, String dbmsTimeZone, String expectedOutput) throws ConnectorException {
+        OracleSQLTranslator translator = new OracleSQLTranslator();
+        Properties p = new Properties();
+        if (dbmsTimeZone != null) {
+        	p.setProperty(JDBCPropertyNames.DATABASE_TIME_ZONE, dbmsTimeZone);
+        }
+        translator.initialize(new JDBCManagedConnectionFactory());
+        // Convert back to SQL
+        TranslatedCommand tc = new TranslatedCommand(context, translator);
+        tc.translateCommand(obj);
+        
+        // Check stuff
+        assertEquals("Did not get correct sql", expectedOutput, tc.getSql());             //$NON-NLS-1$
+    }
+    
+    /** defect 21775 */
+    @Test public void testDateStuff() throws Exception {
+        String input = "SELECT ((CASE WHEN month(datevalue) < 10 THEN ('0' || convert(month(datevalue), string)) ELSE convert(month(datevalue), string) END || CASE WHEN dayofmonth(datevalue) < 10 THEN ('0' || convert(dayofmonth(datevalue), string)) ELSE convert(dayofmonth(datevalue), string) END) || convert(year(datevalue), string)), SUM(intkey) FROM bqt1.SMALLA GROUP BY datevalue"; //$NON-NLS-1$
+        String output = "SELECT CASE WHEN CASE WHEN CASE WHEN EXTRACT(MONTH FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(MONTH FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(MONTH FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(MONTH FROM SmallA.DateValue)) END IS NULL OR CASE WHEN EXTRACT(DAY FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(DAY FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(DAY FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(DAY FROM SmallA.DateValue)) END IS NULL THEN NULL ELSE concat(CASE WHEN EXTRACT(MONTH FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(MONTH FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(MONTH FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(MONTH FROM SmallA.DateValue)) END, CASE WHEN EXTRACT(DAY FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(DAY FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('!
 0', to_char(EXTRACT(DAY FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(DAY FROM SmallA.DateValue)) END) END IS NULL OR to_char(EXTRACT(YEAR FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat(CASE WHEN CASE WHEN EXTRACT(MONTH FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(MONTH FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(MONTH FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(MONTH FROM SmallA.DateValue)) END IS NULL OR CASE WHEN EXTRACT(DAY FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(DAY FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(DAY FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(DAY FROM SmallA.DateValue)) END IS NULL THEN NULL ELSE concat(CASE WHEN EXTRACT(MONTH FROM SmallA.DateValue) < 10 THEN CASE WHEN to_char(EXTRACT(MONTH FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(MONTH FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(MONTH FROM SmallA.Da!
 teValue)) END, CASE WHEN EXTRACT(DAY FROM SmallA.DateValue) < !
 10 THEN 
CASE WHEN to_char(EXTRACT(DAY FROM SmallA.DateValue)) IS NULL THEN NULL ELSE concat('0', to_char(EXTRACT(DAY FROM SmallA.DateValue))) END ELSE to_char(EXTRACT(DAY FROM SmallA.DateValue)) END) END, to_char(EXTRACT(YEAR FROM SmallA.DateValue))) END, SUM(SmallA.IntKey) FROM SmallA GROUP BY SmallA.DateValue"; //$NON-NLS-1$
+        
+        helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
+                        input, 
+                        EMPTY_CONTEXT, null, output);
+    }
+    
+    @Test public void testAliasedGroup() throws Exception {
+        helpTestVisitor(getTestVDB(),
+            "select y.part_name from parts as y", //$NON-NLS-1$
+            null,
+            "SELECT y.PART_NAME FROM PARTS y"); //$NON-NLS-1$
+    }
+    
+    @Test public void testDateLiteral() throws Exception {
+        helpTestVisitor(getTestVDB(),
+            "select {d '2002-12-31'} FROM parts", //$NON-NLS-1$
+            null,
+            "SELECT {d '2002-12-31'} FROM PARTS"); //$NON-NLS-1$
+    }
+
+    @Test public void testTimeLiteral() throws Exception {
+        helpTestVisitor(getTestVDB(),
+            "select {t '13:59:59'} FROM parts", //$NON-NLS-1$
+            null,
+            "SELECT {ts '1970-01-01 13:59:59'} FROM PARTS"); //$NON-NLS-1$
+    }
+
+    @Test public void testTimestampLiteral() throws Exception {
+        helpTestVisitor(getTestVDB(),
+            "select {ts '2002-12-31 13:59:59'} FROM parts", //$NON-NLS-1$
+            null,
+            "SELECT {ts '2002-12-31 13:59:59.0'} FROM PARTS"); //$NON-NLS-1$
+    }
+
+    @Test public void testUnionOrderByWithThreeBranches() throws Exception {
+        helpTestVisitor(getTestVDB(),
+                        "select part_id id FROM parts UNION ALL select part_name FROM parts UNION ALL select part_id FROM parts ORDER BY id", //$NON-NLS-1$
+                        null,
+                        "SELECT g_2.PART_ID AS c_0 FROM PARTS g_2 UNION ALL SELECT g_1.PART_NAME AS c_0 FROM PARTS g_1 UNION ALL SELECT g_0.PART_ID AS c_0 FROM PARTS g_0 ORDER BY c_0 NULLS FIRST", //$NON-NLS-1$
+                        true); 
+    }
+    
+    @Test public void testUnionOrderBy() throws Exception {
+        helpTestVisitor(getTestVDB(),
+                        "select part_id FROM parts UNION ALL select part_name FROM parts ORDER BY part_id", //$NON-NLS-1$
+                        null,
+                        "SELECT g_1.PART_ID AS c_0 FROM PARTS g_1 UNION ALL SELECT g_0.PART_NAME AS c_0 FROM PARTS g_0 ORDER BY c_0 NULLS FIRST", //$NON-NLS-1$
+                        true); 
+    }
+
+    @Test public void testUnionOrderBy2() throws Exception {
+        helpTestVisitor(getTestVDB(),
+                        "select part_id as p FROM parts UNION ALL select part_name FROM parts ORDER BY p", //$NON-NLS-1$
+                        null,
+                        "SELECT PARTS.PART_ID AS p FROM PARTS UNION ALL SELECT PARTS.PART_NAME FROM PARTS ORDER BY p NULLS FIRST"); //$NON-NLS-1$
+    }
+
+    @Test public void testUpdateWithFunction() throws Exception {
+        String input = "UPDATE bqt1.smalla SET intkey = intkey + 1"; //$NON-NLS-1$
+        String output = "UPDATE SmallA SET IntKey = (SmallA.IntKey + 1)"; //$NON-NLS-1$
+        
+        helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
+                input, 
+                EMPTY_CONTEXT, null, output);
+    }
+    
+
+    /**
+     * Oracle's DUAL table is a pseudo-table; element names cannot be 
+     * fully qualified since the table doesn't really exist nor contain
+     * any columns.  But this requires modeling the DUAL table in 
+     * MM as if it were a real physical table, and also modeling any
+     * columns in the table.  Case 3742
+     * 
+     * @since 4.3
+     */
+    @Test public void testDUAL() throws Exception {
+        String input = "SELECT something FROM DUAL"; //$NON-NLS-1$
+        String output = "SELECT something FROM DUAL"; //$NON-NLS-1$
+               
+        helpTestVisitor(getOracleSpecificMetadata(),
+            input, 
+            EMPTY_CONTEXT,
+            null,
+            output);
+    }
+
+    /**
+     * Test Oracle's rownum pseudo-column.  Not a real column, so it can't
+     * be fully-qualified with a table name.  MM requires this column to be
+     * modeled in any table which the user wants to use rownum with.
+     * Case 3739
+     * 
+     * @since 4.3
+     */
+    @Test public void testROWNUM() throws Exception {
+        String input = "SELECT part_name, rownum FROM parts"; //$NON-NLS-1$
+        String output = "SELECT PARTS.PART_NAME, ROWNUM FROM PARTS"; //$NON-NLS-1$
+               
+        helpTestVisitor(getTestVDB(),
+            input, 
+            null,
+            output);        
+    }
+    
+    /**
+     * Test Oracle's rownum pseudo-column.  Not a real column, so it can't
+     * be fully-qualified with a table name.  MM requires this column to be
+     * modeled in any table which the user wants to use rownum with.  Case 3739
+     * 
+     * @since 4.3
+     */
+    @Test public void testROWNUM2() throws Exception {
+        String input = "SELECT part_name FROM parts where rownum < 100"; //$NON-NLS-1$
+        String output = "SELECT PARTS.PART_NAME FROM PARTS WHERE ROWNUM < 100"; //$NON-NLS-1$
+               
+        helpTestVisitor(getTestVDB(),
+            input, 
+            null,
+            output);            }    
+    
+    /**
+     * Case 3744.  Test that an Oracle-specific db hint, delivered as a String via command
+     * payload, is added to the translated SQL.
+     * 
+     * @since 4.3
+     */
+    @Test public void testOracleCommentPayload() throws Exception {
+        String input = "SELECT part_name, rownum FROM parts"; //$NON-NLS-1$
+        String output = "SELECT /*+ ALL_ROWS */ PARTS.PART_NAME, ROWNUM FROM PARTS"; //$NON-NLS-1$
+               
+        String hint = "/*+ ALL_ROWS */"; //$NON-NLS-1$
+        ExecutionContext context = new ExecutionContextImpl(null, 1, hint, null, "", null, null, null); //$NON-NLS-1$
+        
+        helpTestVisitor(getTestVDB(),
+            input, 
+            context,
+            null,
+            output,
+            false);        
+    }
+    
+    /**
+     * reproducing this case relies on the name in source for the table being different from
+     * the name
+     */
+    @Test public void testCase3845() throws Exception {
+        
+        String input = "SELECT (DoubleNum * 1.0) FROM BQT1.Smalla"; //$NON-NLS-1$
+        String output = "SELECT (SmallishA.DoubleNum * 1.0) FROM SmallishA"; //$NON-NLS-1$
+
+        QueryMetadataInterface metadata = getOracleSpecificMetadata();
+
+        helpTestVisitor(metadata, input, EMPTY_CONTEXT, null, output);
+    }
+    
+    /** create fake BQT metadata to test this case, name in source is important */
+    private QueryMetadataInterface getOracleSpecificMetadata() { 
+    	MetadataStore metadataStore = new MetadataStore();
+    	Schema foo = RealMetadataFactory.createPhysicalModel("BQT1", metadataStore); //$NON-NLS-1$
+        Table table = RealMetadataFactory.createPhysicalGroup("SmallA", foo); //$NON-NLS-1$
+        Table dual = RealMetadataFactory.createPhysicalGroup("DUAL", foo); //$NON-NLS-1$
+        table.setNameInSource("SmallishA");//$NON-NLS-1$
+        String[] elemNames = new String[] {
+            "DoubleNum",  //$NON-NLS-1$ 
+            "ID", //$NON-NLS-1$
+        };
+        String[] elemTypes = new String[] {  
+            DataTypeManager.DefaultDataTypes.DOUBLE,
+            DataTypeManager.DefaultDataTypes.INTEGER,
+        };
+        List<Column> cols = RealMetadataFactory.createElements(table, elemNames, elemTypes);
+        cols.get(1).setAutoIncremented(true);
+        cols.get(1).setNameInSource("ID:SEQUENCE=MYSEQUENCE.nextVal"); //$NON-NLS-1$
+        RealMetadataFactory.createElements(dual, new String[] {"something"}, new String[] {DataTypeManager.DefaultDataTypes.STRING}); //$NON-NLS-1$
+        
+        CompositeMetadataStore store = new CompositeMetadataStore(metadataStore);
+        return new TransformationMetadata(null, store, null, null);
+    }
+
+	public void helpTestVisitor(String vdb, String input, String expectedOutput) throws ConnectorException {
+		helpTestVisitor(vdb, input, null, expectedOutput);
+	}
+
+    @Test public void testLimitWithNestedInlineView() throws Exception {
+        String input = "select max(intkey), stringkey from (select intkey, stringkey from bqt1.smalla order by intkey limit 100) x group by stringkey"; //$NON-NLS-1$
+        String output = "SELECT MAX(x.intkey), x.stringkey FROM (SELECT * FROM (SELECT SmallA.IntKey, SmallA.StringKey FROM SmallA ORDER BY intkey NULLS FIRST) WHERE ROWNUM <= 100) x GROUP BY x.stringkey"; //$NON-NLS-1$
+               
+        helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
+                input, 
+                EMPTY_CONTEXT, null, output);        
+    }
+    
+    @Test public void testExceptAsMinus() throws Exception {
+        String input = "select intkey, intnum from bqt1.smalla except select intnum, intkey from bqt1.smallb"; //$NON-NLS-1$
+        String output = "SELECT SmallA.IntKey, SmallA.IntNum FROM SmallA MINUS SELECT SmallB.IntNum, SmallB.IntKey FROM SmallB"; //$NON-NLS-1$
+               
+        helpTestVisitor(FakeMetadataFactory.exampleBQTCached(),
+                input, 
+                EMPTY_CONTEXT, null, output);        
+    }
+    
+    @Test public void testConcat() throws Exception {
+        String sql = "select concat(stringnum, stringkey) from BQT1.Smalla"; //$NON-NLS-1$       
+        String expected = "SELECT CASE WHEN SmallA.StringNum IS NULL OR SmallA.StringKey IS NULL THEN NULL ELSE concat(SmallA.StringNum, SmallA.StringKey) END FROM SmallA"; //$NON-NLS-1$
+        helpTestVisitor(FakeMetadataFactory.exampleBQTCached(), sql, EMPTY_CONTEXT, null, expected);
+    }
+    
+    @Test public void testConcat_withLiteral() throws Exception {
+        String sql = "select stringnum || '1' from BQT1.Smalla"; //$NON-NLS-1$       
+        String expected = "SELECT CASE WHEN SmallA.StringNum IS NULL THEN NULL ELSE concat(SmallA.StringNum, '1') END FROM SmallA"; //$NON-NLS-1$
+        helpTestVisitor(FakeMetadataFactory.exampleBQTCached(), sql, EMPTY_CONTEXT, null, expected);
+    }
+    
+    @Test public void testRowLimitWithUnionOrderBy() throws Exception {
+        String input = "(select intkey from bqt1.smalla limit 50, 100) union select intnum from bqt1.smalla order by intkey"; //$NON-NLS-1$
+        String output = "SELECT c_0 FROM (SELECT VIEW_FOR_LIMIT.*, ROWNUM ROWNUM_ FROM (SELECT g_1.IntKey AS c_0 FROM SmallA g_1) VIEW_FOR_LIMIT WHERE ROWNUM <= 150) WHERE ROWNUM_ > 50 UNION SELECT g_0.IntNum AS c_0 FROM SmallA g_0 ORDER BY c_0 NULLS FIRST"; //$NON-NLS-1$
+               
+        CommandBuilder commandBuilder = new CommandBuilder(FakeMetadataFactory.exampleBQTCached());
+        Command obj = commandBuilder.getCommand(input, true, true);
+		this.helpTestVisitor(obj, EMPTY_CONTEXT, null, output);
+    }
+
 }

Modified: branches/JCA/connectors/connector-ldap/src/main/java/com/metamatrix/connector/ldap/IQueryToLdapSearchParser.java
===================================================================
--- branches/JCA/connectors/connector-ldap/src/main/java/com/metamatrix/connector/ldap/IQueryToLdapSearchParser.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connectors/connector-ldap/src/main/java/com/metamatrix/connector/ldap/IQueryToLdapSearchParser.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -64,9 +64,9 @@
 import org.teiid.connector.language.NamedTable;
 import org.teiid.connector.language.Not;
 import org.teiid.connector.language.OrderBy;
-import org.teiid.connector.language.Select;
 import org.teiid.connector.language.ScalarSubquery;
 import org.teiid.connector.language.SearchedCase;
+import org.teiid.connector.language.Select;
 import org.teiid.connector.language.SortSpecification;
 import org.teiid.connector.language.TableReference;
 import org.teiid.connector.language.Comparison.Operator;

Modified: branches/JCA/connectors/connector-ldap/src/main/java/com/metamatrix/connector/ldap/LDAPUpdateExecution.java
===================================================================
--- branches/JCA/connectors/connector-ldap/src/main/java/com/metamatrix/connector/ldap/LDAPUpdateExecution.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connectors/connector-ldap/src/main/java/com/metamatrix/connector/ldap/LDAPUpdateExecution.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -38,14 +38,14 @@
 import org.teiid.connector.api.ExecutionContext;
 import org.teiid.connector.api.UpdateExecution;
 import org.teiid.connector.basic.BasicExecution;
+import org.teiid.connector.language.ColumnReference;
 import org.teiid.connector.language.Command;
 import org.teiid.connector.language.Comparison;
 import org.teiid.connector.language.Condition;
 import org.teiid.connector.language.Delete;
-import org.teiid.connector.language.ColumnReference;
 import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.ExpressionValueSource;
 import org.teiid.connector.language.Insert;
-import org.teiid.connector.language.ExpressionValueSource;
 import org.teiid.connector.language.Literal;
 import org.teiid.connector.language.SetClause;
 import org.teiid.connector.language.Update;
@@ -282,7 +282,7 @@
 	private void executeUpdate()
 			throws ConnectorException {
 
-		List<SetClause> updateList = ((Update)command).getChanges().getClauses();
+		List<SetClause> updateList = ((Update)command).getChanges();
 		Condition criteria = ((Update)command).getWhere();
 
 		// since we have the exact same processing rules for criteria

Modified: branches/JCA/connectors/connector-ldap/src/test/java/com/metamatrix/connector/ldap/TestIQueryToLdapSearchParser.java
===================================================================
--- branches/JCA/connectors/connector-ldap/src/test/java/com/metamatrix/connector/ldap/TestIQueryToLdapSearchParser.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connectors/connector-ldap/src/test/java/com/metamatrix/connector/ldap/TestIQueryToLdapSearchParser.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -38,16 +38,20 @@
 import org.teiid.connector.api.ConnectorLogger;
 import org.teiid.connector.language.Command;
 import org.teiid.connector.language.Select;
+import org.teiid.connector.metadata.runtime.Column;
+import org.teiid.connector.metadata.runtime.MetadataStore;
 import org.teiid.connector.metadata.runtime.RuntimeMetadata;
+import org.teiid.connector.metadata.runtime.Schema;
+import org.teiid.connector.metadata.runtime.Table;
+import org.teiid.connector.metadata.runtime.Column.SearchType;
 import org.teiid.dqp.internal.datamgr.metadata.RuntimeMetadataImpl;
+import org.teiid.metadata.CompositeMetadataStore;
+import org.teiid.metadata.TransformationMetadata;
 
 import com.metamatrix.cdk.CommandBuilder;
 import com.metamatrix.common.types.DataTypeManager;
 import com.metamatrix.query.metadata.QueryMetadataInterface;
-import com.metamatrix.query.unittest.FakeMetadataFacade;
-import com.metamatrix.query.unittest.FakeMetadataFactory;
-import com.metamatrix.query.unittest.FakeMetadataObject;
-import com.metamatrix.query.unittest.FakeMetadataStore;
+import com.metamatrix.query.unittest.RealMetadataFactory;
 
 /** 
  * Test IQueryToLdapSearchParser.  
@@ -264,13 +268,15 @@
 		return searchDetails;
 	}
     
-    public static FakeMetadataFacade exampleLdap() { 
+    public static QueryMetadataInterface exampleLdap() {
+    	MetadataStore metadataStore = new MetadataStore();
+
         // Create models
-        FakeMetadataObject ldapModel = FakeMetadataFactory.createPhysicalModel("LdapModel"); //$NON-NLS-1$
+        Schema ldapModel = RealMetadataFactory.createPhysicalModel("LdapModel", metadataStore); //$NON-NLS-1$
         
         // Create physical groups
-        FakeMetadataObject table = FakeMetadataFactory.createPhysicalGroup("LdapModel.People", ldapModel); //$NON-NLS-1$
-        table.putProperty(FakeMetadataObject.Props.NAME_IN_SOURCE, "ou=people,dc=metamatrix,dc=com"); //$NON-NLS-1$
+        Table table = RealMetadataFactory.createPhysicalGroup("People", ldapModel); //$NON-NLS-1$
+        table.setNameInSource("ou=people,dc=metamatrix,dc=com"); //$NON-NLS-1$
                 
         // Create physical elements
         String[] elemNames = new String[] {
@@ -280,32 +286,24 @@
             DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING
         };
         
-        List cols = FakeMetadataFactory.createElements(table, elemNames, elemTypes);
+        List<Column> cols = RealMetadataFactory.createElements(table, elemNames, elemTypes);
         
         // Set name in source on each column
         String[] nameInSource = new String[] {
            "uid", "cn"             //$NON-NLS-1$ //$NON-NLS-2$  
         };
         for(int i=0; i<2; i++) {
-            FakeMetadataObject obj = (FakeMetadataObject) cols.get(i);
-            obj.putProperty(FakeMetadataObject.Props.NAME_IN_SOURCE, nameInSource[i]);
+            Column obj = cols.get(i);
+            obj.setNameInSource(nameInSource[i]);
         }
         
         // Set column-specific properties
-        ((FakeMetadataObject) cols.get(0)).putProperty(FakeMetadataObject.Props.SELECT, Boolean.FALSE);
         for(int i=1; i<2; i++) {
-            ((FakeMetadataObject) cols.get(0)).putProperty(FakeMetadataObject.Props.SEARCHABLE_COMPARE, Boolean.FALSE);
-            ((FakeMetadataObject) cols.get(0)).putProperty(FakeMetadataObject.Props.SEARCHABLE_LIKE, Boolean.FALSE);
+            cols.get(i).setSearchType(SearchType.Unsearchable);
         }
         
-        // Add all objects to the store
-        FakeMetadataStore store = new FakeMetadataStore();
-        store.addObject(ldapModel);
-        store.addObject(table);     
-        store.addObjects(cols);
-        
         // Create the facade from the store
-        return new FakeMetadataFacade(store);
+        return new TransformationMetadata(null, new CompositeMetadataStore(metadataStore), null, null);
     }    
 }
 

Modified: branches/JCA/connectors/connector-salesforce/src/main/java/com/metamatrix/connector/salesforce/execution/UpdateExecutionImpl.java
===================================================================
--- branches/JCA/connectors/connector-salesforce/src/main/java/com/metamatrix/connector/salesforce/execution/UpdateExecutionImpl.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connectors/connector-salesforce/src/main/java/com/metamatrix/connector/salesforce/execution/UpdateExecutionImpl.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -63,7 +63,7 @@
 
 		if (null != Ids && Ids.length > 0) {
 			List<JAXBElement> elements = new ArrayList<JAXBElement>();
-			for (SetClause clause : ((Update)command).getChanges().getClauses()) {
+			for (SetClause clause : ((Update)command).getChanges()) {
 				ColumnReference element = clause.getSymbol();
 				Column column = element.getMetadataObject();
 				String val = ((Literal) clause.getValue())

Modified: branches/JCA/connectors/connector-salesforce/src/main/java/com/metamatrix/connector/salesforce/execution/visitors/CriteriaVisitor.java
===================================================================
--- branches/JCA/connectors/connector-salesforce/src/main/java/com/metamatrix/connector/salesforce/execution/visitors/CriteriaVisitor.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connectors/connector-salesforce/src/main/java/com/metamatrix/connector/salesforce/execution/visitors/CriteriaVisitor.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -54,7 +54,9 @@
  */
 public abstract class CriteriaVisitor extends HierarchyVisitor implements ICriteriaVisitor {
 
-    protected static final String SELECT = "SELECT";
+    private static final String RESTRICTEDMULTISELECTPICKLIST = "restrictedmultiselectpicklist";
+	private static final String MULTIPICKLIST = "multipicklist";
+	protected static final String SELECT = "SELECT";
     protected static final String FROM = "FROM";
     protected static final String WHERE = "WHERE";
     protected static final String ORDER_BY = "ORDER BY";
@@ -170,8 +172,7 @@
             String columnName = lExpr.toString();
             if (columnElementsByName.containsKey(columnName)) {
                 Column column = columnElementsByName.get(columnName);
-                if (null != column.getNativeType()
-                    && (column.getNativeType().equals("multipicklist") || column.getNativeType().equals("restrictedmultiselectpicklist"))) {
+                if (MULTIPICKLIST.equalsIgnoreCase(column.getNativeType()) || RESTRICTEDMULTISELECTPICKLIST.equalsIgnoreCase(column.getNativeType())) {
                     appendMultiselectIn(column, criteria);
                 } else {
                     appendCriteria(criteria);
@@ -409,7 +410,7 @@
         if (expression instanceof ColumnReference) {
             Column element = ((ColumnReference)expression).getMetadataObject();
             String nativeType = element.getNativeType();
-            if (nativeType.equalsIgnoreCase("multipicklist") || nativeType.equalsIgnoreCase("restrictedmultiselectpicklist")) {
+            if (MULTIPICKLIST.equalsIgnoreCase(nativeType) || RESTRICTEDMULTISELECTPICKLIST.equalsIgnoreCase(nativeType)) {
                 result = true;
             }
         }

Modified: branches/JCA/connectors/connector-salesforce/src/main/java/com/metamatrix/connector/salesforce/execution/visitors/SelectVisitor.java
===================================================================
--- branches/JCA/connectors/connector-salesforce/src/main/java/com/metamatrix/connector/salesforce/execution/visitors/SelectVisitor.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connectors/connector-salesforce/src/main/java/com/metamatrix/connector/salesforce/execution/visitors/SelectVisitor.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -32,9 +32,9 @@
 import org.teiid.connector.language.ColumnReference;
 import org.teiid.connector.language.DerivedColumn;
 import org.teiid.connector.language.Expression;
+import org.teiid.connector.language.Limit;
 import org.teiid.connector.language.NamedTable;
 import org.teiid.connector.language.Select;
-import org.teiid.connector.language.TableReference;
 import org.teiid.connector.metadata.runtime.Column;
 import org.teiid.connector.metadata.runtime.RuntimeMetadata;
 
@@ -56,7 +56,6 @@
 		super(metadata);
 	}
 
-	
 	public void visit(Select query) {
 		super.visit(query);
 		if (query.isDistinct()) {
@@ -88,28 +87,30 @@
 			}
 			++index;
 		}
+	}
+	
+	@Override
+	public void visit(NamedTable obj) {
 		try {
-			// could be a join here, but if so we do nothing and handle 
-			// it in visit(IJoin join).
-			TableReference fromItem = query.getFrom().get(0);
-			if(fromItem instanceof NamedTable) {
-				table = ((NamedTable)fromItem).getMetadataObject();
-		        String supportsQuery = table.getProperties().get(Constants.SUPPORTS_QUERY);
-		        objectSupportsRetrieve = Boolean.valueOf(table.getProperties().get(Constants.SUPPORTS_RETRIEVE));
-		        if (!Boolean.valueOf(supportsQuery)) {
-		            throw new ConnectorException(table.getNameInSource() + " "
-		                                         + Messages.getString("CriteriaVisitor.query.not.supported"));
-		        }
-				loadColumnMetadata((NamedTable)fromItem);
-			}
+			table = obj.getMetadataObject();
+	        String supportsQuery = table.getProperties().get(Constants.SUPPORTS_QUERY);
+	        objectSupportsRetrieve = Boolean.valueOf(table.getProperties().get(Constants.SUPPORTS_RETRIEVE));
+	        if (!Boolean.valueOf(supportsQuery)) {
+	            throw new ConnectorException(table.getNameInSource() + " "
+	                                         + Messages.getString("CriteriaVisitor.query.not.supported"));
+	        }
+			loadColumnMetadata(obj);
 		} catch (ConnectorException ce) {
 			exceptions.add(ce);
 		}
-		if(null != query.getLimit()) {
-			limitClause.append(LIMIT).append(SPACE).append(query.getLimit().getRowLimit());
-		}
 	}
-
+	
+	@Override
+	public void visit(Limit obj) {
+		super.visit(obj);
+		limitClause.append(LIMIT).append(SPACE).append(obj.getRowLimit());
+	}
+	
 	/*
 	 * The SOQL SELECT command uses the following syntax: SELECT fieldList FROM
 	 * objectType [WHERE The Condition Expression (WHERE Clause)] [ORDER BY]

Modified: branches/JCA/connectors/connector-salesforce/src/test/java/com/metamatrix/connector/salesforce/execution/visitors/TestVisitors.java
===================================================================
--- branches/JCA/connectors/connector-salesforce/src/test/java/com/metamatrix/connector/salesforce/execution/visitors/TestVisitors.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connectors/connector-salesforce/src/test/java/com/metamatrix/connector/salesforce/execution/visitors/TestVisitors.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -28,24 +28,30 @@
 
 import org.junit.Test;
 import org.teiid.connector.language.Select;
+import org.teiid.connector.metadata.runtime.Column;
+import org.teiid.connector.metadata.runtime.MetadataStore;
+import org.teiid.connector.metadata.runtime.Schema;
+import org.teiid.connector.metadata.runtime.Table;
+import org.teiid.connector.metadata.runtime.Column.SearchType;
+import org.teiid.metadata.CompositeMetadataStore;
+import org.teiid.metadata.TransformationMetadata;
 
 import com.metamatrix.cdk.api.TranslationUtility;
 import com.metamatrix.common.types.DataTypeManager;
-import com.metamatrix.query.unittest.FakeMetadataFacade;
-import com.metamatrix.query.unittest.FakeMetadataFactory;
-import com.metamatrix.query.unittest.FakeMetadataObject;
-import com.metamatrix.query.unittest.FakeMetadataStore;
+import com.metamatrix.query.metadata.QueryMetadataInterface;
+import com.metamatrix.query.unittest.RealMetadataFactory;
 
 public class TestVisitors {
 
-    public static FakeMetadataFacade exampleSalesforce() { 
+    public static QueryMetadataInterface exampleSalesforce() { 
+    	MetadataStore store = new MetadataStore();
         // Create models
-        FakeMetadataObject salesforceModel = FakeMetadataFactory.createPhysicalModel("SalesforceModel"); //$NON-NLS-1$
+        Schema salesforceModel = RealMetadataFactory.createPhysicalModel("SalesforceModel", store); //$NON-NLS-1$
        
         // Create Account group
-        FakeMetadataObject accounTable = FakeMetadataFactory.createPhysicalGroup("SalesforceModel.Account", salesforceModel); //$NON-NLS-1$
-        accounTable.putProperty(FakeMetadataObject.Props.NAME_IN_SOURCE, "Account"); //$NON-NLS-1$
-        accounTable.setExtensionProp("Supports Query", Boolean.TRUE.toString()); //$NON-NLS-1$
+        Table accounTable = RealMetadataFactory.createPhysicalGroup("Account", salesforceModel); //$NON-NLS-1$
+        accounTable.setNameInSource("Account"); //$NON-NLS-1$
+        accounTable.setProperty("Supports Query", Boolean.TRUE.toString()); //$NON-NLS-1$
         // Create Account Columns
         String[] acctNames = new String[] {
             "ID", "Name", "Stuff", "Industry"  //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
@@ -54,54 +60,40 @@
             DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING
         };
         
-        List<FakeMetadataObject> acctCols = FakeMetadataFactory.createElements(accounTable, acctNames, acctTypes);
-        acctCols.get(2).putProperty(FakeMetadataObject.Props.NATIVE_TYPE, "multipicklist"); //$NON-NLS-1$
-        acctCols.get(2).putProperty(FakeMetadataObject.Props.SEARCHABLE_COMPARE, false);
-        acctCols.get(2).putProperty(FakeMetadataObject.Props.SEARCHABLE_LIKE, true);
+        List<Column> acctCols = RealMetadataFactory.createElements(accounTable, acctNames, acctTypes);
+        acctCols.get(2).setNativeType("multipicklist"); //$NON-NLS-1$
+        acctCols.get(2).setSearchType(SearchType.Like_Only);
         // Set name in source on each column
         String[] accountNameInSource = new String[] {
-           "id", "AccountName", "Stuff", "Industry"             //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$  
+           "id", "AccountName", "Stuff", "Industry"             //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$  
         };
         for(int i=0; i<2; i++) {
-            FakeMetadataObject obj = acctCols.get(i);
-            obj.putProperty(FakeMetadataObject.Props.NAME_IN_SOURCE, accountNameInSource[i]);
+            Column obj = acctCols.get(i);
+            obj.setNameInSource(accountNameInSource[i]);
         }
         
-        // Add all Account to the store
-        FakeMetadataStore store = new FakeMetadataStore();
-        store.addObject(salesforceModel);
-        store.addObject(accounTable);     
-        store.addObjects(acctCols);
-        
         // Create Contact group
-        FakeMetadataObject contactTable = FakeMetadataFactory.createPhysicalGroup("SalesforceModel.Contact", salesforceModel); //$NON-NLS-1$
-        contactTable.putProperty(FakeMetadataObject.Props.NAME_IN_SOURCE, "Contact"); //$NON-NLS-1$
-        contactTable.setExtensionProp("Supports Query", Boolean.TRUE.toString()); //$NON-NLS-1$
+        Table contactTable = RealMetadataFactory.createPhysicalGroup("Contact", salesforceModel); //$NON-NLS-1$
+        contactTable.setNameInSource("Contact"); //$NON-NLS-1$
+        contactTable.setProperty("Supports Query", Boolean.TRUE.toString()); //$NON-NLS-1$
         // Create Contact Columns
         String[] elemNames = new String[] {
-            "ContactID", "Name", "AccountId"  //$NON-NLS-1$ //$NON-NLS-2$
+            "ContactID", "Name", "AccountId"  //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
         };
         String[] elemTypes = new String[] {  
             DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING 
         };
         
-        List<FakeMetadataObject> contactCols = FakeMetadataFactory.createElements(contactTable, elemNames, elemTypes);
+        List<Column> contactCols = RealMetadataFactory.createElements(contactTable, elemNames, elemTypes);
         // Set name in source on each column
         String[] contactNameInSource = new String[] {
            "id", "ContactName", "accountid"  //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
         };
         for(int i=0; i<2; i++) {
-            FakeMetadataObject obj = contactCols.get(i);
-            obj.putProperty(FakeMetadataObject.Props.NAME_IN_SOURCE, contactNameInSource[i]);
+            Column obj = contactCols.get(i);
+            obj.setNameInSource(contactNameInSource[i]);
         }
-        
-        // Add all Account to the store
-        store.addObject(salesforceModel);
-        store.addObject(contactTable);     
-        store.addObjects(contactCols);
-        
-        // Create the facade from the store
-        return new FakeMetadataFacade(store);
+        return new TransformationMetadata(null, new CompositeMetadataStore(store), null, null);
     }    
 
 	private static TranslationUtility translationUtility = new TranslationUtility(exampleSalesforce());

Modified: branches/JCA/connectors/connector-text/src/test/java/com/metamatrix/connector/text/Util.java
===================================================================
--- branches/JCA/connectors/connector-text/src/test/java/com/metamatrix/connector/text/Util.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/connectors/connector-text/src/test/java/com/metamatrix/connector/text/Util.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -29,10 +29,19 @@
 
 import org.mockito.Mockito;
 import org.teiid.connector.api.ConnectorLogger;
+import org.teiid.connector.metadata.runtime.Column;
+import org.teiid.connector.metadata.runtime.MetadataStore;
+import org.teiid.connector.metadata.runtime.Schema;
+import org.teiid.connector.metadata.runtime.Table;
+import org.teiid.metadata.CompositeMetadataStore;
+import org.teiid.metadata.TransformationMetadata;
 
 import com.metamatrix.cdk.api.ConnectorHost;
-import com.metamatrix.cdk.unittest.FakeTranslationFactory;
+import com.metamatrix.cdk.api.TranslationUtility;
+import com.metamatrix.common.types.DataTypeManager;
 import com.metamatrix.core.util.UnitTestUtil;
+import com.metamatrix.query.metadata.QueryMetadataInterface;
+import com.metamatrix.query.unittest.RealMetadataFactory;
 
 public class Util {
 
@@ -62,8 +71,31 @@
         Mockito.stub(config.getLogger()).toReturn(Mockito.mock(ConnectorLogger.class));	
 	    
 	    
-	    ConnectorHost host = new ConnectorHost(new TextConnector(), config, FakeTranslationFactory.getInstance().getTextTranslationUtility());
+	    ConnectorHost host = new ConnectorHost(new TextConnector(), config, new TranslationUtility(exampleText()));
 	    return host;
 	}
+	
+    public static QueryMetadataInterface exampleText() { 
+    	MetadataStore store = new MetadataStore();
+        // Create models
+        Schema lib = RealMetadataFactory.createPhysicalModel("Text", store); //$NON-NLS-1$
 
+        // Create physical groups
+        Table library = RealMetadataFactory.createPhysicalGroup("Library", lib); //$NON-NLS-1$
+        
+        // Create physical elements
+        String[] elemNames = new String[] { 
+             "ID", "PDate", "Author" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+             
+        String[] elemTypes = new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.DATE, 
+            DataTypeManager.DefaultDataTypes.STRING };
+               
+        List<Column> libe1 = RealMetadataFactory.createElements( library, elemNames, elemTypes);
+        int index = 0;
+        for (Column column : libe1) {
+			column.setNameInSource(String.valueOf(index++));
+		}
+        return new TransformationMetadata(null, new CompositeMetadataStore(store), null, null);
+    }
+
 }

Modified: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/datamgr/language/LanguageBridgeFactory.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/datamgr/language/LanguageBridgeFactory.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/datamgr/language/LanguageBridgeFactory.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -424,7 +424,7 @@
             Ordering direction = items.get(i).isAscending() ? Ordering.ASC: Ordering.DESC;
             
             SortSpecification orderByItem = null;                                
-            if(symbol instanceof AliasSymbol || (symbol.getOutputName() != null && symbol.getOutputName().indexOf(ElementSymbol.SEPARATOR) == -1)){
+            if(symbol instanceof AliasSymbol || !items.get(i).isUnrelated()){
             	orderByItem = new SortSpecification(direction, new ColumnReference(null, symbol.getOutputName(), null, symbol.getType()));
             } else {
             	orderByItem = new SortSpecification(direction, translate(symbol));                                
@@ -564,12 +564,12 @@
                               translate(update.getCriteria()));
     }
     
-    org.teiid.connector.language.SetClauseList translate(SetClauseList setClauseList) throws MetaMatrixComponentException {
+    List<org.teiid.connector.language.SetClause> translate(SetClauseList setClauseList) throws MetaMatrixComponentException {
     	List<org.teiid.connector.language.SetClause> clauses = new ArrayList<org.teiid.connector.language.SetClause>(setClauseList.getClauses().size());
     	for (SetClause setClause : setClauseList.getClauses()) {
     		clauses.add(translate(setClause));
     	}
-    	return new org.teiid.connector.language.SetClauseList(clauses);
+    	return clauses;
     }
     
     org.teiid.connector.language.SetClause translate(SetClause setClause) throws MetaMatrixComponentException {

Modified: branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java
===================================================================
--- branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/engine/src/main/java/org/teiid/dqp/internal/process/DQPCore.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -364,7 +364,7 @@
         if (workItem != null) {
 	        workItem.removeLobStream(lobRequestId);
         }
-        return null;
+        return ResultsFuture.NULL_FUTURE;
     }
 	    
 	public ResultsFuture<LobChunk> requestNextLobChunk(int lobRequestId,
@@ -468,7 +468,7 @@
 	public ResultsFuture<?> closeRequest(long requestId) throws MetaMatrixProcessingException, MetaMatrixComponentException {
         DQPWorkContext workContext = DQPWorkContext.getWorkContext();
         closeRequest(workContext.getRequestID(requestId));
-        return null;
+        return ResultsFuture.NULL_FUTURE;
 	}
     
     /**
@@ -713,7 +713,7 @@
 	public ResultsFuture<?> begin() throws XATransactionException {
     	String threadId = DQPWorkContext.getWorkContext().getConnectionID();
     	this.getTransactionService().begin(threadId);
-    	return null;
+    	return ResultsFuture.NULL_FUTURE;
 	}
 	
 	// local txn
@@ -758,13 +758,13 @@
 	public ResultsFuture<?> end(MMXid xid, int flags) throws XATransactionException {
 		String threadId = DQPWorkContext.getWorkContext().getConnectionID();
 		this.getTransactionService().end(threadId, xid, flags, false);
-		return null;
+		return ResultsFuture.NULL_FUTURE;
 	}
 	// global txn
 	public ResultsFuture<?> forget(MMXid xid) throws XATransactionException {
 		String threadId = DQPWorkContext.getWorkContext().getConnectionID();
 		this.getTransactionService().forget(threadId, xid, false);
-		return null;
+		return ResultsFuture.NULL_FUTURE;
 	}
 		
 	// global txn
@@ -811,7 +811,7 @@
 			throws XATransactionException {
 		String threadId = DQPWorkContext.getWorkContext().getConnectionID();
 		this.getTransactionService().start(threadId, xid, flags, timeout, false);
-		return null;
+		return ResultsFuture.NULL_FUTURE;
 	}
 
 	public MetadataResult getMetadata(long requestID)

Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/resolver/TestResolver.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/resolver/TestResolver.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/resolver/TestResolver.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -1944,7 +1944,7 @@
  
     @Test public void testDefect10809(){
         String sql = "select * from LOB_TESTING_ONE where CLOB_COLUMN LIKE '%fff%'"; //$NON-NLS-1$
-        helpResolve(helpParse(sql), FakeMetadataFactory.exampleLOB(), AnalysisRecord.createNonRecordingRecord());
+        helpResolve(helpParse(sql), FakeMetadataFactory.exampleBQTCached(), AnalysisRecord.createNonRecordingRecord());
     }
     
     @Test public void testNonAutoConversionOfLiteralIntegerToShort() throws Exception {       

Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/FakeMetadataFactory.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -46,7 +46,6 @@
 import com.metamatrix.query.mapping.xml.MappingAttribute;
 import com.metamatrix.query.mapping.xml.MappingDocument;
 import com.metamatrix.query.mapping.xml.MappingElement;
-import com.metamatrix.query.mapping.xml.MappingRecursiveElement;
 import com.metamatrix.query.mapping.xml.MappingSequenceNode;
 import com.metamatrix.query.metadata.QueryMetadataInterface;
 import com.metamatrix.query.sql.symbol.ElementSymbol;
@@ -2137,405 +2136,6 @@
     	return RealMetadataFactory.exampleBQT();
     }
 
-    public static FakeMetadataFacade exampleUQT() { 
-        // Create models
-        FakeMetadataObject uqt2 = createPhysicalModel("UQT2"); //$NON-NLS-1$
-
-        // Create physical groups
-        FakeMetadataObject uqt2UpdateA = createPhysicalGroup("UQT2.UpdateA", uqt2); //$NON-NLS-1$
-        FakeMetadataObject uqt2UpdateB = createPhysicalGroup("UQT2.UpdateB", uqt2); //$NON-NLS-1$
-        FakeMetadataObject uqt2BlobTable = createPhysicalGroup("UQT2.BlobTable", uqt2); //$NON-NLS-1$
-
-        // Create physical elements
-        String[] elemNames = new String[] { 
-             "IntKey", "StringKey",  //$NON-NLS-1$ //$NON-NLS-2$
-             "IntNum", "StringNum",  //$NON-NLS-1$ //$NON-NLS-2$
-             "FloatNum", "LongNum",  //$NON-NLS-1$ //$NON-NLS-2$
-             "DoubleNum", "ByteNum",  //$NON-NLS-1$ //$NON-NLS-2$
-             "DateValue", "TimeValue",  //$NON-NLS-1$ //$NON-NLS-2$
-             "TimestampValue", "BooleanValue",  //$NON-NLS-1$ //$NON-NLS-2$
-             "CharValue", "ShortValue",  //$NON-NLS-1$ //$NON-NLS-2$
-             "BigIntegerValue", "BigDecimalValue",  //$NON-NLS-1$ //$NON-NLS-2$
-             "ObjectValue" }; //$NON-NLS-1$
-         String[] elemTypes = new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING, 
-                             DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING, 
-                             DataTypeManager.DefaultDataTypes.FLOAT, DataTypeManager.DefaultDataTypes.LONG, 
-                             DataTypeManager.DefaultDataTypes.DOUBLE, DataTypeManager.DefaultDataTypes.BYTE, 
-                             DataTypeManager.DefaultDataTypes.DATE, DataTypeManager.DefaultDataTypes.TIME, 
-                             DataTypeManager.DefaultDataTypes.TIMESTAMP, DataTypeManager.DefaultDataTypes.BOOLEAN, 
-                             DataTypeManager.DefaultDataTypes.CHAR, DataTypeManager.DefaultDataTypes.SHORT, 
-                             DataTypeManager.DefaultDataTypes.BIG_INTEGER, DataTypeManager.DefaultDataTypes.BIG_DECIMAL, 
-                             DataTypeManager.DefaultDataTypes.OBJECT };
-        
-        String[] blobElemNames = new String[] {
-            "id", "BlobValue"     //$NON-NLS-1$ //$NON-NLS-2$
-        };
-        String[] blobElemTypes = new String[] {DataTypeManager.DefaultDataTypes.STRING, 
-                             DataTypeManager.DefaultDataTypes.BLOB
-        };
-        
-        List uqt2UpdateAe = createElements(uqt2UpdateA, elemNames, elemTypes);
-        List uqt2UpdateBe = createElements(uqt2UpdateB, elemNames, elemTypes);        
-        List uqt2BlobTablee = createElements(uqt2BlobTable, blobElemNames, blobElemTypes);         
-
-        // Add all objects to the store
-        FakeMetadataStore store = new FakeMetadataStore();
-        store.addObject(uqt2);
-        store.addObject(uqt2UpdateA);     
-        store.addObjects(uqt2UpdateAe);
-        store.addObject(uqt2UpdateB);     
-        store.addObjects(uqt2UpdateBe);
-        store.addObject(uqt2BlobTable);
-        store.addObjects(uqt2BlobTablee);
-        
-        // Create the facade from the store
-        return new FakeMetadataFacade(store);
-    }
-
-    public static FakeMetadataFacade exampleLOB() { 
-        // Create models
-        FakeMetadataObject lib = createPhysicalModel("Blob"); //$NON-NLS-1$
-
-        // Create physical groups
-        FakeMetadataObject library = createPhysicalGroup("LOB_TESTING_ONE", lib, true); //$NON-NLS-1$
-        
-        // Create physical elements
-        String[] elemNames = new String[] { 
-             "CLOB_COLUMN", "BLOB_COLUMN", "KEY_EMULATOR" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-             
-        String[] elemTypes = new String[] { DataTypeManager.DefaultDataTypes.CLOB, DataTypeManager.DefaultDataTypes.BLOB, 
-            DataTypeManager.DefaultDataTypes.INTEGER };
-               
-        List libe1 = createElements( library, elemNames, elemTypes, true);
-              
-       // Add all objects to the store
-        FakeMetadataStore store = new FakeMetadataStore();
-        store.addObject(lib);
-        store.addObject(library);     
-        store.addObjects(libe1);
-
-        // Create the facade from the store
-        return new FakeMetadataFacade(store);
-    }
-
-    public static FakeMetadataFacade exampleStream(boolean isStream) { 
-        // Create models
-        FakeMetadataObject lib = createPhysicalModel("Blob");  //$NON-NLS-1$
-
-        // Create physical groups
-        FakeMetadataObject library = null;
-        if (isStream) {
-            library = createPhysicalGroup("STREAMEXAMPLE", lib, true); //$NON-NLS-1$
-        } else {
-            library = createPhysicalGroup("READEREAMPLE", lib, true); //$NON-NLS-1$
-        }
-        // Create physical elements
-        String[] elemNames = new String[] { 
-            "KEY_EMULATOR", "DATA"};  //$NON-NLS-1$ //$NON-NLS-2$
-             
-        String[] elemTypes = new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.OBJECT};
-               
-        List libe1 = createElements( library, elemNames, elemTypes, true);
-              
-       // Add all objects to the store
-        FakeMetadataStore store = new FakeMetadataStore();
-        store.addObject(lib);
-        store.addObject(library);     
-        store.addObjects(libe1);
-
-        // Create the facade from the store
-        return new FakeMetadataFacade(store);
-    }
-
-    public static FakeMetadataFacade exampleBytes() { 
-        // Create models
-        FakeMetadataObject lib = createPhysicalModel("Blob");  //$NON-NLS-1$
-
-        // Create physical groups
-        FakeMetadataObject library = createPhysicalGroup("BYTE_EXAMPLE", lib, true); //$NON-NLS-1$
- 
-        // Create physical elements
-        String[] elemNames = new String[] { 
-            "KEY_EMULATOR", "DATA"};  //$NON-NLS-1$ //$NON-NLS-2$
-             
-        String[] elemTypes = new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.OBJECT};
-               
-        List libe1 = createElements( library, elemNames, elemTypes, true);
-              
-       // Add all objects to the store
-        FakeMetadataStore store = new FakeMetadataStore();
-        store.addObject(lib);
-        store.addObject(library);     
-        store.addObjects(libe1);
-
-        // Create the facade from the store
-        return new FakeMetadataFacade(store);
-    }
-               
-    public static FakeMetadataFacade exampleText() { 
-        // Create models
-        FakeMetadataObject lib = createPhysicalModel("Text"); //$NON-NLS-1$
-
-        // Create physical groups
-        FakeMetadataObject library = createPhysicalGroup("Text.Library", lib, true); //$NON-NLS-1$
-        
-        // Create physical elements
-        String[] elemNames = new String[] { 
-             "ID", "PDate", "Author" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-             
-        String[] elemTypes = new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.DATE, 
-            DataTypeManager.DefaultDataTypes.STRING };
-               
-        List libe1 = createElements( library, elemNames, elemTypes, false);
-              
-       // Add all objects to the store
-        FakeMetadataStore store = new FakeMetadataStore();
-        store.addObject(lib);
-        store.addObject(library);     
-        store.addObjects(libe1);
-
-        // Create the facade from the store
-        return new FakeMetadataFacade(store);
-    }
-    
-    public static FakeMetadataFacade exampleXQT() {
-        FakeMetadataStore store = new FakeMetadataStore();
-        FakeMetadataFacade facade = new FakeMetadataFacade(store);
-        
-        // Create models
-        FakeMetadataObject xqt = FakeMetadataFactory.createPhysicalModel("XQT"); //$NON-NLS-1$
-        FakeMetadataObject xqttest = FakeMetadataFactory.createVirtualModel("xqttest");     //$NON-NLS-1$
-
-        // Create physical groups
-        //FakeMetadataObject xqtGroup = FakeMetadataFactory.createPhysicalGroup("xqt.data", xqt);
-        FakeMetadataObject xqtGroup = FakeMetadataFactory.createPhysicalGroup("BQT1.SmallA", xqt); //$NON-NLS-1$
-        
-                
-        // Create physical elements
-        List xqtData = FakeMetadataFactory.createElements(xqtGroup, 
-            new String[] { "intKey", "intNum", "stringNum" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-            new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING });
-
-        // Create virtual groups
-        QueryNode rsQuery = new QueryNode("xqttest.data", "SELECT intKey, intNum, stringNum FROM BQT1.SmallA WHERE intKey=13"); //$NON-NLS-1$ //$NON-NLS-2$
-        FakeMetadataObject rs = FakeMetadataFactory.createVirtualGroup("xqttest.data", xqttest, rsQuery); //$NON-NLS-1$
-
-        QueryNode rsQuery2 = new QueryNode("xqttest.data2", "SELECT intKey, intNum, stringNum FROM BQT1.SmallA WHERE intKey = ?"); //$NON-NLS-1$ //$NON-NLS-2$
-        rsQuery2.addBinding("xqttest.data.intNum"); //$NON-NLS-1$
-        FakeMetadataObject rs2 = FakeMetadataFactory.createVirtualGroup("xqttest.data2", xqttest, rsQuery2); //$NON-NLS-1$
-
-        QueryNode rsQuery3 = new QueryNode("xqttest.data3", "SELECT intKey, intNum, stringNum FROM BQT1.SmallA WHERE intKey = ?"); //$NON-NLS-1$ //$NON-NLS-2$
-        rsQuery3.addBinding("xqttest.data2.intNum"); //$NON-NLS-1$
-        FakeMetadataObject rs3 = FakeMetadataFactory.createVirtualGroup("xqttest.data3", xqttest, rsQuery3); //$NON-NLS-1$
-
-        QueryNode rsQuery4 = new QueryNode("xqttest.data4", "SELECT intKey, intNum, stringNum FROM BQT1.SmallA WHERE intKey = ?"); //$NON-NLS-1$ //$NON-NLS-2$
-        rsQuery4.addBinding("xqttest.data.intNum"); //$NON-NLS-1$
-        FakeMetadataObject rs4 = FakeMetadataFactory.createVirtualGroup("xqttest.data4", xqttest, rsQuery4); //$NON-NLS-1$
-
-        QueryNode rsQuery5 = new QueryNode("xqttest.data5", "SELECT intKey, intNum, stringNum FROM BQT1.SmallA WHERE intKey = ?"); //$NON-NLS-1$ //$NON-NLS-2$
-        rsQuery5.addBinding("xqttest.data4.intNum"); //$NON-NLS-1$
-        FakeMetadataObject rs5 = FakeMetadataFactory.createVirtualGroup("xqttest.data5", xqttest, rsQuery5); //$NON-NLS-1$
-
-        QueryNode rsQuery6 = new QueryNode("xqttest.data6", "SELECT intKey, intNum, stringNum FROM BQT1.SmallA WHERE intKey = ?"); //$NON-NLS-1$ //$NON-NLS-2$
-        rsQuery6.addBinding("xqttest.data5.intNum"); //$NON-NLS-1$
-        FakeMetadataObject rs6 = FakeMetadataFactory.createVirtualGroup("xqttest.data6", xqttest, rsQuery6); //$NON-NLS-1$
-
-        
-        QueryNode rsQuery7 = new QueryNode("xqttest.data7", "SELECT intKey, intNum, stringNum FROM BQT1.SmallA"); //$NON-NLS-1$ //$NON-NLS-2$
-        FakeMetadataObject rs7 = FakeMetadataFactory.createVirtualGroup("xqttest.data7", xqttest, rsQuery7); //$NON-NLS-1$
-
-        QueryNode rsQuery8 = new QueryNode("xqttest.data8", "SELECT intKey, intNum, stringNum FROM BQT1.SmallA WHERE intKey < ?"); //$NON-NLS-1$ //$NON-NLS-2$
-        rsQuery8.addBinding("xqttest.data7.intNum"); //$NON-NLS-1$
-        FakeMetadataObject rs8 = FakeMetadataFactory.createVirtualGroup("xqttest.data8", xqttest, rsQuery8); //$NON-NLS-1$
-
-        // Create virtual elements
-        List rsElements = FakeMetadataFactory.createElements(rs, 
-            new String[] { "intKey", "intNum", "stringNum" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-            new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING });
-
-        List rsElements2 = FakeMetadataFactory.createElements(rs2, 
-            new String[] { "intKey", "intNum", "stringNum" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-            new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING });
-
-        List rsElements3 = FakeMetadataFactory.createElements(rs3, 
-            new String[] { "intKey", "intNum", "stringNum" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-            new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING });
-
-        List rsElements4 = FakeMetadataFactory.createElements(rs4, 
-            new String[] { "intKey", "intNum", "stringNum" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-            new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING });
-
-        List rsElements5 = FakeMetadataFactory.createElements(rs5, 
-            new String[] { "intKey", "intNum", "stringNum" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-            new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING });
-
-        List rsElements6 = FakeMetadataFactory.createElements(rs6, 
-            new String[] { "intKey", "intNum", "stringNum" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-            new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING });
-
-        List rsElements7 = FakeMetadataFactory.createElements(rs7, 
-            new String[] { "intKey", "intNum", "stringNum" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-            new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING });
-
-        List rsElements8 = FakeMetadataFactory.createElements(rs8, 
-            new String[] { "intKey", "intNum", "stringNum" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-            new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING });
-
-
-        FakeMetadataObject doc1 = FakeMetadataFactory.createVirtualGroup("xqttest.doc1", xqttest,   createXQTPlanRecursive_5988()); //$NON-NLS-1$
-        FakeMetadataObject doc1a = FakeMetadataFactory.createVirtualGroup("xqttest.doc1a", xqttest, createXQTPlanRecursive1a_5988()); //$NON-NLS-1$
-//        FakeMetadataObject doc2 = FakeMetadataFactory.createVirtualGroup("xqttest.doc2", xqttest,   createXQTPlanRecursiveSiblings());
-//        FakeMetadataObject doc3 = FakeMetadataFactory.createVirtualGroup("xqttest.doc3", xqttest,   createXQTPlanRecursive3_5988());
-//        FakeMetadataObject doc4 = FakeMetadataFactory.createVirtualGroup("xqttest.doc4", xqttest,   createXQTPlanChoice_6796());
-
-        store.addObject(xqt);
-        store.addObject(xqtGroup);
-        store.addObjects(xqtData);
-
-        store.addObject(xqttest);
-        store.addObject(rs);
-        store.addObject(rs2);
-        store.addObject(rs3);
-        store.addObject(rs4);
-        store.addObject(rs5);
-        store.addObject(rs6);
-        store.addObject(rs7);
-        store.addObject(rs8);
-        store.addObjects(rsElements);
-        store.addObjects(rsElements2);
-        store.addObjects(rsElements3);
-        store.addObjects(rsElements4);
-        store.addObjects(rsElements5);
-        store.addObjects(rsElements6);
-        store.addObjects(rsElements7);
-        store.addObjects(rsElements8);
-
-        store.addObject(doc1);
-        store.addObject(doc1a);
-//        store.addObject(doc2);
-//        store.addObject(doc3);
-//        store.addObject(doc4);
-
-        return facade;                
-    }
-
-    public static FakeMetadataFacade exampleXQT1() {
-        FakeMetadataStore store = new FakeMetadataStore();
-        FakeMetadataFacade facade = new FakeMetadataFacade(store);
-        
-        // Create models
-        FakeMetadataObject xqt = FakeMetadataFactory.createPhysicalModel("XQT"); //$NON-NLS-1$
-        FakeMetadataObject xqttest = FakeMetadataFactory.createVirtualModel("xqttest");     //$NON-NLS-1$
-
-        // Create physical groups
-        //FakeMetadataObject xqtGroup = FakeMetadataFactory.createPhysicalGroup("xqt.data", xqt);
-        FakeMetadataObject xqtGroup = FakeMetadataFactory.createPhysicalGroup("BQT1.SmallA", xqt); //$NON-NLS-1$
-                      
-        // Create physical elements
-        List xqtData = FakeMetadataFactory.createElements(xqtGroup, 
-            new String[] { "intKey", "intNum", "stringNum" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-            new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING });
-
-        // Create virtual groups
-        QueryNode rsQuery = new QueryNode("xqttest.data", "SELECT intKey, intNum, stringNum FROM BQT1.SmallA WHERE intKey=13"); //$NON-NLS-1$ //$NON-NLS-2$
-        FakeMetadataObject rs = FakeMetadataFactory.createVirtualGroup("xqttest.data", xqttest, rsQuery); //$NON-NLS-1$
-
-        // Create virtual elements
-        List rsElements = FakeMetadataFactory.createElements(rs, 
-            new String[] { "intKey", "intNum", "stringNum" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-            new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING });
-
-        FakeMetadataObject doc1 = FakeMetadataFactory.createVirtualGroup("xqttest.doc1", xqttest,   createBQTDocTest_Plan()); //$NON-NLS-1$
-
-        store.addObject(xqt);
-        store.addObject(xqtGroup);
-        store.addObjects(xqtData);
-
-        store.addObject(xqttest);
-        store.addObject(rs);
-        store.addObjects(rsElements);
-        store.addObject(doc1);
-
-        return facade;                
-    }
-    
-    /**
-     * Method createXQTPlanRecursive.
-     * @return Object
-     */
-    private static MappingDocument createXQTPlanRecursive_5988() {
-        MappingDocument doc = new MappingDocument(true);
-        MappingElement root = doc.addChildElement(new MappingElement("recursiveTest")); //$NON-NLS-1$
-
-        MappingElement src1 = root.addChildElement(new MappingElement("src")); //$NON-NLS-1$
-        src1.setSource("xqttest.data");//$NON-NLS-1$
-
-        MappingSequenceNode seq1 = src1.addSequenceNode(new MappingSequenceNode());
-        seq1.addChildElement(new MappingElement("key", "xqttest.data.intKey")); //$NON-NLS-1$ //$NON-NLS-2$
-        seq1.addChildElement(new MappingElement("data", "xqttest.data.intNum")); //$NON-NLS-1$ //$NON-NLS-2$
-
-        MappingElement src2 = seq1.addChildElement(new MappingElement("srcNested")); //$NON-NLS-1$
-        src2.setSource("xqttest.data2");//$NON-NLS-1$
-
-        MappingSequenceNode seq2 = src2.addSequenceNode(new MappingSequenceNode());
-        seq2.addChildElement(new MappingElement("key", "xqttest.data2.intKey")); //$NON-NLS-1$ //$NON-NLS-2$
-        seq2.addChildElement(new MappingElement("data", "xqttest.data2.intNum")); //$NON-NLS-1$ //$NON-NLS-2$
-        
-        MappingElement recursive = seq2.addChildElement(new MappingRecursiveElement("srcNestedRecursive", "xqttest.data2")); //$NON-NLS-1$ //$NON-NLS-2$
-        recursive.setSource("xqttest.data3");//$NON-NLS-1$
-                
-        return doc;
-    }
-        
-    /**
-     * Method createXQTPlanRecursive.
-     * @return Object
-     */
-    private static MappingDocument createXQTPlanRecursive1a_5988() {
-        
-        MappingDocument doc = new MappingDocument(true);
-        MappingElement root = doc.addChildElement(new MappingElement("recursiveTest")); //$NON-NLS-1$
-
-        MappingElement src1 = root.addChildElement(new MappingElement("src")); //$NON-NLS-1$
-        src1.setSource("xqttest.data");//$NON-NLS-1$
-
-        MappingSequenceNode seq1 = src1.addSequenceNode(new MappingSequenceNode());
-        seq1.addChildElement(new MappingElement("key", "xqttest.data.intKey")); //$NON-NLS-1$ //$NON-NLS-2$
-        seq1.addChildElement(new MappingElement("data", "xqttest.data.intNum")); //$NON-NLS-1$ //$NON-NLS-2$
-
-        MappingElement src2 = seq1.addChildElement(new MappingElement("srcNested")); //$NON-NLS-1$
-        src2.setSource("xqttest.data2");//$NON-NLS-1$
-
-        MappingSequenceNode seq2 = src2.addSequenceNode(new MappingSequenceNode());
-        seq2.addChildElement(new MappingElement("key", "xqttest.data2.intKey")); //$NON-NLS-1$ //$NON-NLS-2$
-        seq2.addChildElement(new MappingElement("data", "xqttest.data2.intNum")); //$NON-NLS-1$ //$NON-NLS-2$
-
-        MappingElement recursive = seq2.addChildElement(new MappingRecursiveElement("srcRecursive", "xqttest.data2")); //$NON-NLS-1$ //$NON-NLS-2$
-        recursive.setSource("xqttest.data3");//$NON-NLS-1$  
-
-        //          was not being used
-//        MappingRecursiveElement src4 = new MappingRecursiveElement("srcRecursive", "xqttest.data"); //$NON-NLS-1$ //$NON-NLS-2$
-//        src4.setSource("xqttest.data4"); //$NON-NLS-1$
-        return doc;
-    }
-
-    /**
-     * Method createXQTPlanRecursive.
-     * @return Object
-     */
-    private static MappingDocument createBQTDocTest_Plan() {
-        MappingDocument doc = new MappingDocument(false);
-        MappingElement root = doc.addChildElement(new MappingElement("BQTDocTest")); //$NON-NLS-1$
-        
-        MappingElement src1 = root.addChildElement(new MappingElement("src")); //$NON-NLS-1$
-        src1.setSource("xqttest.data");//$NON-NLS-1$ 
-
-        MappingSequenceNode seq1 = src1.addSequenceNode(new MappingSequenceNode());
-        seq1.addChildElement(new MappingElement("key", "xqttest.data.intKey")); //$NON-NLS-1$ //$NON-NLS-2$
-        seq1.addChildElement(new MappingElement("data", "xqttest.data.intNum")); //$NON-NLS-1$ //$NON-NLS-2$
-        return doc;
-    }
-
     public static FakeMetadataFacade exampleSymphony() { 
         // Create models
         FakeMetadataObject model = createPhysicalModel("COMPLEX"); //$NON-NLS-1$

Modified: branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/RealMetadataFactory.java
===================================================================
--- branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/RealMetadataFactory.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/engine/src/test/java/com/metamatrix/query/unittest/RealMetadataFactory.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -81,6 +81,10 @@
         Table bqt3MediumA = createPhysicalGroup("MediumA", bqt3); //$NON-NLS-1$
         Table bqt3MediumB = createPhysicalGroup("MediumB", bqt3); //$NON-NLS-1$
         Table lobTable = createPhysicalGroup("LobTbl", lob); //$NON-NLS-1$
+        Table library = createPhysicalGroup("LOB_TESTING_ONE", lob); //$NON-NLS-1$
+        
+        createElements( library, new String[] { "CLOB_COLUMN", "BLOB_COLUMN", "KEY_EMULATOR" }, //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+        		new String[] { DataTypeManager.DefaultDataTypes.CLOB, DataTypeManager.DefaultDataTypes.BLOB, DataTypeManager.DefaultDataTypes.INTEGER }); 
 
         // Create virtual groups
         QueryNode vqtn1 = new QueryNode("VQT.SmallA", "SELECT * FROM BQT1.SmallA"); //$NON-NLS-1$ //$NON-NLS-2$

Modified: branches/JCA/engine/src/test/java/org/teiid/dqp/internal/datamgr/language/TestUpdateImpl.java
===================================================================
--- branches/JCA/engine/src/test/java/org/teiid/dqp/internal/datamgr/language/TestUpdateImpl.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/engine/src/test/java/org/teiid/dqp/internal/datamgr/language/TestUpdateImpl.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -63,7 +63,7 @@
     }
 
     public void testGetChanges() throws Exception {
-        List changes = example().getChanges().getClauses();
+        List changes = example().getChanges();
         assertNotNull(changes);
         assertEquals(4, changes.size());
     }

Modified: branches/JCA/runtime/src/main/java/org/teiid/transport/LogonImpl.java
===================================================================
--- branches/JCA/runtime/src/main/java/org/teiid/transport/LogonImpl.java	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/runtime/src/main/java/org/teiid/transport/LogonImpl.java	2010-02-28 02:38:06 UTC (rev 1881)
@@ -122,7 +122,7 @@
 	public ResultsFuture<?> logoff() throws InvalidSessionException {
 		this.service.closeSession(DQPWorkContext.getWorkContext().getSessionId());
 		DQPWorkContext.getWorkContext().reset();
-		return null;
+		return ResultsFuture.NULL_FUTURE;
 	}
 
 	public ResultsFuture<?> ping() throws InvalidSessionException,MetaMatrixComponentException {
@@ -132,7 +132,7 @@
 		if (id != -1) {
 			this.service.pingServer(id);
 		}
-		return null;
+		return ResultsFuture.NULL_FUTURE;
 	}
 
 	@Override

Modified: branches/JCA/test-integration/pom.xml
===================================================================
--- branches/JCA/test-integration/pom.xml	2010-02-27 13:43:10 UTC (rev 1880)
+++ branches/JCA/test-integration/pom.xml	2010-02-28 02:38:06 UTC (rev 1881)
@@ -133,6 +133,6 @@
 
   <modules>
     <module>common</module>
-    <module>db</module>
+    <!-- <module>db</module> -->
   </modules>
 </project>
\ No newline at end of file



More information about the teiid-commits mailing list