[teiid-commits] teiid SVN: r4610 - in branches/7.7.x/engine/src: test/java/org/teiid/query/validator and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Wed Nov 6 16:18:40 EST 2013


Author: jolee
Date: 2013-11-06 16:18:40 -0500 (Wed, 06 Nov 2013)
New Revision: 4610

Modified:
   branches/7.7.x/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java
   branches/7.7.x/engine/src/test/java/org/teiid/query/validator/TestValidator.java
Log:
TEIID-2721: Resolving an aliased view prevents inherent update from working

Modified: branches/7.7.x/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java
===================================================================
--- branches/7.7.x/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java	2013-11-04 19:45:55 UTC (rev 4609)
+++ branches/7.7.x/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java	2013-11-06 21:18:40 UTC (rev 4610)
@@ -466,6 +466,13 @@
 		        String updatePlan = qmi.getUpdatePlan(virtualGroup.getMetadataID());
 				String deletePlan = qmi.getDeletePlan(virtualGroup.getMetadataID());
 				String insertPlan = qmi.getInsertPlan(virtualGroup.getMetadataID());
+				
+				//the elements must be against the view and not the alias
+				if (virtualGroup.getDefinition() != null) {
+					GroupSymbol group = new GroupSymbol(virtualGroup.getNonCorrelationName());
+					group.setMetadataID(virtualGroup.getMetadataID());
+					virtualGroup = group;
+				}
 
 	            List<ElementSymbol> elements = ResolverUtil.resolveElementsInGroup(virtualGroup, qmi);
 	    		UpdateValidator validator = new UpdateValidator(qmi, determineType(insertPlan), determineType(updatePlan), determineType(deletePlan));

Modified: branches/7.7.x/engine/src/test/java/org/teiid/query/validator/TestValidator.java
===================================================================
--- branches/7.7.x/engine/src/test/java/org/teiid/query/validator/TestValidator.java	2013-11-04 19:45:55 UTC (rev 4609)
+++ branches/7.7.x/engine/src/test/java/org/teiid/query/validator/TestValidator.java	2013-11-06 21:18:40 UTC (rev 4610)
@@ -34,6 +34,7 @@
 import org.junit.Ignore;
 import org.junit.Test;
 import org.teiid.api.exception.query.QueryMetadataException;
+import org.teiid.api.exception.query.QueryParserException;
 import org.teiid.api.exception.query.QueryResolverException;
 import org.teiid.api.exception.query.QueryValidatorException;
 import org.teiid.client.metadata.ParameterInfo;
@@ -42,15 +43,15 @@
 import org.teiid.core.TeiidRuntimeException;
 import org.teiid.core.types.DataTypeManager;
 import org.teiid.dqp.internal.process.multisource.MultiSourceMetadataWrapper;
+import org.teiid.metadata.BaseColumn.NullType;
 import org.teiid.metadata.Column;
+import org.teiid.metadata.Column.SearchType;
 import org.teiid.metadata.ColumnSet;
 import org.teiid.metadata.MetadataStore;
 import org.teiid.metadata.Procedure;
 import org.teiid.metadata.ProcedureParameter;
 import org.teiid.metadata.Schema;
 import org.teiid.metadata.Table;
-import org.teiid.metadata.BaseColumn.NullType;
-import org.teiid.metadata.Column.SearchType;
 import org.teiid.query.analysis.AnalysisRecord;
 import org.teiid.query.mapping.relational.QueryNode;
 import org.teiid.query.mapping.xml.MappingDocument;
@@ -58,6 +59,7 @@
 import org.teiid.query.metadata.QueryMetadataInterface;
 import org.teiid.query.metadata.TransformationMetadata;
 import org.teiid.query.parser.QueryParser;
+import org.teiid.query.processor.TestProcessor;
 import org.teiid.query.resolver.QueryResolver;
 import org.teiid.query.sql.LanguageObject;
 import org.teiid.query.sql.lang.Command;
@@ -1961,4 +1963,16 @@
 		helpValidate("SELECT XMLELEMENT(NAME metadata, XMLFOREST(e1 AS objectName), (SELECT XMLAGG(XMLELEMENT(NAME subTypes, XMLFOREST(e1))) FROM pm1.g2 AS b WHERE b.e2 = a.e2)) FROM pm1.g1 AS a GROUP BY e1", new String[] {"a.e2"}, RealMetadataFactory.example1Cached());
 	}
 	
+	@Test public void testInsertIntoVirtualWithQueryExpression() throws QueryParserException, QueryResolverException, TeiidComponentException { 
+		TransformationMetadata metadata = TestUpdateValidator.example1();
+        TestUpdateValidator.createView("select * from pm1.g1", metadata, "gx");
+        
+        String sql = "select * from gx as x"; //$NON-NLS-1$
+        
+        TestProcessor.helpGetPlan(sql, metadata);
+        
+        sql = "insert into gx (e1, e2, e3, e4) select * from pm1.g1"; //$NON-NLS-1$
+        
+        TestValidator.helpValidate(sql, new String[] {},  metadata);
+    }	
 }



More information about the teiid-commits mailing list