It looks like org.apache.calcite.rel.core.Project#getMapping(int, java.util.List<? extends org.apache.calcite.rex.RexNode>) is a bit too strong assumption.
Can you please try altering Mappings.create(MappingType.INVERSE_SURJECTION to Mappings.create(MappingType.INVERSE_FUNCTION there? Vladimir
