The GitHub Actions job "Fory CI" on fory.git/row-codec-schema-versions has 
failed.
Run started by GitHub user stevenschlansker (triggered by stevenschlansker).

Head commit for run:
67d919fd8474484217e0f332e849cb4ab4a320a0 / Claude (on behalf of Steven 
Schlansker) <[email protected]>
fix(format): decode map struct keys at current schema during value projection

A schema-evolution map codec whose value reads at a historical version
corrupted a struct key. The projection codec applied the value's version
suffix to every nested bean via the type-blind nestedBeanSuffix, and the
bean-codec registration maps were keyed by typeRef. When the key and value
share a class (the reader side is effectively Map<Bean,Bean> with the value
historical and the key current), both collapsed to one registration entry,
so the key reused the value's historical row codec and decoded a current
key row with the wrong field count.

Map keys carry no per-payload version hash and are always read at the
current schema, so route the key position to the current, unsuffixed codec
under a distinct registration key. BaseBinaryEncoderBuilder gains a
beanCodecKey(TypeRef) indirection (default identity, so row/array codecs are
unchanged) and keys its bean maps by it. MapEncoderBuilder overrides
nestedBeanSuffix and beanCodecKey for the key position, gated by an
inKeyPosition flag. The flag is scoped around both expression construction
and genCode of the key subtree, because the encode ForEach registers nested
beans eagerly in its constructor while the decode lazy array registers them
during genCode.

Enables the previously-disabled 
SchemaEvolutionStressTest#mapStructKeyValueEvolution.

Report URL: https://github.com/apache/fory/actions/runs/28268351914

With regards,
GitHub Actions via GitBox


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to