[teiid-commits] teiid SVN: r3002 - in branches/7.1.x/engine/src: main/java/org/teiid/dqp/internal/process/multisource and 11 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Thu Mar 17 11:11:14 EDT 2011


Author: shawkins
Date: 2011-03-17 11:11:14 -0400 (Thu, 17 Mar 2011)
New Revision: 3002

Modified:
   branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/Request.java
   branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourceMetadataWrapper.java
   branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/BasicQueryMetadata.java
   branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/BasicQueryMetadataWrapper.java
   branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/QueryMetadataInterface.java
   branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/TempMetadataAdapter.java
   branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/TransformationMetadata.java
   branches/7.1.x/engine/src/main/java/org/teiid/query/optimizer/relational/RelationalPlanner.java
   branches/7.1.x/engine/src/main/java/org/teiid/query/optimizer/xml/QueryUtil.java
   branches/7.1.x/engine/src/main/java/org/teiid/query/processor/proc/ExecDynamicSqlInstruction.java
   branches/7.1.x/engine/src/main/java/org/teiid/query/resolver/ProcedureContainerResolver.java
   branches/7.1.x/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java
   branches/7.1.x/engine/src/main/java/org/teiid/query/resolver/command/TempTableResolver.java
   branches/7.1.x/engine/src/main/resources/org/teiid/query/i18n.properties
   branches/7.1.x/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java
   branches/7.1.x/engine/src/test/java/org/teiid/query/processor/TestTempTables.java
   branches/7.1.x/engine/src/test/java/org/teiid/query/resolver/TestResolver.java
   branches/7.1.x/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFactory.java
   branches/7.1.x/engine/src/test/java/org/teiid/query/unittest/RealMetadataFactory.java
Log:
TEIID-1467 TEIID-1489 backporting metadata fixes

Modified: branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/Request.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/Request.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/Request.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -190,14 +190,16 @@
             throw new TeiidComponentException(QueryPlugin.Util.getString("DQPCore.Unable_to_load_metadata_for_VDB_name__{0},_version__{1}", this.vdbName, this.vdbVersion)); //$NON-NLS-1$
         }
         
-        this.metadata = new TempMetadataAdapter(metadata, new TempMetadataStore());
-    
         // Check for multi-source models and further wrap the metadata interface
         Set<String> multiSourceModelList = workContext.getVDB().getMultiSourceModelNames();
         if(multiSourceModelList != null && multiSourceModelList.size() > 0) {
         	this.multiSourceModels = multiSourceModelList;
             this.metadata = new MultiSourceMetadataWrapper(this.metadata, this.multiSourceModels);
         }
+        
+        TempMetadataAdapter tma = new TempMetadataAdapter(metadata, new TempMetadataStore());
+        tma.setSession(true);
+        this.metadata = tma;
     }
     
     protected void createCommandContext() throws QueryValidatorException {

Modified: branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourceMetadataWrapper.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourceMetadataWrapper.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/main/java/org/teiid/dqp/internal/process/multisource/MultiSourceMetadataWrapper.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -330,5 +330,10 @@
         
 		return actualMetadata.getNativeType(elementID);
 	}
+	
+	@Override
+	public QueryMetadataInterface getDesignTimeMetadata() {
+		return new MultiSourceMetadataWrapper(actualMetadata.getDesignTimeMetadata(), multiSourceModels);
+	}
 
 }

Modified: branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/BasicQueryMetadata.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/BasicQueryMetadata.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/BasicQueryMetadata.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -439,6 +439,16 @@
 	public boolean isProcedure(Object elementID) throws TeiidComponentException, QueryMetadataException {
 		return false;
 	}
