Author: shawkins
Date: 2011-06-13 13:03:50 -0400 (Mon, 13 Jun 2011)
New Revision: 3248
Modified:
branches/7.4.x/engine/src/main/java/org/teiid/query/resolver/command/UpdateProcedureResolver.java
branches/7.4.x/engine/src/test/java/org/teiid/query/resolver/TestProcedureResolving.java
Log:
TEIID-1635 fix for resolving error
Modified:
branches/7.4.x/engine/src/main/java/org/teiid/query/resolver/command/UpdateProcedureResolver.java
===================================================================
---
branches/7.4.x/engine/src/main/java/org/teiid/query/resolver/command/UpdateProcedureResolver.java 2011-06-13
16:05:57 UTC (rev 3247)
+++
branches/7.4.x/engine/src/main/java/org/teiid/query/resolver/command/UpdateProcedureResolver.java 2011-06-13
17:03:50 UTC (rev 3248)
@@ -194,7 +194,7 @@
switch (param.getParameterType()) {
case ParameterInfo.OUT:
case ParameterInfo.RETURN_VALUE:
- if (!isAssignable(metadata, param)) {
+ if (param.getExpression() != null &&
!isAssignable(metadata, param)) {
throw new
QueryResolverException(QueryPlugin.Util.getString("UpdateProcedureResolver.only_variables",
param.getExpression())); //$NON-NLS-1$
}
sp.setCallableStatement(true);
Modified:
branches/7.4.x/engine/src/test/java/org/teiid/query/resolver/TestProcedureResolving.java
===================================================================
---
branches/7.4.x/engine/src/test/java/org/teiid/query/resolver/TestProcedureResolving.java 2011-06-13
16:05:57 UTC (rev 3247)
+++
branches/7.4.x/engine/src/test/java/org/teiid/query/resolver/TestProcedureResolving.java 2011-06-13
17:03:50 UTC (rev 3248)
@@ -173,13 +173,13 @@
AssignmentStatement assStmt = (AssignmentStatement)block.getStatements().get(1);
assertEquals(ProcedureReservedWords.VARIABLES,
assStmt.getVariable().getGroupSymbol().getCanonicalName());
- assertEquals(ProcedureReservedWords.VARIABLES,
((ElementSymbol)assStmt.getValue()).getGroupSymbol().getCanonicalName());
+ assertEquals(ProcedureReservedWords.VARIABLES,
((ElementSymbol)assStmt.getExpression()).getGroupSymbol().getCanonicalName());
Block inner = ((LoopStatement)block.getStatements().get(2)).getBlock();
assStmt = (AssignmentStatement)inner.getStatements().get(0);
- ElementSymbol value = ElementCollectorVisitor.getElements(assStmt.getValue(),
false).iterator().next();
+ ElementSymbol value =
ElementCollectorVisitor.getElements(assStmt.getExpression(), false).iterator().next();
assertEquals("LOOPCURSOR", value.getGroupSymbol().getCanonicalName());
//$NON-NLS-1$
}
@@ -1038,6 +1038,16 @@
TestResolver.helpResolve(procedure, RealMetadataFactory.example1Cached());
}
+ // addresses Cases 5474.
+ @Test public void testProcWithReturn() throws Exception {
+ String procedure = "CREATE VIRTUAL PROCEDURE "; //$NON-NLS-1$
+ procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
+ procedure = procedure + "call sptest9(1);\n"; //$NON-NLS-1$
+ procedure = procedure + "END\n"; //$NON-NLS-1$
+
+ TestResolver.helpResolve(procedure, RealMetadataFactory.exampleBQTCached());
+ }
+
@Test public void testIssue174102() throws Exception {
String procedure = "CREATE VIRTUAL PROCEDURE \n"; //$NON-NLS-1$
procedure = procedure + "BEGIN\n"; //$NON-NLS-1$
Show replies by date