[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