@Override
  public Result apply(ProjectNode parent, Captures captures, Context context) {
    ProjectNode child = captures.get(CHILD);

    return inlineProjections(
            plannerContext,
            parent,
            child,
            context.getSessionInfo(),
            context.getSymbolAllocator().getTypes())
        .map(Result::ofPlanNode)
        .orElse(Result.empty());
  }
Inlines expressions from a child project node into a parent project node as long as they are
simple constants, or they are referenced only once (to avoid introducing duplicate computation)
and the references don't appear within a TRY block (to avoid changing semantics).
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/InlineProjections.java