[teiid-commits] teiid SVN: r2513 - in branches/7.1.x/engine/src: test/java/org/teiid/query/resolver and 1 other directories.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Wed Sep 1 11:38:19 EDT 2010
Author: shawkins
Date: 2010-09-01 11:38:19 -0400 (Wed, 01 Sep 2010)
New Revision: 2513
Modified:
branches/7.1.x/engine/src/main/java/org/teiid/query/sql/lang/StoredProcedure.java
branches/7.1.x/engine/src/test/java/org/teiid/query/resolver/TestResolver.java
branches/7.1.x/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFactory.java
branches/7.1.x/engine/src/test/java/org/teiid/query/unittest/RealMetadataFactory.java
Log:
TEIID-1234 fixing parameter order
Modified: branches/7.1.x/engine/src/main/java/org/teiid/query/sql/lang/StoredProcedure.java
===================================================================
--- branches/7.1.x/engine/src/main/java/org/teiid/query/sql/lang/StoredProcedure.java 2010-08-31 22:50:54 UTC (rev 2512)
+++ branches/7.1.x/engine/src/main/java/org/teiid/query/sql/lang/StoredProcedure.java 2010-09-01 15:38:19 UTC (rev 2513)
@@ -258,7 +258,7 @@
* @return Ordered list of SingleElementSymbol
*/
public List getProjectedSymbols(){
- List result = new ArrayList();
+ List<ElementSymbol> result = new ArrayList<ElementSymbol>();
//add result set columns
List rsColumns = getResultSetColumns();
result.addAll(rsColumns);
@@ -266,24 +266,15 @@
return result;
}
//add out/inout parameter symbols
- Iterator iter = mapOfParameters.values().iterator();
- while(iter.hasNext()){
- SPParameter parameter = (SPParameter)iter.next();
- if(parameter.getParameterType() == ParameterInfo.INOUT || parameter.getParameterType() == ParameterInfo.OUT){
+ for (SPParameter parameter : mapOfParameters.values()) {
+ if(parameter.getParameterType() == ParameterInfo.RETURN_VALUE){
ElementSymbol symbol = parameter.getParameterSymbol();
symbol.setGroupSymbol(getGroup());
- result.add(symbol);
- }
- }
- //add return parameter
- iter = mapOfParameters.values().iterator();
- while(iter.hasNext()){
- SPParameter parameter = (SPParameter)iter.next();
- if(parameter.getParameterType() == ParameterInfo.RETURN_VALUE){
+ result.add(0, symbol);
+ } else if(parameter.getParameterType() == ParameterInfo.INOUT || parameter.getParameterType() == ParameterInfo.OUT){
ElementSymbol symbol = parameter.getParameterSymbol();
symbol.setGroupSymbol(getGroup());
- result.add(symbol);
- break;
+ result.add(symbol);
}
}
return result;
Modified: branches/7.1.x/engine/src/test/java/org/teiid/query/resolver/TestResolver.java
===================================================================
--- branches/7.1.x/engine/src/test/java/org/teiid/query/resolver/TestResolver.java 2010-08-31 22:50:54 UTC (rev 2512)
+++ branches/7.1.x/engine/src/test/java/org/teiid/query/resolver/TestResolver.java 2010-09-01 15:38:19 UTC (rev 2513)
@@ -96,6 +96,7 @@
import org.teiid.query.unittest.FakeMetadataFactory;
import org.teiid.query.unittest.FakeMetadataObject;
import org.teiid.query.unittest.FakeMetadataStore;
+import org.teiid.query.unittest.RealMetadataFactory;
import org.teiid.query.unittest.TimestampUtil;
import org.teiid.query.util.ErrorMessageKeys;
@@ -3023,4 +3024,11 @@
helpResolveUpdateProcedure(procedure, userUpdateStr);
}
+ //return should be first, then out
+ @Test public void testParamOrder() {
+ Query resolvedQuery = (Query)helpResolve("SELECT * FROM (exec pm4.spRetOut()) as a", RealMetadataFactory.exampleBQTCached(), null); //$NON-NLS-1$
+
+ assertEquals("A.ret", resolvedQuery.getProjectedSymbols().get(0).getName());
+ }
+
}
\ No newline at end of file
Modified: branches/7.1.x/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFactory.java
===================================================================
--- branches/7.1.x/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFactory.java 2010-08-31 22:50:54 UTC (rev 2512)
+++ branches/7.1.x/engine/src/test/java/org/teiid/query/unittest/FakeMetadataFactory.java 2010-09-01 15:38:19 UTC (rev 2513)
@@ -2661,119 +2661,6 @@
return facade;
}
- public static VDBMetaData exampleXQueryTransformationsVDB() {
- VDBMetaData vdb = new VDBMetaData();
- vdb.setName("exampleXQueryTransformations");
- vdb.setVersion(1);
- vdb.addModel(createModel("m", true));
- return vdb;
- }
-
- public static FakeMetadataFacade exampleXQueryTransformations() {
- FakeMetadataObject model = FakeMetadataFactory.createPhysicalModel("m");//$NON-NLS-1$
-
- // Simple xquery view - no inputs, calls out to source docs
- FakeMetadataObject xmlrs = FakeMetadataFactory.createResultSet("m.xprocrs", model, new String[] { "xml" }, new String[] { DataTypeManager.DefaultDataTypes.XML }); //$NON-NLS-1$ //$NON-NLS-2$
- FakeMetadataObject xml1out = FakeMetadataFactory.createParameter("rs", 1, ParameterInfo.RESULT_SET, null, xmlrs); //$NON-NLS-1$
- QueryNode xproct1 = new QueryNode("m.xproc1", "<test></test>"); //$NON-NLS-1$ //$NON-NLS-2$
- FakeMetadataObject xproc1 = FakeMetadataFactory.createVirtualProcedure("m.xproc1", model, Arrays.asList(new FakeMetadataObject[] { xml1out }), xproct1); //$NON-NLS-1$
-
- // XQuery view: call out to proc returning xml
- QueryNode xproct2 = new QueryNode("m.xproc2", "doc(\"EXEC m.xproc1()\")"); //$NON-NLS-1$ //$NON-NLS-2$
- FakeMetadataObject xproc2 = FakeMetadataFactory.createVirtualProcedure("m.xproc2", model, Arrays.asList(new FakeMetadataObject[] { xml1out }), xproct2); //$NON-NLS-1$
-
- // XQuery view with xml input arg
- FakeMetadataObject xml3in = FakeMetadataFactory.createParameter("input", 2, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.XML, null); //$NON-NLS-1$
- QueryNode xproct3 = new QueryNode("m.xproc3", //$NON-NLS-1$
- "declare variable $INPUT as node() external; " + //$NON-NLS-1$
- "<wrap>{ $INPUT }</wrap>"); //$NON-NLS-1$
- FakeMetadataObject xproc3 = FakeMetadataFactory.createVirtualProcedure("m.xproc3", model, Arrays.asList(new FakeMetadataObject[] { xml1out, xml3in }), xproct3); //$NON-NLS-1$
-
- // XQuery view with scalar input args
- FakeMetadataObject xml4in = FakeMetadataFactory.createParameter("in1", 2, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.STRING, null); //$NON-NLS-1$
- FakeMetadataObject xml4in2 = FakeMetadataFactory.createParameter("in2", 3, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.INTEGER, null); //$NON-NLS-1$
- QueryNode xproct4 = new QueryNode("m.xproc4", //$NON-NLS-1$
- "declare variable $in1 as xs:string external; " + //$NON-NLS-1$
- "declare variable $in2 as xs:int external; " + //$NON-NLS-1$
- "<wrap><a>{ $in1 }</a><b>{ $in2 }</b></wrap>"); //$NON-NLS-1$
- FakeMetadataObject xproc4 = FakeMetadataFactory.createVirtualProcedure("m.xproc4", model, Arrays.asList(new FakeMetadataObject[] { xml1out, xml4in, xml4in2 }), xproct4); //$NON-NLS-1$
-
- // XQuery view calling doc() function with non-literal
- FakeMetadataObject xml5in = FakeMetadataFactory.createParameter("procName", 2, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.STRING, null); //$NON-NLS-1$
- QueryNode xproct5 = new QueryNode("m.xproc5", //$NON-NLS-1$
- "declare variable $procName as xs:string external; " + //$NON-NLS-1$
- "let $sql := concat('EXEC ', $procName, '()') " + //$NON-NLS-1$
- "return <wrap>{doc($sql)}</wrap>"); //$NON-NLS-1$
- FakeMetadataObject xproc5 = FakeMetadataFactory.createVirtualProcedure("m.xproc5", model, Arrays.asList(new FakeMetadataObject[] { xml1out, xml5in }), xproct5); //$NON-NLS-1$
-
- // XQuery view to create dynamic element
- FakeMetadataObject xml6in = FakeMetadataFactory.createParameter("tag", 2, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.STRING, null); //$NON-NLS-1$
- FakeMetadataObject xml6in2 = FakeMetadataFactory.createParameter("value", 3, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.STRING, null); //$NON-NLS-1$
- QueryNode xproct6 = new QueryNode("m.maketag", //$NON-NLS-1$
- "declare variable $tag as xs:string external; " + //$NON-NLS-1$
- "declare variable $value as xs:string external; " + //$NON-NLS-1$
- "element { $tag } { $value }"); //$NON-NLS-1$
- FakeMetadataObject xproc6 = FakeMetadataFactory.createVirtualProcedure("m.maketag", model, Arrays.asList(new FakeMetadataObject[] { xml1out, xml6in, xml6in2 }), xproct6); //$NON-NLS-1$
-
- // XQuery view calling multiple doc() functions with non-literal
- FakeMetadataObject xml7in = FakeMetadataFactory.createParameter("wrapperTag", 2, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.STRING, null); //$NON-NLS-1$
- FakeMetadataObject xml7in2 = FakeMetadataFactory.createParameter("tag1", 3, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.STRING, null); //$NON-NLS-1$
- FakeMetadataObject xml7in3 = FakeMetadataFactory.createParameter("val1", 4, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.STRING, null); //$NON-NLS-1$
- FakeMetadataObject xml7in4 = FakeMetadataFactory.createParameter("tag2", 5, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.STRING, null); //$NON-NLS-1$
- FakeMetadataObject xml7in5 = FakeMetadataFactory.createParameter("val2", 6, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.STRING, null); //$NON-NLS-1$
- QueryNode xproct7 = new QueryNode("m.combinetags", //$NON-NLS-1$
- "declare variable $wrapperTag as xs:string external; " + //$NON-NLS-1$
- "declare variable $tag1 as xs:string external; " + //$NON-NLS-1$
- "declare variable $val1 as xs:string external; " + //$NON-NLS-1$
- "declare variable $tag2 as xs:string external; " + //$NON-NLS-1$
- "declare variable $val2 as xs:string external; " + //$NON-NLS-1$
- "let $t1 := concat(\"EXEC m.maketag('\", $tag1, \"','\", $val1, \"')\") " + //$NON-NLS-1$
- "let $t2 := concat(\"EXEC m.maketag('\", $tag2, \"','\", $val2, \"')\") " + //$NON-NLS-1$
- "return element { $wrapperTag } { doc($t1), doc($t2) }"); //$NON-NLS-1$
- FakeMetadataObject xproc7 = FakeMetadataFactory.createVirtualProcedure("m.combinetags", model, Arrays.asList(new FakeMetadataObject[] { xml1out, xml7in, xml7in2, xml7in3, xml7in4, xml7in5 }), xproct7); //$NON-NLS-1$
-
- // XQuery web service view: takes xml in, yields xml out
- // Expects doc like: <in><tag>tag</tag><value></value></in>
- FakeMetadataObject xml8in = FakeMetadataFactory.createParameter("in", 2, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.XML, null); //$NON-NLS-1$
- QueryNode xproct8 = new QueryNode("m.svc8", //$NON-NLS-1$
- "declare variable $in as node() external; " + //$NON-NLS-1$
- "element { $in//tag/text() } { $in//value/text() }"); //$NON-NLS-1$
- FakeMetadataObject xproc8 = FakeMetadataFactory.createVirtualProcedure("m.svc8", model, Arrays.asList(new FakeMetadataObject[] { xml1out, xml8in }), xproct8); //$NON-NLS-1$
-
- // Chaining together XQuery web service views
- // Expects doc like: <in><tag>tag</tag><values><value>val1</value><value>val2</value>...</values></in>
- FakeMetadataObject xml9in = FakeMetadataFactory.createParameter("in", 2, ParameterInfo.IN, DataTypeManager.DefaultDataTypes.XML, null); //$NON-NLS-1$
- QueryNode xproct9 = new QueryNode("m.svc9", //$NON-NLS-1$
- "declare variable $in as node() external; " + //$NON-NLS-1$
- "<results> {" + //$NON-NLS-1$
- " for $value in $in//value " + //$NON-NLS-1$
- " let $tag := $in//tag " + //$NON-NLS-1$
- " return doc(" + //$NON-NLS-1$
- " concat(\"EXEC m.svc8('<in><tag>\", $tag, \"</tag><value>\", $value, \"</value></in>')\"))" + //$NON-NLS-1$
- "} </results>"); //$NON-NLS-1$
- FakeMetadataObject xproc9 = FakeMetadataFactory.createVirtualProcedure("m.svc9", model, Arrays.asList(new FakeMetadataObject[] { xml1out, xml9in }), xproct9); //$NON-NLS-1$
-
- // XQuery service with only a doc expression in it
- QueryNode xproct10 = new QueryNode("m.xproc10", //$NON-NLS-1$
- "doc('EXEC m.xproc1()')"); //$NON-NLS-1$
- FakeMetadataObject xproc10 = FakeMetadataFactory.createVirtualProcedure("m.xproc10", model, Arrays.asList(new FakeMetadataObject[] { xml1out }), xproct10); //$NON-NLS-1$
-
- // Add all objects to the store
- FakeMetadataStore store = new FakeMetadataStore();
- store.addObject(model);
- store.addObject(xproc1);
- store.addObject(xproc2);
- store.addObject(xproc3);
- store.addObject(xproc4);
- store.addObject(xproc5);
- store.addObject(xproc6);
- store.addObject(xproc7);
- store.addObject(xproc8);
- store.addObject(xproc9);
- store.addObject(xproc10);
-
- return new FakeMetadataFacade(store);
- }
/**
* Create a physical model with default settings.
* @param name Name of model
Modified: branches/7.1.x/engine/src/test/java/org/teiid/query/unittest/RealMetadataFactory.java
===================================================================
--- branches/7.1.x/engine/src/test/java/org/teiid/query/unittest/RealMetadataFactory.java 2010-08-31 22:50:54 UTC (rev 2512)
+++ branches/7.1.x/engine/src/test/java/org/teiid/query/unittest/RealMetadataFactory.java 2010-09-01 15:38:19 UTC (rev 2513)
@@ -253,6 +253,9 @@
QueryNode vspqn6 = new QueryNode("vsp6", "CREATE VIRTUAL PROCEDURE BEGIN SELECT p1 as StringKey; END"); //$NON-NLS-1$ //$NON-NLS-2$
Procedure vsp6 = createVirtualProcedure("MMSP6", mmspTest1, Arrays.asList(vsp6p1), vspqn6); //$NON-NLS-1$
vsp6.setResultSet(vsprs6);
+
+ createStoredProcedure("spRetOut", pm4, Arrays.asList(createParameter("ret", ParameterInfo.RETURN_VALUE, DataTypeManager.DefaultDataTypes.INTEGER),
+ createParameter("x", ParameterInfo.OUT, DataTypeManager.DefaultDataTypes.INTEGER)), "spRetOut"); //$NON-NLS-1$ //$NON-NLS-2$
return createTransformationMetadata(metadataStore, "bqt");
}
More information about the teiid-commits
mailing list