public boolean preDeleteColumn(
      final PartialPath database,
      final String tableName,
      final String columnName,
      final boolean isView)
      throws MetadataException, SemanticException {
    final ConfigTableNode node = getTableNode(database, tableName);
    final Optional<Pair<TSStatus, TsTable>> check =
        ClusterSchemaManager.checkTable4View(database.getTailNode(), node.getTable(), isView);
    if (check.isPresent()) {
      throw new SemanticException(
          check.get().getLeft().getMessage(), check.get().getLeft().getCode());
    }

    final TsTableColumnSchema columnSchema = node.getTable().getColumnSchema(columnName);
    if (Objects.isNull(columnSchema)) {
      throw new ColumnNotExistsException(
          PathUtils.unQualifyDatabaseName(database.getFullPath()), tableName, columnName);
    }
    if (columnSchema.getColumnCategory() == TsTableColumnCategory.TAG
        || columnSchema.getColumnCategory() == TsTableColumnCategory.TIME) {
      throw new SemanticException("Dropping tag or time column is not supported.");
    }

    node.addPreDeletedColumn(columnName);
    return columnSchema.getColumnCategory() == TsTableColumnCategory.ATTRIBUTE;
  }
This method returns the templateId set on paths if the path set matches or is a prefix of input
path pattern.
iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ConfigMTree.java