public Expression helpTestExpression(String sql, String expected) throws QueryParserException { Expression expr = QueryParser.getQueryParser().parseExpression(sql); helpTest(expr, expected); return expr; }
public static Expression getExpression(String sql) throws QueryParserException, TeiidComponentException, QueryResolverException { Expression func = QueryParser.getQueryParser().parseExpression(sql); TransformationMetadata tm = RealMetadataFactory.example1Cached(); ResolverVisitor.resolveLanguageObject(func, tm); return func; }
public static void helpTestExpression(String sql, String expectedString, Expression expected) throws QueryParserException { Expression actual = QueryParser.getQueryParser().parseExpression(sql); String actualString = actual.toString(); assertEquals("Parse string does not match: ", expectedString, actualString); //$NON-NLS-1$ assertEquals("Command objects do not match: ", expected, actual); //$NON-NLS-1$ assertEquals("Cloned command objects do not match: ", expected, actual.clone()); //$NON-NLS-1$ }
private void helpTestNullDependent(String expressionSQL, boolean dependent) throws QueryParserException, QueryResolverException, QueryMetadataException, TeiidComponentException { List<GroupSymbol> innerGroups = new ArrayList<GroupSymbol>(); innerGroups.add(new GroupSymbol("pm1.g1")); //$NON-NLS-1$ Expression expr = QueryParser.getQueryParser().parseExpression(expressionSQL); ResolverVisitor.resolveLanguageObject(expr, RealMetadataFactory.example1Cached()); assertEquals(dependent, JoinUtil.isNullDependent(RealMetadataFactory.example1Cached(), innerGroups, expr)); }
@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 = RealMetadataFactory.fromDDL(ddl, "x", "y"); String sql = "func(('a', 'b'))"; Function func = (Function) QueryParser.getQueryParser().parseExpression(sql); ResolverVisitor.resolveLanguageObject(func, tm); assertEquals(1, func.getArgs().length); assertEquals("2", Evaluator.evaluate(func)); }
private Expression helpTestRewriteExpression(String original, String expected, QueryMetadataInterface metadata) throws TeiidComponentException, TeiidProcessingException { Expression actualExp = QueryParser.getQueryParser().parseExpression(original); ResolverVisitor.resolveLanguageObject(actualExp, metadata); CommandContext context = new CommandContext(); context.setBufferManager(BufferManagerFactory.getStandaloneBufferManager()); actualExp = QueryRewriter.rewriteExpression(actualExp, context, metadata); if (expected != null) { Expression expectedExp = QueryParser.getQueryParser().parseExpression(expected); ResolverVisitor.resolveLanguageObject(expectedExp, metadata); assertEquals(expectedExp, actualExp); } return actualExp; }
@Test public void testAmbiguousUDF() throws Exception { TransformationMetadata tm = RealMetadataFactory.fromDDL("x", new DDLHolder("y", "create foreign function f () returns string"), new DDLHolder("z", "create foreign function f () returns string")); String sql = "f()"; Function func = (Function) QueryParser.getQueryParser().parseExpression(sql); try { ResolverVisitor.resolveLanguageObject(func, tm); fail(); } catch(QueryResolverException e) { } sql = "z.f()"; func = (Function) QueryParser.getQueryParser().parseExpression(sql); ResolverVisitor.resolveLanguageObject(func, tm); }
@Test public void testUDFResolveOrder() throws Exception { QueryMetadataInterface tm = RealMetadataFactory.fromDDL("create foreign function func(x object) returns object; " + " create foreign function func(x string) returns string;" + " create foreign function func1(x object) returns double;" + " create foreign function func1(x string[]) returns bigdecimal;", "x", "y"); String sql = "func('a')"; Function func = (Function) QueryParser.getQueryParser().parseExpression(sql); ResolverVisitor.resolveLanguageObject(func, tm); assertEquals(DataTypeManager.DefaultDataClasses.STRING, func.getArgs()[0].getType()); assertEquals(DataTypeManager.DefaultDataClasses.STRING, func.getType()); sql = "func1(('1',))"; func = (Function) QueryParser.getQueryParser().parseExpression(sql); ResolverVisitor.resolveLanguageObject(func, tm); }
if (mask == null) { try { mask = QueryParser.getQueryParser().parseExpression(pmd.getMask()); for (SubqueryContainer container : ValueIteratorProviderCollectorVisitor.getValueIteratorProviders(mask)) { container.getCommand().pushNewResolvingContext(groups);
if (mask == null) { try { mask = QueryParser.getQueryParser().parseExpression(pmd.getMask()); for (SubqueryContainer container : ValueIteratorProviderCollectorVisitor.getValueIteratorProviders(mask)) { container.getCommand().pushNewResolvingContext(groups);
if (mask == null) { try { mask = QueryParser.getQueryParser().parseExpression(pmd.getMask()); for (SubqueryContainer container : ValueIteratorProviderCollectorVisitor.getValueIteratorProviders(mask)) { container.getCommand().pushNewResolvingContext(groups);
private Object getFunctionResult(String sql) throws QueryParserException, ExpressionEvaluationException, BlockedException, TeiidComponentException, QueryResolverException { Expression expr = QueryParser.getQueryParser().parseExpression(sql); ResolverVisitor.resolveLanguageObject(expr, RealMetadataFactory.example1Cached()); Evaluator eval = new Evaluator(null, null, new CommandContext()); return eval.evaluate(expr, null); }
@Test public void testImportedPushdown() throws Exception { RealMetadataFactory.example1Cached(); QueryMetadataInterface tm = RealMetadataFactory.fromDDL("x", new DDLHolder("y", "create foreign function func(x object) returns object;"), new DDLHolder("z", "create foreign function func(x object) returns object;")); String sql = "func('a')"; Function func = (Function) QueryParser.getQueryParser().parseExpression(sql); try { ResolverVisitor.resolveLanguageObject(func, tm); fail("should be ambiguous"); } catch (QueryResolverException e) { } tm = RealMetadataFactory.fromDDL("x", new DDLHolder("y", "create foreign function func(x object) returns object options (\"teiid_rel:system-name\" 'f');"), new DDLHolder("z", "create foreign function func(x object) returns object options (\"teiid_rel:system-name\" 'f');")); func = (Function) QueryParser.getQueryParser().parseExpression(sql); ResolverVisitor.resolveLanguageObject(func, tm); tm = RealMetadataFactory.fromDDL("x", new DDLHolder("y", "create foreign function func() returns object options (\"teiid_rel:system-name\" 'f');"), new DDLHolder("z", "create foreign function func() returns object options (\"teiid_rel:system-name\" 'f');")); func = (Function) QueryParser.getQueryParser().parseExpression("func()"); ResolverVisitor.resolveLanguageObject(func, tm); }
Expression ex = null; try { ex = QueryParser.getQueryParser().parseExpression(defaultValue); } catch (QueryParserException e) {
Expression ex = null; try { ex = QueryParser.getQueryParser().parseExpression(defaultValue); } catch (QueryParserException e) {
Expression ex = null; try { ex = QueryParser.getQueryParser().parseExpression(defaultValue); } catch (QueryParserException e) {
@Test public void testScalarSubqueryExpressionInComplexExpression() throws QueryParserException { Select s2 = new Select(); s2.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$ s2.addSymbol(new AliasSymbol("X", QueryParser.getQueryParser().parseExpression("(SELECT e1 FROM m.g1) + 2"))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ From f2 = new From(); f2.addGroup(new GroupSymbol("m.g2")); //$NON-NLS-1$ Query q2 = new Query(); q2.setSelect(s2); q2.setFrom(f2); helpTest("SELECT e1, ((SELECT e1 FROM m.g1) + 2) as X FROM m.g2", //$NON-NLS-1$ "SELECT e1, ((SELECT e1 FROM m.g1) + 2) AS X FROM m.g2", //$NON-NLS-1$ q2); }
@Test public void testScalarSubqueryExpressionInComplexExpression3() throws QueryParserException{ Select s2 = new Select(); s2.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$ s2.addSymbol(new AliasSymbol("X", QueryParser.getQueryParser().parseExpression("(SELECT e1 FROM m.g1) + (SELECT e3 FROM m.g3)"))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ From f2 = new From(); f2.addGroup(new GroupSymbol("m.g2")); //$NON-NLS-1$ Query q2 = new Query(); q2.setSelect(s2); q2.setFrom(f2); helpTest("SELECT e1, ((SELECT e1 FROM m.g1) + (SELECT e3 FROM m.g3)) as X FROM m.g2", //$NON-NLS-1$ "SELECT e1, ((SELECT e1 FROM m.g1) + (SELECT e3 FROM m.g3)) AS X FROM m.g2", //$NON-NLS-1$ q2); }
@Test public void testScalarSubqueryExpressionInComplexExpression2() throws QueryParserException{ Select s2 = new Select(); s2.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$ s2.addSymbol(new AliasSymbol("X", QueryParser.getQueryParser().parseExpression("3 + (SELECT e1 FROM m.g1)"))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ From f2 = new From(); f2.addGroup(new GroupSymbol("m.g2")); //$NON-NLS-1$ Query q2 = new Query(); q2.setSelect(s2); q2.setFrom(f2); helpTest("SELECT e1, (3 + (SELECT e1 FROM m.g1)) as X FROM m.g2", //$NON-NLS-1$ "SELECT e1, (3 + (SELECT e1 FROM m.g1)) AS X FROM m.g2", //$NON-NLS-1$ q2); }
@Test public void testScalarSubqueryExpressionInFunction() throws QueryParserException{ Select s2 = new Select(); s2.addSymbol(new ElementSymbol("e1")); //$NON-NLS-1$ s2.addSymbol(new AliasSymbol("X", QueryParser.getQueryParser().parseExpression("length((SELECT e1 FROM m.g1))"))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ From f2 = new From(); f2.addGroup(new GroupSymbol("m.g2")); //$NON-NLS-1$ Query q2 = new Query(); q2.setSelect(s2); q2.setFrom(f2); helpTest("SELECT e1, length((SELECT e1 FROM m.g1)) as X FROM m.g2", //$NON-NLS-1$ "SELECT e1, length((SELECT e1 FROM m.g1)) AS X FROM m.g2", //$NON-NLS-1$ q2); }