if (context != null && canOptimizeWindowFunction(node, context)) {
int limit = extractLimitOptional(node, context.getExpression()).get();
if (node.getPartitionBy().isEmpty()) {
WindowContext windowContext = new WindowContext(Optional.of(node), new LongLiteral(String.valueOf(limit)));
PlanNode rewrittenSource = planRewriter.rewrite(node.getSource(), windowContext);
return new WindowNode(idAllocator.getNextId(),
rewrittenSource,
node.getPartitionBy(),
node.getOrderBy(),
node.getOrderings(),
node.getWindowFunctions(),