Search in sources :

Example 16 with Query

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);
}
Also used : Query(org.teiid.query.sql.lang.Query) Reference(org.teiid.query.sql.symbol.Reference) SPParameter(org.teiid.query.sql.lang.SPParameter) MetadataResult(org.teiid.client.metadata.MetadataResult) Function(org.teiid.query.sql.symbol.Function) WindowFunction(org.teiid.query.sql.symbol.WindowFunction) StoredProcedure(org.teiid.query.sql.lang.StoredProcedure) Expression(org.teiid.query.sql.symbol.Expression) HashMap(java.util.HashMap) Map(java.util.Map) SymbolMap(org.teiid.query.sql.util.SymbolMap)

Example 17 with Query

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);
}
Also used : Query(org.teiid.query.sql.lang.Query) Test(org.junit.Test)

Example 18 with Query

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" });
}
Also used : Query(org.teiid.query.sql.lang.Query) Test(org.junit.Test)

Example 19 with Query

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" });
}
Also used : Query(org.teiid.query.sql.lang.Query) Test(org.junit.Test)

Example 20 with Query

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')" });
}
Also used : Query(org.teiid.query.sql.lang.Query) Test(org.junit.Test)

Aggregations

Query (org.teiid.query.sql.lang.Query)97 Test (org.junit.Test)58 GroupSymbol (org.teiid.query.sql.symbol.GroupSymbol)31 Select (org.teiid.query.sql.lang.Select)30 ElementSymbol (org.teiid.query.sql.symbol.ElementSymbol)26 From (org.teiid.query.sql.lang.From)25 Constant (org.teiid.query.sql.symbol.Constant)22 SetQuery (org.teiid.query.sql.lang.SetQuery)21 MultipleElementSymbol (org.teiid.query.sql.symbol.MultipleElementSymbol)20 UnaryFromClause (org.teiid.query.sql.lang.UnaryFromClause)13 Limit (org.teiid.query.sql.lang.Limit)10 ArrayList (java.util.ArrayList)9 Expression (org.teiid.query.sql.symbol.Expression)9 SQLException (java.sql.SQLException)7 Reference (org.teiid.query.sql.symbol.Reference)7 CompareCriteria (org.teiid.query.sql.lang.CompareCriteria)6 ODataApplicationException (org.apache.olingo.server.api.ODataApplicationException)5 List (java.util.List)4 ODataLibraryException (org.apache.olingo.server.api.ODataLibraryException)4 TeiidProcessingException (org.teiid.core.TeiidProcessingException)4