[teiid-commits] teiid SVN: r4305 - in trunk: engine/src/main/java/org/teiid/query/metadata and 5 other directories.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Tue Aug 7 13:43:22 EDT 2012


Author: shawkins
Date: 2012-08-07 13:43:21 -0400 (Tue, 07 Aug 2012)
New Revision: 4305

Modified:
   trunk/engine/src/main/java/org/teiid/query/QueryPlugin.java
   trunk/engine/src/main/java/org/teiid/query/metadata/MetadataValidator.java
   trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/CapabilitiesUtil.java
   trunk/engine/src/main/java/org/teiid/query/resolver/ProcedureContainerResolver.java
   trunk/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java
   trunk/engine/src/main/resources/org/teiid/query/i18n.properties
   trunk/engine/src/test/java/org/teiid/query/metadata/TestMetadataValidator.java
   trunk/test-integration/common/src/test/java/org/teiid/jdbc/TestLocalConnections.java
Log:
TEIID-2136 allowing virtual entries on physical models

Modified: trunk/engine/src/main/java/org/teiid/query/QueryPlugin.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/QueryPlugin.java	2012-08-07 17:25:38 UTC (rev 4304)
+++ trunk/engine/src/main/java/org/teiid/query/QueryPlugin.java	2012-08-07 17:43:21 UTC (rev 4305)
@@ -493,9 +493,7 @@
     	TEIID31071,
     	TEIID31072,
     	TEIID31073,
-    	TEIID31074,
     	TEIID31075,
-    	TEIID31076,
     	TEIID31077,
     	TEIID31078,
     	TEIID31079,

Modified: trunk/engine/src/main/java/org/teiid/query/metadata/MetadataValidator.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/metadata/MetadataValidator.java	2012-08-07 17:25:38 UTC (rev 4304)
+++ trunk/engine/src/main/java/org/teiid/query/metadata/MetadataValidator.java	2012-08-07 17:43:21 UTC (rev 4305)
@@ -107,10 +107,6 @@
 			for (Schema schema:store.getSchemaList()) {
 				ModelMetaData model = vdb.getModel(schema.getName());
 				for (Table t:schema.getTables().values()) {
-					if (t.isVirtual() && model.isSource()) {
-						metadataValidator.log(report, model, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID31074, t.getName(), model.getName()));
-					}
-					
 					if (t.isPhysical() && !model.isSource()) {
 						metadataValidator.log(report, model, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID31075, t.getName(), model.getName()));
 					}
@@ -131,10 +127,6 @@
 							metadataValidator.log(report, model, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID31106, p.getFullName(), param.getName()));
 						}
 					}
-					if (p.isVirtual() && model.isSource()) {
-						metadataValidator.log(report, model, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID31076, p.getName(), model.getName()));
-					}
-
 					if (!p.isVirtual() && !model.isSource()) {
 						metadataValidator.log(report, model, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID31077, p.getName(), model.getName()));
 					}

Modified: trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/CapabilitiesUtil.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/CapabilitiesUtil.java	2012-08-07 17:25:38 UTC (rev 4304)
+++ trunk/engine/src/main/java/org/teiid/query/optimizer/relational/rules/CapabilitiesUtil.java	2012-08-07 17:43:21 UTC (rev 4305)
@@ -32,6 +32,7 @@
 import org.teiid.core.types.DataTypeManager;
 import org.teiid.language.SortSpecification.NullOrdering;
 import org.teiid.metadata.Schema;
+import org.teiid.metadata.FunctionMethod.PushDown;
 import org.teiid.query.function.FunctionLibrary;
 import org.teiid.query.metadata.QueryMetadataInterface;
 import org.teiid.query.optimizer.capabilities.CapabilitiesFinder;
@@ -220,7 +221,7 @@
     public static boolean supportsScalarFunction(Object modelID, Function function, QueryMetadataInterface metadata, CapabilitiesFinder capFinder) 
     throws QueryMetadataException, TeiidComponentException {
         
-        if (metadata.isVirtualModel(modelID)){
+        if (metadata.isVirtualModel(modelID) || function.getFunctionDescriptor().getMethod().getPushdown() == PushDown.CANNOT_PUSHDOWN){
             return false;
         }
 
@@ -244,7 +245,7 @@
                 return caps.supportsConvert(DataTypeManager.getTypeCode(fromType), DataTypeManager.getTypeCode(targetType));
             }
         } else if (!isSameConnector(modelID, schema, metadata, capFinder)) {
-        	return false; //not the right schema
+        	return caps.supportsFunction(function.getFunctionDescriptor().getMethod().getFullName());
         }
         
         return true;

