@Test public void testLimitWithOffset() { 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 Constant(new Integer(100)))); helpTest("Select * from a limit 50,100", "SELECT * FROM a LIMIT 50, 100", query); //$NON-NLS-1$ //$NON-NLS-2$ }
query.setOrderBy(null); Limit limit = query.getLimit(); query.setLimit(null); Set<Expression> newSelectColumns = new LinkedHashSet<Expression>(); for (final Iterator<Expression> iterator = groupBy.getSymbols().iterator(); iterator.hasNext();) { ExpressionMappingVisitor.mapExpressions(orderBy, expressionMap, true); outerQuery.setOrderBy(orderBy); outerQuery.setLimit(limit); ExpressionMappingVisitor.mapExpressions(select, expressionMap, true); outerQuery.setSelect(select);
query.setOrderBy(null); Limit limit = query.getLimit(); query.setLimit(null); Set<Expression> newSelectColumns = new LinkedHashSet<Expression>(); for (final Iterator<Expression> iterator = groupBy.getSymbols().iterator(); iterator.hasNext();) { ExpressionMappingVisitor.mapExpressions(orderBy, expressionMap, true); outerQuery.setOrderBy(orderBy); outerQuery.setLimit(limit); ExpressionMappingVisitor.mapExpressions(select, expressionMap, true); outerQuery.setSelect(select);
@Test public void testLimitWithOffsetKeyword() { 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 Constant(new Integer(100)))); helpTest("Select * from a limit 100 offset 50", "SELECT * FROM a LIMIT 50, 100", query); //$NON-NLS-1$ //$NON-NLS-2$ }
query.setOrderBy(null); Limit limit = query.getLimit(); query.setLimit(null); Set<Expression> newSelectColumns = new LinkedHashSet<Expression>(); for (final Iterator<Expression> iterator = groupBy.getSymbols().iterator(); iterator.hasNext();) { ExpressionMappingVisitor.mapExpressions(orderBy, expressionMap, true); outerQuery.setOrderBy(orderBy); outerQuery.setLimit(limit); ExpressionMappingVisitor.mapExpressions(select, expressionMap, true); outerQuery.setSelect(select);
@Test public void testLimitWithOffset() { 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 Constant(new Integer(100)))); helpTest(query, "SELECT * FROM a LIMIT 50, 100"); //$NON-NLS-1$ }
@Test public void testLimit() { 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(null, new Constant(new Integer(100)))); helpTest(query, "SELECT * FROM a LIMIT 100"); //$NON-NLS-1$ }
@Test public void testLimit() { 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(null, 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 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$ }
query.setLimit(rewriteLimitClause(query.getLimit()));
@Test public void testFetchFirst() { 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(null, new Constant(2))); helpTest("Select * from a fetch first 2 rows only", "SELECT * FROM a LIMIT 2", query); //$NON-NLS-1$ //$NON-NLS-2$ }
@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 testFetchFirstRow() { 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(null, new Constant(1))); helpTest("Select * from a fetch first row only", "SELECT * FROM a LIMIT 1", query); //$NON-NLS-1$ //$NON-NLS-2$ }
static void planQueries(final MappingSourceNode sourceNode, XMLPlannerEnvironment planEnv) throws QueryPlannerException, QueryMetadataException, TeiidComponentException { ResultSetInfo rsInfo = sourceNode.getResultSetInfo(); // Create sql: SELECT * FROM rsName Query rsQuery = (Query)rsInfo.getCommand(); // add user order by to base query rsQuery.setOrderBy(rsInfo.getOrderBy()); // add user criteria to base query from model Criteria crit = rsInfo.getCriteria(); try { if(crit != null) { planQueryWithCriteria(sourceNode, planEnv); } } catch (QueryResolverException e) { throw new TeiidComponentException(QueryPlugin.Event.TEIID30294, e); } if (rsInfo.getUserRowLimit() != -1) { int limit = rsInfo.getUserRowLimit(); if (rsInfo.exceptionOnRowlimit()) { limit++; } rsQuery.setLimit(new Limit(null, new Constant(limit))); } // this query is not eligible for staging; proceed normally. rsInfo.setCommand(rsQuery); }
@Test public void testOffsetFetch() { 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(2), new Constant(5))); helpTest("Select * from a offset 2 rows fetch first 5 rows only", "SELECT * FROM a LIMIT 2, 5", query); //$NON-NLS-1$ //$NON-NLS-2$ }
@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$ }
copy.setLimit( getLimit().clone());
copy.setLimit( getLimit().clone());
copy.setLimit( getLimit().clone());