private PlanAndMappings planValue(
      PlanBuilder subPlan, Expression value, Type actualType, Optional<Type> coercion) {
    subPlan = subPlan.appendProjections(ImmutableList.of(value), symbolAllocator, plannerContext);

    // Adapt implicit row type (in the SQL spec, <row value special case>) by wrapping it with a row
    // constructor
    Symbol column = subPlan.translate(value);
    Type declaredType = analysis.getType(value);
    if (!actualType.equals(declaredType)) {
      Symbol wrapped = symbolAllocator.newSymbol("row", actualType);

      Assignments assignments =
          Assignments.builder()
              .putIdentities(subPlan.getRoot().getOutputSymbols())
              //              .put(wrapped, new Row(ImmutableList.of(column.toSymbolReference())))
              // Row Type is not supported for now. So we replace with the following code
              .put(wrapped, column.toSymbolReference())
              .build();

      subPlan =
          subPlan.withNewRoot(
              new ProjectNode(idAllocator.genPlanNodeId(), subPlan.getRoot(), assignments));

      column = wrapped;
    }

    return coerceIfNecessary(subPlan, column, value, coercion);
  }
Adds a negation of the given input and remaps the provided expression to the negated expression
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/SubqueryPlanner.java