+	
+	@Override
+	public QueryMetadataInterface getDesignTimeMetadata() {
+		return this;
+	}
+	
+	@Override
+	public boolean hasProcedure(String name) throws TeiidComponentException {
+		return false;
+	}
     
     public byte[] getBinaryVDBResource(String resourcePath) throws TeiidComponentException, QueryMetadataException {
         return null;

Modified: branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/BasicQueryMetadataWrapper.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/BasicQueryMetadataWrapper.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/BasicQueryMetadataWrapper.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -373,5 +373,15 @@
 	public Object getPrimaryKey(Object metadataID) {
 		return actualMetadata.getPrimaryKey(metadataID);
 	}
+	
+	@Override
+	public QueryMetadataInterface getDesignTimeMetadata() {
+		return actualMetadata.getDesignTimeMetadata();
+	}
+	
+	@Override
+	public boolean hasProcedure(String name) throws TeiidComponentException {
+		return actualMetadata.hasProcedure(name);
+	}
 
 }

Modified: branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/QueryMetadataInterface.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/QueryMetadataInterface.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/QueryMetadataInterface.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -680,4 +680,9 @@
     FunctionLibrary getFunctionLibrary();
     
     Object getPrimaryKey(Object metadataID);
+    
+    QueryMetadataInterface getDesignTimeMetadata();
+    
+    boolean hasProcedure(String name) throws TeiidComponentException;
+
 }

Modified: branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/TempMetadataAdapter.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/TempMetadataAdapter.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/TempMetadataAdapter.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -58,6 +58,7 @@
     private TempMetadataStore tempStore;
     private Map materializationTables;
     private Map queryNodes;
+    private boolean session;
 	
 	public TempMetadataAdapter(QueryMetadataInterface metadata, TempMetadataStore tempStore) {
 		super(metadata);
@@ -69,8 +70,23 @@
         this.tempStore = tempStore;
         this.materializationTables = materializationTables;
         this.queryNodes = queryNodes;
-    }    
+    } 
     
+    public boolean isSession() {
+		return session;
+	}
+    
+    public void setSession(boolean session) {
+		this.session = session;
+	}
+    
+    public QueryMetadataInterface getDesignTimeMetadata() {
+    	if (isSession()) {
+    		return this.actualMetadata.getDesignTimeMetadata();
+    	}
+    	return new TempMetadataAdapter(this.actualMetadata.getDesignTimeMetadata(), tempStore, materializationTables, queryNodes);
+    }
+    
     public TempMetadataStore getMetadataStore() {
         return this.tempStore;    
     }
@@ -292,8 +308,11 @@
         throws TeiidComponentException, QueryMetadataException {
         
         // check if any dynamic materialization tables are defined
-        if (this.materializationTables != null && this.materializationTables.containsKey(groupID)) {
-            return this.materializationTables.get(groupID);
+        if (this.materializationTables != null) {
+            Object result = this.materializationTables.get(groupID);
+            if (result != null) {
+            	return result;
+            }
         }
         
         if(groupID instanceof TempMetadataID) {                         

Modified: branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/TransformationMetadata.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/TransformationMetadata.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/main/java/org/teiid/query/metadata/TransformationMetadata.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -159,6 +159,13 @@
         this.functionLibrary = new FunctionLibrary(systemFunctions, new FunctionTree(new UDFSource(udfMethods), true));
     }
     
+    private TransformationMetadata(final CompositeMetadataStore store, FunctionLibrary functionLibrary) {
+    	ArgCheck.isNotNull(store);
+        this.store = store;
+    	this.vdbEntries = Collections.emptyMap();
+        this.functionLibrary = functionLibrary;
+    }
+    
     //==================================================================================
     //                     I N T E R F A C E   M E T H O D S
     //==================================================================================
@@ -287,11 +294,31 @@
             throw createInvalidRecordTypeException(elementID);
         }
     }
+    
+    public boolean hasProcedure(String name) throws TeiidComponentException {
+    	try {
+    		return getStoredProcedureInfoForProcedure(name) != null;
+    	} catch (QueryMetadataException e) {
+    		return false;
+    	}
+    }
 