Modified: trunk/engine/src/main/java/org/teiid/query/resolver/ProcedureContainerResolver.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/resolver/ProcedureContainerResolver.java	2012-08-07 17:25:38 UTC (rev 4304)
+++ trunk/engine/src/main/java/org/teiid/query/resolver/ProcedureContainerResolver.java	2012-08-07 17:43:21 UTC (rev 4305)
@@ -146,7 +146,7 @@
 	private String getPlan(QueryMetadataInterface metadata, ProcedureContainer procCommand)
 			throws TeiidComponentException, QueryMetadataException,
 			QueryResolverException {
-		if(!procCommand.getGroup().isTempGroupSymbol() && metadata.isVirtualGroup(procCommand.getGroup().getMetadataID())) {
+		if(!procCommand.getGroup().isTempTable() && metadata.isVirtualGroup(procCommand.getGroup().getMetadataID())) {
             String plan = getPlan(metadata, procCommand.getGroup());
             if (plan == null && !metadata.isProcedure(procCommand.getGroup().getMetadataID())) {
             	int type = procCommand.getType();

Modified: trunk/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java	2012-08-07 17:25:38 UTC (rev 4304)
+++ trunk/engine/src/main/java/org/teiid/query/resolver/QueryResolver.java	2012-08-07 17:43:21 UTC (rev 4305)
@@ -492,7 +492,7 @@
 	public static boolean isView(GroupSymbol virtualGroup,
 			QueryMetadataInterface qmi) throws TeiidComponentException,
 			QueryMetadataException {
-		return !virtualGroup.isTempGroupSymbol() && qmi.isVirtualGroup(virtualGroup.getMetadataID()) && qmi.isVirtualModel(qmi.getModelID(virtualGroup.getMetadataID()));
+		return !(virtualGroup.getMetadataID() instanceof TempMetadataID) && qmi.isVirtualGroup(virtualGroup.getMetadataID());// && qmi.isVirtualModel(qmi.getModelID(virtualGroup.getMetadataID()));
 	}
 	
 	private static UpdateType determineType(String plan) {

Modified: trunk/engine/src/main/resources/org/teiid/query/i18n.properties
===================================================================
--- trunk/engine/src/main/resources/org/teiid/query/i18n.properties	2012-08-07 17:25:38 UTC (rev 4304)
+++ trunk/engine/src/main/resources/org/teiid/query/i18n.properties	2012-08-07 17:43:21 UTC (rev 4305)
@@ -984,9 +984,7 @@
 TEIID31071=Invalid table; Table {0} has no columns defined
 TEIID31072=Invalid Procedure {0}; No return has been defined.
 TEIID31073=Invalid functions; {0}
-TEIID31074=View table {0} is only allowed in VIRTUAL Model; {1} is defined as PHYSICAL model
 TEIID31075=Foreign table {0} is only allowed to be defined on PHYSICAL model; {1} is defined as VIRTUAL model.
-TEIID31076=Virtual procedure {0} is only allowed to be defined on VIRTUAL model; {1} is defined as PHYSICAL model.
 TEIID31077=Source Stored procedure {0} is only allowed to be defined on PHYSICAL model; {1} is defined as VIRTUAL model.
 TEIID31078=Pushdown function {0} must be defined on PHYSICAL model; {1} is VIRTUAL model. 
 TEIID31079=View {0} is not defined by a query expression.

Modified: trunk/engine/src/test/java/org/teiid/query/metadata/TestMetadataValidator.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/metadata/TestMetadataValidator.java	2012-08-07 17:25:38 UTC (rev 4304)
+++ trunk/engine/src/test/java/org/teiid/query/metadata/TestMetadataValidator.java	2012-08-07 17:43:21 UTC (rev 4305)
@@ -76,7 +76,7 @@
 		buildModel("pm1", true, this.vdb, this.store, ddl);
 		ValidatorReport report = new ValidatorReport();
 		new MetadataValidator.SourceModelArtifacts().execute(vdb, store, report, new MetadataValidator());
-		assertTrue(printError(report), report.hasItems());
+		assertFalse(printError(report), report.hasItems());
 	}
 
 	private String printError(ValidatorReport report) {

Modified: trunk/test-integration/common/src/test/java/org/teiid/jdbc/TestLocalConnections.java
===================================================================
--- trunk/test-integration/common/src/test/java/org/teiid/jdbc/TestLocalConnections.java	2012-08-07 17:25:38 UTC (rev 4304)
+++ trunk/test-integration/common/src/test/java/org/teiid/jdbc/TestLocalConnections.java	2012-08-07 17:43:21 UTC (rev 4305)
@@ -67,7 +67,7 @@
 	
 	private final class SimpleUncaughtExceptionHandler implements
 			UncaughtExceptionHandler {
-		Throwable t;
+		volatile Throwable t;
 
 		@Override
 		public void uncaughtException(Thread arg0, Throwable arg1) {
@@ -248,16 +248,14 @@
     	if (t.isAlive()) {
     		fail();
     	}
-    	
+    	if (handler.t != null) {
+    		throw handler.t;
+    	}    	
     	for (int i = 0; !server.getDqp().getRequests().isEmpty() && i < 40; i++) {
     		//the concurrent modification may not be seen initially
     		Thread.sleep(50);
     	}
     	assertTrue(server.getDqp().getRequests().isEmpty());
-    	
-    	if (handler.t != null) {
-    		throw handler.t;
-    	}
 	}
 	
 	@Test public void testWait() throws Throwable {



More information about the teiid-commits mailing list