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));
}