-    public StoredProcedureInfo getStoredProcedureInfoForProcedure(final String fullyQualifiedProcedureName)
+    public StoredProcedureInfo getStoredProcedureInfoForProcedure(final String name)
         throws TeiidComponentException, QueryMetadataException {
-        ArgCheck.isNotEmpty(fullyQualifiedProcedureName);
-        String lowerGroupName = fullyQualifiedProcedureName.toLowerCase();
+        StoredProcedureInfo result = getStoredProcInfoDirect(name);
+        
+		if (result == null) {
+			throw new QueryMetadataException(name+NOT_EXISTS_MESSAGE);
+		}
+    	
+        return result;
+    }
+
+	private StoredProcedureInfo getStoredProcInfoDirect(
+			final String name)
+			throws TeiidComponentException, QueryMetadataException {
+		ArgCheck.isNotEmpty(name);
+        String lowerGroupName = name.toLowerCase();
         Collection<StoredProcedureInfo> results = this.procedureCache.get(lowerGroupName);
         
         if (results == null) {
@@ -353,18 +380,14 @@
         
         for (StoredProcedureInfo storedProcedureInfo : results) {
         	Schema schema = (Schema)storedProcedureInfo.getModelID();
-	        if(vdbMetaData == null || vdbMetaData.isVisible(schema.getName())){
+        	if(name.equalsIgnoreCase(storedProcedureInfo.getProcedureCallableName()) || vdbMetaData == null || vdbMetaData.isVisible(schema.getName())){
 	        	if (result != null) {
-	    			throw new QueryMetadataException(QueryPlugin.Util.getString("ambiguous_procedure", fullyQualifiedProcedureName)); //$NON-NLS-1$
+	        		throw new QueryMetadataException(QueryPlugin.Util.getString("ambiguous_procedure", name)); //$NON-NLS-1$
 	    		}
 	        	result = storedProcedureInfo;
 	        }
 		}
         
-		if (result == null) {
-			throw new QueryMetadataException(fullyQualifiedProcedureName+NOT_EXISTS_MESSAGE);
-		}
-    	
         return result;
     }
     
@@ -744,6 +767,10 @@
     	return vdbMetaData.getVersion();
     }
     
+    public VDBMetaData getVdbMetaData() {
+		return vdbMetaData;
+	}
+    
     /**
      * @see org.teiid.query.metadata.QueryMetadataInterface#getXMLTempGroups(java.lang.Object)
      */
@@ -1082,4 +1109,9 @@
 		Table table = (Table)metadataID;
 		return table.getPrimaryKey();
 	}
+	
+	@Override
+	public QueryMetadataInterface getDesignTimeMetadata() {
+		return new TransformationMetadata(store, functionLibrary);
+	}
 }
\ No newline at end of file

