@Override public WindowFunction clone() { WindowFunction clone = new WindowFunction(); clone.setFunction((AggregateSymbol) this.function.clone()); clone.setWindowSpecification(this.windowSpecification.clone()); return clone; }
@Override public WindowFunction clone() { WindowFunction clone = new WindowFunction(); clone.setFunction((AggregateSymbol) this.function.clone()); clone.setWindowSpecification(this.windowSpecification.clone()); return clone; }
@Override public WindowFunction clone() { WindowFunction clone = new WindowFunction(); clone.setFunction((AggregateSymbol) this.function.clone()); clone.setWindowSpecification(this.windowSpecification.clone()); return clone; }
private void addPartitionCount(int i, WindowFunction wf) { WindowFunction wf2 = new WindowFunction(); wf2.setFunction(new AggregateSymbol(AggregateSymbol.Type.COUNT.name(), false, null)); //clone the partitioning if any WindowSpecification clone = wf.getWindowSpecification().clone(); clone.setOrderBy(null); wf2.setWindowSpecification(clone); WindowSpecificationInfo wsi2 = getOrCreateWindowSpecInfo(clone); WindowFunctionInfo wfi2 = createWindowFunctionInfo(wf2); wfi2.outputIndex = i; wfi2.primaryFunction = wf; wsi2.functions.add(wfi2); }
private void addPartitionCount(int i, WindowFunction wf) { WindowFunction wf2 = new WindowFunction(); wf2.setFunction(new AggregateSymbol(AggregateSymbol.Type.COUNT.name(), false, null)); //clone the partitioning if any WindowSpecification clone = wf.getWindowSpecification().clone(); clone.setOrderBy(null); wf2.setWindowSpecification(clone); WindowSpecificationInfo wsi2 = getOrCreateWindowSpecInfo(clone); WindowFunctionInfo wfi2 = createWindowFunctionInfo(wf2); wfi2.outputIndex = i; wfi2.primaryFunction = wf; wsi2.functions.add(wfi2); }
@Test public void testWindowFunction() throws Exception { String sql = "select row_number() over (partition by x order by y) from g"; Query query = new Query(); WindowFunction wf = new WindowFunction(); wf.setFunction(new AggregateSymbol("ROW_NUMBER", false, null)); WindowSpecification ws = new WindowSpecification(); ws.setPartition(new ArrayList<Expression>(Arrays.asList(new ElementSymbol("x")))); ws.setOrderBy(new OrderBy(Arrays.asList(new ElementSymbol("y")))); wf.setWindowSpecification(ws); query.setSelect(new Select(Arrays.asList(wf))); query.setFrom(new From(Arrays.asList(new UnaryFromClause(new GroupSymbol("g"))))); helpTest(sql, "SELECT ROW_NUMBER() OVER (PARTITION BY x ORDER BY y) FROM g", query); }
WindowFunction result = new WindowFunction(); WindowSpecification ws = new WindowSpecification(); result.setFunction((AggregateSymbol)agg); ws.setPartition(partitionList); ws.setOrderBy(orderBy);
WindowFunction result = new WindowFunction(); WindowSpecification ws = new WindowSpecification(); result.setFunction((AggregateSymbol)agg); ws.setPartition(partitionList); ws.setOrderBy(orderBy);
WindowFunction result = new WindowFunction(); WindowSpecification ws = new WindowSpecification(); result.setFunction((AggregateSymbol)agg); ws.setPartition(partitionList); ws.setOrderBy(orderBy);
@Test public void testWindowFunctionWithFrame() throws Exception { String sql = "select sum(x) over (order by y ROWS BETWEEN CURRENT ROW AND 3 FOLLOWING) from g"; Query query = new Query(); WindowFunction wf = new WindowFunction(); wf.setFunction(new AggregateSymbol("SUM", false, new ElementSymbol("x"))); WindowSpecification ws = new WindowSpecification(); ws.setOrderBy(new OrderBy(Arrays.asList(new ElementSymbol("y")))); WindowFrame frame = new WindowFrame(FrameMode.ROWS); frame.setStart(new WindowFrame.FrameBound(org.teiid.language.WindowFrame.BoundMode.CURRENT_ROW)); frame.setEnd(new WindowFrame.FrameBound(org.teiid.language.WindowFrame.BoundMode.FOLLOWING).bound(3)); ws.setWindowFrame(frame); wf.setWindowSpecification(ws); query.setSelect(new Select(Arrays.asList(wf))); query.setFrom(new From(Arrays.asList(new UnaryFromClause(new GroupSymbol("g"))))); helpTest(sql, "SELECT SUM(x) OVER (ORDER BY y ROWS BETWEEN CURRENT ROW AND 3 FOLLOWING) FROM g", query); }