private PlanNode rewriteToDefaultAggregation(ApplyNode parent, Context context)
{
Symbol count = context.getSymbolAllocator().newSymbol(COUNT.toString(), BIGINT);
Symbol exists = getOnlyElement(parent.getSubqueryAssignments().getSymbols());
return new LateralJoinNode(
parent.getId(),
parent.getInput(),
new ProjectNode(
context.getIdAllocator().getNextId(),
new AggregationNode(
context.getIdAllocator().getNextId(),
parent.getSubquery(),
ImmutableMap.of(count, new Aggregation(COUNT_CALL, countSignature, Optional.empty())),
globalAggregation(),
ImmutableList.of(),
AggregationNode.Step.SINGLE,
Optional.empty(),
Optional.empty()),
Assignments.of(exists, new ComparisonExpression(GREATER_THAN, count.toSymbolReference(), new Cast(new LongLiteral("0"), BIGINT.toString())))),
parent.getCorrelation(),
INNER,
parent.getOriginSubquery());
}
}