Modified: branches/7.1.x/engine/src/main/java/org/teiid/query/optimizer/relational/RelationalPlanner.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/query/optimizer/relational/RelationalPlanner.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/main/java/org/teiid/query/optimizer/relational/RelationalPlanner.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -1048,6 +1048,7 @@
 			String cacheString, QueryMetadataInterface qmi, AnalysisRecord analysisRecord) throws TeiidComponentException,
 			QueryMetadataException, QueryResolverException,
 			QueryValidatorException {
+		qmi = qmi.getDesignTimeMetadata();
 		Command result = (Command)qmi.getFromMetadataCache(virtualGroup.getMetadataID(), "transformation/" + cacheString); //$NON-NLS-1$
         if (result != null) {
         	result = (Command)result.clone();

Modified: branches/7.1.x/engine/src/main/java/org/teiid/query/optimizer/xml/QueryUtil.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/query/optimizer/xml/QueryUtil.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/main/java/org/teiid/query/optimizer/xml/QueryUtil.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -101,7 +101,7 @@
         throws TeiidComponentException, QueryPlannerException {
         // Run resolver
         try {
-            QueryResolver.resolveCommand(query, Collections.EMPTY_MAP, metadata, AnalysisRecord.createNonRecordingRecord());
+            QueryResolver.resolveCommand(query, Collections.EMPTY_MAP, metadata.getDesignTimeMetadata(), AnalysisRecord.createNonRecordingRecord());
         } catch(QueryResolverException e) {
             throw new QueryPlannerException(e, e.getMessage());
         }

Modified: branches/7.1.x/engine/src/main/java/org/teiid/query/processor/proc/ExecDynamicSqlInstruction.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/query/processor/proc/ExecDynamicSqlInstruction.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/main/java/org/teiid/query/processor/proc/ExecDynamicSqlInstruction.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -22,7 +22,7 @@
 
 package org.teiid.query.processor.proc;
 
-import static org.teiid.query.analysis.AnalysisRecord.PROP_SQL;
+import static org.teiid.query.analysis.AnalysisRecord.*;
 
 import java.util.Collections;
 import java.util.HashMap;
@@ -162,7 +162,7 @@
 						parentProcCommand.getVirtualGroup(), metadata);
 			}
 
-			QueryResolver.resolveCommand(command, metadata);
+			QueryResolver.resolveCommand(command, metadata.getDesignTimeMetadata());
 
 			validateDynamicCommand(procEnv, command);
 

Modified: branches/7.1.x/engine/src/main/java/org/teiid/query/resolver/ProcedureContainerResolver.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/query/resolver/ProcedureContainerResolver.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/main/java/org/teiid/query/resolver/ProcedureContainerResolver.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -87,7 +87,7 @@
         try {
             subCommand = parser.parseCommand(plan);
         } catch(QueryParserException e) {
-            throw new QueryResolverException(e, "ERR.015.008.0045", QueryPlugin.Util.getString("ERR.015.008.0045", group)); //$NON-NLS-1$ //$NON-NLS-2$
+            throw new QueryResolverException(e, "ERR.015.008.0045", QueryPlugin.Util.getString("ERR.015.008.0045", group, procCommand.getClass().getSimpleName())); //$NON-NLS-1$ //$NON-NLS-2$
         }
         
         if(subCommand instanceof CreateUpdateProcedureCommand){

Modified: branches/7.1.x/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -87,7 +87,7 @@
     
     public static Command expandCommand(ProcedureContainer proc, QueryMetadataInterface metadata, AnalysisRecord analysisRecord) throws QueryResolverException, QueryMetadataException, TeiidComponentException {
     	ProcedureContainerResolver cr = (ProcedureContainerResolver)chooseResolver(proc, metadata);
-    	return cr.expandCommand(proc, metadata, analysisRecord);
+    	return cr.expandCommand(proc, metadata.getDesignTimeMetadata(), analysisRecord);
     }
 
     /**

Modified: branches/7.1.x/engine/src/main/java/org/teiid/query/resolver/command/TempTableResolver.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/query/resolver/command/TempTableResolver.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/main/java/org/teiid/query/resolver/command/TempTableResolver.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -70,6 +70,10 @@
             if(!exitsingGroups.isEmpty()) {
                 throw new QueryResolverException(QueryPlugin.Util.getString("TempTableResolver.table_already_exists", group.getName())); //$NON-NLS-1$
             }
+        	if (metadata.getMetadata().hasProcedure(group.getName())) {
+        		throw new QueryResolverException(QueryPlugin.Util.getString("TempTableResolver.table_already_exists", group.getName())); //$NON-NLS-1$
+        	}
+            
             //now we will be more specific for temp groups
             TempMetadataID id = metadata.getMetadataStore().getTempGroupID(group.getName());
             if (id != null && !metadata.isTemporaryTable(id)) {

Modified: branches/7.1.x/engine/src/main/resources/org/teiid/query/i18n.properties
===================================================================
--- branches/7.1.x/engine/src/main/resources/org/teiid/query/i18n.properties	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/main/resources/org/teiid/query/i18n.properties	2011-03-17 15:11:14 UTC (rev 3002)
@@ -119,7 +119,7 @@
 ERR.015.008.0041= Expected value of type ''{0}'' but ''{1}'' is of type ''{2}'' and no implicit conversion is available.
 ERR.015.008.0042= Element ''{0}'' in ORDER BY is ambiguous and may refer to more than one element of SELECT clause.
 ERR.015.008.0043= Element ''{0}'' in ORDER BY was not found in SELECT clause.
-ERR.015.008.0045= Failed parsing insert plan for {0}
+ERR.015.008.0045= Failed parsing {1} plan for {0}
 ERR.015.008.0046= The symbol {0} may only be used once in the FROM clause.
 ERR.015.008.0047= The symbol {0} refers to a group not defined in the FROM clause.
 ERR.015.008.0049= Bindings must be specified

Modified: branches/7.1.x/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java
===================================================================
--- branches/7.1.x/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/test/java/org/teiid/dqp/internal/process/TestDQPCore.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -50,8 +50,9 @@
     private DQPCore core;
 
     @Before public void setUp() throws Exception {
-        DQPWorkContext context = FakeMetadataFactory.buildWorkContext(FakeMetadataFactory.exampleBQTCached(), FakeMetadataFactory.exampleBQTVDB());
+        DQPWorkContext context = FakeMetadataFactory.buildWorkContext(FakeMetadataFactory.exampleBQT());
         context.getVDB().getModel("BQT3").setVisible(false); //$NON-NLS-1$
+        context.getVDB().getModel("VQT").setVisible(false); //$NON-NLS-1$
 
         ConnectorManagerRepository repo = Mockito.mock(ConnectorManagerRepository.class);
         context.getVDB().addAttchment(ConnectorManagerRepository.class, repo);
@@ -157,6 +158,14 @@
     }
     
     /**
+     * Ensures that VQT visibility does not affect the view query
+     */
+    @Test public void testViewVisibility() throws Exception {
+    	String sql = "SELECT * FROM VQT.SmallA_2589g"; //$NON-NLS-1$
+    	helpExecute(sql, "a"); //$NON-NLS-1$
+    }
+    
+    /**
      * Tests whether an exception result is sent when an exception occurs
      * @since 4.3
      */

Modified: branches/7.1.x/engine/src/test/java/org/teiid/query/processor/TestTempTables.java
===================================================================
--- branches/7.1.x/engine/src/test/java/org/teiid/query/processor/TestTempTables.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/test/java/org/teiid/query/processor/TestTempTables.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -64,6 +64,7 @@
 	@Before public void setUp() {
 		tempStore = new TempTableStore("1"); //$NON-NLS-1$
 		metadata = new TempMetadataAdapter(FakeMetadataFactory.example1Cached(), tempStore.getMetadataStore());
+		metadata.setSession(true);
 		FakeDataManager fdm = new FakeDataManager();
 	    TestProcessor.sampleData1(fdm);
 	    BufferManager bm = BufferManagerFactory.getStandaloneBufferManager();
@@ -261,7 +262,16 @@
 		execute("create local temporary table x (e1 string, e2 integer, primary key (e1, e2))", new List[] {Arrays.asList(0)}); //$NON-NLS-1$
 		execute("select * from x where e1 in ('a', 'b') order by e1 desc", new List[0]); //$NON-NLS-1$
 	}
-
+	
+	/**
+	 * If the session metadata is still visible, then the procedure will fail due to the conflicting
+	 * definitions of temp_table
+	 */
+	@Test public void testSessionResolving() throws Exception {
+		execute("create local temporary table temp_table (column1 integer)", new List[] {Arrays.asList(0)});
+		execute("exec pm1.vsp60()", new List[] {Arrays.asList("First"), Arrays.asList("Second"), Arrays.asList("Third")});
+	}
+	
 	private void sampleTable() throws Exception {
 		execute("create local temporary table x (e1 string, e2 integer, primary key (e1, e2))", new List[] {Arrays.asList(0)}); //$NON-NLS-1$
 		execute("insert into x (e2, e1) values (3, 'b')", new List[] {Arrays.asList(1)}); //$NON-NLS-1$

Modified: branches/7.1.x/engine/src/test/java/org/teiid/query/resolver/TestResolver.java
===================================================================
--- branches/7.1.x/engine/src/test/java/org/teiid/query/resolver/TestResolver.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/test/java/org/teiid/query/resolver/TestResolver.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -2418,6 +2418,11 @@
         String sql = "CREATE LOCAL TEMPORARY TABLE pm1.g1 (column1 string)"; //$NON-NLS-1$
         helpResolveException(sql, "Cannot create temporary table \"pm1.g1\". Local temporary tables must be created with unqualified names."); //$NON-NLS-1$
     }
+    
+    @Test public void testProcedureConflict() {
+        String sql = "create local temporary table MMSP6 (e1 string, e2 integer)"; //$NON-NLS-1$
+        helpResolveException(sql, RealMetadataFactory.exampleBQTCached()); //$NON-NLS-1$
+    }    
 
     @Test public void testCreatePk() {
         String sql = "CREATE LOCAL TEMPORARY TABLE foo (column1 string, column2 integer, primary key (column1, column2))"; //$NON-NLS-1$

Modified: branches/7.1.x/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFactory.java
===================================================================
--- branches/7.1.x/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFactory.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFactory.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -83,6 +83,10 @@
         return CACHED_AGGREGATES;
     }       
     
+    public static DQPWorkContext buildWorkContext(TransformationMetadata metadata) {
+    	return buildWorkContext(metadata, metadata.getVdbMetaData());
+    }
+    
 	public static DQPWorkContext buildWorkContext(QueryMetadataInterface metadata, VDBMetaData vdb) {
 		DQPWorkContext workContext = new DQPWorkContext();
 		SessionMetadata session = new SessionMetadata();

Modified: branches/7.1.x/engine/src/test/java/org/teiid/query/unittest/RealMetadataFactory.java
===================================================================
--- branches/7.1.x/engine/src/test/java/org/teiid/query/unittest/RealMetadataFactory.java	2011-03-17 14:41:44 UTC (rev 3001)
+++ branches/7.1.x/engine/src/test/java/org/teiid/query/unittest/RealMetadataFactory.java	2011-03-17 15:11:14 UTC (rev 3002)
@@ -113,7 +113,7 @@
         QueryNode vqtn2589f = new QueryNode("VQT.SmallA_2589f", "SELECT * FROM VQT.SmallA_2589"); //$NON-NLS-1$ //$NON-NLS-2$
         Table vqtg2589f = createVirtualGroup("SmallA_2589f", vqt, vqtn2589f); //$NON-NLS-1$
 
-        QueryNode vqtn2589g = new QueryNode("VQT.SmallA_2589g", "SELECT * FROM VQT.SmallA_2589b"); //$NON-NLS-1$ //$NON-NLS-2$
+        QueryNode vqtn2589g = new QueryNode("VQT.SmallA_2589g", "SELECT * FROM SmallA_2589b"); //$NON-NLS-1$ //$NON-NLS-2$
         Table vqtg2589g = createVirtualGroup("SmallA_2589g", vqt, vqtn2589g); //$NON-NLS-1$
 
         QueryNode vqtn2589h = new QueryNode("VQT.SmallA_2589h", "SELECT VQT.SmallA_2589.* FROM VQT.SmallA_2589 INNER JOIN BQT1.SmallB ON VQT.SmallA_2589.StringKey = SmallB.StringKey"); //$NON-NLS-1$ //$NON-NLS-2$



More information about the teiid-commits mailing list