Hi Flink developers,

When implementing `JDBCTableSource` with `ProjectableTableSource` interface
I'm confused by the `projectFields` method.

The java doc of the `projectFields` states that (It also has a typo...
poduced -> produced):

> Creates a copy of the {@link TableSource} that projects its output to the
> given field indexes.
> The field indexes relate to the physical poduced data type ({@link
> TableSource#getProducedDataType()}) and not to the table schema ({@link
> TableSource#getTableSchema} of the {@link TableSource}.


So my understanding of this java doc is that, if the table schema of the
source is {a: Int, b: Double, c: String, d: Long} and the produced data
type of the source is {a: Int, c: String, d: Long}. Then if user writes "select
c, d from my_table" then the project field indices should be {1, 2} instead
of {2, 3} (because they should be related to the produced type and not to
the schema).

But the implementation of `CSVTableSource` says otherwise. The field
indices are related to the schema, not to the produced data type.

I pick the implementation of `CSVTableSource` to implement JDBC table
source (as `CSVTableSource` obviously passed all the test cases). So which
one is correct, my understanding on the java doc or the implementation of
`CSVTableSource`?

Thanks.

Reply via email to