/** * @see java.lang.Object#clone() */ public Object clone() { return new Reference(this); }
/** * @see java.lang.Object#clone() */ public Object clone() { return new Reference(this); }
/** * @see java.lang.Object#clone() */ public Object clone() { return new Reference(this); }
@Override public Expression replaceExpression(Expression element) { if (element instanceof ElementSymbol) { return new Reference((ElementSymbol)element); } return element; } };
@Override public Expression replaceExpression(Expression element) { if (element instanceof ElementSymbol) { return new Reference((ElementSymbol)element); } return element; } };
@Override public Expression replaceExpression(Expression element) { if (element instanceof ElementSymbol) { return new Reference((ElementSymbol)element); } return element; } };
public void testToString() { assertEquals("LIMIT 50", new Limit(null, new Constant(new Integer(50))).toString()); //$NON-NLS-1$ assertEquals("LIMIT 100, 50", new Limit(new Constant(new Integer(100)), new Constant(new Integer(50))).toString()); //$NON-NLS-1$ assertEquals("LIMIT ?, ?", new Limit(new Reference(0), new Reference(1)).toString()); //$NON-NLS-1$ assertEquals("LIMIT -1, ?", new Limit(new Constant(new Integer(-1)), new Reference(1)).toString()); //$NON-NLS-1$ }
@Test public void testPositionalReference() throws Exception { String sql = "select $1"; Query query = new Query(); query.setSelect(new Select(Arrays.asList(new Reference(0)))); helpTest(sql, "SELECT ?", query); }
@Test public void testExecNamedParams() { StoredProcedure proc = new StoredProcedure(); proc.setDisplayNamedParameters(true); proc.setProcedureName("myproc"); //$NON-NLS-1$ SPParameter param = new SPParameter(1, new Reference(0)); param.setName("p1");//$NON-NLS-1$ proc.setParameter(param); SPParameter param2 = new SPParameter(2, new Reference(0)); param2.setName("p2");//$NON-NLS-1$ proc.setParameter(param2); helpTest(proc, "EXEC myproc(p1 => ?, p2 => ?)"); //$NON-NLS-1$ }
@Test public void testExecInputParam() { StoredProcedure proc = new StoredProcedure(); proc.setProcedureName("myproc"); //$NON-NLS-1$ SPParameter param = new SPParameter(1, new Reference(0)); proc.setParameter(param); helpTest(proc, "EXEC myproc(?)"); //$NON-NLS-1$ }
@Test public void testLimitWithReferences3() { Query query = new Query(); Select select = new Select(Arrays.asList(new MultipleElementSymbol())); From from = new From(Arrays.asList(new UnaryFromClause(new GroupSymbol("a")))); //$NON-NLS-1$ query.setSelect(select); query.setFrom(from); query.setLimit(new Limit(new Reference(0), new Reference(1))); helpTest("Select * from a limit ?,?", "SELECT * FROM a LIMIT ?, ?", query); //$NON-NLS-1$ //$NON-NLS-2$ }
@Test public void testResolveAmbiguousFunction() throws Exception { Function function = new Function("LCASE", new Expression[] {new Reference(0)}); //$NON-NLS-1$ try { ResolverVisitor.resolveLanguageObject(function, RealMetadataFactory.example1Cached()); fail("excpetion expected"); //$NON-NLS-1$ } catch (QueryResolverException err) { assertEquals("TEIID30069 The function 'LCASE(?)' has more than one possible signature.", err.getMessage()); //$NON-NLS-1$ } }
@Test public void testSetQueryLimit() { Query query = new Query(); Select select = new Select(Arrays.asList(new MultipleElementSymbol())); From from = new From(Arrays.asList(new UnaryFromClause(new GroupSymbol("a")))); //$NON-NLS-1$ query.setSelect(select); query.setFrom(from); SetQuery setQuery = new SetQuery(Operation.UNION, true, query, query); setQuery.setLimit(new Limit(new Reference(0), new Reference(1))); helpTest("Select * from a union all Select * from a limit ?,?", "SELECT * FROM a UNION ALL SELECT * FROM a LIMIT ?, ?", setQuery); //$NON-NLS-1$ //$NON-NLS-2$ }
@Test public void testExecNamedParam() { StoredProcedure proc = new StoredProcedure(); proc.setDisplayNamedParameters(true); proc.setProcedureName("myproc"); //$NON-NLS-1$ SPParameter param = new SPParameter(1, new Reference(0)); param.setName("p1");//$NON-NLS-1$ proc.setParameter(param); helpTest(proc, "EXEC myproc(p1 => ?)"); //$NON-NLS-1$ }
@Test public void testLimitWithReferences1() { Query query = new Query(); Select select = new Select(Arrays.asList(new MultipleElementSymbol())); From from = new From(Arrays.asList(new UnaryFromClause(new GroupSymbol("a")))); //$NON-NLS-1$ query.setSelect(select); query.setFrom(from); query.setLimit(new Limit(new Reference(0), new Constant(new Integer(100)))); helpTest("Select * from a limit ?,100", "SELECT * FROM a LIMIT ?, 100", query); //$NON-NLS-1$ //$NON-NLS-2$ }
@Test public void testLimitWithReferences2() { Query query = new Query(); Select select = new Select(Arrays.asList(new MultipleElementSymbol())); From from = new From(Arrays.asList(new UnaryFromClause(new GroupSymbol("a")))); //$NON-NLS-1$ query.setSelect(select); query.setFrom(from); query.setLimit(new Limit(new Constant(new Integer(50)), new Reference(0))); helpTest("Select * from a limit 50,?", "SELECT * FROM a LIMIT 50, ?", query); //$NON-NLS-1$ //$NON-NLS-2$ }
@Test public void testResolveConvertReference() throws Exception { Function function = new Function("convert", new Expression[] {new Reference(0), new Constant(DataTypeManager.DefaultDataTypes.BOOLEAN)}); //$NON-NLS-1$ ResolverVisitor.resolveLanguageObject(function, RealMetadataFactory.example1Cached()); assertEquals(DataTypeManager.DefaultDataClasses.BOOLEAN, function.getType()); assertEquals(DataTypeManager.DefaultDataClasses.BOOLEAN, function.getArgs()[0].getType()); }
@Test public void testOffset() { Query query = new Query(); Select select = new Select(Arrays.asList(new MultipleElementSymbol())); From from = new From(Arrays.asList(new UnaryFromClause(new GroupSymbol("a")))); //$NON-NLS-1$ query.setSelect(select); query.setFrom(from); query.setLimit(new Limit(new Reference(0), null)); helpTest("Select * from a offset ? rows", "SELECT * FROM a OFFSET ? ROWS", query); //$NON-NLS-1$ //$NON-NLS-2$ }
@Test public void testGet(){ SessionAwareCache<PreparedPlan> cache = new SessionAwareCache<PreparedPlan>("preparedplan", DefaultCacheFactory.INSTANCE, SessionAwareCache.Type.PREPAREDPLAN, 0); helpPutPreparedPlans(cache, token, 0, 10); helpPutPreparedPlans(cache, token2, 0, 15); //read an entry for session2 (token2) PreparedPlan pPlan = cache.get(new CacheID(token2, pi, EXAMPLE_QUERY + 12)); assertNotNull("Unable to get prepared plan from cache", pPlan); //$NON-NLS-1$ assertEquals("Error getting plan from cache", new RelationalPlan(new ProjectNode(12)).toString(), pPlan.getPlan().toString()); //$NON-NLS-1$ assertEquals("Error getting command from cache", EXAMPLE_QUERY + 12, pPlan.getCommand().toString()); //$NON-NLS-1$ assertNotNull("Error getting plan description from cache", pPlan.getAnalysisRecord()); //$NON-NLS-1$ assertEquals("Error gettting reference from cache", new Reference(1), pPlan.getReferences().get(0)); //$NON-NLS-1$ }