public boolean changeAlias(String alias, PartialPath fullPath) throws MetadataException {
    IMeasurementMNode<ICachedMNode> measurementMNode = getMeasurementMNode(fullPath);
    try {
      // upsert alias
      if (alias != null && !alias.equals(measurementMNode.getAlias())) {
        synchronized (this) {
          IDeviceMNode<ICachedMNode> device = measurementMNode.getParent().getAsDeviceMNode();
          ICachedMNode cachedMNode = store.getChild(device.getAsMNode(), alias);
          if (cachedMNode != null) {
            unPinMNode(cachedMNode);
            throw new MetadataException(
                "The alias is duplicated with the name or alias of other measurement, alias: "
                    + alias
                    + ", fullPath: "
                    + fullPath
                    + ", otherMeasurement: "
                    + cachedMNode.getFullPath());
          }
          if (measurementMNode.getAlias() != null) {
            device.deleteAliasChild(measurementMNode.getAlias());
          }
          device.addAlias(alias, measurementMNode);
          setAlias(measurementMNode, alias);
        }
        return true;
      }
      return false;
    } finally {
      unPinMNode(measurementMNode.getAsMNode());
    }
  }
Create aligned timeseries with full paths from root to one leaf node. Before creating
timeseries, the * database should be set first, throw exception otherwise

@param devicePath device path
@param measurements measurements list
@param dataTypes data types list
@param encodings encodings list
@param compressors compressor
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/mtree/impl/pbtree/MTreeBelowSGCachedImpl.java