[
https://issues.apache.org/jira/browse/FLINK-5280?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15769924#comment-15769924
]
Ivan Mushketyk commented on FLINK-5280:
---------------------------------------
Hi [~fhueske]
{quote}
We could have default implementations for {{getFieldNames()}} and
{{getFieldIndicies()}} that return null and use
{{TableEnvironment.getFieldInfo(TypeInformation)}} or the explicitly provided
information if the methods are overridden. That would allow us to reuse
existing code instead of duplicating it.
{quote}
I think this is not very object-oriented way of doing it. IMO it would be
better to provide a default implementations of {{getFieldNames()}} and
{{getFieldIndicies()}}, but let a user to override these methods. This seems to
be a cleaner approach.
{quote}
I think getFieldTypes() and getNumberOfFields() are truly redundant and might
even cause problems if they are not consistent with getReturnType().
{quote}
These methods are used in current flink-table code base and we need to
implement them somewhere. So the question is where to put them. We can put them
in a Util class of some sort to avoid duplication or we can put them into
{{TableSource}} class and make them final to ensure that they are consistent
with {{getFieldNames()}} and {{getFieldIndicies()}} and type information. I am
not married to the idea of keeping them in {{TableSource}} but it seems to be a
bit cleaner to keep them in a Util class.
So I would propose some combination of my previous idea and Fabian's idea:
* Add {{getFieldIndicies}} method
* Add default implementations for {{getFieldNames}} add {{getFieldIndicies}}
based on {{getReturnType()}}, but make them overridable
* Add default implementations for {{getFieldTypes()}} and
{{getNumberOfFields()}}, but make them final
* Leave {{getReturnType()}} unimplemented in trait. This will be the only
method a user need to implement in the simplest case
What do you think [~fhueske], [~jark]
> Extend TableSource to support nested data
> -----------------------------------------
>
> Key: FLINK-5280
> URL: https://issues.apache.org/jira/browse/FLINK-5280
> Project: Flink
> Issue Type: Improvement
> Components: Table API & SQL
> Affects Versions: 1.2.0
> Reporter: Fabian Hueske
> Assignee: Ivan Mushketyk
>
> The {{TableSource}} interface does currently only support the definition of
> flat rows.
> However, there are several storage formats for nested data that should be
> supported such as Avro, Json, Parquet, and Orc. The Table API and SQL can
> also natively handle nested rows.
> The {{TableSource}} interface and the code to register table sources in
> Calcite's schema need to be extended to support nested data.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)