fix issue with segment metadata cache and complex types when doing out of order upgrades from 0.22 (#14948)

This commit is contained in:
Clint Wylie 2023-09-11 19:54:35 -07:00 committed by GitHub
parent 757603a773
commit 5cecf6ce8f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 4 deletions

View File

@ -961,6 +961,9 @@ public class SegmentMetadataCache
// likelyhood of upgrading from some version lower than 0.23 is low // likelyhood of upgrading from some version lower than 0.23 is low
try { try {
valueType = ColumnType.fromString(entry.getValue().getType()); valueType = ColumnType.fromString(entry.getValue().getType());
if (valueType == null) {
valueType = ColumnType.ofComplex(entry.getValue().getType());
}
} }
catch (IllegalArgumentException ignored) { catch (IllegalArgumentException ignored) {
valueType = ColumnType.UNKNOWN_COMPLEX; valueType = ColumnType.UNKNOWN_COMPLEX;

View File

@ -1417,9 +1417,21 @@ public class SegmentMetadataCacheTest extends SegmentMetadataCacheCommon
false, false,
true, true,
1234, 1234,
26, null,
"a", null,
"z", null,
null
),
"distinct",
new ColumnAnalysis(
null,
"hyperUnique",
false,
true,
1234,
null,
null,
null,
null null
) )
) )
@ -1433,7 +1445,7 @@ public class SegmentMetadataCacheTest extends SegmentMetadataCacheCommon
) )
); );
Assert.assertEquals( Assert.assertEquals(
RowSignature.builder().add("a", ColumnType.STRING).add("count", ColumnType.LONG).build(), RowSignature.builder().add("a", ColumnType.STRING).add("count", ColumnType.LONG).add("distinct", ColumnType.ofComplex("hyperUnique")).build(),
signature signature
); );
} }