public static int[] computePhysicalIndices(
            List<TableColumn> logicalColumns,
            DataType physicalType,
            Function<String, String> nameRemapping) {

        Map<TableColumn, Integer> physicalIndexLookup =
                computePhysicalIndices(logicalColumns.stream(), physicalType, nameRemapping);

        return logicalColumns.stream().mapToInt(physicalIndexLookup::get).toArray();
    }
@Test
    void testFieldMappingNonMatchingPrecision() {
        assertThatThrownBy(
                        () ->
                                TypeMappingUtils.computePhysicalIndices(
                                        TableSchema.builder()
                                                .field("f0", DataTypes.TIMESTAMP(9))
                                                .build()
                                                .getTableColumns(),
                                        ROW(FIELD("f0", DataTypes.TIMESTAMP(3))),
                                        Function.identity()))
                .isInstanceOf(ValidationException.class)
                .hasMessage(
                        "Type TIMESTAMP(9) of table field 'f0' does not match with the physical "
                                + "type TIMESTAMP(3) of the 'f0' field of the TableSource "
                                + "return type.");
    }