use of org.teiid.query.sql.lang.Query in project teiid by teiid.
the class MetaDataProcessor method getMetadataForCommand.
// For each projected symbol, construct a metadata map
private MetadataResult getMetadataForCommand(Command originalCommand) throws TeiidComponentException {
Map<Integer, Object>[] columnMetadata = null;
switch(originalCommand.getType()) {
case Command.TYPE_QUERY:
if (originalCommand instanceof Query) {
if (((Query) originalCommand).getInto() == null) {
columnMetadata = createProjectedSymbolMetadata(originalCommand);
}
} else {
columnMetadata = createProjectedSymbolMetadata(originalCommand);
}
break;
case Command.TYPE_STORED_PROCEDURE:
columnMetadata = createProjectedSymbolMetadata(originalCommand);
break;
case Command.TYPE_INSERT:
case Command.TYPE_UPDATE:
case Command.TYPE_DELETE:
case Command.TYPE_CREATE:
case Command.TYPE_DROP:
break;
default:
if (originalCommand.returnsResultSet()) {
columnMetadata = createProjectedSymbolMetadata(originalCommand);
}
}
Map<Reference, String> paramMap = Collections.emptyMap();
if (originalCommand instanceof StoredProcedure) {
StoredProcedure sp = (StoredProcedure) originalCommand;
paramMap = new HashMap<Reference, String>();
Collection<SPParameter> params = sp.getParameters();
for (SPParameter spParameter : params) {
if (spParameter.getParameterType() != SPParameter.INOUT && spParameter.getParameterType() != SPParameter.IN && spParameter.getParameterType() != SPParameter.RETURN_VALUE) {
continue;
}
Expression ex = spParameter.getExpression();
if (ex instanceof Function && FunctionLibrary.isConvert((Function) ex)) {
ex = ((Function) ex).getArg(0);
}
if (ex instanceof Reference) {
paramMap.put((Reference) ex, spParameter.getParameterSymbol().getShortName());
}
}
}
List<Reference> params = ReferenceCollectorVisitor.getReferences(originalCommand);
Map<Integer, Object>[] paramMetadata = new Map[params.size()];
for (int i = 0; i < params.size(); i++) {
Reference param = params.get(i);
paramMetadata[i] = getDefaultColumn(null, paramMap.get(param), param.getType());
}
return new MetadataResult(columnMetadata, paramMetadata);
}
use of org.teiid.query.sql.lang.Query in project teiid by teiid.
the class TestExpressionEvaluator method testScalarSubquery3.
@Test
public void testScalarSubquery3() throws Exception {
ScalarSubquery expr = new ScalarSubquery(new Query());
helpTestWithValueIterator(expr, Collections.emptyList(), null);
}
use of org.teiid.query.sql.lang.Query in project teiid by teiid.
the class TestOrderByRewrite method testOrderBy5.
@Test
public void testOrderBy5() throws Exception {
// $NON-NLS-1$
Query resolvedQuery = (Query) getCommand("SELECT e1 FROM pm1.g1 ORDER BY e1");
helpCheckElements(resolvedQuery.getOrderBy(), // $NON-NLS-1$
new String[] { "pm1.g1.e1" }, // $NON-NLS-1$
new String[] { "pm1.g1.e1" });
}
use of org.teiid.query.sql.lang.Query in project teiid by teiid.
the class TestOrderByRewrite method testOrderBy4.
@Test
public void testOrderBy4() throws Exception {
// $NON-NLS-1$
Query resolvedQuery = (Query) getCommand("SELECT e1 FROM pm1.g1 ORDER BY pm1.g1.e1");
helpCheckElements(resolvedQuery.getOrderBy(), // $NON-NLS-1$
new String[] { "pm1.g1.e1" }, // $NON-NLS-1$
new String[] { "pm1.g1.e1" });
}
use of org.teiid.query.sql.lang.Query in project teiid by teiid.
the class TestOrderByRewrite method testNumberedOrderBy1_2.
@Test
public void testNumberedOrderBy1_2() throws Exception {
// $NON-NLS-1$
Query resolvedQuery = (Query) getCommand("SELECT pm1.g1.e1, e2, concat(e3,'x'), concat(e2, 5) FROM pm1.g1 ORDER BY 3, 4, 1, 2");
helpCheckElements(resolvedQuery.getOrderBy(), // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
new String[] { "pm1.g1.e3", "pm1.g1.e2", "pm1.g1.e1", "pm1.g1.e2" }, // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
new String[] { "pm1.g1.e3", "pm1.g1.e2", "pm1.g1.e1", "pm1.g1.e2" });
helpCheckExpressionsSymbols(resolvedQuery.getOrderBy(), // $NON-NLS-1$ //$NON-NLS-2$
new String[] { "concat(convert(e3, string), 'x')", "concat(convert(e2, string), '5')" });
}
Aggregations