@ExplodeLoop private void initFrame(VirtualFrame frame, Page page) { for (FrameMapping frameMapping : mapping) { frame.setObject(frameMapping.getFrameSlot(), getColumnSlow(page, frameMapping)); } frame.setDouble(reduceNode.getSlot(), 0.0); }
@Override public Object execute(VirtualFrame frame) { Page page = PageArguments.get(frame); initFrame(frame, page); for (int row = 0; row < page.getRowCount(); row++) { frame.setInt(rowSlot, row); try { if (filterNode.executeBoolean(frame)) { reduceNode.execute(frame); } } catch (UnexpectedResultException e) { throw new IllegalStateException("not implemented yet: rewrite in reduce node"); } } try { return frame.getDouble(reduceNode.getSlot()); } catch (FrameSlotTypeException e) { throw new IllegalStateException("should not reach here"); } }