public static QualifiedName getQualifiedName(DereferenceExpression expression) {
    if (expression.field == null) {
      return null;
    }

    Identifier field = expression.field;

    List<Identifier> parts = null;
    if (expression.base instanceof Identifier) {
      parts = ImmutableList.of((Identifier) expression.base, field);
    } else if (expression.base instanceof DereferenceExpression) {
      QualifiedName baseQualifiedName = getQualifiedName((DereferenceExpression) expression.base);
      if (baseQualifiedName != null) {
        ImmutableList.Builder<Identifier> builder = ImmutableList.builder();
        builder.addAll(baseQualifiedName.getOriginalParts());
        builder.add(field);
        parts = builder.build();
      }
    }

    return parts == null ? null : QualifiedName.of(parts);
  }
If this DereferenceExpression looks like a QualifiedName, return QualifiedName. Otherwise
return null
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/DereferenceExpression.java