public static HivePartitionName hivePartitionName(String databaseName, String tableName, String partitionName) { return hivePartitionName(hiveTableName(databaseName, tableName), partitionName); }
@Override public Optional<Table> getTable(String databaseName, String tableName) { return get(tableCache, hiveTableName(databaseName, tableName)); }
@Override public void updateTableStatistics(String databaseName, String tableName, Function<PartitionStatistics, PartitionStatistics> update) { try { delegate.updateTableStatistics(databaseName, tableName, update); } finally { tableStatisticsCache.invalidate(hiveTableName(databaseName, tableName)); } }
@Override public PartitionStatistics getTableStatistics(String databaseName, String tableName) { return get(tableStatisticsCache, hiveTableName(databaseName, tableName)); }
protected void invalidateTable(String databaseName, String tableName) { tableCache.invalidate(hiveTableName(databaseName, tableName)); tableNamesCache.invalidate(databaseName); viewNamesCache.invalidate(databaseName); userTablePrivileges.asMap().keySet().stream() .filter(userTableKey -> userTableKey.matches(databaseName, tableName)) .forEach(userTablePrivileges::invalidate); tableStatisticsCache.invalidate(hiveTableName(databaseName, tableName)); invalidatePartitionCache(databaseName, tableName); }
@Override public Optional<List<String>> getPartitionNames(String databaseName, String tableName) { return get(partitionNamesCache, hiveTableName(databaseName, tableName)); }
public static HivePartitionName hivePartitionName(String databaseName, String tableName, List<String> partitionValues) { return new HivePartitionName(hiveTableName(databaseName, tableName), partitionValues, Optional.empty()); }
public static PartitionFilter partitionFilter(String databaseName, String tableName, List<String> parts) { return new PartitionFilter(hiveTableName(databaseName, tableName), parts); }
private void invalidatePartitionCache(String databaseName, String tableName) { HiveTableName hiveTableName = hiveTableName(databaseName, tableName); partitionNamesCache.invalidate(hiveTableName); partitionCache.asMap().keySet().stream() .filter(partitionName -> partitionName.getHiveTableName().equals(hiveTableName)) .forEach(partitionCache::invalidate); partitionFilterCache.asMap().keySet().stream() .filter(partitionFilter -> partitionFilter.getHiveTableName().equals(hiveTableName)) .forEach(partitionFilterCache::invalidate); partitionStatisticsCache.asMap().keySet().stream() .filter(partitionFilter -> partitionFilter.getHiveTableName().equals(hiveTableName)) .forEach(partitionStatisticsCache::invalidate); }
@Override public PartitionStatistics getTableStatistics(String databaseName, String tableName) { return loadValue( tableStatisticsCache, hiveTableName(databaseName, tableName), () -> delegate.getTableStatistics(databaseName, tableName)); }
@Override public Optional<List<String>> getPartitionNames(String databaseName, String tableName) { return loadValue( partitionNamesCache, hiveTableName(databaseName, tableName), () -> delegate.getPartitionNames(databaseName, tableName)); }
@Override public Optional<Table> getTable(String databaseName, String tableName) { return loadValue(tableCache, hiveTableName(databaseName, tableName), () -> delegate.getTable(databaseName, tableName)); }