@@ -850,16 +850,7 @@ private void projectPlusOverriding(
850850 List <String > originalFieldNames = context .relBuilder .peek ().getRowType ().getFieldNames ();
851851 List <RexNode > toOverrideList =
852852 originalFieldNames .stream ()
853- .filter (
854- originalName ->
855- newNames .stream ()
856- .anyMatch (
857- newName ->
858- // Match exact field names (e.g., "age" == "age")
859- // OR nested paths (e.g., "resource.attributes..." starts with
860- // "resource")
861- newName .equals (originalName )
862- || newName .startsWith (originalName + "." )))
853+ .filter (originalName -> shouldOverrideField (originalName , newNames ))
863854 .map (a -> (RexNode ) context .relBuilder .field (a ))
864855 .toList ();
865856 // 1. add the new fields, For example "age0, country0"
@@ -879,6 +870,17 @@ private void projectPlusOverriding(
879870 context .relBuilder .rename (expectedRenameFields );
880871 }
881872
873+ private boolean shouldOverrideField (String originalName , List <String > newNames ) {
874+ return newNames .stream ()
875+ .anyMatch (
876+ newName ->
877+ // Match exact field names (e.g., "age" == "age") for flat fields
878+ newName .equals (originalName )
879+ // OR match nested paths (e.g., "resource.attributes..." starts with
880+ // "resource.")
881+ || newName .startsWith (originalName + "." ));
882+ }
883+
882884 private List <List <RexInputRef >> extractInputRefList (List <RelBuilder .AggCall > aggCalls ) {
883885 return aggCalls .stream ()
884886 .map (RelBuilder .AggCall ::over )
0 commit comments