static boolean hasStorageDescriptorLocationChanged()

in xtable-api/src/main/java/org/apache/xtable/spi/sync/CatalogUtils.java [39:62]


  static boolean hasStorageDescriptorLocationChanged(
      String storageDescriptorLocation, String tableBasePath) {

    if (StringUtils.isEmpty(storageDescriptorLocation)) {
      return true;
    }
    URI storageDescriptorUri = new Path(storageDescriptorLocation).toUri();
    URI basePathUri = new Path(tableBasePath).toUri();

    if (storageDescriptorUri.equals(basePathUri)
        || storageDescriptorUri.getScheme() == null
        || basePathUri.getScheme() == null
        || storageDescriptorUri.getScheme().startsWith(basePathUri.getScheme())
        || basePathUri.getScheme().startsWith(storageDescriptorUri.getScheme())) {
      String storageDescriptorLocationIdentifier =
          storageDescriptorUri.getAuthority() + storageDescriptorUri.getPath();
      String tableBasePathIdentifier = basePathUri.getAuthority() + basePathUri.getPath();
      return !Objects.equals(storageDescriptorLocationIdentifier, tableBasePathIdentifier);
    }
    throw new CatalogRefreshException(
        String.format(
            "Storage scheme has changed for table catalogStorageDescriptorUri %s basePathUri %s",
            storageDescriptorUri, basePathUri));
  }