Skip to content

fix: Improve the error message for unresolved union variant#228

Merged
martin-g merged 1 commit intomainfrom
issue-225-better-error-msg-for-unresolved-union
Jul 17, 2025
Merged

fix: Improve the error message for unresolved union variant#228
martin-g merged 1 commit intomainfrom
issue-225-better-error-msg-for-unresolved-union

Conversation

@martin-g
Copy link
Copy Markdown
Member

Fixes #225

Add the UnionSchema and the actual Value to the error message for easier debugging

Fixes #225

Add the UnionSchema and the actual Value to the error message for easier
debugging

Signed-off-by: Martin Tzvetanov Grigorov <mgrigorov@apache.org>
Copy link
Copy Markdown
Contributor

@Fokko Fokko left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @martin-g This is great, and will save me a lot of time on debugging 🚀

@martin-g martin-g merged commit bd1910d into main Jul 17, 2025
20 checks passed
@Kriskras99
Copy link
Copy Markdown
Contributor

Kriskras99 commented Jul 17, 2025

Not necessarily for this PR, but FindUnionVariant is the largest variant of the Error type now.
As the return type is at least as big as the Error type, it might make sense to Box all the Schema and Value types.

-Zprint-type-sizes output for the Error type

From RUSTFLAGS=-Zprint-type-sizes cargo +nightly build --release > types.txt

