/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.query.resolver.v86;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.teiid.designer.runtime.version.spi.ITeiidServerVersion;
import org.teiid.designer.runtime.version.spi.TeiidServerVersion.Version;
import org.teiid.query.eval.Evaluator;
import org.teiid.query.metadata.TransformationMetadata;
import org.teiid.query.resolver.util.ResolverVisitor;
import org.teiid.query.resolver.v85.Test85FunctionResolving;
import org.teiid.query.sql.symbol.Function;
@SuppressWarnings( {"nls", "javadoc"} )
public class Test86FunctionResolving extends Test85FunctionResolving {
protected Test86FunctionResolving(Version teiidVersion) {
super(teiidVersion);
}
public Test86FunctionResolving() {
this(Version.TEIID_8_6);
}
/*
* UDF function for testVarArgsFunction
*/
public static String vararg(Object... vals) {
return String.valueOf(vals.length);
}
@Override
@Test
public void testVarArgsFunction() throws Exception {
String ddl = "create foreign function func (VARIADIC z object) returns string options (JAVA_CLASS '"
+ this.getClass().getName() + "', JAVA_METHOD 'vararg');\n";
TransformationMetadata tm = getMetadataFactory().fromDDL(ddl, "x", "y");
String sql = "func(('a', 'b'))";
Function func = (Function)getQueryParser().parseExpression(sql);
ResolverVisitor visitor = new ResolverVisitor(getTeiidVersion());
visitor.resolveLanguageObject(func, tm);
assertEquals(1, func.getArgs().length);
assertEquals("2", new Evaluator(getTeiidVersion()).evaluate(func));
}
}