private Type analyzePredicateWithSubquery(
        Expression node,
        Type declaredValueType,
        SubqueryExpression subquery,
        StackableAstVisitorContext<Context> context) {
      // For now, we only support one column in subqueries, we have checked this before.
      Type valueRowType = declaredValueType;
      /*if (!(declaredValueType instanceof RowType) && !(declaredValueType instanceof UnknownType)) {
        valueRowType = RowType.anonymous(ImmutableList.of(declaredValueType));
      }*/

      Type subqueryType = analyzeSubquery(subquery, context);
      setExpressionType(subquery, subqueryType);

      Optional<Type> valueCoercion = Optional.empty();
      //      if (!valueRowType.equals(commonType.get())) {
      //        valueCoercion = commonType;
      //      }

      Optional<Type> subQueryCoercion = Optional.empty();
      //      if (!subqueryType.equals(commonType.get())) {
      //        subQueryCoercion = commonType;
      //      }

      predicateCoercions.put(
          NodeRef.of(node),
          new Analysis.PredicateCoercions(valueRowType, valueCoercion, subQueryCoercion));

      return subqueryType;
    }
@return the common supertype between the value type and subquery type
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/ExpressionAnalyzer.java