print-type-size type: `error::Error`: 104 bytes, alignment: 8 bytes
print-type-size     variant `FindUnionVariant`: 104 bytes
print-type-size         field `.schema`: 48 bytes
print-type-size         field `.value`: 56 bytes
print-type-size     variant `ValidationWithReason`: 96 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.reason`: 24 bytes, alignment: 8 bytes
print-type-size         field `.value`: 56 bytes
print-type-size         field `.schema`: 8 bytes
print-type-size     variant `GetRecord`: 88 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.expected`: 24 bytes, alignment: 8 bytes
print-type-size         field `.other`: 56 bytes
print-type-size     variant `GetDefaultRecordField`: 80 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size         field `.1`: 24 bytes
print-type-size         field `.2`: 24 bytes
print-type-size     variant `GetArray`: 65 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.other`: 56 bytes, alignment: 8 bytes
print-type-size         field `.expected`: 1 bytes
print-type-size     variant `GetMap`: 65 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.other`: 56 bytes, alignment: 8 bytes
print-type-size         field `.expected`: 1 bytes
print-type-size     variant `FixedValue`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `BytesValue`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetUuidFromStringValue`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetUuid`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetBigDecimal`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `ResolveDuration`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `ResolveDecimal`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetU8`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetDate`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetTimeMillis`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetTimeMicros`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetTimestampMillis`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetTimestampMicros`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetTimestampNanos`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetLocalTimestampMillis`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetLocalTimestampMicros`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetLocalTimestampNanos`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetNull`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetBoolean`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetInt`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetLong`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetDouble`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetFloat`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetBytes`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetString`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetEnum`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetStringForFixed`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 56 bytes, alignment: 8 bytes
print-type-size     variant `GetDecimalMetadataValueFromJson`: 64 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.key`: 24 bytes, alignment: 8 bytes
print-type-size         field `.value`: 32 bytes
print-type-size     variant `GetEnumDefault`: 56 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.symbol`: 24 bytes, alignment: 8 bytes
print-type-size         field `.symbols`: 24 bytes
print-type-size     variant `SingleObjectHeaderMismatch`: 56 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size         field `.1`: 24 bytes
print-type-size     variant `SerializeValueWithSchema`: 56 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.value`: 24 bytes, alignment: 8 bytes
print-type-size         field `.value_type`: 16 bytes
print-type-size         field `.schema`: 8 bytes
print-type-size     variant `SchemaResolutionError`: 56 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 48 bytes, alignment: 8 bytes
print-type-size     variant `AmbiguousSchemaDefinition`: 56 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 48 bytes, alignment: 8 bytes
print-type-size     variant `NoEntryInLookupTable`: 56 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size         field `.1`: 24 bytes
print-type-size     variant `ConvertToUtf8`: 48 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 40 bytes, alignment: 8 bytes
print-type-size     variant `InvalidSchemaName`: 48 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size         field `.1`: 16 bytes
print-type-size     variant `InvalidNamespace`: 48 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size         field `.1`: 16 bytes
print-type-size     variant `ConvertStrToUuid`: 40 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 32 bytes, alignment: 8 bytes
print-type-size     variant `ConvertSliceToUuid`: 40 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 32 bytes, alignment: 8 bytes
print-type-size     variant `GetLogicalTypeVariant`: 40 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 32 bytes, alignment: 8 bytes
print-type-size     variant `GetLogicalTypeFieldType`: 40 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 32 bytes, alignment: 8 bytes
print-type-size     variant `GetComplexType`: 40 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 32 bytes, alignment: 8 bytes
print-type-size     variant `EnumDefaultWrongType`: 40 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 32 bytes, alignment: 8 bytes
print-type-size     variant `GetFixedSizeFieldPositive`: 40 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 32 bytes, alignment: 8 bytes
print-type-size     variant `SerializeRecordFieldWithSchema`: 40 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.field_name`: 16 bytes, alignment: 8 bytes
print-type-size         field `.record_schema`: 8 bytes
print-type-size         field `.error`: 8 bytes
print-type-size     variant `UuidFromSlice`: 40 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 32 bytes, alignment: 8 bytes
print-type-size     variant `EncodeValueAsSchemaError`: 33 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.supported_schema`: 24 bytes, alignment: 8 bytes
print-type-size         field `.value_kind`: 1 bytes
print-type-size     variant `NameCollision`: 32 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size     variant `GetEnumSymbol`: 32 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size     variant `GetField`: 32 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size     variant `ParsePrimitive`: 32 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size     variant `EnumSymbolName`: 32 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size     variant `FieldName`: 32 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size     variant `FieldNameDuplicate`: 32 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size     variant `InvalidSchemaRecord`: 32 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size     variant `EnumSymbolDuplicate`: 32 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size     variant `SerializeValue`: 32 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size     variant `DeserializeValue`: 32 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size     variant `InvalidMetadataKey`: 32 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size     variant `CodecNotSupported`: 32 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 24 bytes, alignment: 8 bytes
print-type-size     variant `ConvertToUtf8Error`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 16 bytes, alignment: 8 bytes
print-type-size     variant `MemoryAllocation`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.desired`: 8 bytes, alignment: 8 bytes
print-type-size         field `.maximum`: 8 bytes
print-type-size     variant `SignExtend`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.requested`: 8 bytes, alignment: 8 bytes
print-type-size         field `.needed`: 8 bytes
print-type-size     variant `ReadFixed`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size         field `.1`: 8 bytes
print-type-size     variant `GetUnionVariant`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.index`: 8 bytes, alignment: 8 bytes
print-type-size         field `.num_variants`: 8 bytes
print-type-size     variant `EnumSymbolIndex`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.index`: 8 bytes, alignment: 8 bytes
print-type-size         field `.num_variants`: 8 bytes
print-type-size     variant `GetScaleAndPrecision`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.scale`: 8 bytes, alignment: 8 bytes
print-type-size         field `.precision`: 8 bytes
print-type-size     variant `GetScaleWithFixedSize`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.size`: 8 bytes, alignment: 8 bytes
print-type-size         field `.precision`: 8 bytes
print-type-size     variant `ComparePrecisionAndSize`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.precision`: 8 bytes, alignment: 8 bytes
print-type-size         field `.num_bytes`: 8 bytes
print-type-size     variant `CompareFixedSizes`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.size`: 8 bytes, alignment: 8 bytes
print-type-size         field `.n`: 8 bytes
print-type-size     variant `GetEnumValue`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.index`: 8 bytes, alignment: 8 bytes
print-type-size         field `.nsymbols`: 8 bytes
print-type-size     variant `GetDecimalMetadataFromJson`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 16 bytes, alignment: 8 bytes
print-type-size     variant `GetU64FromJson`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 16 bytes, alignment: 8 bytes
print-type-size     variant `GetI64FromJson`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 16 bytes, alignment: 8 bytes
print-type-size     variant `GetPrecisionOrScaleFromJson`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 16 bytes, alignment: 8 bytes
print-type-size     variant `DecimalPrecisionLessThanScale`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.precision`: 8 bytes, alignment: 8 bytes
print-type-size         field `.scale`: 8 bytes
print-type-size     variant `FixedDefaultLenSizeMismatch`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size         field `.1`: 8 bytes
print-type-size     variant `EncodeDecimalAsFixedError`: 24 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size         field `.1`: 8 bytes
print-type-size     variant `SnappyCrc32`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.expected`: 4 bytes, alignment: 4 bytes
print-type-size         field `.actual`: 4 bytes
print-type-size     variant `ReadBoolean`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ReadBytes`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ReadString`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ReadDouble`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ReadFloat`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ReadDuration`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ConvertFixedToUuid`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `GetDecimalFixedBytes`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ConvertLengthToI32`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.1`: 8 bytes, alignment: 8 bytes
print-type-size         field `.0`: 0 bytes
print-type-size     variant `ConvertU64ToUsize`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.1`: 8 bytes, alignment: 8 bytes
print-type-size         field `.0`: 0 bytes
print-type-size     variant `ConvertI64ToUsize`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.1`: 8 bytes, alignment: 8 bytes
print-type-size         field `.0`: 0 bytes
print-type-size     variant `ParseSchemaJson`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ReadSchemaFromReader`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `DecimalPrecisionMuBePositive`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.precision`: 8 bytes, alignment: 8 bytes
print-type-size     variant `BigDecimalLen`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `DeflateCompress`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `DeflateCompressFinish`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `DeflateDecompress`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ZstdCompress`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ZstdDecompress`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ReadHeader`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ReadMarker`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ReadBlockMarker`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ReadIntoBuf`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ReadVariableIntegerBytes`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ZagI32`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.1`: 8 bytes, alignment: 8 bytes
print-type-size         field `.0`: 0 bytes
print-type-size     variant `WriteBytes`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `FlushWriter`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `WriteMarker`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ConvertJsonToString`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ConvertF64ToJson`: 16 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 8 bytes, alignment: 8 bytes
print-type-size     variant `ConvertU32ToUsize`: 12 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.1`: 4 bytes, alignment: 4 bytes
print-type-size         field `.0`: 0 bytes
print-type-size     variant `ConvertI32ToUsize`: 12 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.1`: 4 bytes, alignment: 4 bytes
print-type-size         field `.0`: 0 bytes
print-type-size     variant `GetDefaultUnion`: 10 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.1`: 1 bytes, alignment: 1 bytes
print-type-size         field `.0`: 1 bytes
print-type-size     variant `BoolValue`: 9 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 1 bytes, alignment: 1 bytes
print-type-size     variant `ResolveDecimalSchema`: 9 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 1 bytes, alignment: 1 bytes
print-type-size     variant `MapKeyType`: 9 bytes
print-type-size         padding: 8 bytes
print-type-size         field `.0`: 1 bytes, alignment: 1 bytes
print-type-size     variant `Validation`: 0 bytes
print-type-size     variant `GetEnumUnknownIndexValue`: 0 bytes
print-type-size     variant `EmptyUnion`: 0 bytes
print-type-size     variant `GetNameField`: 0 bytes
print-type-size     variant `GetNameFieldFromRecord`: 0 bytes
print-type-size     variant `GetNestedUnion`: 0 bytes
print-type-size     variant `GetUnionDuplicate`: 0 bytes
print-type-size     variant `ParseSchemaFromValidJson`: 0 bytes
print-type-size     variant `BigDecimalSign`: 0 bytes
print-type-size     variant `BigDecimalScale`: 0 bytes
print-type-size     variant `GetLogicalTypeField`: 0 bytes
print-type-size     variant `GetComplexTypeField`: 0 bytes
print-type-size     variant `GetRecordFieldsJson`: 0 bytes
print-type-size     variant `GetEnumSymbolsField`: 0 bytes
print-type-size     variant `GetEnumSymbols`: 0 bytes
print-type-size     variant `GetArrayItemsField`: 0 bytes
print-type-size     variant `GetMapValuesField`: 0 bytes
print-type-size     variant `GetFixedSizeField`: 0 bytes
print-type-size     variant `HeaderMagic`: 0 bytes
print-type-size     variant `GetAvroSchemaFromMap`: 0 bytes
print-type-size     variant `GetHeaderMetadata`: 0 bytes
print-type-size     variant `GetBlockMarker`: 0 bytes
print-type-size     variant `IntegerOverflow`: 0 bytes
print-type-size     variant `ReadBlock`: 0 bytes
print-type-size     variant `FileHeaderAlreadyWritten`: 0 bytes
print-type-size     variant `IllegalSingleObjectWriterState`: 0 bytes
print-type-size     variant `BadCodecMetadata`: 0 bytes

@martin-g
Copy link
Copy Markdown
Member Author

Good point!
I will do it tomorrow unless someone beats me to it!

Fokko added a commit to Fokko/iceberg-rust that referenced this pull request Sep 1, 2025
Because of improved error messages:

apache/avro-rs#228
Fokko added a commit to Fokko/iceberg-rust that referenced this pull request Sep 2, 2025
Because of improved error messages:

apache/avro-rs#228
kevinjqliu pushed a commit to apache/iceberg-rust that referenced this pull request Sep 8, 2025
## Which issue does this PR close?

Because of improved error messages:
apache/avro-rs#228. This helps a lot when
working on using the Iceberg Avro reader in PyIceberg. Also, when we
ship the Avro reader with PyIceberg, it will allow users for creating
meaningful issues.

<!--
We generally require a GitHub issue to be filed for all bug fixes and
enhancements and this helps us generate change logs for our releases.
You can link an issue to this PR using the GitHub syntax. For example
`Closes #123` indicates that this PR will close issue #123.
-->

- Closes #.

## What changes are included in this PR?

<!--
Provide a summary of the modifications in this PR. List the main changes
such as new features, bug fixes, refactoring, or any other updates.
-->

## Are these changes tested?

<!--
Specify what test covers (unit test, integration test, etc.).

If tests are not included in your PR, please explain why (for example,
are they covered by existing tests)?
-->
@Kriskras99 Kriskras99 deleted the issue-225-better-error-msg-for-unresolved-union branch January 5, 2026 17:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Improve error message for Could not find matching type in union

3 participants