jackylee-ch opened a new pull request, #794:
URL: https://github.com/apache/paimon-rust/pull/794

   Java registers `first_not_null_value` as an SPI alias of 
`first_non_null_value`:
   `FieldFirstNonNullValueAggLegacyFactory` sits next to the canonical factory 
in
   `META-INF/services/org.apache.paimon.factories.Factory` and builds the same
   aggregator. It is deliberate rather than residue — it survives the 
switch-case to
   SPI refactor in #4335 and `FirstValueAggregationITCase` still creates a 
table with
   it — but undocumented, so nothing advertises it.
   
   Rust rejected the name at all three sites that key off it, so a table 
written by
   Java or Flink planned fine and then failed once rows were pulled, with
   `ConfigInvalid: Unknown aggregate function 'first_not_null_value'`. CREATE 
and
   ALTER rejected it outright. The write path never checks the name, which is 
why
   this only surfaces where the merge function is built.
   
   Resolved through a single canonicalization point rather than one arm per 
site: the
   validator/constructor guard test iterates a hardcoded name list, so a 
one-sided
   edit would slip past it. Matching is exact, mirroring 
`FactoryUtil#discoverFactory`,
   which compares identifiers with `equals`.
   
   The alias stays out of the `supported: ...` hint — Java does not document 
it, so it
   is read but never suggested — and errors still echo whatever the user wrote.
   
   `FieldAggregator::name` is `&'static str`, so the aggregator reports the 
canonical
   name. That costs no parity: the only Java message repeating the configured
   identifier is the retract rejection, and retract is refused here before an
   aggregator exists.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to