Search in sources :

Example 26 with FunctionDescriptor

use of org.teiid.query.function.FunctionDescriptor in project teiid by teiid.

the class TestProjectNode method testProjectExpression.

@Test
public void testProjectExpression() throws Exception {
    // $NON-NLS-1$
    ElementSymbol es1 = new ElementSymbol("e1");
    es1.setType(DataTypeManager.DefaultDataClasses.STRING);
    List elements = new ArrayList();
    elements.add(es1);
    // $NON-NLS-1$ //$NON-NLS-2$
    Function func = new Function("concat", new Expression[] { es1, new Constant("abc") });
    // $NON-NLS-1$
    FunctionDescriptor fd = RealMetadataFactory.SFM.getSystemFunctionLibrary().findFunction("concat", new Class[] { DataTypeManager.DefaultDataClasses.STRING, DataTypeManager.DefaultDataClasses.STRING });
    func.setFunctionDescriptor(fd);
    func.setType(DataTypeManager.DefaultDataClasses.STRING);
    // $NON-NLS-1$
    ExpressionSymbol expr = new ExpressionSymbol("expr", func);
    List projectElements = new ArrayList();
    projectElements.add(expr);
    List[] data = new List[] { // $NON-NLS-1$
    Arrays.asList(new Object[] { "1" }), // $NON-NLS-1$
    Arrays.asList(new Object[] { "2" }) };
    List[] expected = new List[] { // $NON-NLS-1$
    Arrays.asList(new Object[] { "1abc" }), // $NON-NLS-1$
    Arrays.asList(new Object[] { "2abc" }) };
    helpTestProject(projectElements, data, elements, expected, null);
}
Also used : ElementSymbol(org.teiid.query.sql.symbol.ElementSymbol) Function(org.teiid.query.sql.symbol.Function) Constant(org.teiid.query.sql.symbol.Constant) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) FunctionDescriptor(org.teiid.query.function.FunctionDescriptor) ExpressionSymbol(org.teiid.query.sql.symbol.ExpressionSymbol) Test(org.junit.Test)

Example 27 with FunctionDescriptor

use of org.teiid.query.function.FunctionDescriptor in project teiid by teiid.

the class TestSelectNode method testSelectWithLookup.

@Test
public void testSelectWithLookup() throws TeiidComponentException, TeiidProcessingException {
    // $NON-NLS-1$
    ElementSymbol es1 = new ElementSymbol("e1");
    es1.setType(DataTypeManager.DefaultDataClasses.INTEGER);
    // $NON-NLS-1$
    ElementSymbol es2 = new ElementSymbol("e2");
    es2.setType(DataTypeManager.DefaultDataClasses.STRING);
    List elements = new ArrayList();
    elements.add(es1);
    // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
    Function func = new Function("lookup", new Expression[] { new Constant("pm1.g1"), new Constant("e2"), new Constant("e1"), es1 });
    // $NON-NLS-1$
    FunctionDescriptor desc = RealMetadataFactory.SFM.getSystemFunctionLibrary().findFunction("lookup", new Class[] { String.class, String.class, String.class, Integer.class });
    func.setFunctionDescriptor(desc);
    func.setType(DataTypeManager.DefaultDataClasses.INTEGER);
    CompareCriteria crit = new CompareCriteria(func, CompareCriteria.EQ, new Constant(new Integer(1)));
    List[] data = new List[20];
    for (int i = 0; i < 20; i++) {
        data[i] = new ArrayList();
        data[i].add(new Integer((i * 51) % 11));
        // $NON-NLS-1$
        String str = "" + (i * 3);
        str = str.substring(0, 1);
        data[i].add(str);
    }
    List childElements = new ArrayList();
    childElements.add(es1);
    childElements.add(es2);
    List[] expected = new List[] { Arrays.asList(new Object[] { new Integer(0) }), Arrays.asList(new Object[] { new Integer(0) }) };
    FakeDataManager dataMgr = new FakeDataManager();
    dataMgr.setThrowBlocked(true);
    Map valueMap = new HashMap();
    valueMap.put(new Integer(0), new Integer(1));
    valueMap.put(new Integer(1), new Integer(2));
    // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    dataMgr.defineCodeTable("pm1.g1", "e1", "e2", valueMap);
    helpTestSelect(elements, crit, data, childElements, dataMgr, expected);
}
Also used : ElementSymbol(org.teiid.query.sql.symbol.ElementSymbol) FakeDataManager(org.teiid.query.processor.FakeDataManager) HashMap(java.util.HashMap) Constant(org.teiid.query.sql.symbol.Constant) ArrayList(java.util.ArrayList) FunctionDescriptor(org.teiid.query.function.FunctionDescriptor) CompareCriteria(org.teiid.query.sql.lang.CompareCriteria) Function(org.teiid.query.sql.symbol.Function) ArrayList(java.util.ArrayList) List(java.util.List) HashMap(java.util.HashMap) Map(java.util.Map) Test(org.junit.Test)

Aggregations

FunctionDescriptor (org.teiid.query.function.FunctionDescriptor)27 Test (org.junit.Test)11 Constant (org.teiid.query.sql.symbol.Constant)11 Function (org.teiid.query.sql.symbol.Function)11 ElementSymbol (org.teiid.query.sql.symbol.ElementSymbol)9 ArrayList (java.util.ArrayList)7 FunctionLibrary (org.teiid.query.function.FunctionLibrary)7 List (java.util.List)6 FakeDataManager (org.teiid.query.processor.FakeDataManager)6 LanguageObject (org.teiid.query.sql.LanguageObject)5 Expression (org.teiid.query.sql.symbol.Expression)5 HashMap (java.util.HashMap)4 Map (java.util.Map)4 FunctionExecutionException (org.teiid.api.exception.query.FunctionExecutionException)3 BlockedException (org.teiid.common.buffer.BlockedException)3 ExpressionSymbol (org.teiid.query.sql.symbol.ExpressionSymbol)3 QueryResolverException (org.teiid.api.exception.query.QueryResolverException)2 TeiidComponentException (org.teiid.core.TeiidComponentException)2 TeiidProcessingException (org.teiid.core.TeiidProcessingException)2 Evaluator (org.teiid.query.eval.Evaluator)2