Hi Ryan,

I noticed, TableMetadata.buildReplacement() is adding old partition spec to the 
new TableMetadata. 

    ImmutableList.Builder<PartitionSpec> builder = 
ImmutableList.<PartitionSpec>builder()
        .addAll(specs);
    if (!specsById.containsKey(specId)) {
      builder.add(freshSpec);
    }

I'm working expire metadata with ExpireSnapshots, as part of this I'm updating 
TestTableOperations.commit to write and read metadata json file. 

This change is breaking 
TestReplaceTransaction.testReplaceWithIncompatibleSchemaUpdate test case, 
because PartitionSpecParser.fromJson() is trying to read a column which is not 
present in the replaced schema.

Should we change the logic to add old specs only if specId is not present in 
the specsById as below?

    ImmutableList.Builder<PartitionSpec> builder = 
ImmutableList.<PartitionSpec>builder();
    if (!specsById.containsKey(specId)) {
      builder.add(freshSpec);
    } else {
        builder.addAll(specs);
   }

Thanks,
Yathi

Reply via email to