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 {