[teiid-commits] teiid SVN: r3248 - in branches/7.4.x/engine/src: test/java/org/teiid/query/resolver and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Mon Jun 13 13:03:51 EDT 2011


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$



More information about the teiid-commits mailing list